From ad29ed1633d5a225d44b33e886f7767d1af39b1a Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 22 Feb 2018 16:07:10 +0100
Subject: [PATCH] Implement monospace settings, fix tablet UI

---
 .../quasseldroid_ng/ui/chat/ChatActivity.kt   |  4 +++-
 .../quasseldroid_ng/ui/chat/EditorFragment.kt |  2 +-
 .../ui/chat/NickListFragment.kt               |  2 +-
 .../ui/chat/ToolbarFragment.kt                |  2 +-
 .../chat/buffers/BufferViewConfigFragment.kt  |  2 +-
 .../ui/chat/messages/MessageListFragment.kt   |  5 +++--
 .../chat/messages/QuasselMessageRenderer.kt   |  3 +++
 .../ui/settings/SettingsFragment.kt           |  1 +
 .../ui/settings/data/AppearanceSettings.kt    |  1 +
 .../ui/settings/{ => data}/Settings.kt        | 21 +++++++++++++------
 .../util/service/ServiceBoundActivity.kt      |  2 +-
 .../res/layout-sw720dp-land/activity_main.xml |  5 +++++
 .../main/res/values/strings_preferences.xml   |  3 +++
 app/src/main/res/xml/preferences.xml          |  5 +++++
 14 files changed, 44 insertions(+), 14 deletions(-)
 rename app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/{ => data}/Settings.kt (75%)

diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt
index e23a561d1..476a772b9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt
@@ -28,6 +28,7 @@ import de.kuschku.quasseldroid_ng.persistence.AccountDatabase
 import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
 import de.kuschku.quasseldroid_ng.ui.settings.SettingsActivity
 import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
 import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread
 import de.kuschku.quasseldroid_ng.util.helper.*
@@ -54,7 +55,7 @@ class ChatActivity : ServiceBoundActivity() {
 
   private lateinit var database: QuasselDatabase
 
-  private var backlogSettings = BacklogSettings()
+  private lateinit var backlogSettings: BacklogSettings
 
   override fun onCreate(savedInstanceState: Bundle?) {
     handler.onCreate()
@@ -64,6 +65,7 @@ class ChatActivity : ServiceBoundActivity() {
 
     viewModel = ViewModelProviders.of(this)[QuasselViewModel::class.java]
     viewModel.setBackend(this.backend)
+    backlogSettings = Settings.backlog(this)
 
     database = QuasselDatabase.Creator.init(application)
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt
index 75cade9ac..bbabc6a96 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/EditorFragment.kt
@@ -11,8 +11,8 @@ import android.widget.ImageButton
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid_ng.R
-import de.kuschku.quasseldroid_ng.ui.settings.Settings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
 import de.kuschku.quasseldroid_ng.util.helper.invoke
 import de.kuschku.quasseldroid_ng.util.helper.let
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt
index 9f1691318..0d1c34236 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt
@@ -11,8 +11,8 @@ import android.view.ViewGroup
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid_ng.R
-import de.kuschku.quasseldroid_ng.ui.settings.Settings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
 import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread
 import de.kuschku.quasseldroid_ng.util.helper.map
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt
index 28725d2a3..57d9802b2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt
@@ -14,8 +14,8 @@ import de.kuschku.libquassel.quassel.BufferInfo
 import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork
 import de.kuschku.libquassel.util.hasFlag
 import de.kuschku.quasseldroid_ng.R
-import de.kuschku.quasseldroid_ng.ui.settings.Settings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
 import de.kuschku.quasseldroid_ng.util.helper.visibleIf
 import de.kuschku.quasseldroid_ng.util.helper.zip
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt
index 1c60b03d9..a1f722520 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -17,8 +17,8 @@ import de.kuschku.libquassel.util.hasFlag
 import de.kuschku.libquassel.util.minus
 import de.kuschku.quasseldroid_ng.R
 import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
-import de.kuschku.quasseldroid_ng.ui.settings.Settings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
 import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread
 import de.kuschku.quasseldroid_ng.util.helper.map
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt
index 7784cb0a9..309c5d24f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt
@@ -18,9 +18,9 @@ import de.kuschku.libquassel.protocol.MsgId
 import de.kuschku.libquassel.quassel.syncables.BufferSyncer
 import de.kuschku.quasseldroid_ng.R
 import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
-import de.kuschku.quasseldroid_ng.ui.settings.Settings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
 import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
 import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread
 import de.kuschku.quasseldroid_ng.util.helper.*
@@ -45,13 +45,14 @@ class MessageListFragment : ServiceBoundFragment() {
 
   private var lastBuffer: BufferId? = null
 
-  private var backlogSettings = BacklogSettings()
+  private lateinit var backlogSettings: BacklogSettings
 
   override fun onCreate(savedInstanceState: Bundle?) {
     handler.onCreate()
     super.onCreate(savedInstanceState)
     viewModel = ViewModelProviders.of(activity!!)[QuasselViewModel::class.java]
     appearanceSettings = Settings.appearance(activity!!)
+    backlogSettings = Settings.backlog(activity!!)
   }
 
   private val boundaryCallback = object :
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt
index e734ca501..8ee5dda43 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt
@@ -86,6 +86,9 @@ class QuasselMessageRenderer(
         viewHolder.itemView.setBackgroundColor(getColor(1, 0))
       }
     }
+    if (appearanceSettings.useMonospace) {
+      viewHolder.content.typeface = Typeface.MONOSPACE
+    }
   }
 
   override fun bind(holder: QuasselMessageViewHolder, message: FormattedMessage) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt
index 7c6442061..6762bd534 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt
@@ -8,6 +8,7 @@ import android.support.v7.preference.PreferenceFragmentCompat
 import android.support.v7.preference.PreferenceGroup
 import de.kuschku.quasseldroid_ng.R
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 
 class SettingsFragment : PreferenceFragmentCompat(),
                          SharedPreferences.OnSharedPreferenceChangeListener {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt
index fa9d8f49a..3a9d42f20 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt
@@ -7,6 +7,7 @@ data class AppearanceSettings(
   val showPrefix: ShowPrefixMode = ShowPrefixMode.HIGHEST,
   val colorizeNicknames: ColorizeNicknamesMode = ColorizeNicknamesMode.ALL_BUT_MINE,
   val colorizeMirc: Boolean = true,
+  val useMonospace: Boolean = false,
   val showSeconds: Boolean = false,
   val use24hClock: Boolean = true,
   val showLag: Boolean = true,
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/Settings.kt
similarity index 75%
rename from app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt
rename to app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/Settings.kt
index 402daaf10..ea9f3ce1c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/Settings.kt
@@ -1,12 +1,10 @@
-package de.kuschku.quasseldroid_ng.ui.settings
+package de.kuschku.quasseldroid_ng.ui.settings.data
 
 import android.content.Context
 import android.content.SharedPreferences
 import android.preference.PreferenceManager
 import de.kuschku.quasseldroid_ng.R
-import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings.*
-import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings
 
 object Settings {
   private fun <T> settings(context: Context,
@@ -14,7 +12,9 @@ object Settings {
     context
   ).f()
 
-  fun appearance(context: Context) = settings(context) {
+  fun appearance(context: Context) = settings(
+    context
+  ) {
     AppearanceSettings(
       theme = Theme.valueOf(
         getString(
@@ -38,6 +38,10 @@ object Settings {
         context.getString(R.string.preference_colorize_mirc_key),
         AppearanceSettings.DEFAULT.colorizeMirc
       ),
+      useMonospace = getBoolean(
+        context.getString(R.string.preference_monospace_key),
+        AppearanceSettings.DEFAULT.useMonospace
+      ),
       showSeconds = getBoolean(
         context.getString(R.string.preference_show_seconds_key),
         AppearanceSettings.DEFAULT.showSeconds
@@ -53,9 +57,14 @@ object Settings {
     )
   }
 
-  fun backlog(context: Context) = settings(context) {
+  fun backlog(context: Context) = settings(
+    context
+  ) {
     BacklogSettings(
-
+      dynamicAmount = getString(
+        context.getString(R.string.preference_dynamic_fetch_key),
+        BacklogSettings.DEFAULT.dynamicAmount.toString()
+      ).toIntOrNull() ?: BacklogSettings.DEFAULT.dynamicAmount
     )
   }
 }
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt
index ad471ecfc..7058ffaaf 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt
@@ -9,8 +9,8 @@ import android.support.v7.app.AppCompatActivity
 import de.kuschku.libquassel.session.Backend
 import de.kuschku.quasseldroid_ng.Keys
 import de.kuschku.quasseldroid_ng.R
-import de.kuschku.quasseldroid_ng.ui.settings.Settings
 import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings
+import de.kuschku.quasseldroid_ng.ui.settings.data.Settings
 import de.kuschku.quasseldroid_ng.util.helper.updateRecentsHeaderIfExisting
 
 abstract class ServiceBoundActivity : AppCompatActivity() {
diff --git a/app/src/main/res/layout-sw720dp-land/activity_main.xml b/app/src/main/res/layout-sw720dp-land/activity_main.xml
index 0944bbbef..edf148a84 100644
--- a/app/src/main/res/layout-sw720dp-land/activity_main.xml
+++ b/app/src/main/res/layout-sw720dp-land/activity_main.xml
@@ -17,6 +17,11 @@
       android:layout_height="match_parent"
       tools:layout="@layout/fragment_chat_list" />
 
+    <View
+      android:layout_width="1dp"
+      android:layout_height="match_parent"
+      android:background="?colorDivider" />
+
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       android:layout_width="match_parent"
diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml
index 2ec76c925..45d290771 100644
--- a/app/src/main/res/values/strings_preferences.xml
+++ b/app/src/main/res/values/strings_preferences.xml
@@ -61,6 +61,9 @@
     <item>NONE</item>
   </string-array>
 
+  <string name="preference_monospace_key" translatable="false">monospace</string>
+  <string name="preference_monospace_title">Use Monospace Font</string>
+
   <string name="preference_show_seconds_key" translatable="false">show_seconds</string>
   <string name="preference_show_seconds_title">Show Seconds</string>
 
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index d6438d601..03a1afc77 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -29,6 +29,11 @@
       android:key="@string/preference_show_prefix_key"
       android:title="@string/preference_show_prefix_title" />
 
+    <SwitchPreference
+      android:defaultValue="false"
+      android:key="@string/preference_monospace_key"
+      android:title="@string/preference_monospace_title" />
+
     <SwitchPreference
       android:defaultValue="false"
       android:key="@string/preference_show_seconds_key"
-- 
GitLab