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"/> + +