diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java | 79 |
1 files changed, 75 insertions, 4 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java index 27ce4fc7..76077f27 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java @@ -1,24 +1,39 @@ package it.niedermann.owncloud.notes.android.fragment; import android.app.Activity; +import android.content.Context; import android.os.Bundle; import android.util.Log; +import androidx.annotation.ColorInt; import androidx.annotation.Nullable; import androidx.preference.ListPreference; +import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.SwitchPreference; +import it.niedermann.owncloud.notes.BuildConfig; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.android.DarkModeSetting; +import it.niedermann.owncloud.notes.branding.Branded; +import it.niedermann.owncloud.notes.branding.BrandedSwitchPreference; +import it.niedermann.owncloud.notes.branding.BrandingUtil; +import it.niedermann.owncloud.notes.persistence.NotesDatabase; import it.niedermann.owncloud.notes.persistence.SyncWorker; import it.niedermann.owncloud.notes.util.DeviceCredentialUtil; import it.niedermann.owncloud.notes.util.Notes; -public class PreferencesFragment extends PreferenceFragmentCompat { +import static it.niedermann.owncloud.notes.android.appwidget.NoteListWidget.updateNoteListWidgets; + +public class PreferencesFragment extends PreferenceFragmentCompat implements Branded { private static final String TAG = PreferencesFragment.class.getSimpleName(); + private BrandedSwitchPreference fontPref; + private BrandedSwitchPreference lockPref; + private BrandedSwitchPreference wifiOnlyPref; + private BrandedSwitchPreference brandingPref; + private BrandedSwitchPreference gridViewPref; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -28,10 +43,45 @@ public class PreferencesFragment extends PreferenceFragmentCompat { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.preferences); - final SwitchPreference lockPref = findPreference(getString(R.string.pref_key_lock)); + fontPref = findPreference(getString(R.string.pref_key_font)); + + brandingPref = findPreference(getString(R.string.pref_key_branding)); + if (brandingPref != null) { + brandingPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + updateNoteListWidgets(requireContext()); + final Boolean branding = (Boolean) newValue; + Log.v(TAG, "branding: " + branding); + requireActivity().setResult(Activity.RESULT_OK); + requireActivity().recreate(); + return true; + }); + } else { + Log.e(TAG, "Could not find preference with key: \"" + getString(R.string.pref_key_branding) + "\""); + } + + gridViewPref = findPreference(getString(R.string.pref_key_gridview)); + if (gridViewPref != null) { + gridViewPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + final Boolean gridView = (Boolean) newValue; + Log.v(TAG, "gridView: " + gridView); + requireActivity().setResult(Activity.RESULT_OK); + Notes.updateGridViewEnabled(gridView); + return true; + }); + } else { + Log.e(TAG, "Could not find preference with key: \"" + getString(R.string.pref_key_branding) + "\""); + } + + lockPref = findPreference(getString(R.string.pref_key_lock)); if (lockPref != null) { if (!DeviceCredentialUtil.areCredentialsAvailable(requireContext())) { lockPref.setVisible(false); + Preference securityCategory = findPreference(getString(R.string.pref_category_security)); + if (securityCategory != null) { + securityCategory.setVisible(false); + } else { + Log.e(TAG, "Could not find preference " + getString(R.string.pref_category_security)); + } } else { lockPref.setOnPreferenceChangeListener((preference, newValue) -> { Notes.setLockedPreference((Boolean) newValue); @@ -51,7 +101,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat { return true; }); - final SwitchPreference wifiOnlyPref = findPreference(getString(R.string.pref_key_wifi_only)); + wifiOnlyPref = findPreference(getString(R.string.pref_key_wifi_only)); assert wifiOnlyPref != null; wifiOnlyPref.setOnPreferenceChangeListener((preference, newValue) -> { Log.i(TAG, "syncOnWifiOnly: " + newValue); @@ -66,4 +116,25 @@ public class PreferencesFragment extends PreferenceFragmentCompat { return true; }); } + + + @Override + public void onStart() { + super.onStart(); + @Nullable Context context = getContext(); + if (context != null) { + @ColorInt final int mainColor = BrandingUtil.readBrandMainColor(context); + @ColorInt final int textColor = BrandingUtil.readBrandTextColor(context); + applyBrand(mainColor, textColor); + } + } + + @Override + public void applyBrand(int mainColor, int textColor) { + fontPref.applyBrand(mainColor, textColor); + lockPref.applyBrand(mainColor, textColor); + wifiOnlyPref.applyBrand(mainColor, textColor); + brandingPref.applyBrand(mainColor, textColor); + gridViewPref.applyBrand(mainColor, textColor); + } } |