From 62e04027d2791af0b6fc0a197f8c4f60a95dd6b4 Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Fri, 7 Aug 2020 22:40:13 +0200 Subject: [PATCH] Theme color reset --- .../sushi/hardcore/droidfs/BaseActivity.kt | 22 ++++++++++------- .../hardcore/droidfs/SettingsActivity.kt | 24 +++++++++++++++++++ .../droidfs/widgets/SimpleActionPreference.kt | 16 +++++++++++++ app/src/main/res/drawable/icon_restore.xml | 5 ++++ app/src/main/res/values/colors.xml | 1 - app/src/main/res/values/strings.xml | 3 +++ app/src/main/res/values/styles.xml | 6 ----- app/src/main/res/xml/root_preferences.xml | 7 ++++++ 8 files changed, 68 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/sushi/hardcore/droidfs/widgets/SimpleActionPreference.kt create mode 100644 app/src/main/res/drawable/icon_restore.xml diff --git a/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt index 7e3e069..345c793 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt @@ -18,15 +18,19 @@ open class BaseActivity: CyaneaAppCompatActivity() { } val themeColor = ThemeColor.getThemeColor(this) if (cyanea.accent != themeColor){ - val backgroundColor = ContextCompat.getColor(this, R.color.backgroundColor) - cyanea.edit{ - accent(themeColor) - //accentDark(themeColor) - //accentLight(themeColor) - background(backgroundColor) - //backgroundDark(backgroundColor) - //backgroundLight(backgroundColor) - } + changeThemeColor(themeColor) } } + fun changeThemeColor(themeColor: Int? = null){ + val accentColor = themeColor ?: ThemeColor.getThemeColor(this) + val backgroundColor = ContextCompat.getColor(this, R.color.backgroundColor) + cyanea.edit{ + accent(accentColor) + //accentDark(themeColor) + //accentLight(themeColor) + background(backgroundColor) + //backgroundDark(backgroundColor) + //backgroundLight(backgroundColor) + }.recreate(this) + } } \ No newline at end of file diff --git a/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt index dd308d6..3bc4234 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt @@ -1,10 +1,14 @@ package sushi.hardcore.droidfs +import android.annotation.SuppressLint import android.os.Bundle +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat +import com.jaredrummler.android.colorpicker.ColorPreferenceCompat import kotlinx.android.synthetic.main.toolbar.* +import sushi.hardcore.droidfs.widgets.SimpleActionPreference import sushi.hardcore.droidfs.widgets.ThemeColor @@ -32,6 +36,26 @@ class SettingsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceSt override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.root_preferences, rootKey) ThemeColor.tintPreferenceIcons(preferenceScreen, ThemeColor.getThemeColor(requireContext())) + var originalThemeColor: Int? = null + context?.let { + originalThemeColor = ContextCompat.getColor(it, R.color.themeColor) + } + findPreference("themeColor")?.let { colorPicker -> + colorPicker.onPreferenceChangeListener = Preference.OnPreferenceChangeListener{ _, _ -> + (activity as SettingsActivity).changeThemeColor() + true + } + findPreference("resetThemeColor")?.onClick = { + originalThemeColor?.let { + colorPicker.saveValue(it) + val settingsActivity = (activity as SettingsActivity) + Thread { + settingsActivity.sharedPrefs.edit().commit() + settingsActivity.runOnUiThread { settingsActivity.changeThemeColor() } + }.start() + } + } + } } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/widgets/SimpleActionPreference.kt b/app/src/main/java/sushi/hardcore/droidfs/widgets/SimpleActionPreference.kt new file mode 100644 index 0000000..d810994 --- /dev/null +++ b/app/src/main/java/sushi/hardcore/droidfs/widgets/SimpleActionPreference.kt @@ -0,0 +1,16 @@ +package sushi.hardcore.droidfs.widgets + +import android.content.Context +import android.util.AttributeSet +import androidx.preference.Preference + +class SimpleActionPreference: Preference { + constructor(context: Context): super(context) + constructor(context: Context, attrs: AttributeSet): super(context, attrs) + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int): super(context, attrs, defStyleAttr) + var onClick: ((SimpleActionPreference) -> Unit)? = null + + override fun onClick() { + onClick?.let { it(this) } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_restore.xml b/app/src/main/res/drawable/icon_restore.xml new file mode 100644 index 0000000..98a8216 --- /dev/null +++ b/app/src/main/res/drawable/icon_restore.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 28d12b9..6805488 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -6,7 +6,6 @@ @color/colorPrimaryDark @color/colorPrimaryDark @color/colorAccent - @color/themeColor #333333 #000000 #FFFFFF diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8f32a11..19d7c8c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -103,6 +103,7 @@ Enable/Disable unsafe features UI Theme color + Set a custom theme color DroidFS try to be as secure as possible. However, security often involves lack of comfort. This is why DroidFS offer you additional unsafe features that you can enable/disable according to your needs.\n\nWarning: this features can be UNSAFE. Do not use them unless you know exactly what you are doing. It is highly recommended to read the documentation before enabling them. See unsafe features Open as: @@ -146,4 +147,6 @@ N//A %s already exists, do you want to overwrite it ? Enter new filename + Reset theme color + Reset theme color to the default one diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index e505bb7..64f55be 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,10 +1,7 @@ - diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 8c317c4..e30ed38 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -7,8 +7,15 @@ android:defaultValue="@color/themeColor" android:key="themeColor" android:title="@string/preference_theme_color_title" + android:summary="@string/preference_theme_color_summary" android:icon="@drawable/icon_palette"/> + +