From 9d7d7689e2cb2cba8b361d0edfe731a4d02d7c56 Mon Sep 17 00:00:00 2001 From: Anton Chekulaev Date: Fri, 21 Aug 2020 17:10:49 +1000 Subject: [PATCH] Labeled separator view styling refactoring. --- res/layout/view_separator.xml | 3 +- res/values-notnight/colors.xml | 2 ++ res/values-notnight/themes.xml | 1 - res/values/styles.xml | 2 -- res/values/themes.xml | 14 +++++--- .../securesms/components/SendButton.java | 5 +-- .../loki/views/LabeledSeparatorView.kt | 12 +++---- .../securesms/util/ThemeUtil.java | 34 +++++++++++-------- 8 files changed, 40 insertions(+), 33 deletions(-) diff --git a/res/layout/view_separator.xml b/res/layout/view_separator.xml index 118880d9e1..2b808a6c82 100644 --- a/res/layout/view_separator.xml +++ b/res/layout/view_separator.xml @@ -10,8 +10,7 @@ android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" - android:textColor="@color/text" - android:alpha="0.6" + android:textColor="?android:textColorTertiary" android:textSize="@dimen/small_font_size" android:text="@string/your_session_id" /> diff --git a/res/values-notnight/colors.xml b/res/values-notnight/colors.xml index 5bfda6a1c5..7d45b1d65d 100644 --- a/res/values-notnight/colors.xml +++ b/res/values-notnight/colors.xml @@ -4,9 +4,11 @@ #00E97B #000000 +#606060 #FCFCFC #DFDFDF #FCFCFC +#B0B0B0 @color/transparent #FCFCFC #212121 diff --git a/res/values-notnight/themes.xml b/res/values-notnight/themes.xml index 2d9f02f206..f27c4e2895 100644 --- a/res/values-notnight/themes.xml +++ b/res/values-notnight/themes.xml @@ -4,7 +4,6 @@ diff --git a/res/values/themes.xml b/res/values/themes.xml index add1507ed1..a6b5369b83 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -7,6 +7,11 @@ @color/action_bar_background @color/action_bar_background @color/accent + @color/text + ?android:textColorPrimary + @color/unimportant + ?android:textColorPrimary + @color/gray27 @drawable/default_session_background @color/default_background_start @color/compose_view_background @@ -19,15 +24,16 @@ @color/compose_view_background @color/accent true - @color/text - @color/text + ?android:textColorPrimary + ?android:textColorPrimary @style/Widget.Design.AppBarLayout - @color/text - #9FFF true @drawable/ic_baseline_clear_24 + @color/separator + ?dividerVertical + @color/dialog_background diff --git a/src/org/thoughtcrime/securesms/components/SendButton.java b/src/org/thoughtcrime/securesms/components/SendButton.java index 3c86779ef2..f8050dcfaf 100644 --- a/src/org/thoughtcrime/securesms/components/SendButton.java +++ b/src/org/thoughtcrime/securesms/components/SendButton.java @@ -2,13 +2,10 @@ package org.thoughtcrime.securesms.components; import android.content.Context; -import androidx.annotation.AttrRes; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatImageButton; import android.util.AttributeSet; -import android.util.Log; -import android.util.TypedValue; import android.view.View; import org.thoughtcrime.securesms.TransportOption; @@ -116,7 +113,7 @@ public class SendButton extends AppCompatImageButton case SMS: case TEXTSECURE: default: { - sendDrawable = ThemeUtil.getDrawableResWithAttribute( + sendDrawable = ThemeUtil.getThemedDrawableResId( getContext(), R.attr.conversation_transport_sms_indicator); } } diff --git a/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt b/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt index 1056afdbdf..028dd34a49 100644 --- a/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt @@ -9,21 +9,21 @@ import android.view.LayoutInflater import android.widget.RelativeLayout import kotlinx.android.synthetic.main.view_separator.view.* import network.loki.messenger.R -import org.thoughtcrime.securesms.loki.utilities.getColorWithID import org.thoughtcrime.securesms.loki.utilities.toPx +import org.thoughtcrime.securesms.util.ThemeUtil class LabeledSeparatorView : RelativeLayout { private val path = Path() - private val paint: Paint = { + private val paint: Paint by lazy{ val result = Paint() result.style = Paint.Style.STROKE - result.color = resources.getColorWithID(R.color.separator, context.theme) + result.color = ThemeUtil.getThemedColor(context, R.attr.dividerHorizontal) result.strokeWidth = toPx(1, resources).toFloat() result.isAntiAlias = true result - }() + } // region Lifecycle constructor(context: Context) : super(context) { @@ -43,7 +43,7 @@ class LabeledSeparatorView : RelativeLayout { } private fun setUpViewHierarchy() { - val inflater = context.applicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val contentView = inflater.inflate(R.layout.view_separator, null) val layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT) addView(contentView, layoutParams) @@ -56,7 +56,7 @@ class LabeledSeparatorView : RelativeLayout { super.onDraw(c) val w = width.toFloat() val h = height.toFloat() - val hMargin = toPx(10, resources).toFloat() + val hMargin = toPx(16, resources).toFloat() path.reset() path.moveTo(0.0f, h / 2) path.lineTo(titleTextView.left - hMargin, h / 2) diff --git a/src/org/thoughtcrime/securesms/util/ThemeUtil.java b/src/org/thoughtcrime/securesms/util/ThemeUtil.java index 24e2854f2a..b9e6f6c169 100644 --- a/src/org/thoughtcrime/securesms/util/ThemeUtil.java +++ b/src/org/thoughtcrime/securesms/util/ThemeUtil.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import androidx.annotation.AttrRes; +import androidx.annotation.ColorInt; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.StyleRes; @@ -19,17 +20,33 @@ public class ThemeUtil { private static final String TAG = ThemeUtil.class.getSimpleName(); public static boolean isDarkTheme(@NonNull Context context) { - return getAttribute(context, R.attr.theme_type, "light").equals("dark"); + return getAttributeText(context, R.attr.theme_type, "light").equals("dark"); } + @ColorInt public static int getThemedColor(@NonNull Context context, @AttrRes int attr) { TypedValue typedValue = new TypedValue(); Resources.Theme theme = context.getTheme(); if (theme.resolveAttribute(attr, typedValue, true)) { return typedValue.data; + } else { + Log.e(TAG, "Couldn't find a color attribute with id: " + attr); + return Color.RED; + } + } + + @DrawableRes + public static int getThemedDrawableResId(@NonNull Context context, @AttrRes int attr) { + TypedValue typedValue = new TypedValue(); + Resources.Theme theme = context.getTheme(); + + if (theme.resolveAttribute(attr, typedValue, true)) { + return typedValue.resourceId; + } else { + Log.e(TAG, "Couldn't find a drawable attribute with id: " + attr); + return 0; } - return Color.RED; } public static LayoutInflater getThemedInflater(@NonNull Context context, @NonNull LayoutInflater inflater, @StyleRes int theme) { @@ -37,7 +54,7 @@ public class ThemeUtil { return inflater.cloneInContext(contextThemeWrapper); } - private static String getAttribute(Context context, int attribute, String defaultValue) { + private static String getAttributeText(Context context, int attribute, String defaultValue) { TypedValue outValue = new TypedValue(); if (context.getTheme().resolveAttribute(attribute, outValue, true)) { @@ -49,15 +66,4 @@ public class ThemeUtil { return defaultValue; } - - @DrawableRes - public static int getDrawableResWithAttribute(Context context, @AttrRes int attributeId) { - TypedValue resolvedValue = new TypedValue(); - context.getTheme().resolveAttribute(attributeId, resolvedValue, true); - if (resolvedValue.type != TypedValue.TYPE_STRING) { - Log.e(TAG, "Cannot resolve a drawable resource from an attribute ID: " + attributeId); - return 0; - } - return resolvedValue.resourceId; - } }