From e508930bbdf3ae3d16608da1b007ad202770320c Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sat, 31 Mar 2018 00:23:22 +0200
Subject: [PATCH] Avoids crashes on Android 4.4 or older

---
 .../ui/chat/buffers/BufferListAdapter.kt       | 18 +++++++++---------
 .../util/QuasseldroidNotificationManager.kt    |  2 +-
 .../quasseldroid/util/helper/ContextHelper.kt  |  4 ++++
 app/src/main/res/layout/widget_buffer.xml      |  2 +-
 4 files changed, 15 insertions(+), 11 deletions(-)

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 823c1981a..cd6b7773e 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
@@ -219,9 +219,9 @@ class BufferListAdapter(
         itemView.isSelected = state.selected
 
         if (state.networkExpanded) {
-          status.setImageDrawable(itemView.context.getDrawableCompat(R.drawable.ic_chevron_up))
+          status.setImageResource(R.drawable.ic_chevron_up)
         } else {
-          status.setImageDrawable(itemView.context.getDrawableCompat(R.drawable.ic_chevron_down))
+          status.setImageResource(R.drawable.ic_chevron_down)
         }
       }
     }
@@ -268,8 +268,8 @@ class BufferListAdapter(
           }
         }
 
-        online = itemView.context.getDrawableCompat(R.drawable.ic_status)?.mutate()
-        offline = itemView.context.getDrawableCompat(R.drawable.ic_status_offline)?.mutate()
+        online = itemView.context.getVectorDrawableCompat(R.drawable.ic_status)?.mutate()
+        offline = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_offline)?.mutate()
 
         itemView.context.theme.styledAttributes(
           R.attr.colorAccent, R.attr.colorAway,
@@ -356,8 +356,8 @@ class BufferListAdapter(
           }
         }
 
-        online = itemView.context.getDrawableCompat(R.drawable.ic_status_channel)?.mutate()
-        offline = itemView.context.getDrawableCompat(R.drawable.ic_status_channel_offline)?.mutate()
+        online = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_channel)?.mutate()
+        offline = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_channel_offline)?.mutate()
 
         itemView.context.theme.styledAttributes(
           R.attr.colorAccent, R.attr.colorAway,
@@ -445,9 +445,9 @@ class BufferListAdapter(
           }
         }
 
-        online = itemView.context.getDrawableCompat(R.drawable.ic_status)?.mutate()
-        away = itemView.context.getDrawableCompat(R.drawable.ic_status)?.mutate()
-        offline = itemView.context.getDrawableCompat(R.drawable.ic_status_offline)?.mutate()
+        online = itemView.context.getVectorDrawableCompat(R.drawable.ic_status)?.mutate()
+        away = itemView.context.getVectorDrawableCompat(R.drawable.ic_status)?.mutate()
+        offline = itemView.context.getVectorDrawableCompat(R.drawable.ic_status_offline)?.mutate()
 
         itemView.context.theme.styledAttributes(
           R.attr.colorAccent, R.attr.colorAway,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt
index 799414c5c..67fab22bf 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/QuasseldroidNotificationManager.kt
@@ -69,7 +69,7 @@ class QuasseldroidNotificationManager(private val context: Context) {
       .setContentIntent(pendingIntentOpen)
       .addAction(0, context.getString(R.string.label_open), pendingIntentOpen)
       .addAction(0, context.getString(R.string.label_disconnect), pendingIntentDisconnect)
-      .setSmallIcon(R.drawable.ic_logo)
+      .setSmallIcon(R.mipmap.ic_logo)
       .setColor(context.getColorCompat(R.color.colorPrimary))
       .setPriority(NotificationCompat.PRIORITY_MIN)
     return Handle(BACKGROUND_NOTIFICATION_ID, notification)
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 e1f1a11af..b027f9d65 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
@@ -7,6 +7,7 @@ import android.preference.PreferenceManager
 import android.support.annotation.ColorInt
 import android.support.annotation.ColorRes
 import android.support.annotation.DrawableRes
+import android.support.graphics.drawable.VectorDrawableCompat
 import android.support.v4.content.ContextCompat
 
 inline fun <reified T> Context.systemService(): T =
@@ -18,6 +19,9 @@ inline fun <reified T> Context.systemService(): T =
 
 fun Context.getDrawableCompat(@DrawableRes id: Int) = ContextCompat.getDrawable(this, id)
 
+fun Context.getVectorDrawableCompat(@DrawableRes id: Int) =
+  VectorDrawableCompat.create(this.resources, id, this.theme)
+
 @ColorInt
 fun Context.getColorCompat(@ColorRes id: Int) = ContextCompat.getColor(this, id)
 
diff --git a/app/src/main/res/layout/widget_buffer.xml b/app/src/main/res/layout/widget_buffer.xml
index b162446df..3fa99fd34 100644
--- a/app/src/main/res/layout/widget_buffer.xml
+++ b/app/src/main/res/layout/widget_buffer.xml
@@ -10,7 +10,7 @@
   android:paddingRight="16dp"
   android:paddingTop="8dp">
 
-  <ImageView
+  <android.support.v7.widget.AppCompatImageView
     android:id="@+id/status"
     android:layout_width="24dp"
     android:layout_height="24dp"
-- 
GitLab