diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3f7ec2d3babd5df70691db956bb3757077a62a5d..a5a88f521f2288c470b364a147790609ec854607 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -125,13 +125,6 @@ dependencies { implementation("io.reactivex.rxjava2", "rxjava", "2.1.9") implementation("org.threeten", "threetenbp", "1.3.6", classifier = "no-tzdb") implementation("org.jetbrains", "annotations", "15.0") - withVersion("2.14.1") { - implementation("com.google.dagger", "dagger-android", version) - implementation("com.google.dagger", "dagger-android-support", version) - - kapt("com.google.dagger", "dagger-android-processor", version) - kapt("com.google.dagger", "dagger-compiler", version) - } withVersion("8.8.1") { implementation("com.jakewharton", "butterknife", version) kapt("com.jakewharton", "butterknife-compiler", version) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt index f532c38024ca3bbe6f0d3fc626902eb18abdf854..4888f685780605ca04f42dceaedc2daa8998aaf7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt @@ -11,7 +11,7 @@ import android.view.ViewGroup import butterknife.BindView import butterknife.ButterKnife import de.kuschku.quasseldroid_ng.R -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread import de.kuschku.quasseldroid_ng.util.helper.map @@ -27,9 +27,9 @@ class NickListFragment : ServiceBoundFragment() { lateinit var nickList: RecyclerView private var ircFormatDeserializer: IrcFormatDeserializer? = null - private val renderingSettings = RenderingSettings( - showPrefix = RenderingSettings.ShowPrefixMode.FIRST, - colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + private val renderingSettings = AppearanceSettings( + showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, + colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, colorizeMirc = true, timeFormat = "" ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt index bd82faddf056a04190fb793b90f1cce8306aba81..999c4121d22194669b11c835bf1f36d0893f0d7e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt @@ -14,8 +14,7 @@ import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.R -import de.kuschku.quasseldroid_ng.ui.settings.data.DisplaySettings -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.helper.visibleIf import de.kuschku.quasseldroid_ng.util.helper.zip @@ -32,14 +31,10 @@ class ToolbarFragment : ServiceBoundFragment() { private lateinit var viewModel: QuasselViewModel - private val displaySettings = DisplaySettings( - showLag = true - ) - private var ircFormatDeserializer: IrcFormatDeserializer? = null - private val renderingSettings = RenderingSettings( - showPrefix = RenderingSettings.ShowPrefixMode.FIRST, - colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + private val appearanceSettings = AppearanceSettings( + showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, + colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, colorizeMirc = true, timeFormat = "" ) @@ -86,7 +81,7 @@ class ToolbarFragment : ServiceBoundFragment() { this.title = data?.info?.bufferName } - if (lag == 0L || !displaySettings.showLag) { + if (lag == 0L || !appearanceSettings.showLag) { this.subtitle = colorizeDescription(data?.description) } else { val description = colorizeDescription(data?.description) @@ -107,9 +102,10 @@ class ToolbarFragment : ServiceBoundFragment() { return view } - private fun colorizeDescription(description: String?) - = ircFormatDeserializer?.formatString(description, renderingSettings.colorizeMirc) - ?: description + private fun colorizeDescription(description: String?) = ircFormatDeserializer?.formatString( + description, appearanceSettings.colorizeMirc + ) + ?: description data class BufferData( val info: BufferInfo? = null, diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferListAdapter.kt similarity index 98% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferListAdapter.kt index 86133ccacb38ffec74bf20d4a856b7d9b20aac3e..b6c65343677854b9c6d4f8d84aae718b0aca3671 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferListAdapter.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.buffers import android.arch.lifecycle.LifecycleOwner import android.arch.lifecycle.LiveData @@ -61,12 +61,12 @@ class BufferListAdapter( }.sortedBy { props -> props.network.networkName }.map { props -> - BufferListItem( - props, - BufferState( - networkExpanded = !collapsedNetworks.contains(props.network.networkId) + BufferListItem( + props, + BufferState( + networkExpanded = !collapsedNetworks.contains(props.network.networkId) + ) ) - ) }.filter { (props, state) -> props.info.type.hasFlag(BufferInfo.Type.StatusBuffer) || state.networkExpanded } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigAdapter.kt similarity index 95% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigAdapter.kt index 33c4c36f1b0dfce61b71a762322f4cf3af669b98..53b3cc1edb1c5fd594d06798eb46b3e3f7c8dd8a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigAdapter.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.buffers import android.arch.lifecycle.LifecycleOwner import android.arch.lifecycle.LiveData @@ -49,7 +49,9 @@ class BufferViewConfigAdapter( parent.context ) val view = inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false) - return BufferViewConfigViewHolder(view) + return BufferViewConfigViewHolder( + view + ) } override fun getItem(position: Int): BufferViewConfig? = when (position) { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt similarity index 87% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt index 6c5b6b382879dbd5c79a84a87a6a4733fee69fad..5b2aa53e9617f2543ab120461ad1dda03411efe1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.buffers import android.arch.lifecycle.ViewModelProviders import android.os.Bundle @@ -11,7 +11,7 @@ import butterknife.BindView import butterknife.ButterKnife import de.kuschku.libquassel.protocol.BufferId import de.kuschku.quasseldroid_ng.R -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread import de.kuschku.quasseldroid_ng.util.helper.map @@ -33,9 +33,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() { private lateinit var viewModel: QuasselViewModel private var ircFormatDeserializer: IrcFormatDeserializer? = null - private val renderingSettings = RenderingSettings( - showPrefix = RenderingSettings.ShowPrefixMode.FIRST, - colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + private val renderingSettings = AppearanceSettings( + showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, + colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, colorizeMirc = true, timeFormat = "" ) @@ -56,7 +56,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() { val view = inflater.inflate(R.layout.fragment_chat_list, container, false) ButterKnife.bind(this, view) - val adapter = BufferViewConfigAdapter(this, viewModel.bufferViewConfigs) + val adapter = BufferViewConfigAdapter( + this, viewModel.bufferViewConfigs + ) chatListSpinner.adapter = adapter chatListSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/FormattedMessage.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/FormattedMessage.kt similarity index 70% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/FormattedMessage.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/FormattedMessage.kt index 68f1c9748eca0fbe2395fa1d2deb4beb253158b4..3427ea19c5545003d179dac24057698b05c076af 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/FormattedMessage.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/FormattedMessage.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.messages class FormattedMessage( val id: Int, diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt similarity index 92% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt index 8499aaf8b94ebe3e4895c972a076ed775772e6bc..41d648d42164a19c805c15e40ffac2163247e2fc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.messages import android.arch.paging.PagedListAdapter import android.content.Context @@ -10,7 +10,7 @@ import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase.DatabaseMessage -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.util.helper.getOrPut class MessageAdapter( @@ -31,9 +31,9 @@ class MessageAdapter( ) { private val messageRenderer: MessageRenderer = QuasselMessageRenderer( context, - RenderingSettings( - showPrefix = RenderingSettings.ShowPrefixMode.FIRST, - colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + AppearanceSettings( + showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, + colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, colorizeMirc = true, timeFormat = "" ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt similarity index 99% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt index 1861c7a248b08721a0d109fb2f166965207e1e89..3494f74def587dbdaeba6331b6da61159a9defa3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.messages import android.arch.lifecycle.Observer import android.arch.lifecycle.ViewModelProviders diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageRenderer.kt similarity index 92% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageRenderer.kt index 206b100ae194eb942c585cef30f864d2dbe4693b..9620645f6ee05993c7062c705267df3003f4692d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageRenderer.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.messages import android.support.annotation.LayoutRes import de.kuschku.libquassel.protocol.Message_Type diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt similarity index 79% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt index 6b237e5900b8309a3d852a236482c5addd697447..3f250853e4d5927c25e590cc2b51d8ef92628260 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.messages import android.content.Context import android.graphics.Typeface @@ -15,9 +15,9 @@ import de.kuschku.libquassel.protocol.MsgId import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings.ColorizeNicknamesMode -import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings.ShowPrefixMode +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings.ColorizeNicknamesMode +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings.ShowPrefixMode import de.kuschku.quasseldroid_ng.util.helper.styledAttributes import de.kuschku.quasseldroid_ng.util.helper.visibleIf import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatDeserializer @@ -30,11 +30,11 @@ import java.text.SimpleDateFormat class QuasselMessageRenderer( private val context: Context, - private val renderingSettings: RenderingSettings + private val appearanceSettings: AppearanceSettings ) : MessageRenderer { private val timeFormatter = DateTimeFormatter.ofPattern( - if (renderingSettings.timeFormat.isNotBlank()) { - renderingSettings.timeFormat + if (appearanceSettings.timeFormat.isNotBlank()) { + appearanceSettings.timeFormat } else { (DateFormat.getTimeFormat(context) as SimpleDateFormat).toLocalizedPattern() } @@ -73,10 +73,13 @@ class QuasselMessageRenderer( messageType: Message_Type?, hasHighlight: Boolean) { if (hasHighlight) { - val attrs = intArrayOf(R.attr.colorBackgroundHighlight) - val colors = viewHolder.itemView.context.obtainStyledAttributes(attrs) - viewHolder.itemView.setBackgroundColor(colors.getColor(0, 0)) - colors.recycle() + viewHolder.itemView.context.theme.styledAttributes( + R.attr.colorForegroundHighlight, R.attr.colorBackgroundHighlight + ) { + viewHolder.time.setTextColor(getColor(0, 0)) + viewHolder.content.setTextColor(getColor(0, 0)) + viewHolder.itemView.setBackgroundColor(getColor(1, 0)) + } } } @@ -88,14 +91,16 @@ class QuasselMessageRenderer( override fun render(message: QuasselDatabase.DatabaseMessage, markerLine: MsgId): FormattedMessage { + val self = Message_Flag.of(message.flag).hasFlag(Message_Flag.Self) + val highlight = Message_Flag.of(message.flag).hasFlag(Message_Flag.Highlight) return when (Message_Type.of(message.type).enabledValues().firstOrNull()) { Message_Type.Plain -> FormattedMessage( message.messageId, timeFormatter.format(message.time.atZone(zoneId)), SpanFormatter.format( context.getString(R.string.message_format_plain), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), formatContent(message.content) ), message.messageId == markerLine @@ -105,8 +110,8 @@ class QuasselMessageRenderer( timeFormatter.format(message.time.atZone(zoneId)), SpanFormatter.format( context.getString(R.string.message_format_action), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), formatContent(message.content) ), message.messageId == markerLine @@ -116,8 +121,8 @@ class QuasselMessageRenderer( timeFormatter.format(message.time.atZone(zoneId)), SpanFormatter.format( context.getString(R.string.message_format_notice), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), formatContent(message.content) ), message.messageId == markerLine @@ -127,10 +132,10 @@ class QuasselMessageRenderer( timeFormatter.format(message.time.atZone(zoneId)), SpanFormatter.format( context.getString(R.string.message_format_nick), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), - formatPrefix(message.senderPrefixes), - formatNick(message.content, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)) + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.content, self, highlight) ), message.messageId == markerLine ) @@ -140,8 +145,8 @@ class QuasselMessageRenderer( SpanFormatter.format( context.getString(R.string.message_format_mode), message.content, - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)) + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight) ), message.messageId == markerLine ) @@ -150,8 +155,8 @@ class QuasselMessageRenderer( timeFormatter.format(message.time.atZone(zoneId)), SpanFormatter.format( context.getString(R.string.message_format_join), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)) + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight) ), message.messageId == markerLine ) @@ -161,14 +166,14 @@ class QuasselMessageRenderer( if (message.content.isBlank()) { SpanFormatter.format( context.getString(R.string.message_format_part_1), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)) + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight) ) } else { SpanFormatter.format( context.getString(R.string.message_format_part_2), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), message.content ) }, @@ -180,14 +185,14 @@ class QuasselMessageRenderer( if (message.content.isBlank()) { SpanFormatter.format( context.getString(R.string.message_format_quit_1), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)) + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight) ) } else { SpanFormatter.format( context.getString(R.string.message_format_quit_2), - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), message.content ) }, @@ -239,8 +244,8 @@ class QuasselMessageRenderer( SpanFormatter.format( "[%d] %s%s: %s", message.type, - formatPrefix(message.senderPrefixes), - formatNick(message.sender, Message_Flag.of(message.flag).hasFlag(Message_Flag.Self)), + formatPrefix(message.senderPrefixes, highlight), + formatNick(message.sender, self, highlight), message.content ), message.messageId == markerLine @@ -268,7 +273,7 @@ class QuasselMessageRenderer( ) private fun formatContent(content: String): CharSequence { - val formattedText = ircFormatDeserializer.formatString(content, renderingSettings.colorizeMirc) + val formattedText = ircFormatDeserializer.formatString(content, appearanceSettings.colorizeMirc) val text = SpannableString(formattedText) for (result in urlPattern.findAll(formattedText)) { @@ -310,15 +315,15 @@ class QuasselMessageRenderer( return spannableString } - private fun formatNick(sender: String, self: Boolean) - = when (renderingSettings.colorizeNicknames) { - ColorizeNicknamesMode.ALL -> formatNickImpl(sender, true) - ColorizeNicknamesMode.ALL_BUT_MINE -> formatNickImpl(sender, !self) + private fun formatNick(sender: String, self: Boolean, + highlight: Boolean) = when (appearanceSettings.colorizeNicknames) { + ColorizeNicknamesMode.ALL -> formatNickImpl(sender, !highlight) + ColorizeNicknamesMode.ALL_BUT_MINE -> formatNickImpl(sender, !self && !highlight) ColorizeNicknamesMode.NONE -> formatNickImpl(sender, false) } - private fun formatPrefix(prefix: String) - = when (renderingSettings.showPrefix) { + private fun formatPrefix(prefix: String, + highlight: Boolean) = when (appearanceSettings.showPrefix) { ShowPrefixMode.ALL -> prefix ShowPrefixMode.FIRST -> prefix.substring(0, Math.min(prefix.length, 1)) ShowPrefixMode.NONE -> "" diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageViewHolder.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageViewHolder.kt similarity index 92% rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageViewHolder.kt rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageViewHolder.kt index cfddcb3e5c8cf6d0f91eec76e3e3432b5a4d0f26..cea40729c09a2e7717342bc5550e6099b7b19ef3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageViewHolder.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageViewHolder.kt @@ -1,4 +1,4 @@ -package de.kuschku.quasseldroid_ng.ui.chat +package de.kuschku.quasseldroid_ng.ui.chat.messages import android.support.v7.widget.RecyclerView import android.text.method.LinkMovementMethod diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt new file mode 100644 index 0000000000000000000000000000000000000000..91a4ab81801e1e5d16c6da6783d040fa6a66b806 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt @@ -0,0 +1,10 @@ +package de.kuschku.quasseldroid_ng.ui.settings + +import android.content.Context +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings + +object Settings { + fun appearance(context: Context) = AppearanceSettings() + fun backlog(context: Context) = BacklogSettings() +} \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt new file mode 100644 index 0000000000000000000000000000000000000000..0051ebaebbcf57879697222ceea303bf256befef --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt @@ -0,0 +1,33 @@ +package de.kuschku.quasseldroid_ng.ui.settings.data + +import android.support.annotation.StyleRes +import de.kuschku.quasseldroid_ng.R + +data class AppearanceSettings( + val showPrefix: ShowPrefixMode = ShowPrefixMode.FIRST, + val colorizeNicknames: ColorizeNicknamesMode = ColorizeNicknamesMode.ALL_BUT_MINE, + val colorizeMirc: Boolean = true, + val timeFormat: String = "", + val showLag: Boolean = true, + val theme: Theme = Theme.QUASSEL_LIGHT +) { + enum class ColorizeNicknamesMode { + ALL, + ALL_BUT_MINE, + NONE + } + + enum class ShowPrefixMode { + ALL, + FIRST, + NONE + } + + enum class Theme(@StyleRes val style: Int) { + QUASSEL_LIGHT(R.style.Theme_ChatTheme_Quassel_Light), + QUASSEL_DARK(R.style.Theme_ChatTheme_Quassel_Dark), + SOLARIZED_LIGHT(R.style.Theme_ChatTheme_Solarized_Light), + SOLARIZED_DARK(R.style.Theme_ChatTheme_Solarized_Dark), + AMOLED(R.style.Theme_ChatTheme_Amoled) + } +} \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/DisplaySettings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/DisplaySettings.kt deleted file mode 100644 index bfd333313d06b4c792d9560135b58038ed7e0b3d..0000000000000000000000000000000000000000 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/DisplaySettings.kt +++ /dev/null @@ -1,5 +0,0 @@ -package de.kuschku.quasseldroid_ng.ui.settings.data - -data class DisplaySettings( - val showLag: Boolean = true -) \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/RenderingSettings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/RenderingSettings.kt deleted file mode 100644 index f1c6eea9290fc8fbefab043d8a81f5eb243886bf..0000000000000000000000000000000000000000 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/RenderingSettings.kt +++ /dev/null @@ -1,38 +0,0 @@ -package de.kuschku.quasseldroid_ng.ui.settings.data - -data class RenderingSettings( - val showPrefix: ShowPrefixMode = ShowPrefixMode.FIRST, - val colorizeNicknames: ColorizeNicknamesMode = ColorizeNicknamesMode.ALL_BUT_MINE, - val colorizeMirc: Boolean = true, - val timeFormat: String = "" -) { - enum class ColorizeNicknamesMode(val value: Int) { - ALL(0), - ALL_BUT_MINE(1), - NONE(2); - - companion object { - fun of(value: Int) = when (value) { - 0 -> ALL - 1 -> ALL_BUT_MINE - 2 -> NONE - else -> ALL_BUT_MINE - } - } - } - - enum class ShowPrefixMode(val value: Int) { - ALL(0), - FIRST(1), - NONE(2); - - companion object { - fun of(value: Int) = when (value) { - 0 -> ALL - 1 -> FIRST - 2 -> NONE - else -> FIRST - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt index c75f9879a3c01e5a4618fe690826ccf8f0acde20..5341b76c37572c3a711585e2bb4997b108141417 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt @@ -16,9 +16,9 @@ import de.kuschku.libquassel.session.ISession import de.kuschku.libquassel.session.SessionManager import de.kuschku.libquassel.util.and import de.kuschku.libquassel.util.hasFlag -import de.kuschku.quasseldroid_ng.ui.chat.BufferListAdapter import de.kuschku.quasseldroid_ng.ui.chat.NickListAdapter import de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment +import de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferListAdapter import de.kuschku.quasseldroid_ng.util.helper.map import de.kuschku.quasseldroid_ng.util.helper.switchMap import de.kuschku.quasseldroid_ng.util.helper.switchMapRx diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt index 411cf406d0020f1ee0fd81df6e3862fc633ba78f..b2367185da0446939567b18fd6ff0ec22fb0b369 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt @@ -7,6 +7,8 @@ import android.support.annotation.DrawableRes import android.support.v7.app.AppCompatActivity import de.kuschku.libquassel.session.Backend import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.Settings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.util.helper.updateRecentsHeaderIfExisting abstract class ServiceBoundActivity : AppCompatActivity() { @@ -16,13 +18,15 @@ abstract class ServiceBoundActivity : AppCompatActivity() { protected val recentsHeaderColor: Int = R.color.colorPrimary private val connection = BackendServiceConnection() - val backend: LiveData<Backend?> get() = connection.backend + protected lateinit var appearanceSettings: AppearanceSettings + override fun onCreate(savedInstanceState: Bundle?) { connection.context = this - setTheme(R.style.Theme_ChatTheme_Quassel_Light) + appearanceSettings = Settings.appearance(this) + setTheme(appearanceSettings.theme.style) super.onCreate(savedInstanceState) connection.start() updateRecentsHeader() diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0d1864a8e0eba64a55ca92f6aa494794ba9b48e3..4361f9d801378105f163e11c864b1d99afebffaf 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -55,7 +55,7 @@ <fragment android:id="@+id/contentMessages" - android:name="de.kuschku.quasseldroid_ng.ui.chat.MessageListFragment" + android:name="de.kuschku.quasseldroid_ng.ui.chat.messages.MessageListFragment" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" @@ -107,7 +107,7 @@ <fragment android:id="@+id/chatListFragment" - android:name="de.kuschku.quasseldroid_ng.ui.chat.BufferViewConfigFragment" + android:name="de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferViewConfigFragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout="@layout/fragment_chat_list" /> diff --git a/app/src/main/res/values/themes_amoled.xml b/app/src/main/res/values/themes_amoled.xml index fe36b6143e69378f0b2f3385fe8d83ffc16efefb..342af0aa28e27c0392b8c4f69a43110a01530f17 100644 --- a/app/src/main/res/values/themes_amoled.xml +++ b/app/src/main/res/values/themes_amoled.xml @@ -37,11 +37,13 @@ <item name="colorBackground">#000000</item> <item name="android:windowBackground">@color/amoled_background</item> - <item name="colorBackgroundHighlight">#ff8811</item> + <item name="colorBackgroundHighlight">#FFA726</item> <item name="colorBackgroundSecondary">@null</item> <item name="colorBackgroundCard">#303030</item> <item name="colorBackgroundDialog">#000000</item> + <item name="colorMarkerLine">#800000</item> + <item name="colorTintActivity">#88cc33</item> <item name="colorTintMessage">#2277dd</item> <item name="colorTintHighlight">#ff8811</item> diff --git a/app/src/main/res/values/themes_quassel.xml b/app/src/main/res/values/themes_quassel.xml index 3d9c05174051a9ea9903397ecc8f457bc460dd22..918278e903c36915395890ca9f31c675143df6b8 100644 --- a/app/src/main/res/values/themes_quassel.xml +++ b/app/src/main/res/values/themes_quassel.xml @@ -32,12 +32,12 @@ <item name="colorForegroundMirc">0x1</item> <item name="colorBackground">#FAFAFA</item> - <item name="colorBackgroundHighlight">#ff8811</item> + <item name="colorBackgroundHighlight">#FFA726</item> <item name="colorBackgroundSecondary">@null</item> <item name="colorBackgroundCard">#FFFFFF</item> <item name="colorBackgroundDialog">#FAFAFA</item> - <item name="colorMarkerLine">#ff0000</item> + <item name="colorMarkerLine">#800000</item> <item name="colorTintActivity">#88cc33</item> <item name="colorTintMessage">#2277dd</item> @@ -75,11 +75,13 @@ <item name="colorForegroundMirc">0x0</item> <item name="colorBackground">#303030</item> - <item name="colorBackgroundHighlight">#ff8811</item> + <item name="colorBackgroundHighlight">#FFA726</item> <item name="colorBackgroundSecondary">@null</item> <item name="colorBackgroundCard">#424242</item> <item name="colorBackgroundDialog">#303030</item> + <item name="colorMarkerLine">#800000</item> + <item name="colorTintActivity">#88cc33</item> <item name="colorTintMessage">#2277dd</item> <item name="colorTintHighlight">#ff8811</item> diff --git a/app/src/main/res/values/themes_solarized.xml b/app/src/main/res/values/themes_solarized.xml index c1ece021531619e6f4a2121e9276a0680fe9dbc0..926604c427c343b434fe8fcd278ead43a54238fa 100644 --- a/app/src/main/res/values/themes_solarized.xml +++ b/app/src/main/res/values/themes_solarized.xml @@ -28,9 +28,9 @@ <item name="senderColorE">#4AC1B8</item> <item name="senderColorF">#657900</item> - <item name="colorForeground">#839495</item> - <item name="colorForegroundHighlight">#839495</item> - <item name="colorForegroundSecondary">#576A66</item> + <item name="colorForeground">#586e75</item> + <item name="colorForegroundHighlight">#002B36</item> + <item name="colorForegroundSecondary">#657b83</item> <item name="colorForegroundAction">#268BD2</item> <item name="colorForegroundNotice">#B58900</item> <item name="colorForegroundError">#B00000</item> @@ -38,14 +38,16 @@ <item name="colorForegroundMirc">0xF</item> <item name="colorBackground">#FDF6E3</item> - <item name="colorBackgroundHighlight">#268bd2</item> + <item name="colorBackgroundHighlight">#D5A920</item> <item name="colorBackgroundSecondary">@null</item> <item name="colorBackgroundCard">#EEE8D5</item> <item name="colorBackgroundDialog">#FDF6E3</item> - <item name="colorTintActivity">#88cc33</item> - <item name="colorTintMessage">#2277dd</item> - <item name="colorTintHighlight">#ff8811</item> + <item name="colorMarkerLine">#CB4B16</item> + + <item name="colorTintActivity">#859900</item> + <item name="colorTintMessage">#268BD2</item> + <item name="colorTintHighlight">#EB6B36</item> </style> <string name="themeSolarizedDarkName">Solarized (Dark)</string> @@ -73,9 +75,9 @@ <item name="senderColorE">#4AC1B8</item> <item name="senderColorF">#657900</item> - <item name="colorForeground">#839495</item> - <item name="colorForegroundHighlight">#839495</item> - <item name="colorForegroundSecondary">#576A66</item> + <item name="colorForeground">#93a1a1</item> + <item name="colorForegroundHighlight">#002B36</item> + <item name="colorForegroundSecondary">#839496</item> <item name="colorForegroundAction">#268BD2</item> <item name="colorForegroundNotice">#B58900</item> <item name="colorForegroundError">#B00000</item> @@ -83,13 +85,15 @@ <item name="colorForegroundMirc">0xF</item> <item name="colorBackground">#002B36</item> - <item name="colorBackgroundHighlight">#268bd2</item> + <item name="colorBackgroundHighlight">#D5A920</item> <item name="colorBackgroundSecondary">@null</item> <item name="colorBackgroundCard">#073642</item> <item name="colorBackgroundDialog">#002B36</item> - <item name="colorTintActivity">#88cc33</item> - <item name="colorTintMessage">#2277dd</item> - <item name="colorTintHighlight">#ff8811</item> + <item name="colorMarkerLine">#CB4B16</item> + + <item name="colorTintActivity">#859900</item> + <item name="colorTintMessage">#268BD2</item> + <item name="colorTintHighlight">#EB6B36</item> </style> </resources>