From 8a660348a06311725feab4b5cfa99a7a55313189 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Mon, 2 Apr 2018 17:36:45 +0200
Subject: [PATCH] Bugfixes and cleanup

---
 .../ui/chat/info/InfoPropertyAdapter.kt        |  2 +-
 .../chat/messages/RipplePassthroughTextView.kt |  9 +++++++--
 .../util/service/ServiceBoundActivity.kt       |  5 ++++-
 .../quasseldroid/util/ui/SeekBarPreference.kt  |  3 ++-
 app/src/main/res/layout/settings_item.xml      |  2 +-
 .../libquassel/quassel/syncables/IrcChannel.kt | 14 ++++++++++++--
 .../libquassel/quassel/syncables/IrcUser.kt    | 18 ++++++++++++++----
 .../libquassel/quassel/syncables/Network.kt    | 17 +++++++++++++----
 .../quasseldroid/viewmodel/data/BufferData.kt  |  3 +--
 9 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt
index a7ffa4f1a..601e6cfe7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/InfoPropertyAdapter.kt
@@ -69,4 +69,4 @@ class InfoPropertyAdapter :
       iconFrame.visibleIf(item.icon != null)
     }
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
index ad20d238d..02ebfaae3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
@@ -12,8 +12,13 @@ class RipplePassthroughTextView : TextView {
   constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
     super(context, attrs, defStyleAttr)
 
-  override fun onTouchEvent(event: MotionEvent?): Boolean {
+  // The goal is to provide all normal interaction to the parent view, unless a link is touched
+  // But additionally, we want to provide all normal textview interactions as well
+  override fun onTouchEvent(event: MotionEvent): Boolean {
+    val movementMethod = this.movementMethod
+    this.movementMethod = null
     super.onTouchEvent(event)
+    this.movementMethod = movementMethod
     return movementMethod?.onTouchEvent(this, text as? Spannable, event) == true
   }
-}
\ No newline at end of file
+}
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 bccc403ae..a98089d88 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
@@ -19,7 +19,10 @@ import de.kuschku.libquassel.session.Backend
 import de.kuschku.libquassel.util.Optional
 import de.kuschku.quasseldroid.Keys
 import de.kuschku.quasseldroid.R
-import de.kuschku.quasseldroid.settings.*
+import de.kuschku.quasseldroid.settings.AppearanceSettings
+import de.kuschku.quasseldroid.settings.AutoCompleteSettings
+import de.kuschku.quasseldroid.settings.ConnectionSettings
+import de.kuschku.quasseldroid.settings.Settings
 import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity
 import de.kuschku.quasseldroid.util.helper.sharedPreferences
 import de.kuschku.quasseldroid.util.helper.updateRecentsHeaderIfExisting
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 d5635f39d..003cf1c4b 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
@@ -131,6 +131,7 @@ class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener {
   override fun onStopTrackingTouch(seekBar: SeekBar) = notifyChanged()
   override fun onGetDefaultValue(ta: TypedArray, index: Int) = ta.getInt(index,
                                                                          DEFAULT_VALUE)
+
   override fun onSetInitialValue(restoreValue: Boolean, defaultValue: Any?) {
     if (restoreValue) {
       currentValue = getPersistedInt(currentValue)
@@ -165,4 +166,4 @@ class SeekBarPreference : Preference, SeekBar.OnSeekBarChangeListener {
     private const val NAMESPACE_ROBOBUNNY = "http://robobunny.com"
     private const val DEFAULT_VALUE = 50
   }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/layout/settings_item.xml b/app/src/main/res/layout/settings_item.xml
index 8d3b0db1f..5b4f851ad 100644
--- a/app/src/main/res/layout/settings_item.xml
+++ b/app/src/main/res/layout/settings_item.xml
@@ -26,8 +26,8 @@
       android:layout_height="wrap_content"
       android:ellipsize="marquee"
       android:singleLine="true"
-      android:textColor="?colorTextPrimary"
       android:textAppearance="?android:textAppearanceMedium"
+      android:textColor="?colorTextPrimary"
       android:textSize="16sp"
       tools:text="IRC Config" />
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt
index d0ad84789..d9ac6984b 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt
@@ -174,12 +174,22 @@ class IrcChannel(
 
   fun codecForEncoding() = _codecForEncoding
   fun codecForDecoding() = _codecForDecoding
-  fun setCodecForEncoding(codecName: String) = setCodecForEncoding(Charset.forName(codecName))
+  fun setCodecForEncoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForEncoding(charset)
+    }
+  }
   fun setCodecForEncoding(codec: Charset) {
     _codecForEncoding = codec
   }
 
-  fun setCodecForDecoding(codecName: String) = setCodecForDecoding(Charset.forName(codecName))
+  fun setCodecForDecoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForDecoding(charset)
+    }
+  }
   fun setCodecForDecoding(codec: Charset) {
     _codecForDecoding = codec
   }
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 ebda98119..9de86de95 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
@@ -11,7 +11,6 @@ import io.reactivex.Observable
 import io.reactivex.subjects.BehaviorSubject
 import org.threeten.bp.Instant
 import java.nio.charset.Charset
-
 class IrcUser(
   hostmask: String,
   network: Network,
@@ -96,12 +95,22 @@ class IrcUser(
   fun channels() = _channels.map(IrcChannel::name)
   fun codecForEncoding() = _codecForEncoding
   fun codecForDecoding() = _codecForDecoding
-  fun setCodecForEncoding(codecName: String) = setCodecForEncoding(Charset.forName(codecName))
+  fun setCodecForEncoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForEncoding(charset)
+    }
+  }
   fun setCodecForEncoding(codec: Charset) {
     _codecForEncoding = codec
   }
 
-  fun setCodecForDecoding(codecName: String) = setCodecForDecoding(Charset.forName(codecName))
+  fun setCodecForDecoding(codecName: String) {
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForDecoding(charset)
+    }
+  }
   fun setCodecForDecoding(codec: Charset) {
     _codecForDecoding = codec
   }
@@ -374,4 +383,5 @@ class IrcUser(
   companion object {
     val NULL = IrcUser("", Network.NULL, SignalProxy.NULL)
   }
-}
\ No newline at end of file
+}
+
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 adbf785f6..b51e0e863 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
@@ -625,15 +625,24 @@ class Network constructor(
   }
 
   fun setCodecForDecoding(codecName: String) {
-    setCodecForDecoding(Charset.forName(codecName))
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForDecoding(charset)
+    }
   }
 
   fun setCodecForEncoding(codecName: String) {
-    setCodecForDecoding(Charset.forName(codecName))
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForEncoding(charset)
+    }
   }
 
   fun setCodecForServer(codecName: String) {
-    setCodecForDecoding(Charset.forName(codecName))
+    val charset = Charset.availableCharsets()[codecName]
+    if (charset != null) {
+      setCodecForServer(charset)
+    }
   }
 
   override fun addSupport(param: String, value: String?) {
@@ -1045,4 +1054,4 @@ class Network constructor(
   companion object {
     val NULL = Network(-1, SignalProxy.NULL)
   }
-}
\ No newline at end of file
+}
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
index d088b89fd..2a946f9fc 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/BufferData.kt
@@ -2,10 +2,9 @@ package de.kuschku.quasseldroid.viewmodel.data
 
 import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.quassel.syncables.Network
-import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
 
 data class BufferData(
   val info: BufferInfo? = null,
   val network: Network? = null,
   val description: String? = null
-)
\ No newline at end of file
+)
-- 
GitLab