Loading app/src/main/AndroidManifest.xml +4 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:name="it.niedermann.owncloud.notes.util.Notes" android:allowBackup="true" android:fullBackupContent="true" android:icon="@mipmap/ic_launcher" Loading Loading @@ -54,7 +55,9 @@ android:name="it.niedermann.owncloud.notes.android.activity.PreferencesActivity" android:label="@string/action_settings" android:parentActivityName="it.niedermann.owncloud.notes.android.activity.NotesListViewActivity" android:windowSoftInputMode="stateHidden" /> android:windowSoftInputMode="stateHidden" android:theme="@style/Preferences" /> <activity android:name="it.niedermann.owncloud.notes.android.activity.EditNoteActivity" Loading app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ public class PreferencesActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setResult(RESULT_CANCELED); getFragmentManager().beginTransaction() .replace(android.R.id.content, new PreferencesFragment()) .commit(); Loading app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java +30 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.android.fragment; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.SwitchPreference; import android.support.annotation.Nullable; import android.widget.Toast; import at.bitfire.cert4android.CustomCertManager; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.util.Notes; public class PreferencesFragment extends PreferenceFragment { @Override Loading @@ -24,5 +29,30 @@ public class PreferencesFragment extends PreferenceFragment { return true; } }); final SwitchPreference themePref = (SwitchPreference) findPreference("darkTheme"); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); Boolean darkTheme = sp.getBoolean(getString(R.string.pref_key_theme), false); setThemePreferenceSummary(themePref, darkTheme); themePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Boolean darkTheme = (Boolean) newValue; Notes.setTheme(darkTheme); getActivity().setResult(Activity.RESULT_OK); getActivity().finish(); return true; } }); } private void setThemePreferenceSummary(SwitchPreference themePref, Boolean darkTheme) { if (darkTheme) { themePref.setSummary(getString(R.string.pref_value_theme_dark)); } else { themePref.setSummary(getString(R.string.pref_value_theme_light)); } } } app/src/main/java/it/niedermann/owncloud/notes/model/NavigationAdapter.java +18 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.model; import android.content.SharedPreferences; import android.graphics.Color; import android.preference.PreferenceManager; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; Loading Loading @@ -98,7 +100,23 @@ public class NavigationAdapter extends RecyclerView.Adapter<NavigationAdapter.Vi icon.setVisibility(View.GONE); } view.setBackgroundColor(isSelected ? view.getResources().getColor(R.color.bg_highlighted) : Color.TRANSPARENT); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(view.getContext()); boolean darkTheme = sp.getBoolean(view.getContext().getString(R.string.pref_key_theme), false); int textColor = view.getResources().getColor(isSelected ? R.color.primary_dark : R.color.fg_default); if(darkTheme) { // TODO dirty. Fix if statement. if((item.label != view.getContext().getString(R.string.action_settings)) && (item.label != view.getContext().getString(R.string.simple_about))) { textColor = view.getResources().getColor(isSelected ? R.color.fg_default : R.color.fg_default_high); view.setBackgroundColor(isSelected ? view.getResources().getColor(R.color.bg_highlighted) : Color.TRANSPARENT); } } name.setTextColor(textColor); count.setTextColor(textColor); icon.setColorFilter(isSelected ? textColor : 0); Loading app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.util; import android.app.Application; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatDelegate; public class Notes extends Application { @Override public void onCreate() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); Notes.setTheme(prefs.getBoolean("darkTheme", false)); super.onCreate(); } public static void setTheme(Boolean darkTheme) { if (darkTheme) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); } else { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); } } } Loading
app/src/main/AndroidManifest.xml +4 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:name="it.niedermann.owncloud.notes.util.Notes" android:allowBackup="true" android:fullBackupContent="true" android:icon="@mipmap/ic_launcher" Loading Loading @@ -54,7 +55,9 @@ android:name="it.niedermann.owncloud.notes.android.activity.PreferencesActivity" android:label="@string/action_settings" android:parentActivityName="it.niedermann.owncloud.notes.android.activity.NotesListViewActivity" android:windowSoftInputMode="stateHidden" /> android:windowSoftInputMode="stateHidden" android:theme="@style/Preferences" /> <activity android:name="it.niedermann.owncloud.notes.android.activity.EditNoteActivity" Loading
app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ public class PreferencesActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setResult(RESULT_CANCELED); getFragmentManager().beginTransaction() .replace(android.R.id.content, new PreferencesFragment()) .commit(); Loading
app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java +30 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.android.fragment; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.SwitchPreference; import android.support.annotation.Nullable; import android.widget.Toast; import at.bitfire.cert4android.CustomCertManager; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.util.Notes; public class PreferencesFragment extends PreferenceFragment { @Override Loading @@ -24,5 +29,30 @@ public class PreferencesFragment extends PreferenceFragment { return true; } }); final SwitchPreference themePref = (SwitchPreference) findPreference("darkTheme"); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); Boolean darkTheme = sp.getBoolean(getString(R.string.pref_key_theme), false); setThemePreferenceSummary(themePref, darkTheme); themePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Boolean darkTheme = (Boolean) newValue; Notes.setTheme(darkTheme); getActivity().setResult(Activity.RESULT_OK); getActivity().finish(); return true; } }); } private void setThemePreferenceSummary(SwitchPreference themePref, Boolean darkTheme) { if (darkTheme) { themePref.setSummary(getString(R.string.pref_value_theme_dark)); } else { themePref.setSummary(getString(R.string.pref_value_theme_light)); } } }
app/src/main/java/it/niedermann/owncloud/notes/model/NavigationAdapter.java +18 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.model; import android.content.SharedPreferences; import android.graphics.Color; import android.preference.PreferenceManager; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; Loading Loading @@ -98,7 +100,23 @@ public class NavigationAdapter extends RecyclerView.Adapter<NavigationAdapter.Vi icon.setVisibility(View.GONE); } view.setBackgroundColor(isSelected ? view.getResources().getColor(R.color.bg_highlighted) : Color.TRANSPARENT); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(view.getContext()); boolean darkTheme = sp.getBoolean(view.getContext().getString(R.string.pref_key_theme), false); int textColor = view.getResources().getColor(isSelected ? R.color.primary_dark : R.color.fg_default); if(darkTheme) { // TODO dirty. Fix if statement. if((item.label != view.getContext().getString(R.string.action_settings)) && (item.label != view.getContext().getString(R.string.simple_about))) { textColor = view.getResources().getColor(isSelected ? R.color.fg_default : R.color.fg_default_high); view.setBackgroundColor(isSelected ? view.getResources().getColor(R.color.bg_highlighted) : Color.TRANSPARENT); } } name.setTextColor(textColor); count.setTextColor(textColor); icon.setColorFilter(isSelected ? textColor : 0); Loading
app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.util; import android.app.Application; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatDelegate; public class Notes extends Application { @Override public void onCreate() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); Notes.setTheme(prefs.getBoolean("darkTheme", false)); super.onCreate(); } public static void setTheme(Boolean darkTheme) { if (darkTheme) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); } else { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); } } }