diff --git a/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt b/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt index 940023c90077a71153f54df7b0b3d91744da8aec..0d02ed87e2d1c0007eeb7f80896b9925d3ca46b4 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/QuasselDroid.kt @@ -13,7 +13,6 @@ import de.kuschku.quasseldroid.util.compatibility.AndroidCompatibilityUtils import de.kuschku.quasseldroid.util.compatibility.AndroidLoggingHandler import de.kuschku.quasseldroid.util.compatibility.AndroidStreamChannelFactory - class QuasselDroid : DaggerApplication() { override fun applicationInjector(): AndroidInjector<out QuasselDroid> = DaggerAppComponent.builder().create(this) diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt index f8d97c2df1cba58db55272190d9c139aaea907a8..f41427b9f75c2bb87406f268ac494b2a1673450f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppComponent.kt @@ -20,4 +20,3 @@ interface AppComponent : AndroidInjector<QuasselDroid> { @Component.Builder abstract class Builder : AndroidInjector.Builder<QuasselDroid>() } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt index d0e026b041f672829aa8cfcc4e68cb1f03b52ee9..763581c71c1bc6430c05213e310fc6c31c9d2585 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/AppModule.kt @@ -9,4 +9,4 @@ import de.kuschku.quasseldroid.QuasselDroid abstract class AppModule { @Binds abstract fun provideContext(application: QuasselDroid): Context -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt index f13fa558c8937b3113c4319c66d152fafbca93f9..442e59f37fe4997d7c2014436af6b0e52ed1b925 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/DatabaseModule.kt @@ -17,4 +17,4 @@ class DatabaseModule { fun provideAccountsDatabase(context: Context): AccountDatabase { return AccountDatabase.Creator.init(context) } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt index 7fe62188d295505e5454b862209efa323dbaceaf..f49bc646e3056b316c92224125b09a6a70172e97 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt @@ -21,4 +21,4 @@ class SettingsModule { @Provides fun provideConnectionSettings(context: Context) = Settings.connection(context) -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt index 55a128e4404ab73a99fea5c127865d23dad4cf5d..a7b8355e2d80ee4c4080190a7d9884879119a116 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt @@ -7,4 +7,4 @@ data class BacklogSettings( companion object { val DEFAULT = BacklogSettings() } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt index 68b945534e370b7f0273adc5dcb8e5a93961df67..044af32ac33dedf42851ee987b3f72119dcf1229 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/settings/ConnectionSettings.kt @@ -6,4 +6,4 @@ data class ConnectionSettings( companion object { val DEFAULT = ConnectionSettings() } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt index 271f9c5cf8b71b0310eb94bd3ddcdf6d70805d6e..89cda2853a29d509ea03ba67638dd9234276c2d1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt @@ -1,9 +1,7 @@ package de.kuschku.quasseldroid.ui.chat.buffers -import android.arch.lifecycle.LifecycleOwner -import android.arch.lifecycle.LiveData -import android.arch.lifecycle.Observer import android.graphics.drawable.Drawable +import android.support.v7.recyclerview.extensions.ListAdapter import android.support.v7.util.DiffUtil import android.support.v7.widget.RecyclerView import android.view.LayoutInflater @@ -15,12 +13,14 @@ import butterknife.BindView import butterknife.ButterKnife import de.kuschku.libquassel.protocol.BufferId import de.kuschku.libquassel.protocol.Buffer_Activity -import de.kuschku.libquassel.protocol.Buffer_Type import de.kuschku.libquassel.protocol.NetworkId import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.util.flag.hasFlag import de.kuschku.quasseldroid.R -import de.kuschku.quasseldroid.util.helper.* +import de.kuschku.quasseldroid.util.helper.getVectorDrawableCompat +import de.kuschku.quasseldroid.util.helper.styledAttributes +import de.kuschku.quasseldroid.util.helper.tint +import de.kuschku.quasseldroid.util.helper.visibleIf import de.kuschku.quasseldroid.viewmodel.data.BufferListItem import de.kuschku.quasseldroid.viewmodel.data.BufferProps import de.kuschku.quasseldroid.viewmodel.data.BufferState @@ -28,16 +28,26 @@ import de.kuschku.quasseldroid.viewmodel.data.BufferStatus import io.reactivex.subjects.BehaviorSubject class BufferListAdapter( - lifecycleOwner: LifecycleOwner, - liveData: LiveData<List<BufferProps>?>, private val selectedBuffer: BehaviorSubject<BufferId>, - private val collapsedNetworks: BehaviorSubject<Set<NetworkId>>, - runInBackground: (() -> Unit) -> Any, - runOnUiThread: (Runnable) -> Any, - private val clickListener: ((BufferId) -> Unit)? = null, - private val longClickListener: ((BufferId) -> Unit)? = null -) : RecyclerView.Adapter<BufferListAdapter.BufferViewHolder>() { - var data = emptyList<BufferListItem>() + private val collapsedNetworks: BehaviorSubject<Set<NetworkId>> +) : ListAdapter<BufferListItem, BufferListAdapter.BufferViewHolder>( + object : DiffUtil.ItemCallback<BufferListItem>() { + override fun areItemsTheSame(oldItem: BufferListItem, newItem: BufferListItem) = + oldItem.props.info.bufferId == newItem.props.info.bufferId + + override fun areContentsTheSame(oldItem: BufferListItem, newItem: BufferListItem) = + oldItem == newItem + } +) { + private var clickListener: ((BufferId) -> Unit)? = null + private var longClickListener: ((BufferId) -> Unit)? = null + fun setOnClickListener(listener: ((BufferId) -> Unit)?) { + this.clickListener = listener + } + + fun setOnLongClickListener(listener: ((BufferId) -> Unit)?) { + this.longClickListener = listener + } fun expandListener(networkId: NetworkId) { if (collapsedNetworks.value.orEmpty().contains(networkId)) @@ -56,52 +66,6 @@ class BufferListAdapter( selectedBuffer.onNext(-1) } - init { - liveData.zip(collapsedNetworks.toLiveData(), selectedBuffer.toLiveData()).observe( - lifecycleOwner, Observer { it: Triple<List<BufferProps>?, Set<NetworkId>, BufferId>? -> - val old: List<BufferListItem> = data - runInBackground { - val list = it?.first ?: emptyList() - val collapsedNetworks = it?.second ?: emptySet() - val selected = it?.third ?: -1 - - val new: List<BufferListItem> = list.sortedBy { props -> - !props.info.type.hasFlag(Buffer_Type.StatusBuffer) - }.sortedBy { props -> - props.network.networkName - }.map { props -> - BufferListItem( - props, - BufferState( - networkExpanded = !collapsedNetworks.contains(props.network.networkId), - selected = selected == props.info.bufferId - ) - ) - }.filter { (props, state) -> - props.info.type.hasFlag(BufferInfo.Type.StatusBuffer) || state.networkExpanded - } - - val result = DiffUtil.calculateDiff( - object : DiffUtil.Callback() { - override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = - old[oldItemPosition].props.info.bufferId == new[newItemPosition].props.info.bufferId - - override fun getOldListSize() = old.size - override fun getNewListSize() = new.size - - override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = - old[oldItemPosition] == new[newItemPosition] - }, true - ) - runOnUiThread( - Runnable { - data = new - result.dispatchUpdatesTo(this@BufferListAdapter) - }) - } - }) - } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = when (viewType) { BufferInfo.Type.ChannelBuffer.toInt() -> BufferViewHolder.ChannelBuffer( LayoutInflater.from(parent.context).inflate( @@ -138,12 +102,9 @@ class BufferListAdapter( } override fun onBindViewHolder(holder: BufferViewHolder, position: Int) = - holder.bind(data[position].props, data[position].state) - - override fun getItemCount() = data.size - - override fun getItemViewType(position: Int) = data[position].props.info.type.toInt() + holder.bind(getItem(position).props, getItem(position).state) + override fun getItemViewType(position: Int) = getItem(position).props.info.type.toInt() abstract class BufferViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { abstract fun bind(props: BufferProps, state: BufferState) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt index a4b20a53f0ec497384e4fd26b412be9176d8ea87..f0dcff4b0c376b0a176e39dc6af3ebd8312a8adb 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt @@ -12,6 +12,7 @@ import de.kuschku.libquassel.protocol.BufferId import de.kuschku.libquassel.protocol.Buffer_Activity import de.kuschku.libquassel.protocol.Buffer_Type import de.kuschku.libquassel.protocol.Message_Type +import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.syncables.BufferViewConfig import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.util.flag.hasFlag @@ -22,12 +23,13 @@ import de.kuschku.quasseldroid.persistence.QuasselDatabase import de.kuschku.quasseldroid.settings.AppearanceSettings import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.util.helper.combineLatest -import de.kuschku.quasseldroid.util.helper.map import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.helper.zip import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState +import de.kuschku.quasseldroid.viewmodel.data.BufferListItem +import de.kuschku.quasseldroid.viewmodel.data.BufferState import javax.inject.Inject class BufferViewConfigFragment : ServiceBoundFragment() { @@ -196,42 +198,58 @@ class BufferViewConfigFragment : ServiceBoundFragment() { } listAdapter = BufferListAdapter( - this, - viewModel.bufferList.toLiveData().zip(database.filtered().listen(accountId)).map { - val (data, activityList) = it - val (config, list) = data ?: Pair(null, emptyList()) - val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE - val activities = activityList.map { it.bufferId to it.filtered }.toMap() - list.map { - val activity = it.activity - (activities[it.info.bufferId] ?: 0) - it.copy( - description = ircFormatDeserializer.formatString( - requireContext(), it.description.toString(), messageSettings.colorizeMirc - ), - activity = activity, - bufferActivity = Buffer_Activity.of( - when { - it.highlights > 0 -> Buffer_Activity.Highlight - activity.hasFlag(Message_Type.Plain) || - activity.hasFlag(Message_Type.Notice) || - activity.hasFlag(Message_Type.Action) -> Buffer_Activity.NewMessage - activity.isNotEmpty() -> Buffer_Activity.OtherActivity - else -> Buffer_Activity.NoActivity - } - ) - ) - }.filter { props -> - minimumActivity.toInt() <= props.bufferActivity.toInt() || - props.info.type.hasFlag(Buffer_Type.StatusBuffer) - } - }, viewModel.selectedBufferId, - viewModel.collapsedNetworks, - ::runInBackground, - activity!!::runOnUiThread, - ::clickListener, - ::longClickListener + viewModel.collapsedNetworks ) + combineLatest(viewModel.bufferList, viewModel.collapsedNetworks, viewModel.selectedBuffer) + .toLiveData().zip(database.filtered().listen(accountId)) + .observe(this, Observer { it -> + it?.let { (data, activityList) -> + runInBackground { + val (info, collapsedNetworks, selected) = data + val (config, list) = info ?: Pair(null, emptyList()) + val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE + val activities = activityList.associate { it.bufferId to it.filtered } + listAdapter.submitList(list.sortedBy { props -> + !props.info.type.hasFlag(Buffer_Type.StatusBuffer) + }.sortedBy { props -> + props.network.networkName + }.map { props -> + BufferListItem( + props, + BufferState( + networkExpanded = !collapsedNetworks.contains(props.network.networkId), + selected = selected.info?.bufferId == props.info.bufferId + ) + ) + }.filter { (props, state) -> + props.info.type.hasFlag(BufferInfo.Type.StatusBuffer) || state.networkExpanded + }.map { + val activity = it.props.activity - (activities[it.props.info.bufferId] ?: 0) + it.copy( + props = it.props.copy( + activity = activity, + bufferActivity = Buffer_Activity.of( + when { + it.props.highlights > 0 -> Buffer_Activity.Highlight + activity.hasFlag(Message_Type.Plain) || + activity.hasFlag(Message_Type.Notice) || + activity.hasFlag(Message_Type.Action) -> Buffer_Activity.NewMessage + activity.isNotEmpty() -> Buffer_Activity.OtherActivity + else -> Buffer_Activity.NoActivity + } + ) + ) + ) + }.filter { + minimumActivity.toInt() <= it.props.bufferActivity.toInt() || + it.props.info.type.hasFlag(Buffer_Type.StatusBuffer) + }) + } + } + }) + listAdapter.setOnClickListener(this@BufferViewConfigFragment::clickListener) + listAdapter.setOnLongClickListener(this@BufferViewConfigFragment::longClickListener) chatList.adapter = listAdapter viewModel.selectedBuffer.toLiveData().observe(this, Observer { buffer -> diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt index 8904d4ae1e909a1ffdb7704ad3459c4f33dd92ab..e61e558173b4a006349c64a8d7cc8d2deba1ee77 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoActivity.kt @@ -22,4 +22,3 @@ class ChannelInfoActivity : SettingsActivity(ChannelInfoFragment()) { } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt index 255e89229bc0da9f5e763613f9743eb0b96eeb12..3c28394720beb6098c6c6a8ca383f401d38962ee 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt @@ -82,7 +82,6 @@ class ChatlineFragment : ServiceBoundFragment() { val view = inflater.inflate(R.layout.fragment_chatline, container, false) ButterKnife.bind(this, view) - val editorViewModel = ViewModelProviders.of(this).get(EditorViewModel::class.java) editorViewModel.quasselViewModel.onNext(viewModel) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt index 68a1653c3c8547d11d5cfb64f40c68b14f3de512..f2537f1d15f0d21ec855ca062e5a3dc71fb7cfa7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt @@ -54,7 +54,6 @@ class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.Me fun bind(data: CharSequence) { value = data - content.text = data } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt index 6e53f1c924d2c560f83ce4fd353ecb1cc72f6d5e..b4e9e903ec14fdf9811b5255e672eb34e9944d13 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt @@ -234,4 +234,3 @@ class MessageAdapter @Inject constructor( } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index f4c95212b34b69cc19c3e4138492ed3ce8197e1c..6a6be7434374a8fd244d1bb9d9e0e50d2504f1ad 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -247,7 +247,7 @@ class MessageListFragment : ServiceBoundFragment() { expanded: Set<MsgId>, markerLine: MsgId?): List<DisplayMessage> { var previous: QuasselDatabase.DatabaseMessage? = null var previousDate: ZonedDateTime? = null - return list.asReversed().map { + return list.mapReverse { val date = it.time.atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS) val isSameDay = previousDate?.isEqual(date) ?: false val isFollowUp = previous?.sender == it.sender && previous?.type == it.type && isSameDay @@ -262,7 +262,7 @@ class MessageListFragment : ServiceBoundFragment() { isMarkerLine = markerLine == it.messageId, isEmoji = false ) - }.asReversed() + } } val data = combineLatest(viewModel.buffer, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt index 3a34a3bc71cc9bf05aaa572c5d697c1d78ddc2a6..58b09710ee0ea7c4dad5cef808b2ead1ff1a19a7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageRenderer.kt @@ -21,4 +21,3 @@ interface MessageRenderer { isFollowUp: Boolean, isEmoji: Boolean) = Unit } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt index 3bfae2fa0befbc0067874fe99bfd7e403030f0cd..68408c557cb4cdb1d45c7e821b9c9aff89492a3d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt @@ -63,7 +63,6 @@ class NickListFragment : ServiceBoundFragment() { } nickList.itemAnimator = DefaultItemAnimator() - val senderColors = requireContext().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, @@ -76,56 +75,63 @@ class NickListFragment : ServiceBoundFragment() { } val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size) - - viewModel.nickData.map { - it.map { - val nickName = it.nick - val senderColorIndex = IrcUserUtils.senderColor(nickName) - val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\') - .firstOrNull() ?: nickName.firstOrNull() - val initial = rawInitial?.toUpperCase().toString() - val senderColor = senderColors[senderColorIndex] - - - fun formatNick(nick: CharSequence): CharSequence { - val spannableString = SpannableString(nick) - spannableString.setSpan( - ForegroundColorSpan(senderColor), - 0, - nick.length, - SpannableString.SPAN_INCLUSIVE_EXCLUSIVE - ) - spannableString.setSpan( - StyleSpan(Typeface.BOLD), - 0, - nick.length, - SpannableString.SPAN_INCLUSIVE_EXCLUSIVE + viewModel.nickData.toLiveData().observe(this, Observer { + runInBackground { + it?.map { + val nickName = it.nick + val senderColorIndex = IrcUserUtils.senderColor(nickName) + val rawInitial = nickName.trimStart('-', + '_', + '[', + ']', + '{', + '}', + '|', + '`', + '^', + '.', + '\\') + .firstOrNull() ?: nickName.firstOrNull() + val initial = rawInitial?.toUpperCase().toString() + val senderColor = senderColors[senderColorIndex] + fun formatNick(nick: CharSequence): CharSequence { + val spannableString = SpannableString(nick) + spannableString.setSpan( + ForegroundColorSpan(senderColor), + 0, + nick.length, + SpannableString.SPAN_INCLUSIVE_EXCLUSIVE + ) + spannableString.setSpan( + StyleSpan(Typeface.BOLD), + 0, + nick.length, + SpannableString.SPAN_INCLUSIVE_EXCLUSIVE + ) + return spannableString + } + it.copy( + displayNick = formatNick(it.nick), + fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor), + modes = when (messageSettings.showPrefix) { + MessageSettings.ShowPrefixMode.ALL -> + it.modes + else -> + it.modes.substring(0, Math.min(it.modes.length, 1)) + }, + realname = ircFormatDeserializer.formatString( + requireContext(), it.realname.toString(), messageSettings.colorizeMirc + ), + avatarUrls = AvatarHelper.avatar(messageSettings, it, avatarSize) ) - return spannableString - } - - it.copy( - displayNick = formatNick(it.nick), - fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor), - modes = when (messageSettings.showPrefix) { - MessageSettings.ShowPrefixMode.ALL -> - it.modes - else -> - it.modes.substring(0, Math.min(it.modes.length, 1)) - }, - realname = ircFormatDeserializer.formatString( - requireContext(), it.realname.toString(), messageSettings.colorizeMirc - ), - avatarUrls = AvatarHelper.avatar(messageSettings, it, avatarSize) - ) - }.sortedBy { - IrcCaseMappers[it.networkCasemapping].toLowerCase(it.nick.trimStart(*IGNORED_CHARS)) - .trimStart(*IGNORED_CHARS) - }.sortedBy { - it.lowestMode + }?.sortedBy { + IrcCaseMappers[it.networkCasemapping].toLowerCase(it.nick.trimStart(*IGNORED_CHARS)) + .trimStart(*IGNORED_CHARS) + }?.sortedBy { + it.lowestMode + }?.let(nickListAdapter::submitList) } - }.toLiveData().observe(this, Observer(nickListAdapter::submitList)) - + }) savedInstanceState?.run { nickList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST)) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt index 7d3c08cd858fb523fa0c40270fec8d6f0ffc087e..bf935c2e649771db246373d467e47f79d7c36aad 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicActivity.kt @@ -19,4 +19,3 @@ class TopicActivity : SettingsActivity(TopicFragment()) { } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt index 29251635e7136978237b8971c1a3b306122eecdd..87c2b85f9460b781de15b34b73726f12ed3f22f7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutSettingsFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class AboutSettingsFragmentProvider { @ContributesAndroidInjector abstract fun bindAboutSettingsFragment(): AboutSettingsFragment -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt index d90d86e1c772914eee90af71217b5e8279f9a6ee..78bf7e6e28792dc1050219e34789b6451bcbe552 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Contributor.kt @@ -4,4 +4,4 @@ data class Contributor( val name: String, val nickName: String, val description: String -) \ No newline at end of file +) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt index a5a3e7dfbbcb54437dc0d5de4d67baeb600446d6..9949b05bee03953bb07086fca0f424cf1b25b64a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/ContributorAdapter.kt @@ -41,4 +41,4 @@ class ContributorAdapter(private val contributors: List<Contributor>) : this.description.text = item.description } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt index 21debd0ec63aa6b3527974bb9b4b6fcaee7235e3..1d63953b0ef82454b57697d838f3752fd43bbdf8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Library.kt @@ -5,4 +5,4 @@ data class Library( val version: String? = null, val license: License, val url: String? = null -) \ No newline at end of file +) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt index 29e4db909c3685f22fb55c0629d030d1302fe41d..4a8077a14859f4ee2c2b1509d506e4bc5c599906 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/License.kt @@ -6,4 +6,4 @@ data class License( val shortName: String, val fullName: String = shortName, @StringRes val text: Int -) \ No newline at end of file +) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt index 7981dc1f0808fa666ddc8a2246126fc63adfb070..1a0bb25ffb276d1e488d2fe57de8f07cf7a0d7c6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragment.kt @@ -51,4 +51,4 @@ class AppSettingsFragment : DaggerPreferenceFragmentCompat(), updateSummary(preference) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt index 1c005598fa311b93ff02756790d158cb17b4edf4..237399cb3d49541ed1f54c96d5b5db9b7a05a73b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/app/AppSettingsFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class AppSettingsFragmentProvider { @ContributesAndroidInjector abstract fun bindAppSettingsFragment(): AppSettingsFragment -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt index 6c6ee0acca84ec803013cfd8645abdaddc516a19..eccdfb17b3ddb01a61cdcb8e02f20dd2cd913dc9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashAdapter.kt @@ -78,4 +78,4 @@ class CrashAdapter : ListAdapter<Pair<Report, String>, CrashAdapter.CrashViewHol this.error.text = "${item.crash?.exception?.lines()?.firstOrNull()}" } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt index 7d7c78eab97d8d01402d09d60d1d2e3545445e2b..8c54633c485599dd369b48038b4a06fa2fdcfaa3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashSettingsFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class CrashSettingsFragmentProvider { @ContributesAndroidInjector abstract fun bindAppSettingsFragment(): CrashSettingsFragment -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt index 0e9cfb75eca1460c1cbb67d236575f1c24a8a9d9..a13da28238986d931b7afedd5c1ab1ef74caa5a7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragment.kt @@ -27,4 +27,4 @@ class LicenseSettingsFragment : DaggerFragment() { return view } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt index 86cc6cff6a368e3d45326cbf36a88833ef2adc47..c1f2900461f7fede0f265423e213be0c11598667 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseSettingsFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class LicenseSettingsFragmentProvider { @ContributesAndroidInjector abstract fun bindLicenseSettingsFragment(): LicenseSettingsFragment -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt index 2b0e5768aeeff6dab8ebdc5c9a75b6ffa89b7380..3892a6474f2004e61dd02c489943a555304bf864 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class CoreSettingsFragmentProvider { @ContributesAndroidInjector abstract fun CoreSettingsFragmentbind(): CoreSettingsFragment -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt index 939c36527458cf2dd7c865d294855e431c8e388b..7eba4efe0bc21647ee544774d72453d4a4af1162 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItem.kt @@ -3,4 +3,4 @@ package de.kuschku.quasseldroid.ui.coresettings data class SettingsItem( val id: Int, val name: String -) \ No newline at end of file +) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt index ac181272004ece8b1f5fbd4d566b164a5dc51d24..ee58586636303782365f08db935b74150257ced3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/SettingsItemAdapter.kt @@ -50,4 +50,4 @@ class SettingsItemAdapter(private val clickListener: (Int) -> Unit) : this.title.text = item.name } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt index d964fcfd37c3960ba219035964bbf9995505a70f..84f18336a6413f111e9287b5b1199f64c9779d1a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt @@ -27,8 +27,6 @@ import de.kuschku.quasseldroid.util.helper.toLiveData abstract class ChatListBaseFragment : SettingsFragment(), SettingsFragment.Savable, SettingsFragment.Changeable { - protected var chatlist: Pair<BufferViewConfig?, BufferViewConfig>? = null - @BindView(R.id.buffer_view_name) lateinit var bufferViewName: EditText @@ -62,6 +60,8 @@ abstract class ChatListBaseFragment : SettingsFragment(), SettingsFragment.Savab @BindView(R.id.hide_inactive_networks) lateinit var hideInactiveNetworks: SwitchCompat + protected var chatlist: Pair<BufferViewConfig?, BufferViewConfig>? = null + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.settings_chatlist, container, false) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt index 2a36ed6f67bf0e400362f661a40d348daf9fd94f..f32d01c1e16ec9e45aa5c7988432b4359ae6fa19 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/MinimumActivityAdapter.kt @@ -68,4 +68,3 @@ class MinimumActivityAdapter(val data: List<MinimumActivityItem>) : } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt index c70c42f331afb608cd1c00b512b03cecdb07864c..ec292d7ef1e1856dc494787a1ea7d6a5ea2c5b5f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt @@ -52,13 +52,9 @@ class NetworkAdapter : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>( } override fun getItem(position: Int): INetwork.NetworkInfo? = data[position] - override fun getItemId(position: Int) = getItem(position)?.networkId?.toLong() ?: -1 - override fun hasStableIds() = true - override fun getCount() = data.size - class NetworkViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { @BindView(android.R.id.text1) lateinit var text: TextView diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt index ec80b42bdb2ccae459d9c56f52ea04ffbd573438..724f719e4e81d4cf17c9e8a6e4dadc05fdc991c4 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityBaseFragment.kt @@ -22,7 +22,6 @@ import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment import de.kuschku.quasseldroid.util.helper.setDependent import de.kuschku.quasseldroid.util.helper.toLiveData - abstract class IdentityBaseFragment : SettingsFragment(), SettingsFragment.Savable, SettingsFragment.Changeable { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt index d7a0bfde0d57cb9e8d579e645ca640fd64fcaed0..cdaef171b68710003aa26154c42dc01d73e6f16e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragment.kt @@ -3,7 +3,6 @@ package de.kuschku.quasseldroid.ui.coresettings.identity import de.kuschku.libquassel.quassel.syncables.Identity import de.kuschku.libquassel.util.helpers.value - class IdentityCreateFragment : IdentityBaseFragment() { override fun onSave() = viewModel.session.value?.orNull()?.let { session -> Identity(session.proxy).let { data -> diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt index c95903662c1f861a896e74ae45178a4466fad350..4ba215fcd61f5ef8bf18194e380c919a1929febc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityNicksAdapter.kt @@ -95,4 +95,4 @@ class IdentityNicksAdapter( nick.text = item } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt index b86e2ee1677396a1745032bdb98a74cbf31b345a..c8ba877ace2ce861af82a5ad6ff61b6f5e8a741f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreTypeAdapter.kt @@ -68,4 +68,3 @@ class IgnoreTypeAdapter(val data: List<IgnoreTypeItem>) : } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt index 21eec1e61a77a38135caab9a3827312bf8e46a91..58762ec9d227bebc26609bb7a9de1b613eb264cf 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/ScopeTypeAdapter.kt @@ -68,4 +68,3 @@ class ScopeTypeAdapter(val data: List<ScopeTypeItem>) : } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt index a30682a3097a4cac3aadc6103680dda1699afc48..59712d6a8e5170f5983a6c12b6f487c0c03ad357 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/StrictnessTypeAdapter.kt @@ -68,4 +68,3 @@ class StrictnessTypeAdapter(val data: List<StrictnessTypeItem>) : } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt index 2340022027e55dde024f2a50b29c0696162e63b3..0af5ac7f57290f0aebff1e4a079f257cc0750c87 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkBaseFragment.kt @@ -31,7 +31,6 @@ import kotlin.math.roundToInt abstract class NetworkBaseFragment : SettingsFragment(), SettingsFragment.Savable, SettingsFragment.Changeable { - @BindView(R.id.network_name) lateinit var networkName: EditText diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt index 80d697bef075f1f5e537acd767284270b44197d9..2b1cb447307b7b25b1fb1297aad3959314abb7ee 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkServerAdapter.kt @@ -112,11 +112,9 @@ class NetworkServerAdapter( } false } - secure = itemView.context.getVectorDrawableCompat(R.drawable.ic_lock)?.mutate() partiallySecure = itemView.context.getVectorDrawableCompat(R.drawable.ic_lock)?.mutate() insecure = itemView.context.getVectorDrawableCompat(R.drawable.ic_lock_open)?.mutate() - itemView.context.theme.styledAttributes( R.attr.colorTintSecure, R.attr.colorTintPartiallySecure, @@ -132,7 +130,6 @@ class NetworkServerAdapter( this.item = item host.text = item.host port.text = item.port.toString() - sslEnabled.setImageDrawable( when { item.useSsl && item.sslVerify -> secure diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt index e8c697a08a0dbc0dd8a24288cbba4fa5e000a52c..41019cd2d79cc37c4ae5c85760ecd6a3e11c7721 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragment.kt @@ -18,8 +18,6 @@ import de.kuschku.quasseldroid.util.helper.toLiveData class NetworkConfigFragment : SettingsFragment(), SettingsFragment.Savable, SettingsFragment.Changeable { - private var networkConfig: Pair<NetworkConfig, NetworkConfig>? = null - @BindView(R.id.ping_timeout_enabled) lateinit var pingTimeoutEnabled: SwitchCompat @@ -50,6 +48,8 @@ class NetworkConfigFragment : SettingsFragment(), SettingsFragment.Savable, @BindView(R.id.standard_ctcp) lateinit var standardCtcp: SwitchCompat + private var networkConfig: Pair<NetworkConfig, NetworkConfig>? = null + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.settings_networkconfig, container, false) @@ -85,7 +85,6 @@ class NetworkConfigFragment : SettingsFragment(), SettingsFragment.Savable, return view } - override fun onSave() = networkConfig?.let { (it, data) -> applyChanges(data) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt index f697f8a9363a27c6b95b1af6d2461c40e28b214e..cf6c9aa4bd9debb819afaa9022ec26dd27711198 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class NetworkConfigFragmentProvider { @ContributesAndroidInjector abstract fun bindNetworkConfigFragment(): NetworkConfigFragment -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt index 378884151c04c7a62e97868ebd0911d91139ab28..adb22bf5dbb3b7e975cf1e726d2c70db77dc9248 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/ProxyTypeAdapter.kt @@ -64,4 +64,3 @@ class ProxyTypeAdapter(val data: List<ProxyTypeItem>) : } } } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt index 02d965a96647d78465324e7e0d94ee808b844d9e..e557b7c608d3b5564ca37fc9c94bf7bb611eb7e1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditActivity.kt @@ -92,7 +92,7 @@ class AccountEditActivity : DaggerAppCompatActivity() { hostWrapper::setError, resources.getString(R.string.hint_invalid_host) ) { override fun validate(text: Editable) = - text.toString().matches(Patterns.DOMAIN_NAME.toRegex()) + text.toString().matches(Patterns.DOMAIN_NAME) } portValidator = object : TextValidator( diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt index 4953c9c774688eda3f16b54e6dc0f719b478d663..c7739dac31adce549eba78904e3cd845767099a1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt @@ -7,4 +7,4 @@ import dagger.android.ContributesAndroidInjector abstract class AccountSelectionFragmentProvider { @ContributesAndroidInjector abstract fun bindAccountSelectionSlide(): AccountSelectionSlide -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt index 670bb67b6dfc264c9c6c3332aa37547044f3831c..0ca13008f68103ab5add9c1987eeb1f3adb01e80 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupConnectionSlide.kt @@ -17,6 +17,7 @@ import de.kuschku.quasseldroid.util.TextValidator class AccountSetupConnectionSlide : SlideFragment() { @BindView(R.id.hostWrapper) lateinit var hostWrapper: TextInputLayout + @BindView(R.id.host) lateinit var hostField: EditText @@ -54,7 +55,7 @@ class AccountSetupConnectionSlide : SlideFragment() { hostWrapper::setError, resources.getString(R.string.hint_invalid_host) ) { override fun validate(text: Editable) = - text.toString().matches(Patterns.DOMAIN_NAME.toRegex()) + text.toString().matches(Patterns.DOMAIN_NAME) override fun onChanged() = updateValidity() } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt index bd29c83f403db0de2a4329b14634ac1bdc55300a..327b82803d7f488f0e8eec14b60850f294bb805c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt @@ -13,4 +13,4 @@ abstract class AccountSetupFragmentProvider { @ContributesAndroidInjector abstract fun bindAccountSetupUserSlide(): AccountSetupUserSlide -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt index e21728510d4cb3f532632a247684b67366070dcd..8224efecc097acf6c2ccddb6155232e505997432 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupUserSlide.kt @@ -16,11 +16,13 @@ import de.kuschku.quasseldroid.util.TextValidator class AccountSetupUserSlide : SlideFragment() { @BindView(R.id.userWrapper) lateinit var userWrapper: TextInputLayout + @BindView(R.id.user) lateinit var userField: EditText @BindView(R.id.passWrapper) lateinit var passWrapper: TextInputLayout + @BindView(R.id.pass) lateinit var passField: EditText diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt index c949a544c263174985a8da3d4955aacc790b6b1d..afccc5d1627be0735750ac987344cb0eced0fe92 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt @@ -42,7 +42,7 @@ object AvatarHelper { ).flatten() private fun gravatarFallback(realname: String, size: Int?): List<String> { - return Regex(Patterns.AUTOLINK_EMAIL_ADDRESS_STR) + return Patterns.AUTOLINK_EMAIL_ADDRESS .findAll(realname) .mapNotNull { it.groups[1]?.value @@ -57,7 +57,7 @@ object AvatarHelper { } private fun ircCloudFallback(ident: String, size: Int?): List<String> { - val userId = Regex("(?:~?)[us]id(\\d+)").matchEntire(ident)?.groupValues?.lastOrNull() + val userId = Patterns.IRCCLOUD_IDENT.matchEntire(ident)?.groupValues?.lastOrNull() ?: return emptyList() if (size != null) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt b/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt index 69da950e26f51bfea8370b2812722a3481bee054..85dd63f9bf231db06f4c3ae332cfa00c10b929cb 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/Patterns.kt @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid.util import org.intellij.lang.annotations.Language -import java.util.regex.Pattern @SuppressWarnings("Access") object Patterns { @@ -51,8 +50,7 @@ object Patterns { @Language("RegExp") const val DOMAIN_NAME_STR = """(?:$LOCAL_HOST_NAME|$HOST_NAME|$IP_ADDRESS_STRING)""" - val DOMAIN_NAME: Pattern = Pattern.compile(DOMAIN_NAME_STR) - + val DOMAIN_NAME = Regex(DOMAIN_NAME_STR) /** * Regular expression for valid email characters. Does not include some of the valid characters * defined in RFC5321: #&~!^`{}/=$*?| @@ -79,5 +77,11 @@ object Patterns { * and the special characters #&~!^`{}/=$*?| that are included in RFC5321. */ const val AUTOLINK_EMAIL_ADDRESS_STR = """($WORD_BOUNDARY(?:$EMAIL_ADDRESS_LOCAL_PART@$EMAIL_ADDRESS_DOMAIN)$WORD_BOUNDARY)""" - val AUTOLINK_EMAIL_ADDRESS = Pattern.compile(AUTOLINK_EMAIL_ADDRESS_STR) + val AUTOLINK_EMAIL_ADDRESS = Regex(AUTOLINK_EMAIL_ADDRESS_STR) + + /** + * Regular expression pattern to match IRCCloud user idents. + */ + const val IRCCLOUD_IDENT_STR = """(?:~?)[us]id(\d+)""" + val IRCCLOUD_IDENT = Regex(IRCCLOUD_IDENT_STR) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt index 1e7087a50f4b0762e5180eecd8735608e1850d9d..09c79d9a86e99ed9d76c1d563ebdb6764cbeec86 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/AndroidThreeTenBackport.kt @@ -7,7 +7,6 @@ import java.io.IOException import java.io.InputStream import java.util.concurrent.atomic.AtomicBoolean - object AndroidThreeTenBackport { private val initialized = AtomicBoolean() @@ -35,4 +34,4 @@ object AndroidThreeTenBackport { ZoneRulesProvider.registerProvider(provider) } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt b/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt index 091db6ab6323daf85c25ed75070b8f910c8b73df..a3513baf10d4d4c2a8f32dff5841449dbc6c484e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/backport/WritableWrappedChannel.kt @@ -5,7 +5,6 @@ import java.nio.ByteBuffer import java.nio.channels.WritableByteChannel import java.nio.channels.spi.AbstractInterruptibleChannel - class WritableWrappedChannel( private var backingStream: OutputStream ) : AbstractInterruptibleChannel(), WritableByteChannel { diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt b/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt index 3da80f703d0f14d896a2239580330c50d760eff8..01c9b848c6bab72067501fd9fdb687b72bc0f798 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/compatibility/AndroidHandlerService.kt @@ -124,10 +124,10 @@ class AndroidHandlerService : HandlerService { } } - private class ScheduledRunnable internal constructor(private val handler: Handler, - private val delegate: Runnable) : Runnable, - Disposable { - + private class ScheduledRunnable internal constructor( + private val handler: Handler, + private val delegate: Runnable + ) : Runnable, Disposable { @Volatile private var disposed: Boolean = false diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt index 8bb2713f0c827421c22f51e15a369a9959fa17b4..bccc72ecfd8f79fbed94b7ffa191dbf145251c06 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/BooleanHelper.kt @@ -7,4 +7,3 @@ inline fun <R> Boolean.letIf(block: () -> R): R? { inline fun <R> Boolean.letUnless(block: () -> R): R? { return if (this) null else block() } - diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt index b027f9d65595b6620ca3f78737012f7dee9b712b..bcd39daaeeac2aa76ffa8719971347c252d463a5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ContextHelper.kt @@ -32,4 +32,4 @@ fun <T> Context.sharedPreferences(name: String? = null, mode: Int = 0, PreferenceManager.getDefaultSharedPreferences(this).f() } else { getSharedPreferences(name, mode).f() - } \ No newline at end of file + } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt index 90047347c1ccb41d250f90de710b707b944fc151..c993462c2c6b2ea4c1324e73229a652256911ac3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/DrawableHelper.kt @@ -4,4 +4,4 @@ import android.graphics.drawable.Drawable import android.support.annotation.ColorInt import android.support.v4.graphics.drawable.DrawableCompat -fun Drawable.tint(@ColorInt tint: Int) = DrawableCompat.setTint(this, tint) \ No newline at end of file +fun Drawable.tint(@ColorInt tint: Int) = DrawableCompat.setTint(this, tint) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt index e8842c408be5679e61385e75da261fa269decc1d..4bacbb234002215c85a73c46ca2106b78597e465 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/FloatingActionButtonHelper.kt @@ -5,4 +5,4 @@ import android.support.design.widget.FloatingActionButton fun FloatingActionButton.toggle(visible: Boolean) { if (visible) show() else hide() -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt index c760c8a60e4694b663f56751f63ce197696748a4..310f9f8ec47cfe7b937e93199f03dc9b807e66e1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt @@ -4,4 +4,4 @@ import com.google.gson.Gson import java.io.File inline fun <reified T> Gson.fromJson(file: File) = this.fromJson(file.reader(), T::class.java) -inline fun <reified T> Gson.fromJson(text: String) = this.fromJson(text, T::class.java) \ No newline at end of file +inline fun <reified T> Gson.fromJson(text: String) = this.fromJson(text, T::class.java) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt index 69c46737144e39900de5d053726d4e5393f30245..3d2b73091fcebdc234dc24b11b44d0ebaa5b0ea3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntProgressionHelper.kt @@ -1,4 +1,4 @@ package de.kuschku.quasseldroid.util.helper val IntProgression.length: Int - get() = this.last + 1 - this.first \ No newline at end of file + get() = this.last + 1 - this.first diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt index fc62e431eb013fa6519c3e0cb6d91d550dda9763..e4b3ab54fce8141733e02af2b48b9cd7c17b3e97 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/IntRangeHelper.kt @@ -10,4 +10,4 @@ infix fun IntRange.without(other: IntRange): Iterable<IntRange> { val endingFragment: IntRange = otherLast + 1 until this.last + 1 return listOf(startingFragment, endingFragment).filter { it.last >= it.start } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt new file mode 100644 index 0000000000000000000000000000000000000000..8c814bb1017953ae763d36c9c955b81329e039bb --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ListHelper.kt @@ -0,0 +1,9 @@ +package de.kuschku.quasseldroid.util.helper + +inline fun <T, U> List<T>.mapReverse(mapper: (T) -> U): List<U> { + val result = mutableListOf<U>() + for (i in size - 1 downTo 0) { + result.add(0, mapper(this[i])) + } + return result +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt index 47e7447e3c93d7cafeba95c87dd346eeb17aed5e..aaa7306ac0583c92d3451fbbd3eb49626d0fe175 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/LruCacheHelper.kt @@ -5,4 +5,4 @@ import android.util.LruCache inline fun <K, V> LruCache<K, V>.getOrPut(key: K, value: () -> V) = get(key) ?: value().let { put(key, it) it -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt index 32a4c0e5b6fd229a88eed0eab774a0d7a47d6d1f..eeb22f6b32f5e3c5e366c79f84cefd2c34ed5f78 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt @@ -16,4 +16,4 @@ fun Menu.retint(context: Context) { } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt index 6d107d6f5ea6d515ae59a883ec7e8043ecb5cf8f..ee771dcb5d001e64ce5e9f52249e0e43f5e29532 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SelectionHelper.kt @@ -12,4 +12,4 @@ val CharSequence.selection: IntRange } val EditText.selection: IntRange - get() = text.selection \ No newline at end of file + get() = text.selection diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt index aff438caa67c1edfb0346a1a91c60ac9b8f2290b..211c5f64077be7897f94200d83b7029fc0533f8f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/SwitchCompatHelper.kt @@ -12,4 +12,4 @@ fun SwitchCompat.setDependent(view: ViewGroup, reverse: Boolean = false) { AnimationHelper.collapse(view) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt index c5f2724c668f53bd5244ee005e47a83743992f30..abb9842a053d980a6ea3f5017e444d1ab1398c5a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ThemeHelper.kt @@ -12,4 +12,4 @@ inline fun <R> TypedArray.use(block: (TypedArray) -> R): R { val result = block(this) recycle() return result -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt index 7c68c06c61c2f4eff419e48d4bd45095a5f70fb5..5bc19c0130e08dfae83c53d8fda26bb3b8f80cea 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/ContentFormatter.kt @@ -65,4 +65,4 @@ class ContentFormatter @Inject constructor( return text } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt index ea59e13db98b45458492893aac7480302ba94abb..e6957ebd525bd9a7a780e657136da724faf8f5b3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt @@ -1,27 +1,5 @@ -/* - * QuasselDroid - Quassel client for Android - * Copyright (C) 2016 Janne Koschinski - * Copyright (C) 2016 Ken Børge Viktil - * Copyright (C) 2016 Magnus Fjell - * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) - * any later version. - * - * 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.util.irc.format - import android.content.Context import android.text.SpannableStringBuilder import android.text.Spanned @@ -309,7 +287,6 @@ class IrcFormatDeserializer @Inject constructor() { } private class FormatDescription<out U : IrcFormat>(val start: Int, val format: U) { - fun apply(editable: SpannableStringBuilder, end: Int) { format.applyTo(editable, start, end) } @@ -346,7 +323,6 @@ class IrcFormatDeserializer @Inject constructor() { } private inner class HexIrcFormat(val foreground: Int, val background: Int) : IrcFormat { - override fun applyTo(editable: SpannableStringBuilder, from: Int, to: Int) { if (foreground >= 0) { editable.setSpan( @@ -365,7 +341,6 @@ class IrcFormatDeserializer @Inject constructor() { private inner class ColorIrcFormat(val foreground: Byte, val background: Byte, val mircColors: IntArray) : IrcFormat { - override fun applyTo(editable: SpannableStringBuilder, from: Int, to: Int) { if (foreground.toInt() >= 0 && foreground.toInt() < mircColors.size) { editable.setSpan( diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt index 2fbed102af8580439342aef1091bcbc75927ad36..15ee758d74197754502810baf2d11ab2db6d03b8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt @@ -43,7 +43,6 @@ abstract class ServiceBoundActivity : AppCompatActivity(), protected val backend: BehaviorSubject<Optional<Backend>> get() = connection.backend - @Inject lateinit var supportFragmentInjector: DispatchingAndroidInjector<Fragment> diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt index 0007abab4f83c1e3e9c42e6076ab8be9ac499ba2..9851180c7a128eed6b1dcf3d947f639ff93c4ec8 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AnimationHelper.kt @@ -59,4 +59,4 @@ object AnimationHelper { } }) } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt index 2e82c52716bc3a8700bff4e0afdd706d2146f8e4..6a5ab0c6f2b3b1b47b35b2b052a481fdb3a9a19c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt @@ -21,4 +21,4 @@ class AutoCompleteRecyclerView : RecyclerView { ) ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt index 6856596c424be0f48843c66e5f615229f25d6d4b..36141fd17da0511996c8d1fb80526ac9c65a1e41 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/MaterialContentLoadingProgressBar.kt @@ -1,5 +1,3 @@ -package de.kuschku.quasseldroid.util.ui - /* * Copyright (C) 2013 The Android Open Source Project * @@ -15,6 +13,7 @@ package de.kuschku.quasseldroid.util.ui * See the License for the specific language governing permissions and * limitations under the License. */ +package de.kuschku.quasseldroid.util.ui import android.content.Context import android.util.AttributeSet diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt index 3732bd81194b69c5f2eab09222ce78d2033183f6..53a3997c5b72ce5afdb883d996915580cd60c2d9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/RecyclerSpinnerAdapter.kt @@ -31,7 +31,6 @@ abstract class RecyclerSpinnerAdapter<VH : RecyclerView.ViewHolder> : BaseAdapte return holder.itemView } - protected abstract fun onBindViewHolder(holder: VH, position: Int) protected abstract fun onCreateViewHolder(parent: ViewGroup, dropDown: Boolean): VH } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt index 003cf1c4be6a67bdcbe8aa28e2fcde004fd1c3dd..390d097d354544156bdd63e5ed8256973cce04a0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SeekBarPreference.kt @@ -1,18 +1,3 @@ -package de.kuschku.quasseldroid.util.ui - -import android.content.Context -import android.content.res.TypedArray -import android.support.v7.preference.Preference -import android.support.v7.preference.PreferenceViewHolder -import android.support.v7.widget.AppCompatSeekBar -import android.util.AttributeSet -import android.util.Log -import android.widget.SeekBar -import android.widget.TextView -import butterknife.BindView -import butterknife.ButterKnife -import de.kuschku.quasseldroid.R - /* * Copyright (c) 2015 IRCCloud, Ltd. * @@ -28,8 +13,22 @@ import de.kuschku.quasseldroid.R * See the License for the specific language governing permissions and * limitations under the License. */ -class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener { +package de.kuschku.quasseldroid.util.ui +import android.content.Context +import android.content.res.TypedArray +import android.support.v7.preference.Preference +import android.support.v7.preference.PreferenceViewHolder +import android.support.v7.widget.AppCompatSeekBar +import android.util.AttributeSet +import android.util.Log +import android.widget.SeekBar +import android.widget.TextView +import butterknife.BindView +import butterknife.ButterKnife +import de.kuschku.quasseldroid.R + +class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener { private val TAG = javaClass.name private var maxValue = 100 diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt index 86ac9b86f203dfce42f7dbc0225c30550efea83d..06d18039d13b3d65a889ad88fa1ae09e43971f10 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/SettingsActivity.kt @@ -30,7 +30,6 @@ abstract class SettingsActivity(private val fragment: Fragment? = null) : Servic supportActionBar?.setDisplayHomeAsUpEnabled(true) val fragment = this.fragment ?: this.fragment() - if (fragment != null) { val transaction = supportFragmentManager.beginTransaction() fragment.arguments = arguments diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml index 769d36af7ab82afcebb059639263fd50160c2882..e92c0e0b550a9a6d2131bb9a1498ce492a9c6dfc 100644 --- a/app/src/main/res/layout/widget_chatmessage_plain.xml +++ b/app/src/main/res/layout/widget_chatmessage_plain.xml @@ -54,10 +54,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:textColor="?attr/colorForegroundSecondary" - android:visibility="gone" android:ellipsize="marquee" android:singleLine="true" + android:textColor="?attr/colorForegroundSecondary" + android:visibility="gone" tools:text="@sample/messages.json/data/sender" tools:visibility="visible" /> diff --git a/buildSrc/src/main/kotlin/ProjectHelper.kt b/buildSrc/src/main/kotlin/ProjectHelper.kt index a2c9119a7322e0081dddc102cebb351bd7a2e92a..26746aeaa062e4ca8c74daf777685b45e4f41b86 100644 --- a/buildSrc/src/main/kotlin/ProjectHelper.kt +++ b/buildSrc/src/main/kotlin/ProjectHelper.kt @@ -21,4 +21,4 @@ fun Project.properties(fileName: String): Properties? { val props = Properties() props.load(file.inputStream()) return props -} \ No newline at end of file +} diff --git a/buildSrc/src/main/kotlin/VersionContext.kt b/buildSrc/src/main/kotlin/VersionContext.kt index 806b41a630ddcbe8a2bf28128e0b478ca1f96e00..8a58329139d61a4df528920c169b21f06c198982 100644 --- a/buildSrc/src/main/kotlin/VersionContext.kt +++ b/buildSrc/src/main/kotlin/VersionContext.kt @@ -4,4 +4,4 @@ inline fun withVersion(version: Any?, f: VersionContext.() -> Unit) { (version as? String)?.let { VersionContext(version).f() } -} \ No newline at end of file +} diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt index 8018c79d71ef38a28b2a0de817900589f7e9ce75..97e074021af2e95d8c99d7f967b356b10a4a9919 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt @@ -67,4 +67,4 @@ inline fun <reified U> QVariant_?.valueOrThrow(e: Throwable = NullPointerExcepti this?.data as? U ?: throw e inline fun <reified U> QVariant_?.valueOrThrow(e: () -> Throwable): U = - this?.data as? U ?: throw e() \ No newline at end of file + this?.data as? U ?: throw e() diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt index 44a70bef0cad4550792567facc82154320451dc6..9c293a96e10e97e6f121efb4c5a15b7d220f547b 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/Type.kt @@ -3,7 +3,6 @@ package de.kuschku.libquassel.protocol import de.kuschku.libquassel.protocol.primitive.serializer.* import java.util.* - enum class Type(val id: kotlin.Int, val serializer: Serializer<*>? = null) { Void(0, VoidSerializer), Bool(1, BoolSerializer), diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt index de9c099f96cdf95c449274722c75cb98cd828533..203a1522596f64df3bc8c166b71be52025e4b4b6 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/LegacyFeature.kt @@ -51,21 +51,21 @@ enum class LegacyFeature(override val bit: Int) : fun fromExtended(it: ExtendedFeature) = when (it) { ExtendedFeature.SynchronizedMarkerLine -> LegacyFeature.SynchronizedMarkerLine ExtendedFeature.SaslAuthentication -> LegacyFeature.SaslAuthentication - ExtendedFeature.SaslExternal -> LegacyFeature.SaslExternal - ExtendedFeature.HideInactiveNetworks -> LegacyFeature.HideInactiveNetworks - ExtendedFeature.PasswordChange -> LegacyFeature.PasswordChange - ExtendedFeature.CapNegotiation -> LegacyFeature.CapNegotiation - ExtendedFeature.VerifyServerSSL -> LegacyFeature.VerifyServerSSL - ExtendedFeature.CustomRateLimits -> LegacyFeature.CustomRateLimits - ExtendedFeature.DccFileTransfer -> LegacyFeature.DccFileTransfer - ExtendedFeature.AwayFormatTimestamp -> LegacyFeature.AwayFormatTimestamp - ExtendedFeature.Authenticators -> LegacyFeature.Authenticators - ExtendedFeature.BufferActivitySync -> LegacyFeature.BufferActivitySync - ExtendedFeature.CoreSideHighlights -> LegacyFeature.CoreSideHighlights - ExtendedFeature.SenderPrefixes -> LegacyFeature.SenderPrefixes - ExtendedFeature.RemoteDisconnect -> LegacyFeature.RemoteDisconnect - ExtendedFeature.ExtendedFeatures -> LegacyFeature.ExtendedFeatures - else -> null + ExtendedFeature.SaslExternal -> LegacyFeature.SaslExternal + ExtendedFeature.HideInactiveNetworks -> LegacyFeature.HideInactiveNetworks + ExtendedFeature.PasswordChange -> LegacyFeature.PasswordChange + ExtendedFeature.CapNegotiation -> LegacyFeature.CapNegotiation + ExtendedFeature.VerifyServerSSL -> LegacyFeature.VerifyServerSSL + ExtendedFeature.CustomRateLimits -> LegacyFeature.CustomRateLimits + ExtendedFeature.DccFileTransfer -> LegacyFeature.DccFileTransfer + ExtendedFeature.AwayFormatTimestamp -> LegacyFeature.AwayFormatTimestamp + ExtendedFeature.Authenticators -> LegacyFeature.Authenticators + ExtendedFeature.BufferActivitySync -> LegacyFeature.BufferActivitySync + ExtendedFeature.CoreSideHighlights -> LegacyFeature.CoreSideHighlights + ExtendedFeature.SenderPrefixes -> LegacyFeature.SenderPrefixes + ExtendedFeature.RemoteDisconnect -> LegacyFeature.RemoteDisconnect + ExtendedFeature.ExtendedFeatures -> LegacyFeature.ExtendedFeatures + else -> null } } diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt index 965f4905bf47e19be8b2912390a4d992b58c84e1..9a8b2b6e729424f07409d7553f8183b5433c6639 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/QuasselFeatures.kt @@ -24,4 +24,3 @@ class QuasselFeatures( fun all() = QuasselFeatures(ExtendedFeature.values().toSet(), emptySet()) } } - diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt index e4fd7384fbc3ef6492e0f717c90028963c0497d2..aba33f2386a84103cb0fea81cea296460691af8f 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/DeserializationException.kt @@ -6,4 +6,4 @@ class DeserializationException : Exception { 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) -} \ No newline at end of file +} diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt index 93f36ceee12c19ba4dca07973389e68626ab83c8..f3032a1b3790e468488ba28cb8cec937f4d78c0a 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/exceptions/MessageHandlingException.kt @@ -13,4 +13,4 @@ sealed class MessageHandlingException(cause: Throwable?) : Exception(cause) { val source: HandshakeMessage, cause: Throwable? ) : MessageHandlingException(cause) -} \ No newline at end of file +} diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt index 737c474657705750f8d282f3de2e6e0ac7985eca..5970900228549a08de866ed6b6ef16d90bb1d400 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt @@ -5,15 +5,13 @@ import de.kuschku.libquassel.protocol.Type import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.syncables.interfaces.IBufferSyncer import de.kuschku.libquassel.session.ISession -import de.kuschku.libquassel.session.SignalProxy import de.kuschku.libquassel.util.irc.IrcCaseMappers import io.reactivex.Observable import io.reactivex.subjects.BehaviorSubject class BufferSyncer constructor( - proxy: SignalProxy, private val session: ISession -) : SyncableObject(proxy, "BufferSyncer"), IBufferSyncer { +) : SyncableObject(session.proxy, "BufferSyncer"), IBufferSyncer { fun lastSeenMsg(buffer: BufferId): MsgId = _lastSeenMsg[buffer] ?: 0 fun liveLastSeenMsg(buffer: BufferId): Observable<MsgId> = live_lastSeenMsg.map { markerLine(buffer) diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt index fc168007dfd5e1a843549dbde838e571fcd52db9..8ce519c61efe272135733c148cd7b3152b46d04a 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt @@ -22,7 +22,6 @@ class IrcUser( } override fun toVariantMap() = initProperties() - override fun fromVariantMap(properties: QVariantMap) { initSetProperties(properties) } @@ -64,7 +63,6 @@ class IrcUser( setWhoisServiceReply(properties["whoisServiceReply"].valueOr(this::whoisServiceReply)) setSuserHost(properties["suserHost"].valueOr(this::suserHost)) setEncrypted(properties["encrypted"].valueOr(this::encrypted)) - setUserModes(properties["userModes"].valueOr(this::userModes)) } @@ -253,106 +251,93 @@ class IrcUser( } private val hasChangedNotification = BehaviorSubject.createDefault(Unit) + private var _nick: String = HostmaskHelper.nick(hostmask) set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _user: String = HostmaskHelper.user(hostmask) - + set(value) { + field = value + hasChangedNotification.onNext(Unit) + } private var _host: String = HostmaskHelper.host(hostmask) set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _realName: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _account: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _awayMessage: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _away: Boolean = false set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _server: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _idleTime: Instant = Instant.EPOCH set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _idleTimeSet: Instant = Instant.EPOCH set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _loginTime: Instant = Instant.EPOCH set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _ircOperator: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _lastAwayMessage: Int = 0 set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _whoisServiceReply: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _suserHost: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _encrypted: Boolean = false set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _channels: MutableSet<IrcChannel> = mutableSetOf() - private var _userModes: String = "" set(value) { field = value hasChangedNotification.onNext(Unit) } - private var _network: Network = network private var _codecForEncoding: Charset? = null private var _codecForDecoding: Charset? = null @@ -361,4 +346,3 @@ class IrcUser( val NULL = IrcUser("", Network.NULL, SignalProxy.NULL) } } - diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt index 6e771258a6410ce04156a2addf38e617b137d81f..16d50a6f2b658b80f6db940a846d42fbb258f357 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt @@ -550,7 +550,6 @@ class Network constructor( * * @param useCustomRate If true, use custom rate limits, otherwise use Quassel defaults. */ - override fun setUseCustomMessageRate(useCustomRate: Boolean) { if (_useCustomMessageRate == useCustomRate) return diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt index 2332cef6bd825fe287259f5087e1cf9f04a286bd..65b5d0771300ff419ed8aac76e33d78e4da3a652 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt @@ -15,7 +15,6 @@ class NetworkConfig constructor( } override fun toVariantMap() = initProperties() - override fun fromVariantMap(properties: QVariantMap) { initSetProperties(properties) } diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt index aa7fe24736825fee162689dba2a2c46321d2988c..3c557684324a3d5a21bff236b323700cdbc65645 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/ISyncableObject.kt @@ -28,13 +28,13 @@ interface ISyncableObject { fun toVariantMap(): QVariantMap = emptyMap() } -/*inline*/ fun ISyncableObject.SYNC(function: String, vararg arg: QVariant_) { +inline fun ISyncableObject.SYNC(function: String, vararg arg: QVariant_) { // Don’t transmit calls back that we just got from the network if (initialized && proxy.shouldSync(className, objectName, function)) proxy.callSync(className, objectName, function, arg.toList()) } -/*inline*/ fun ISyncableObject.REQUEST(function: String, vararg arg: QVariant_) { +inline fun ISyncableObject.REQUEST(function: String, vararg arg: QVariant_) { // Don’t transmit calls back that we just got from the network if (initialized && proxy.shouldSync(className, objectName, function)) proxy.callSync(className, objectName, function, arg.toList()) diff --git a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt index 5b22f88e98f9a5e55ea12dc23eafb69855898c7b..69b4dd3b0888da4c344b055788159359c0ca4bc9 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt @@ -124,6 +124,7 @@ class CoreConnection( override fun close() { try { setState(ConnectionState.CLOSED) + interrupt() } catch (e: Throwable) { log(WARN, TAG, "Error encountered while closing connection", e) } diff --git a/lib/src/main/java/de/kuschku/libquassel/session/Features.kt b/lib/src/main/java/de/kuschku/libquassel/session/Features.kt index ec68eac89a6d2745b8cefddb42d18195542b59bd..e8a1d04b04dda0e5c4f2bb6f627b7f39a7d9727e 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/Features.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/Features.kt @@ -11,4 +11,4 @@ data class Features( core.enabledFeatures intersect client.enabledFeatures, core.unknownFeatures union client.unknownFeatures ) -} \ No newline at end of file +} diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt b/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt index d35de1f701827863abd7a37459ebd68688980650..8e1762ebd75344f9ac58ff0267d653b25cf6794e 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/ISession.kt @@ -35,9 +35,7 @@ interface ISession : Closeable { val initStatus: Observable<Pair<Int, Int>> val proxy: SignalProxy - val error: Flowable<HandshakeMessage> - val lag: Observable<Long> fun login(user: String, pass: String) @@ -70,7 +68,6 @@ interface ISession : Closeable { override val lag: Observable<Long> = Observable.just(0L) override fun login(user: String, pass: String) = Unit - override fun close() = Unit } } diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt index d6b239c3808d8f5f36cb76b5851a5f17d36cb9bd..f10d766b9941a905704e3891ea093aab12e3ed28 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt @@ -15,12 +15,10 @@ import java.io.Closeable @Suppress("LeakingThis") abstract class ProtocolHandler( - protected val exceptionHandler: (Throwable) -> Unit + private val exceptionHandler: (Throwable) -> Unit ) : SignalProxy, AuthHandler, Closeable { protected var closed = false - - private val objectStorage: ObjectStorage = ObjectStorage(this) - + protected abstract val objectStorage: ObjectStorage protected open var rpcHandler: RpcHandler? = null private val toInit = mutableMapOf<ISyncableObject, MutableList<SignalProxyMessage.SyncMessage>>() diff --git a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt index ec0bb88eeea9c584eda08a7a37996da75b1da420..293c1f94a047c3ed13ceb3925e3ab1aed754d9b7 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt @@ -24,6 +24,7 @@ class Session( val disconnectFromCore: () -> Unit, exceptionHandler: (Throwable) -> Unit ) : ProtocolHandler(exceptionHandler), ISession { + override val objectStorage: ObjectStorage = ObjectStorage(this) override val proxy: SignalProxy = this override val features = Features(clientData.clientFeatures, QuasselFeatures.empty()) @@ -41,7 +42,7 @@ class Session( override val aliasManager = AliasManager(this) override val backlogManager = BacklogManager(this, backlogStorage) override val bufferViewManager = BufferViewManager(this) - override val bufferSyncer = BufferSyncer(this, this) + override val bufferSyncer = BufferSyncer(this) override val certManagers = mutableMapOf<IdentityId, CertManager>() override val coreInfo = CoreInfo(this) override val dccConfig = DccConfig(this) @@ -210,7 +211,6 @@ class Session( override fun dispatch(message: SignalProxyMessage) { if (closed) return - coreConnection.dispatch(message) } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt b/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt index 998c248ad26569b0bbee84f096afd0c547257bdc..aca8f72813cc47762ba427df9a28951508441edc 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/CRCUtils.kt @@ -41,4 +41,4 @@ object CRCUtils { } return crcout } -} \ No newline at end of file +} diff --git a/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt b/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt index a2bf8f95035ed4afdec901728878974b4c6fb422..668b1462e744a4e22121a6f50bbbea2abd0e7510 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/IrcUserUtils.kt @@ -54,4 +54,4 @@ object IrcUserUtils { else lastIndex } -} \ No newline at end of file +} diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt index 9081e1eefbf724c16fc46d916edf302467d37ffa..fb527910539515fb99b890215f75b60e4d55d657 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt @@ -126,4 +126,4 @@ infix operator fun <T> LongFlags<T>.minus(other: LongFlags<T>): LongFlags<T> infix fun <T> LongFlags<T>.unset(which: T): LongFlags<T> where T : Enum<T>, T : LongFlag<T> = LongFlags( - value xor which.bit) \ No newline at end of file + value xor which.bit) diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt index 2ef747380e153b7c484b906dd7dbb518db8fd221..b7e4baed3d0ac9c9d414009407d2966c96358711 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt @@ -131,4 +131,4 @@ infix operator fun <T> ShortFlags<T>.minus(other: ShortFlags<T>): ShortFlags<T> infix fun <T> ShortFlags<T>.unset(which: T): ShortFlags<T> where T : Enum<T>, T : ShortFlag<T> = ShortFlags( - value xor which.bit) \ No newline at end of file + value xor which.bit) diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt index 2335af048431608733b4229411a87f47ffdf3623..86bff28e074b831c63ba2f84191b14b120037962 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MathHelper.kt @@ -1,4 +1,4 @@ inline fun Int.clamp(lowerBound: Int, upperBound: Int): Int = maxOf(lowerBound, minOf(this, upperBound)) -inline fun Int.clamp(range: IntRange): Int = clamp(range.start, range.last) \ No newline at end of file +inline fun Int.clamp(range: IntRange): Int = clamp(range.start, range.last) diff --git a/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt b/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt index 037c618298d5ddcd54fb6e4b6a6940522cbb9606..ab217dade20821cac2fb91ca0548e8cedd6c09cc 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt @@ -8,11 +8,11 @@ object IrcCaseMappers { interface IrcCaseMapper { fun equalsIgnoreCase(a: String, b: String): Boolean - fun equalsIgnoreCaseNullable(a: String?, b: String?) = when { + fun equalsIgnoreCaseNullable(a: String?, b: String?) = when { a === null && b === null -> true - a === null -> false - b === null -> false - else -> this.equalsIgnoreCase(a, b) + a === null -> false + b === null -> false + else -> this.equalsIgnoreCase(a, b) } fun toLowerCase(value: String): String diff --git a/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt b/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt index 26fe1d2d93cfc310f58efbcb0a145aca83f5876d..77916e146bed878d9d48802af5825e940e7e7000 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/nio/ChainedByteBuffer.kt @@ -4,7 +4,6 @@ import java.nio.ByteBuffer import java.nio.channels.WritableByteChannel import java.util.* - class ChainedByteBuffer(private val bufferSize: Int = 1024, private val direct: Boolean = false) { private val bufferList: MutableList<ByteBuffer> = ArrayList() diff --git a/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt b/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt index 50fefbed5a73c755b0f038e7b8360b537f380df2..558603f3670193d19bf388138684f820cb51f251 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt @@ -20,7 +20,6 @@ import javax.net.ssl.SSLContext import javax.net.ssl.SSLSocket import javax.net.ssl.X509TrustManager - class WrappedChannel( private val socket: Socket, private var rawInStream: InputStream? = null, diff --git a/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt b/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt index a1292b3b6dce4bb2f0bee608e7bf7589bd5c7e18..f157fca99a1f83ee377daa51c4adc3e68d980dd2 100644 --- a/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt +++ b/lib/src/test/java/de/kuschku/libquassel/ConnectionUnitTest.kt @@ -3,7 +3,6 @@ package de.kuschku.libquassel import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.quassel.ProtocolFeature import de.kuschku.libquassel.quassel.QuasselFeatures -import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.session.BacklogStorage import de.kuschku.libquassel.session.ConnectionState import de.kuschku.libquassel.session.Session @@ -32,6 +31,7 @@ class ConnectionUnitTest { } private fun runTest(host: String, port: Int, user: String, pass: String) { + val start = System.currentTimeMillis() val session = Session( ClientData( identifier = "libquassel test", @@ -61,16 +61,9 @@ class ConnectionUnitTest { }, user to pass, {}, {}) session.state.subscribe { if (it == ConnectionState.CONNECTED) { - session.rpcHandler?.createNetwork(INetwork.NetworkInfo( - networkName = "QuakeNet", - identity = session.identities.values.firstOrNull()?.id()!!, - serverList = listOf( - INetwork.Server( - host = "irc.quakenet.org", - port = 6667 - ) - ) - ), emptyList()) + val end = System.currentTimeMillis() + println("Connection took ${0.001 * (end - start)} seconds") + session.close() } } session.join() diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt index 45f74e097ca1cf67ad204566fe9a94d1a858a84a..23049fc82dd573838db8984aaaac003fb969d808 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataHelper.kt @@ -144,4 +144,4 @@ inline operator fun <T> LiveData<T>.invoke() = value inline operator fun <T, U> LiveData<T?>.invoke(f: (T) -> U?) = value?.let(f) -inline fun <T, U> LiveData<T>.let(f: (T) -> U?) = value?.let(f) \ No newline at end of file +inline fun <T, U> LiveData<T>.let(f: (T) -> U?) = value?.let(f) diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt index 192049fc96e26e89a65337c8d1482db4fef9cb01..83d3faa304b014ec220276a2733ba62398a5b44b 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/util/helper/LiveDataZipHelper.kt @@ -15,7 +15,6 @@ * 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.util.helper import android.arch.lifecycle.LiveData @@ -104,4 +103,4 @@ fun <A, B> LiveData<A>.zip(b: LiveData<B>): LiveData<Pair<A, B>> = */ fun <A, B, C> LiveData<A>.zip(b: LiveData<B>, c: LiveData<C>): LiveData<Triple<A, B, C>> = - zipLiveData(this, b, c) \ No newline at end of file + zipLiveData(this, b, c) diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt index c4a11b6ee4d1f5e7d01d5ac3a527b8de20e2a407..59672d921c2dd07ccbf430a3b956853836107891 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferHiddenState.kt @@ -5,4 +5,3 @@ enum class BufferHiddenState { HIDDEN_TEMPORARY, HIDDEN_PERMANENT } - diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt index 76f60e254e517ef84d1d2834faf3c6ddb1144574..47499580bca5024f8ffed53ee4bad97ef4d195c5 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferListItem.kt @@ -3,4 +3,4 @@ package de.kuschku.quasseldroid.viewmodel.data data class BufferListItem( val props: BufferProps, val state: BufferState -) \ No newline at end of file +) diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt index ccc6258dc60e697bfca911c3f6fc7ca1113d01f0..73d381b558ba4db0236ba5b146de9b7ce344bf5e 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferProps.kt @@ -16,4 +16,4 @@ data class BufferProps( BufferInfo.Activity.NoActivity ), val hiddenState: BufferHiddenState -) \ No newline at end of file +) diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt index b95936c90fedcfd0d5dff8cf5572e9b67b52fd26..ddb6a7583eb273a2ea884b6ecd22587822d2e072 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferState.kt @@ -3,4 +3,4 @@ package de.kuschku.quasseldroid.viewmodel.data data class BufferState( val networkExpanded: Boolean, val selected: Boolean -) \ No newline at end of file +) diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt index a586e1eb3937a25e50cb95c4c12e3ebe983cb1c5..b8dcdcd22c643ecfe2d6d45921aba8e875b238cf 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferStatus.kt @@ -4,4 +4,4 @@ enum class BufferStatus { ONLINE, AWAY, OFFLINE -} \ No newline at end of file +} diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt index 21daf1af69cff7cecae1b5ea71b5a2361f4d1c6a..951e2fd7026242bcac800c8afaf3f705a0cbbd02 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/SelectedBufferItem.kt @@ -8,4 +8,4 @@ data class SelectedBufferItem( val connectionState: INetwork.ConnectionState = INetwork.ConnectionState.Disconnected, val joined: Boolean = false, val hiddenState: BufferHiddenState = BufferHiddenState.VISIBLE -) \ No newline at end of file +)