From 76f346b545d2a41f815b552d5b29f6633af845fd Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Mon, 10 Dec 2018 20:51:24 +0100
Subject: [PATCH] Minor fixes

---
 .../util/missingfeatures/MissingFeature.kt        |  1 +
 .../util/missingfeatures/MissingFeaturesDialog.kt | 10 ++++++++++
 .../util/missingfeatures/QuasselVersion.kt        |  5 +++++
 .../util/missingfeatures/RequiredFeatures.kt      | 15 +++++++++++++++
 .../main/res/layout/dialog_missing_features.xml   |  2 +-
 app/src/main/res/values-de/strings.xml            |  2 +-
 app/src/main/res/values/strings.xml               |  2 +-
 7 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/QuasselVersion.kt

diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt
index f77ec3355..136cce47c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeature.kt
@@ -24,5 +24,6 @@ import de.kuschku.libquassel.quassel.ExtendedFeature
 
 data class MissingFeature(
   val feature: ExtendedFeature,
+  val minimumVersion: QuasselVersion,
   @StringRes val description: Int
 )
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt
index 6ba174d50..c877f4614 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/MissingFeaturesDialog.kt
@@ -22,6 +22,8 @@ package de.kuschku.quasseldroid.util.missingfeatures
 import android.app.Dialog
 import android.content.DialogInterface
 import android.os.Bundle
+import android.text.Html
+import android.widget.TextView
 import androidx.fragment.app.DialogFragment
 import androidx.fragment.app.FragmentActivity
 import androidx.fragment.app.FragmentManager
@@ -31,6 +33,7 @@ import butterknife.BindView
 import butterknife.ButterKnife
 import com.afollestad.materialdialogs.MaterialDialog
 import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod
 import java.io.Serializable
 
 class MissingFeaturesDialog : DialogFragment() {
@@ -40,6 +43,9 @@ class MissingFeaturesDialog : DialogFragment() {
   @BindView(R.id.list)
   lateinit var list: RecyclerView
 
+  @BindView(R.id.message)
+  lateinit var message: TextView
+
   override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
     val dialog = MaterialDialog.Builder(requireContext())
       .customView(R.layout.dialog_missing_features, true)
@@ -51,6 +57,10 @@ class MissingFeaturesDialog : DialogFragment() {
       }
       .build()
     ButterKnife.bind(this, dialog.customView!!)
+    val version = builder?.missingFeatures?.maxBy(MissingFeature::minimumVersion)?.minimumVersion
+                  ?: QuasselVersion.VERSION_0_13
+    message.text = Html.fromHtml(getString(R.string.info_missing_features, version.humanName))
+    message.movementMethod = BetterLinkMovementMethod.newInstance()
     list.layoutManager = LinearLayoutManager(list.context)
     val adapter = MissingFeaturesAdapter()
     list.adapter = adapter
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/QuasselVersion.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/QuasselVersion.kt
new file mode 100644
index 000000000..c5ca1e34c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/QuasselVersion.kt
@@ -0,0 +1,5 @@
+package de.kuschku.quasseldroid.util.missingfeatures
+
+enum class QuasselVersion(val humanName: String) {
+  VERSION_0_13("v0.13");
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt
index c1083b3fb..36c22d186 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt
@@ -25,34 +25,49 @@ import de.kuschku.quasseldroid.R
 object RequiredFeatures {
   val features = listOf(
     MissingFeature(ExtendedFeature.SynchronizedMarkerLine,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_synchronizedmarkerline),
     MissingFeature(ExtendedFeature.SaslAuthentication,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_saslauthentication),
     MissingFeature(ExtendedFeature.SaslExternal,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_saslexternal),
     MissingFeature(ExtendedFeature.HideInactiveNetworks,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_hideinactivenetworks),
     MissingFeature(ExtendedFeature.PasswordChange,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_passwordchange),
     MissingFeature(ExtendedFeature.CapNegotiation,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_capnegotiation),
     MissingFeature(ExtendedFeature.VerifyServerSSL,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_verifyserverssl),
     MissingFeature(ExtendedFeature.CustomRateLimits,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_customratelimits),
     MissingFeature(ExtendedFeature.AwayFormatTimestamp,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_awayformattimestamp),
     MissingFeature(ExtendedFeature.BufferActivitySync,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_bufferactivitysync),
     MissingFeature(ExtendedFeature.CoreSideHighlights,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_coresidehighlights),
     MissingFeature(ExtendedFeature.SenderPrefixes,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_senderprefixes),
     MissingFeature(ExtendedFeature.RemoteDisconnect,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_remotedisconnect),
     MissingFeature(ExtendedFeature.RichMessages,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_richmessages),
     MissingFeature(ExtendedFeature.BacklogFilterType,
+                   QuasselVersion.VERSION_0_13,
                    R.string.label_feature_backlogfiltertype)
   )
 }
diff --git a/app/src/main/res/layout/dialog_missing_features.xml b/app/src/main/res/layout/dialog_missing_features.xml
index 196bd7426..8f7720ffd 100644
--- a/app/src/main/res/layout/dialog_missing_features.xml
+++ b/app/src/main/res/layout/dialog_missing_features.xml
@@ -26,6 +26,7 @@
   android:paddingTop="8dp">
 
   <TextView
+    android:id="@+id/message"
     style="@style/Widget.RtlConformTextView"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -35,7 +36,6 @@
     android:paddingRight="?listPreferredItemPaddingRight"
     android:paddingStart="?listPreferredItemPaddingLeft"
     android:paddingTop="8dp"
-    android:text="@string/info_missing_features"
     android:textColor="?colorTextPrimary"
     android:textSize="16sp" />
 
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index e364d5f50..412580b37 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -134,7 +134,7 @@
   <string name="notification_channel_old_highlight_title">Alte Benachrichtigungen</string>
 
   <string name="label_missing_features">Fehlende Features</string>
-  <string name="info_missing_features">Deinem Core fehlen bestimmte Features die benötigt werden damit Quasseldroid korrekt funktionieren kann</string>
+  <string name="info_missing_features">Deinem Core fehlen bestimmte Features die benötigt werden damit Quasseldroid korrekt funktionieren kann. Du solltest deinen Quassel Core auf Version %1$s oder neuer &lt;a href="https://quassel-irc.org&gt;updaten&lt;/a&gt;.</string>
 
   <string name="buffer_delete_confirmation">Bist du sicher, dass du diesen Chat auf ewig löschen möchtest?</string>
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0a942722b..87b8e7f80 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -139,7 +139,7 @@
   <string name="notification_channel_old_highlight_title">Old Highlights</string>
 
   <string name="label_missing_features">Missing Features</string>
-  <string name="info_missing_features">Your core is missing features that are required for Quasseldroid to work correctly.</string>
+  <string name="info_missing_features">Your core is missing features that are required for Quasseldroid to work correctly. You should &lt;a href="https://quassel-irc.org&gt;upgrade&lt;/a&gt; your Quassel core to %1$s or newer.</string>
 
   <string name="buffer_delete_confirmation">Do you want to delete this buffer permanently?</string>
 
-- 
GitLab