Skip to content
Snippets Groups Projects
Verified Commit fc192610 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Cleanup

parent 129ebdb2
Branches
Tags
No related merge requests found
Showing
with 107 additions and 236 deletions
...@@ -105,7 +105,7 @@ android { ...@@ -105,7 +105,7 @@ android {
lintOptions { lintOptions {
isWarningsAsErrors = true isWarningsAsErrors = true
setLintConfig(file("../lint.xml")) lintConfig = file("../lint.xml")
} }
} }
......
...@@ -55,7 +55,6 @@ import de.kuschku.quasseldroid.ssl.custom.QuasselHostnameManager ...@@ -55,7 +55,6 @@ import de.kuschku.quasseldroid.ssl.custom.QuasselHostnameManager
import de.kuschku.quasseldroid.util.backport.DaggerLifecycleService import de.kuschku.quasseldroid.util.backport.DaggerLifecycleService
import de.kuschku.quasseldroid.util.compatibility.AndroidHandlerService import de.kuschku.quasseldroid.util.compatibility.AndroidHandlerService
import de.kuschku.quasseldroid.util.helper.* import de.kuschku.quasseldroid.util.helper.*
import de.kuschku.quasseldroid.util.irc.format.ContentFormatter
import de.kuschku.quasseldroid.util.irc.format.IrcFormatSerializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatSerializer
import de.kuschku.quasseldroid.util.ui.LocaleHelper import de.kuschku.quasseldroid.util.ui.LocaleHelper
import io.reactivex.subjects.PublishSubject import io.reactivex.subjects.PublishSubject
...@@ -279,9 +278,6 @@ class QuasselService : DaggerLifecycleService(), ...@@ -279,9 +278,6 @@ class QuasselService : DaggerLifecycleService(),
@Inject @Inject
lateinit var accountDatabase: AccountDatabase lateinit var accountDatabase: AccountDatabase
@Inject
lateinit var contentFormatter: ContentFormatter
@Inject @Inject
lateinit var messageSettings: MessageSettings lateinit var messageSettings: MessageSettings
......
...@@ -26,7 +26,6 @@ import android.content.Intent ...@@ -26,7 +26,6 @@ import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Canvas import android.graphics.Canvas
import android.graphics.Typeface
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
...@@ -75,6 +74,7 @@ import de.kuschku.quasseldroid.ui.clientsettings.client.ClientSettingsActivity ...@@ -75,6 +74,7 @@ import de.kuschku.quasseldroid.ui.clientsettings.client.ClientSettingsActivity
import de.kuschku.quasseldroid.ui.coresettings.CoreSettingsActivity import de.kuschku.quasseldroid.ui.coresettings.CoreSettingsActivity
import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity
import de.kuschku.quasseldroid.ui.setup.user.UserSetupActivity import de.kuschku.quasseldroid.ui.setup.user.UserSetupActivity
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.avatars.AvatarHelper
import de.kuschku.quasseldroid.util.helper.* import de.kuschku.quasseldroid.util.helper.*
import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
...@@ -83,7 +83,6 @@ import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures ...@@ -83,7 +83,6 @@ import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures
import de.kuschku.quasseldroid.util.service.ServiceBoundActivity import de.kuschku.quasseldroid.util.service.ServiceBoundActivity
import de.kuschku.quasseldroid.util.ui.DragInterceptBottomSheetBehavior import de.kuschku.quasseldroid.util.ui.DragInterceptBottomSheetBehavior
import de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar import de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar
import de.kuschku.quasseldroid.util.ui.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel import de.kuschku.quasseldroid.viewmodel.EditorViewModel
import de.kuschku.quasseldroid.viewmodel.data.BufferData import de.kuschku.quasseldroid.viewmodel.data.BufferData
import org.threeten.bp.Instant import org.threeten.bp.Instant
...@@ -755,9 +754,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -755,9 +754,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
} }
} }
val colorBackground = theme.styledAttributes(R.attr.colorBackground) { val colorContext = ColorContext(this, messageSettings)
getColor(0, 0)
}
if (info.type.hasFlag(Buffer_Type.QueryBuffer)) { if (info.type.hasFlag(Buffer_Type.QueryBuffer)) {
val nickName = info.bufferName ?: "" val nickName = info.bufferName ?: ""
...@@ -767,12 +764,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -767,12 +764,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
val initial = rawInitial?.toUpperCase().toString() val initial = rawInitial?.toUpperCase().toString()
val senderColor = senderColors[senderColorIndex] val senderColor = senderColors[senderColorIndex]
val fallback = TextDrawable.builder() val fallback = colorContext.prepareTextDrawable().buildRect(initial, senderColor)
.beginConfig()
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24))
.useFont(Typeface.DEFAULT_BOLD)
.endConfig()
.buildRect(initial, senderColor)
val urls = viewModel.networks.value?.get(info.networkId)?.ircUser(info.bufferName)?.let { val urls = viewModel.networks.value?.get(info.networkId)?.ircUser(info.bufferName)?.let {
AvatarHelper.avatar(messageSettings, it, 432) AvatarHelper.avatar(messageSettings, it, 432)
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
package de.kuschku.quasseldroid.ui.chat.buffers package de.kuschku.quasseldroid.ui.chat.buffers
import android.arch.lifecycle.Observer import android.arch.lifecycle.Observer
import android.graphics.Typeface
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.support.v7.widget.* import android.support.v7.widget.*
...@@ -39,12 +38,12 @@ import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork ...@@ -39,12 +38,12 @@ import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
import de.kuschku.libquassel.util.flag.hasFlag import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.libquassel.util.flag.minus import de.kuschku.libquassel.util.flag.minus
import de.kuschku.libquassel.util.helpers.value import de.kuschku.libquassel.util.helpers.value
import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.ui.coresettings.network.NetworkEditActivity import de.kuschku.quasseldroid.ui.coresettings.network.NetworkEditActivity
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.avatars.AvatarHelper
import de.kuschku.quasseldroid.util.helper.combineLatest import de.kuschku.quasseldroid.util.helper.combineLatest
import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.styledAttributes
...@@ -52,8 +51,6 @@ import de.kuschku.quasseldroid.util.helper.toLiveData ...@@ -52,8 +51,6 @@ import de.kuschku.quasseldroid.util.helper.toLiveData
import de.kuschku.quasseldroid.util.helper.zip import de.kuschku.quasseldroid.util.helper.zip
import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
import de.kuschku.quasseldroid.util.ui.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel.Companion.IGNORED_CHARS
import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState
import de.kuschku.quasseldroid.viewmodel.data.BufferListItem import de.kuschku.quasseldroid.viewmodel.data.BufferListItem
import de.kuschku.quasseldroid.viewmodel.data.BufferState import de.kuschku.quasseldroid.viewmodel.data.BufferState
...@@ -259,20 +256,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -259,20 +256,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size_buffer) val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size_buffer)
val senderColors = requireContext().theme.styledAttributes( val colorContext = ColorContext(requireContext(), messageSettings)
R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB,
R.attr.senderColorC, R.attr.senderColorD, R.attr.senderColorE, R.attr.senderColorF
) {
IntArray(length()) {
getColor(it, 0)
}
}
val selfColor = requireContext().theme.styledAttributes(R.attr.colorForegroundSecondary) {
getColor(0, 0)
}
val colorAccent = requireContext().theme.styledAttributes(R.attr.colorAccent) { val colorAccent = requireContext().theme.styledAttributes(R.attr.colorAccent) {
getColor(0, 0) getColor(0, 0)
...@@ -282,12 +266,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -282,12 +266,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
getColor(0, 0) getColor(0, 0)
} }
val colorBackground = requireContext().theme.styledAttributes(R.attr.colorBackground) {
getColor(0, 0)
}
val radius = requireContext().resources.getDimensionPixelSize(R.dimen.avatar_radius)
combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer) combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer)
.toLiveData().zip(database.filtered().listen(accountId)) .toLiveData().zip(database.filtered().listen(accountId))
.observe(this, Observer { it -> .observe(this, Observer { it ->
...@@ -323,38 +301,20 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -323,38 +301,20 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
fallbackDrawable = if (props.info.type.hasFlag(Buffer_Type.QueryBuffer)) { fallbackDrawable = if (props.info.type.hasFlag(Buffer_Type.QueryBuffer)) {
props.ircUser?.let { props.ircUser?.let {
val nickName = it.nick() val nickName = it.nick()
val senderColorIndex = SenderColorUtil.senderColor(nickName) val useSelfColor = when (messageSettings.colorizeNicknames) {
val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull() MessageSettings.ColorizeNicknamesMode.ALL -> false
?: nickName.firstOrNull()
val initial = rawInitial?.toUpperCase().toString()
val senderColor = when (messageSettings.colorizeNicknames) {
MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex]
MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
if (props.ircUser?.network()?.isMyNick(nickName) == true) selfColor props.ircUser?.network()?.isMyNick(nickName) == true
else senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.NONE -> true
MessageSettings.ColorizeNicknamesMode.NONE -> selfColor
} }
TextDrawable.builder().beginConfig() colorContext.buildTextDrawable(it.nick(), useSelfColor)
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let { } ?: colorContext.buildTextDrawable("", colorAway)
if (messageSettings.squareAvatars)
it.buildRoundRect(initial, senderColor, radius)
else it.buildRound(initial, senderColor)
}
}
?: TextDrawable.builder().beginConfig()
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
if (messageSettings.squareAvatars) it.buildRoundRect("", colorAway, radius)
else it.buildRound("", colorAway)
}
} else { } else {
val color = if (props.bufferStatus == BufferStatus.ONLINE) colorAccent val color = if (props.bufferStatus == BufferStatus.ONLINE) colorAccent
else colorAway else colorAway
TextDrawable.builder().beginConfig().useFont(Typeface.DEFAULT_BOLD).endConfig().let { colorContext.buildTextDrawable("#", color)
if (messageSettings.squareAvatars) it.buildRoundRect("#", color, radius)
else it.buildRound("#", color)
}
}, },
avatarUrls = props.ircUser?.let { avatarUrls = props.ircUser?.let {
AvatarHelper.avatar(messageSettings, it, avatarSize) AvatarHelper.avatar(messageSettings, it, avatarSize)
......
...@@ -38,11 +38,11 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil ...@@ -38,11 +38,11 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.AutoCompleteSettings import de.kuschku.quasseldroid.settings.AutoCompleteSettings
import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.avatars.AvatarHelper
import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.helper.toLiveData
import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
import de.kuschku.quasseldroid.util.ui.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel import de.kuschku.quasseldroid.viewmodel.EditorViewModel
import de.kuschku.quasseldroid.viewmodel.EditorViewModel.Companion.IGNORED_CHARS import de.kuschku.quasseldroid.viewmodel.EditorViewModel.Companion.IGNORED_CHARS
import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
...@@ -81,11 +81,7 @@ class AutoCompleteHelper( ...@@ -81,11 +81,7 @@ class AutoCompleteHelper(
getColor(0, 0) getColor(0, 0)
} }
private val colorBackground = activity.theme.styledAttributes(R.attr.colorBackground) { private val colorContext = ColorContext(activity, messageSettings)
getColor(0, 0)
}
private val radius = activity.resources.getDimensionPixelSize(R.dimen.avatar_radius)
init { init {
viewModel.autoCompleteData.toLiveData().observe(activity, Observer { viewModel.autoCompleteData.toLiveData().observe(activity, Observer {
...@@ -108,13 +104,12 @@ class AutoCompleteHelper( ...@@ -108,13 +104,12 @@ class AutoCompleteHelper(
val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull() val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull()
?: nickName.firstOrNull() ?: nickName.firstOrNull()
val initial = rawInitial?.toUpperCase().toString() val initial = rawInitial?.toUpperCase().toString()
val senderColor = when (messageSettings.colorizeNicknames) { val useSelfColor = when (messageSettings.colorizeNicknames) {
MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.ALL -> false
MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> it.self
if (it.self) selfColor MessageSettings.ColorizeNicknamesMode.NONE -> true
else senderColors[senderColorIndex]
MessageSettings.ColorizeNicknamesMode.NONE -> selfColor
} }
val senderColor = if (useSelfColor) selfColor else senderColors[senderColorIndex]
fun formatNick(nick: CharSequence): CharSequence { fun formatNick(nick: CharSequence): CharSequence {
val spannableString = SpannableString(nick) val spannableString = SpannableString(nick)
...@@ -135,11 +130,7 @@ class AutoCompleteHelper( ...@@ -135,11 +130,7 @@ class AutoCompleteHelper(
it.copy( it.copy(
displayNick = formatNick(it.nick), displayNick = formatNick(it.nick),
fallbackDrawable = TextDrawable.builder().beginConfig() fallbackDrawable = colorContext.buildTextDrawable(initial, senderColor),
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
else it.buildRound(initial, senderColor)
},
modes = when (messageSettings.showPrefix) { modes = when (messageSettings.showPrefix) {
MessageSettings.ShowPrefixMode.ALL -> MessageSettings.ShowPrefixMode.ALL ->
it.modes it.modes
...@@ -157,10 +148,7 @@ class AutoCompleteHelper( ...@@ -157,10 +148,7 @@ class AutoCompleteHelper(
else colorAway else colorAway
it.copy( it.copy(
icon = TextDrawable.builder().beginConfig().useFont(Typeface.DEFAULT_BOLD).endConfig().let { icon = colorContext.buildTextDrawable("#", color)
if (messageSettings.squareAvatars) it.buildRoundRect("#", color, radius)
else it.buildRound("#", color)
}
) )
} }
else -> it else -> it
...@@ -180,10 +168,6 @@ class AutoCompleteHelper( ...@@ -180,10 +168,6 @@ class AutoCompleteHelper(
this.dataListeners += listener this.dataListeners += listener
} }
fun removeDataListener(listener: ((List<AutoCompleteItem>) -> Unit)) {
this.dataListeners -= listener
}
private fun fullAutoComplete(sessionOptional: Optional<ISession>, id: Int, private fun fullAutoComplete(sessionOptional: Optional<ISession>, id: Int,
lastWord: Pair<String, IntRange>): List<AutoCompleteItem> { lastWord: Pair<String, IntRange>): List<AutoCompleteItem> {
val session = sessionOptional.orNull() val session = sessionOptional.orNull()
......
...@@ -39,13 +39,13 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil ...@@ -39,13 +39,13 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.avatars.AvatarHelper
import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.helper.visibleIf import de.kuschku.quasseldroid.util.helper.visibleIf
import de.kuschku.quasseldroid.util.irc.format.ContentFormatter import de.kuschku.quasseldroid.util.irc.format.ContentFormatter
import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
import de.kuschku.quasseldroid.util.ui.SpanFormatter import de.kuschku.quasseldroid.util.ui.SpanFormatter
import de.kuschku.quasseldroid.util.ui.TextDrawable
import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage
import org.threeten.bp.ZoneId import org.threeten.bp.ZoneId
import org.threeten.bp.format.DateTimeFormatter import org.threeten.bp.format.DateTimeFormatter
...@@ -98,11 +98,7 @@ class QuasselMessageRenderer @Inject constructor( ...@@ -98,11 +98,7 @@ class QuasselMessageRenderer @Inject constructor(
getColor(0, 0) getColor(0, 0)
} }
private val colorBackground = context.theme.styledAttributes(R.attr.colorBackground) { private val colorContext = ColorContext(context, messageSettings)
getColor(0, 0)
}
private val radius = context.resources.getDimensionPixelSize(R.dimen.avatar_radius)
private val zoneId = ZoneId.systemDefault() private val zoneId = ZoneId.systemDefault()
...@@ -240,13 +236,13 @@ class QuasselMessageRenderer @Inject constructor( ...@@ -240,13 +236,13 @@ class QuasselMessageRenderer @Inject constructor(
val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\') val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\')
.firstOrNull() ?: nickName.firstOrNull() .firstOrNull() ?: nickName.firstOrNull()
val initial = rawInitial?.toUpperCase().toString() val initial = rawInitial?.toUpperCase().toString()
val senderColor = when (messageSettings.colorizeNicknames) { val useSelfColor = when (messageSettings.colorizeNicknames) {
MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.ALL -> false
MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
if (message.content.flag.hasFlag(Message_Flag.Self)) selfColor message.content.flag.hasFlag(Message_Flag.Self)
else senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.NONE -> true
MessageSettings.ColorizeNicknamesMode.NONE -> selfColor
} }
val senderColor = if (useSelfColor) selfColor else senderColors[senderColorIndex]
FormattedMessage( FormattedMessage(
id = message.content.messageId, id = message.content.messageId,
...@@ -261,11 +257,7 @@ class QuasselMessageRenderer @Inject constructor( ...@@ -261,11 +257,7 @@ class QuasselMessageRenderer @Inject constructor(
}, },
realName = realName, realName = realName,
avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize), avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
fallbackDrawable = TextDrawable.builder().beginConfig() fallbackDrawable = colorContext.buildTextDrawable(initial, senderColor),
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
else it.buildRound(initial, senderColor)
},
hasDayChange = message.hasDayChange, hasDayChange = message.hasDayChange,
isMarkerLine = message.isMarkerLine, isMarkerLine = message.isMarkerLine,
isExpanded = message.isExpanded, isExpanded = message.isExpanded,
...@@ -278,13 +270,13 @@ class QuasselMessageRenderer @Inject constructor( ...@@ -278,13 +270,13 @@ class QuasselMessageRenderer @Inject constructor(
val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\') val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\')
.firstOrNull() ?: nickName.firstOrNull() .firstOrNull() ?: nickName.firstOrNull()
val initial = rawInitial?.toUpperCase().toString() val initial = rawInitial?.toUpperCase().toString()
val senderColor = when (messageSettings.colorizeNicknames) { val useSelfColor = when (messageSettings.colorizeNicknames) {
MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.ALL -> false
MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
if (message.content.flag.hasFlag(Message_Flag.Self)) selfColor message.content.flag.hasFlag(Message_Flag.Self)
else senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.NONE -> true
MessageSettings.ColorizeNicknamesMode.NONE -> selfColor
} }
val senderColor = if (useSelfColor) selfColor else senderColors[senderColorIndex]
FormattedMessage( FormattedMessage(
id = message.content.messageId, id = message.content.messageId,
...@@ -297,11 +289,7 @@ class QuasselMessageRenderer @Inject constructor( ...@@ -297,11 +289,7 @@ class QuasselMessageRenderer @Inject constructor(
contentFormatter.formatContent(message.content.content, monochromeForeground) contentFormatter.formatContent(message.content.content, monochromeForeground)
), ),
avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize), avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
fallbackDrawable = TextDrawable.builder().beginConfig() fallbackDrawable = colorContext.buildTextDrawable(initial, senderColor),
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
else it.buildRound(initial, senderColor)
},
hasDayChange = message.hasDayChange, hasDayChange = message.hasDayChange,
isMarkerLine = message.isMarkerLine, isMarkerLine = message.isMarkerLine,
isExpanded = message.isExpanded, isExpanded = message.isExpanded,
......
...@@ -47,13 +47,13 @@ import de.kuschku.quasseldroid.R ...@@ -47,13 +47,13 @@ import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.ui.chat.info.user.UserInfoActivity import de.kuschku.quasseldroid.ui.chat.info.user.UserInfoActivity
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.avatars.AvatarHelper
import de.kuschku.quasseldroid.util.helper.loadWithFallbacks import de.kuschku.quasseldroid.util.helper.loadWithFallbacks
import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.helper.toLiveData
import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
import de.kuschku.quasseldroid.util.ui.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel.Companion.IGNORED_CHARS import de.kuschku.quasseldroid.viewmodel.EditorViewModel.Companion.IGNORED_CHARS
import de.kuschku.quasseldroid.viewmodel.data.Avatar import de.kuschku.quasseldroid.viewmodel.data.Avatar
import javax.inject.Inject import javax.inject.Inject
...@@ -98,11 +98,7 @@ class NickListFragment : ServiceBoundFragment() { ...@@ -98,11 +98,7 @@ class NickListFragment : ServiceBoundFragment() {
getColor(0, 0) getColor(0, 0)
} }
val colorBackground = requireContext().theme.styledAttributes(R.attr.colorBackground) { val colorContext = ColorContext(requireContext(), messageSettings)
getColor(0, 0)
}
val radius = requireContext().resources.getDimensionPixelSize(R.dimen.avatar_radius)
val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size) val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size)
viewModel.nickData.toLiveData().observe(this, Observer { viewModel.nickData.toLiveData().observe(this, Observer {
...@@ -113,13 +109,12 @@ class NickListFragment : ServiceBoundFragment() { ...@@ -113,13 +109,12 @@ class NickListFragment : ServiceBoundFragment() {
val rawInitial = nickName.trimStart(*IGNORED_CHARS) val rawInitial = nickName.trimStart(*IGNORED_CHARS)
.firstOrNull() ?: nickName.firstOrNull() .firstOrNull() ?: nickName.firstOrNull()
val initial = rawInitial?.toUpperCase().toString() val initial = rawInitial?.toUpperCase().toString()
val senderColor = when (messageSettings.colorizeNicknames) { val useSelfColor = when (messageSettings.colorizeNicknames) {
MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] MessageSettings.ColorizeNicknamesMode.ALL -> false
MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> it.self
if (it.self) selfColor MessageSettings.ColorizeNicknamesMode.NONE -> true
else senderColors[senderColorIndex]
MessageSettings.ColorizeNicknamesMode.NONE -> selfColor
} }
val senderColor = if (useSelfColor) selfColor else senderColors[senderColorIndex]
fun formatNick(nick: CharSequence): CharSequence { fun formatNick(nick: CharSequence): CharSequence {
val spannableString = SpannableString(nick) val spannableString = SpannableString(nick)
...@@ -139,11 +134,7 @@ class NickListFragment : ServiceBoundFragment() { ...@@ -139,11 +134,7 @@ class NickListFragment : ServiceBoundFragment() {
} }
it.copy( it.copy(
displayNick = formatNick(it.nick), displayNick = formatNick(it.nick),
fallbackDrawable = TextDrawable.builder().beginConfig() fallbackDrawable = colorContext.buildTextDrawable(initial, senderColor),
.textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
else it.buildRound(initial, senderColor)
},
initial = initial, initial = initial,
modes = when (messageSettings.showPrefix) { modes = when (messageSettings.showPrefix) {
MessageSettings.ShowPrefixMode.ALL -> MessageSettings.ShowPrefixMode.ALL ->
......
...@@ -44,7 +44,6 @@ import de.kuschku.libquassel.util.helpers.nullIf ...@@ -44,7 +44,6 @@ import de.kuschku.libquassel.util.helpers.nullIf
import de.kuschku.quasseldroid.Keys import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.ConnectionSettings
import de.kuschku.quasseldroid.settings.Settings import de.kuschku.quasseldroid.settings.Settings
import de.kuschku.quasseldroid.ui.clientsettings.about.AboutActivity import de.kuschku.quasseldroid.ui.clientsettings.about.AboutActivity
import de.kuschku.quasseldroid.ui.clientsettings.client.ClientSettingsActivity import de.kuschku.quasseldroid.ui.clientsettings.client.ClientSettingsActivity
...@@ -98,9 +97,6 @@ abstract class ServiceBoundSetupActivity : ...@@ -98,9 +97,6 @@ abstract class ServiceBoundSetupActivity :
} }
} }
@Inject
lateinit var connectionSettings: ConnectionSettings
@Inject @Inject
lateinit var appearanceSettings: AppearanceSettings lateinit var appearanceSettings: AppearanceSettings
...@@ -109,8 +105,6 @@ abstract class ServiceBoundSetupActivity : ...@@ -109,8 +105,6 @@ abstract class ServiceBoundSetupActivity :
protected var accountId: Long = -1 protected var accountId: Long = -1
private var startedSelection = false
class SetupActivityViewPagerPageChangeListener(private val activity: ServiceBoundSetupActivity) : class SetupActivityViewPagerPageChangeListener(private val activity: ServiceBoundSetupActivity) :
ViewPager.OnPageChangeListener { ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) { override fun onPageScrollStateChanged(state: Int) {
......
/*
* Quasseldroid - Quassel client for Android
*
* Copyright (c) 2018 Janne Koschinski
* Copyright (c) 2018 The Quassel Project
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3 as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.kuschku.quasseldroid.ui.setup
interface ValidityChangeCallback {
fun invoke(isValid: Boolean)
}
...@@ -133,26 +133,14 @@ class AccountAdapter( ...@@ -133,26 +133,14 @@ class AccountAdapter(
actionListeners.add(f) actionListeners.add(f)
} }
fun removeEditListener(f: (Long) -> Unit) {
actionListeners.remove(f)
}
fun addAddListener(f: () -> Unit) { fun addAddListener(f: () -> Unit) {
addListeners.add(f) addListeners.add(f)
} }
fun removeAddListener(f: () -> Unit) {
addListeners.remove(f)
}
fun addSelectionListener(f: (Long) -> Unit) { fun addSelectionListener(f: (Long) -> Unit) {
selectionListeners.add(f) selectionListeners.add(f)
} }
fun removeSelectionListener(f: (Long) -> Unit) {
selectionListeners.remove(f)
}
override fun onBindViewHolder(holder: AccountViewHolder, override fun onBindViewHolder(holder: AccountViewHolder,
@SuppressLint("RecyclerView") position: Int) { @SuppressLint("RecyclerView") position: Int) {
when (holder) { when (holder) {
......
package de.kuschku.quasseldroid.util
import android.content.Context
import android.graphics.Typeface
import android.support.annotation.ColorInt
import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.ui.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel
class ColorContext(context: Context, private val messageSettings: MessageSettings) {
val senderColors = context.theme.styledAttributes(
R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB,
R.attr.senderColorC, R.attr.senderColorD, R.attr.senderColorE, R.attr.senderColorF
) {
IntArray(length()) {
getColor(it, 0)
}
}
val selfColor = context.theme.styledAttributes(R.attr.colorForegroundSecondary) {
getColor(0, 0)
}
val textColor = context.theme.styledAttributes(R.attr.colorBackground) {
getColor(0, 0)
}
val radius = context.resources.getDimensionPixelSize(R.dimen.avatar_radius)
fun prepareTextDrawable(@ColorInt textColor: Int = this.textColor) =
TextDrawable.builder()
.beginConfig()
.textColor(setAlpha(textColor, 0x8A))
.useFont(Typeface.DEFAULT_BOLD)
.endConfig()
fun buildTextDrawable(initial: String, @ColorInt backgroundColor: Int) =
prepareTextDrawable(textColor).let {
if (messageSettings.squareAvatars) it.buildRoundRect(initial, backgroundColor, radius)
else it.buildRound(initial, backgroundColor)
}
fun buildTextDrawable(nickName: String, self: Boolean): TextDrawable {
val senderColorIndex = SenderColorUtil.senderColor(nickName)
val rawInitial = nickName.trimStart(*EditorViewModel.IGNORED_CHARS).firstOrNull()
?: nickName.firstOrNull()
val initial = rawInitial?.toUpperCase().toString()
val senderColor = if (self) selfColor else senderColors[senderColorIndex]
return buildTextDrawable(initial, senderColor)
}
@ColorInt
private fun setAlpha(@ColorInt color: Int, alpha: Int) = (color and 0xFFFFFF) or (alpha shl 24)
}
...@@ -22,7 +22,3 @@ package de.kuschku.quasseldroid.util.helper ...@@ -22,7 +22,3 @@ package de.kuschku.quasseldroid.util.helper
inline fun <R> Boolean.letIf(block: () -> R): R? { inline fun <R> Boolean.letIf(block: () -> R): R? {
return if (this) block() else null return if (this) block() else null
} }
inline fun <R> Boolean.letUnless(block: () -> R): R? {
return if (this) null else block()
}
...@@ -147,11 +147,6 @@ fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean ...@@ -147,11 +147,6 @@ fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean
fun CharSequence.lineSequence(): Sequence<CharSequence> = splitToSequence("\r\n", "\n", "\r") fun CharSequence.lineSequence(): Sequence<CharSequence> = splitToSequence("\r\n", "\n", "\r")
fun CharSequence.lastWord(cursor: Int = this.length,
onlyBeforeCursor: Boolean = false): CharSequence {
return lastWordIndices(cursor, onlyBeforeCursor)?.let { subSequence(it) } ?: ""
}
fun CharSequence.lastWordIndices(cursor: Int = this.length, fun CharSequence.lastWordIndices(cursor: Int = this.length,
onlyBeforeCursor: Boolean = false): IntRange? { onlyBeforeCursor: Boolean = false): IntRange? {
val cursorPosition = if (cursor != -1) { val cursorPosition = if (cursor != -1) {
......
/*
* Quasseldroid - Quassel client for Android
*
* Copyright (c) 2018 Janne Koschinski
* Copyright (c) 2018 The Quassel Project
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3 as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.kuschku.libquassel.quassel.exceptions
class DeserializationException : Exception {
constructor() : super()
constructor(p0: String?) : super(p0)
constructor(p0: String?, p1: Throwable?) : super(p0, p1)
constructor(p0: Throwable?) : super(p0)
constructor(p0: String?, p1: Throwable?, p2: Boolean, p3: Boolean) : super(p0, p1, p2, p3)
}
...@@ -97,14 +97,6 @@ class SessionManager( ...@@ -97,14 +97,6 @@ class SessionManager(
Invokers Invokers
} }
fun ifClosed(closure: (ISession) -> Unit) {
state.or(ConnectionState.DISCONNECTED).let {
if (it == ConnectionState.CLOSED) {
closure(inProgressSession.value)
}
}
}
fun ifDisconnected(closure: (ISession) -> Unit) { fun ifDisconnected(closure: (ISession) -> Unit) {
state.or(ConnectionState.DISCONNECTED).let { state.or(ConnectionState.DISCONNECTED).let {
if (it == ConnectionState.CLOSED || it == ConnectionState.DISCONNECTED) { if (it == ConnectionState.CLOSED || it == ConnectionState.DISCONNECTED) {
......
...@@ -21,5 +21,3 @@ package de.kuschku.libquassel.util.helpers ...@@ -21,5 +21,3 @@ package de.kuschku.libquassel.util.helpers
inline fun Int.clamp(lowerBound: Int, upperBound: Int): Int = inline fun Int.clamp(lowerBound: Int, upperBound: Int): Int =
maxOf(lowerBound, minOf(this, upperBound)) maxOf(lowerBound, minOf(this, upperBound))
inline fun Int.clamp(range: IntRange): Int = clamp(range.start, range.last)
...@@ -62,15 +62,6 @@ fun <T : Any, U : Any> Observable<Optional<T>>.mapSwitchMap( ...@@ -62,15 +62,6 @@ fun <T : Any, U : Any> Observable<Optional<T>>.mapSwitchMap(
} }
} }
fun <T : Any, U : Any> Observable<Optional<T>>.mapSwitchMapEmpty(
mapper: (T) -> Observable<U>): Observable<U> = switchMap {
if (it.isPresent()) {
it.map(mapper).get()
} else {
Observable.empty()
}
}
fun <T : Any, U : Any> Observable<Optional<T>>.flatMapSwitchMap( fun <T : Any, U : Any> Observable<Optional<T>>.flatMapSwitchMap(
mapper: (T) -> Observable<Optional<U>>): Observable<Optional<U>> = switchMap { mapper: (T) -> Observable<Optional<U>>): Observable<Optional<U>> = switchMap {
it.map(mapper).orElse(Observable.just(Optional.empty())) it.map(mapper).orElse(Observable.just(Optional.empty()))
......
...@@ -20,12 +20,10 @@ ...@@ -20,12 +20,10 @@
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ExternalModuleDependency
import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.*
import org.jetbrains.kotlin.gradle.plugin.KaptExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { plugins {
kotlin("jvm") kotlin("jvm")
kotlin("kapt")
} }
dependencies { dependencies {
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
plugins { plugins {
id("com.android.library") id("com.android.library")
kotlin("android") kotlin("android")
kotlin("kapt")
} }
android { android {
...@@ -41,7 +40,7 @@ android { ...@@ -41,7 +40,7 @@ android {
lintOptions { lintOptions {
isWarningsAsErrors = true isWarningsAsErrors = true
setLintConfig(file("../lint.xml")) lintConfig = file("../lint.xml")
} }
} }
......
...@@ -47,7 +47,7 @@ android { ...@@ -47,7 +47,7 @@ android {
lintOptions { lintOptions {
isWarningsAsErrors = true isWarningsAsErrors = true
setLintConfig(file("../lint.xml")) lintConfig = file("../lint.xml")
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment