mirror of https://github.com/readrops/Readrops.git
Initial work on dark theme
This commit is contained in:
parent
b40a834055
commit
9ede16c864
|
@ -5,7 +5,10 @@ import android.app.NotificationChannel;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatDelegate;
|
||||||
|
|
||||||
import com.facebook.stetho.Stetho;
|
import com.facebook.stetho.Stetho;
|
||||||
|
import com.readrops.app.utils.SharedPreferencesManager;
|
||||||
|
|
||||||
import io.reactivex.plugins.RxJavaPlugins;
|
import io.reactivex.plugins.RxJavaPlugins;
|
||||||
|
|
||||||
|
@ -26,6 +29,8 @@ public class ReadropsApp extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
createNotificationChannels();
|
createNotificationChannels();
|
||||||
|
if (Boolean.valueOf(SharedPreferencesManager.readString(this, SharedPreferencesManager.SharedPrefKey.DARK_THEME)))
|
||||||
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createNotificationChannels() {
|
private void createNotificationChannels() {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.readrops.app.fragments.settings;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatDelegate;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceFragmentCompat;
|
import androidx.preference.PreferenceFragmentCompat;
|
||||||
|
|
||||||
|
@ -21,9 +22,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||||
addPreferencesFromResource(R.xml.preferences);
|
addPreferencesFromResource(R.xml.preferences);
|
||||||
|
|
||||||
AtomicBoolean serviceStarted = new AtomicBoolean(false);
|
|
||||||
Preference feedsColorsPreference = findPreference("reload_feeds_colors");
|
Preference feedsColorsPreference = findPreference("reload_feeds_colors");
|
||||||
|
Preference themePreference = findPreference("dark_theme");
|
||||||
|
|
||||||
|
AtomicBoolean serviceStarted = new AtomicBoolean(false);
|
||||||
feedsColorsPreference.setOnPreferenceClickListener(preference -> {
|
feedsColorsPreference.setOnPreferenceClickListener(preference -> {
|
||||||
Database database = Database.getInstance(getContext());
|
Database database = Database.getInstance(getContext());
|
||||||
|
|
||||||
|
@ -39,5 +41,18 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
themePreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
|
boolean darkTheme = Boolean.parseBoolean(newValue.toString());
|
||||||
|
|
||||||
|
if (darkTheme) {
|
||||||
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
|
||||||
|
} else {
|
||||||
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,8 @@ public final class SharedPreferencesManager {
|
||||||
public enum SharedPrefKey {
|
public enum SharedPrefKey {
|
||||||
SHOW_READ_ARTICLES("show_read_articles", false),
|
SHOW_READ_ARTICLES("show_read_articles", false),
|
||||||
ITEMS_TO_PARSE_MAX_NB("items_to_parse_max_nb", "20"),
|
ITEMS_TO_PARSE_MAX_NB("items_to_parse_max_nb", "20"),
|
||||||
OPEN_ITEMS_IN("open_items_in", "0");
|
OPEN_ITEMS_IN("open_items_in", "0"),
|
||||||
|
DARK_THEME("dark_theme", "false");
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private String key;
|
private String key;
|
||||||
|
@ -59,7 +60,7 @@ public final class SharedPreferencesManager {
|
||||||
private Object defaultValue;
|
private Object defaultValue;
|
||||||
|
|
||||||
public boolean getBooleanDefaultValue() {
|
public boolean getBooleanDefaultValue() {
|
||||||
return (boolean) defaultValue;
|
return Boolean.valueOf(defaultValue.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getStringDefaultValue() {
|
public String getStringDefaultValue() {
|
||||||
|
@ -67,7 +68,7 @@ public final class SharedPreferencesManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getIntDefaultValue() {
|
public int getIntDefaultValue() {
|
||||||
return (int) defaultValue;
|
return Integer.parseInt(defaultValue.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPrefKey(@NonNull String key, @NonNull Object defaultValue) {
|
SharedPrefKey(@NonNull String key, @NonNull Object defaultValue) {
|
||||||
|
|
|
@ -106,5 +106,8 @@
|
||||||
<string name="image_options">Options de l\'image</string>
|
<string name="image_options">Options de l\'image</string>
|
||||||
<string name="download_image">Télécharger l\'image</string>
|
<string name="download_image">Télécharger l\'image</string>
|
||||||
<string name="share_image">Partager l\'image</string>
|
<string name="share_image">Partager l\'image</string>
|
||||||
|
<string name="theme">Thème</string>
|
||||||
|
<string name="light">Clair</string>
|
||||||
|
<string name="dark">Sombre</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
|
||||||
|
<item name="colorPrimary">@color/colorPrimary</item>
|
||||||
|
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||||
|
<item name="colorAccent">@color/colorAccent</item>
|
||||||
|
|
||||||
|
<item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
|
@ -39,4 +39,13 @@
|
||||||
<item>1</item>
|
<item>1</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="themes">
|
||||||
|
<item>@string/light</item>
|
||||||
|
<item>@string/dark</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="themes_values">
|
||||||
|
<item>false</item>
|
||||||
|
<item>true</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
|
@ -115,4 +115,7 @@
|
||||||
<string name="image_options">Image Options</string>
|
<string name="image_options">Image Options</string>
|
||||||
<string name="download_image">Download image</string>
|
<string name="download_image">Download image</string>
|
||||||
<string name="share_image">Share image</string>
|
<string name="share_image">Share image</string>
|
||||||
|
<string name="theme">Theme</string>
|
||||||
|
<string name="light">Light</string>
|
||||||
|
<string name="dark">Dark</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<!-- Base application theme. -->
|
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
|
||||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
|
||||||
<!-- Customize your theme here. -->
|
|
||||||
<item name="colorPrimary">@color/colorPrimary</item>
|
<item name="colorPrimary">@color/colorPrimary</item>
|
||||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||||
<item name="colorAccent">@color/colorAccent</item>
|
<item name="colorAccent">@color/colorAccent</item>
|
||||||
|
|
|
@ -16,11 +16,18 @@
|
||||||
android:title="@string/reload_feeds_colors" />
|
android:title="@string/reload_feeds_colors" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="@string/external_navigator"
|
android:defaultValue="1"
|
||||||
android:entries="@array/open_items_in"
|
android:entries="@array/open_items_in"
|
||||||
android:entryValues="@array/open_item_in_values"
|
android:entryValues="@array/open_item_in_values"
|
||||||
android:key="open_items_in"
|
android:key="open_items_in"
|
||||||
android:title="@string/open_items_in" />
|
android:title="@string/open_items_in" />
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:defaultValue="1"
|
||||||
|
android:entries="@array/themes"
|
||||||
|
android:entryValues="@array/themes_values"
|
||||||
|
android:key="dark_theme"
|
||||||
|
android:title="@string/theme" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
Loading…
Reference in New Issue