Browse Source

Merge pull request #2830 from nextcloud/bugfix/2817/fixOnlineStatusButtonsTheming

Fix theming of set status dialog buttons
Marcel Hibbe 2 years ago
parent
commit
dbbb0258cd

+ 14 - 10
app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt

@@ -211,6 +211,11 @@ class SetStatusDialogFragment :
         binding.awayStatus.setOnClickListener { setStatus(StatusType.AWAY) }
         binding.invisibleStatus.setOnClickListener { setStatus(StatusType.INVISIBLE) }
 
+        viewThemeUtils.talk.themeStatusCardView(binding.onlineStatus)
+        viewThemeUtils.talk.themeStatusCardView(binding.dndStatus)
+        viewThemeUtils.talk.themeStatusCardView(binding.awayStatus)
+        viewThemeUtils.talk.themeStatusCardView(binding.invisibleStatus)
+
         binding.clearStatus.setOnClickListener { clearStatus() }
         binding.setStatus.setOnClickListener { setStatusMessage() }
         binding.emoji.setOnClickListener { openEmojiPopup() }
@@ -244,8 +249,8 @@ class SetStatusDialogFragment :
 
         viewThemeUtils.platform.themeDialog(binding.root)
 
-        viewThemeUtils.material.colorMaterialButtonText(binding.clearStatus)
-        viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.setStatus)
+        viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.clearStatus)
+        viewThemeUtils.material.colorMaterialButtonPrimaryTonal(binding.setStatus)
 
         viewThemeUtils.material.colorTextInputLayout(binding.customStatusInputContainer)
 
@@ -418,18 +423,12 @@ class SetStatusDialogFragment :
                 return
             }
         }
-        viewThemeUtils.material.colorCardViewBackground(views.first)
-        viewThemeUtils.platform.colorPrimaryTextViewElement(views.second)
+        views.first.isChecked = true
+        viewThemeUtils.platform.colorOnSecondaryContainerTextViewElement(views.second)
     }
 
     private fun clearTopStatus() {
         context?.let {
-            val grey = it.resources.getColor(R.color.grey_200)
-            binding.onlineStatus.setCardBackgroundColor(grey)
-            binding.awayStatus.setCardBackgroundColor(grey)
-            binding.dndStatus.setCardBackgroundColor(grey)
-            binding.invisibleStatus.setCardBackgroundColor(grey)
-
             binding.onlineHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
             binding.awayHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
             binding.dndHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
@@ -439,6 +438,11 @@ class SetStatusDialogFragment :
             binding.awayIcon.imageTintList = null
             binding.dndIcon.imageTintList = null
             binding.invisibleIcon.imageTintList = null
+
+            binding.onlineStatus.isChecked = false
+            binding.awayStatus.isChecked = false
+            binding.dndStatus.isChecked = false
+            binding.invisibleStatus.isChecked = false
         }
     }
 

+ 29 - 0
app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt

@@ -227,6 +227,35 @@ class TalkSpecificViewThemeUtils @Inject constructor(
         }
     }
 
+    fun themeStatusCardView(cardView: MaterialCardView) {
+        withScheme(cardView) { scheme ->
+            val background = cardView.context.getColor(R.color.grey_200)
+            cardView.backgroundTintList =
+                ColorStateList(
+                    arrayOf(
+                        intArrayOf(android.R.attr.state_checked),
+                        intArrayOf(-android.R.attr.state_checked)
+                    ),
+                    intArrayOf(
+                        scheme.secondaryContainer,
+                        background
+                    )
+                )
+            cardView.setStrokeColor(
+                ColorStateList(
+                    arrayOf(
+                        intArrayOf(android.R.attr.state_checked),
+                        intArrayOf(-android.R.attr.state_checked)
+                    ),
+                    intArrayOf(
+                        scheme.onSecondaryContainer,
+                        scheme.surface
+                    )
+                )
+            )
+        }
+    }
+
     companion object {
         private val THEMEABLE_PLACEHOLDER_IDS = listOf(
             R.drawable.ic_mimetype_package_x_generic,

+ 15 - 8
app/src/main/res/layout/dialog_set_status.xml

@@ -60,10 +60,12 @@
                 android:layout_gravity="center_vertical"
                 android:layout_marginEnd="@dimen/standard_half_margin"
                 android:layout_weight="1"
+                android:checkable="true"
                 android:orientation="horizontal"
                 app:cardBackgroundColor="@color/grey_200"
+                app:cardCornerRadius="@dimen/button_corner_radius"
                 app:cardElevation="0dp"
-                app:cardCornerRadius="@dimen/button_corner_radius">
+                app:checkedIcon="@null">
 
                 <RelativeLayout
                     android:layout_width="match_parent"
@@ -128,10 +130,12 @@
                 android:layout_gravity="center_vertical"
                 android:layout_marginStart="@dimen/standard_half_margin"
                 android:layout_weight="1"
+                android:checkable="true"
                 android:orientation="horizontal"
                 app:cardBackgroundColor="@color/grey_200"
+                app:cardCornerRadius="@dimen/button_corner_radius"
                 app:cardElevation="0dp"
-                app:cardCornerRadius="@dimen/button_corner_radius">
+                app:checkedIcon="@null">
 
                 <RelativeLayout
                     android:layout_width="match_parent"
@@ -205,10 +209,12 @@
                 android:layout_gravity="center_vertical"
                 android:layout_marginEnd="@dimen/standard_half_margin"
                 android:layout_weight="1"
+                android:checkable="true"
                 android:orientation="horizontal"
                 app:cardBackgroundColor="@color/grey_200"
+                app:cardCornerRadius="@dimen/button_corner_radius"
                 app:cardElevation="0dp"
-                app:cardCornerRadius="@dimen/button_corner_radius">
+                app:checkedIcon="@null">
 
                 <RelativeLayout
                     android:layout_width="match_parent"
@@ -259,12 +265,13 @@
                 android:layout_height="@dimen/online_status_item_height"
                 android:layout_gravity="center_vertical"
                 android:layout_marginStart="@dimen/standard_half_margin"
-
                 android:layout_weight="1"
+                android:checkable="true"
                 android:orientation="horizontal"
                 app:cardBackgroundColor="@color/grey_200"
+                app:cardCornerRadius="@dimen/button_corner_radius"
                 app:cardElevation="0dp"
-                app:cardCornerRadius="@dimen/button_corner_radius">
+                app:checkedIcon="@null">
 
                 <RelativeLayout
                     android:layout_width="match_parent"
@@ -436,9 +443,9 @@
 
         <com.google.android.material.button.MaterialButton
             android:id="@+id/clearStatus"
-            style="@style/OutlinedButton"
+            style="@style/Button.Borderless"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="match_parent"
             android:layout_marginEnd="@dimen/standard_half_margin"
             android:layout_weight="1"
             android:text="@string/clear_status_message"
@@ -447,7 +454,7 @@
         <com.google.android.material.button.MaterialButton
             android:id="@+id/setStatus"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="match_parent"
             android:layout_weight="1"
             android:text="@string/set_status_message"
             android:theme="@style/Button.Primary"