Przeglądaj źródła

fixed the visibility of slider of dark theme
issue# 9170

sandeepyadav 3 lat temu
rodzic
commit
eaf605b2be

+ 1 - 0
gradle.properties

@@ -4,4 +4,5 @@ NC_TEST_SERVER_USERNAME=test
 NC_TEST_SERVER_PASSWORD=test
 android.enableJetifier=true
 android.useAndroidX=true
+org.gradle.jvmargs=-Xmx4G
 #android.debug.obsoleteApi=true

+ 1 - 1
src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java

@@ -179,7 +179,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
 
         // find/saves UI elements
         mEnabledSwitch = view.findViewById(R.id.sync_enabled);
-        ThemeCheckableUtils.tintSwitch(mEnabledSwitch, accentColor);
+        ThemeCheckableUtils.tintSwitch(mEnabledSwitch, accentColor, getContext());
 
         mLocalFolderPath = view.findViewById(R.id.synced_folders_settings_local_folder_path);
 

+ 3 - 3
src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.java

@@ -138,11 +138,11 @@ public class BackupFragment extends FileFragment implements DatePickerDialog.OnD
         arbitraryDataProvider = new ArbitraryDataProvider(getContext().getContentResolver());
 
         ThemeCheckableUtils.tintSwitch(
-            binding.contacts, ThemeColorUtils.primaryAccentColor(getContext()));
+            binding.contacts, getContext().getResources().getColor(R.color.color_accent), getContext());
         ThemeCheckableUtils.tintSwitch(
-            binding.calendar, ThemeColorUtils.primaryAccentColor(getContext()));
+            binding.calendar, ThemeColorUtils.primaryAccentColor(getContext()), getContext());
         ThemeCheckableUtils.tintSwitch(
-            binding.dailyBackup, ThemeColorUtils.primaryAccentColor(getContext()));
+            binding.dailyBackup, ThemeColorUtils.primaryAccentColor(getContext()), getContext());
         binding.dailyBackup.setChecked(
             arbitraryDataProvider.getBooleanValue(user, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP));
 

+ 26 - 8
src/main/java/com/owncloud/android/utils/theme/ThemeCheckableUtils.java

@@ -22,12 +22,14 @@
  */
 package com.owncloud.android.utils.theme;
 
+import android.content.Context;
 import android.content.res.ColorStateList;
 import android.graphics.Color;
 
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 
+import androidx.appcompat.app.AppCompatDelegate;
 import androidx.appcompat.widget.AppCompatCheckBox;
 import androidx.appcompat.widget.SwitchCompat;
 import androidx.core.graphics.drawable.DrawableCompat;
@@ -54,17 +56,33 @@ public final class ThemeCheckableUtils {
         }
     }
 
-    public static void tintSwitch(SwitchCompat switchView, int color) {
-        int trackColor = Color.argb(77, Color.red(color), Color.green(color), Color.blue(color));
+    public static void tintSwitch(SwitchCompat switchView, int color, Context context) {
+       // int trackColor = Color.argb(77, Color.red(color), Color.green(color), Color.blue(color));
+        int trackColor = context.getResources().getColor(R.color.grey_200);
+        ColorStateList thumbColorStateList = null;
+        ColorStateList trackColorStateList = null;
+
+        if(thumbColorStateList == null && trackColorStateList == null) {
+            int thumbColor = ThemeColorUtils.primaryAccentColor(switchView.getContext());
+            if (ThemeColorUtils.darkTheme(switchView.getContext()) &&
+                AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
+                thumbColor = Color.WHITE;
+                trackColor = Color.DKGRAY;
+            }
+           // int trackColorUnchecked = context.getResources().getColor(R.color.switch_track_color_unchecked);
+            thumbColorStateList = new ColorStateList(
+                new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
+                new int[]{thumbColor, switchView.getContext().getResources().getColor(R.color.switch_thumb_color_unchecked)});
+            trackColorStateList = new ColorStateList(
+                new int[][]{new int[]{android.R.attr.state_checked},
+                    new int[]{}},
+                new int[]{trackColor, trackColor});
+        }
 
         // setting the thumb color
-        DrawableCompat.setTintList(switchView.getThumbDrawable(), new ColorStateList(
-            new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
-            new int[]{color, Color.WHITE}));
+        DrawableCompat.setTintList(switchView.getThumbDrawable(), thumbColorStateList);
 
         // setting the track color
-        DrawableCompat.setTintList(switchView.getTrackDrawable(), new ColorStateList(
-            new int[][]{new int[]{android.R.attr.state_checked}, new int[]{}},
-            new int[]{trackColor, MainApp.getAppContext().getResources().getColor(R.color.switch_track_color_unchecked)}));
+        DrawableCompat.setTintList(switchView.getTrackDrawable(), trackColorStateList);
     }
 }

+ 3 - 1
src/main/res/layout/backup_fragment.xml

@@ -44,6 +44,7 @@
             android:minHeight="48dp"
             android:text="@string/contacts"
             android:textColor="@color/text_color"
+            app:theme="@style/Color1SwitchStyle"
             android:textSize="@dimen/two_line_primary_text_size" />
 
         <androidx.appcompat.widget.SwitchCompat
@@ -53,7 +54,8 @@
             android:minHeight="48dp"
             android:text="@string/calendar"
             android:textColor="@color/text_color"
-            android:textSize="@dimen/two_line_primary_text_size" />
+            android:textSize="@dimen/two_line_primary_text_size"
+            />
 
         <LinearLayout
             android:layout_width="match_parent"

+ 5 - 0
src/main/res/values/styles.xml

@@ -433,4 +433,9 @@
         <item name="android:contentDescription">@string/exo_controls_fullscreen_exit_description</item>
         <item name="android:padding">@dimen/exo_icon_padding</item>
     </style>
+
+    <style name="Color1SwitchStyle">
+        <item name="colorAccent">#D33909</item>
+<!--        <item name="primary">#D33909</item>-->
+    </style>
 </resources>