diff --git a/app/src/main/java/free/rm/skytube/app/SkyTubeApp.java b/app/src/main/java/free/rm/skytube/app/SkyTubeApp.java index 7fa892c343..5b560f21a8 100644 --- a/app/src/main/java/free/rm/skytube/app/SkyTubeApp.java +++ b/app/src/main/java/free/rm/skytube/app/SkyTubeApp.java @@ -111,9 +111,9 @@ public static String getStr(int stringResId) { /** - * Given a string array resource ID, it returns an array of strings. + * Given a string array.xml resource ID, it returns an array.xml of strings. * - * @param stringArrayResId String array resource ID (e.g. R.string.my_array_string) + * @param stringArrayResId String array.xml resource ID (e.g. R.string.my_array_string) * @return Array of String. */ public static String[] getStringArray(int stringArrayResId) { @@ -122,9 +122,9 @@ public static String[] getStringArray(int stringArrayResId) { /** - * Given a string array resource ID, it returns an list of strings. + * Given a string array.xml resource ID, it returns an list of strings. * - * @param stringArrayResId String array resource ID (e.g. R.string.my_array_string) + * @param stringArrayResId String array.xml resource ID (e.g. R.string.my_array_string) * @return List of String. */ public static List getStringArrayAsList(int stringArrayResId) { diff --git a/app/src/main/java/free/rm/skytube/gui/businessobjects/SkyTubeMaterialDialog.java b/app/src/main/java/free/rm/skytube/gui/businessobjects/SkyTubeMaterialDialog.java index db873dd540..402db4a0ac 100644 --- a/app/src/main/java/free/rm/skytube/gui/businessobjects/SkyTubeMaterialDialog.java +++ b/app/src/main/java/free/rm/skytube/gui/businessobjects/SkyTubeMaterialDialog.java @@ -35,7 +35,7 @@ public SkyTubeMaterialDialog(@NonNull Context context) { super(context); titleColorRes(R.color.dialog_title); - backgroundColorRes(R.color.dialog_backgound); + backgroundColorRes(R.color.dialog_background); contentColorRes(R.color.dialog_content_text); positiveColorRes(R.color.dialog_positive_text); negativeColorRes(R.color.dialog_negative_text); diff --git a/app/src/main/java/free/rm/skytube/gui/fragments/preferences/ThemePreferenceFragment.java b/app/src/main/java/free/rm/skytube/gui/fragments/preferences/ThemePreferenceFragment.java new file mode 100644 index 0000000000..4a076d5883 --- /dev/null +++ b/app/src/main/java/free/rm/skytube/gui/fragments/preferences/ThemePreferenceFragment.java @@ -0,0 +1,44 @@ +package free.rm.skytube.gui.fragments; + +import android.os.Build; +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatDelegate; +import androidx.core.os.BuildCompat; +import androidx.preference.Preference; +import androidx.preference.PreferenceFragmentCompat; + +import free.rm.skytube.R; + +public class ThemePreferenceFragment extends PreferenceFragmentCompat { + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + addPreferencesFromResource(R.xml.preference_theme); + + Preference preference = findPreference(getString(R.string.pref_key_night)); + preference.setOnPreferenceChangeListener((preference1, newValue) -> { + + if (newValue.equals(getString(R.string.pref_night_on))) { + updateTheme(AppCompatDelegate.MODE_NIGHT_YES); + } + else if (newValue.equals(getString(R.string.pref_night_off))) { + updateTheme(AppCompatDelegate.MODE_NIGHT_NO); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY); + } + + return true; + }); + } + + private boolean updateTheme(int nightMode) { + + AppCompatDelegate.setDefaultNightMode(nightMode); + requireActivity().recreate(); + return true; + } + +} diff --git a/app/src/main/java/free/rm/skytube/gui/fragments/preferences/VideoBlockerPreferenceFragment.java b/app/src/main/java/free/rm/skytube/gui/fragments/preferences/VideoBlockerPreferenceFragment.java index f9c01b8d84..df06be8879 100644 --- a/app/src/main/java/free/rm/skytube/gui/fragments/preferences/VideoBlockerPreferenceFragment.java +++ b/app/src/main/java/free/rm/skytube/gui/fragments/preferences/VideoBlockerPreferenceFragment.java @@ -239,7 +239,7 @@ private List getLanguagesList() { List languageAvailableList = new ArrayList<>(); if (BuildConfig.DEBUG && (languagesNames.length != languagesIsoCodes.length)) { - throw new AssertionError("languages names array is NOT EQUAL to languages ISO codes array."); + throw new AssertionError("languages names array.xml is NOT EQUAL to languages ISO codes array.xml."); } for (int i = 0; i < languagesNames.length; i++) { diff --git a/app/src/main/res/drawable/ic_baseline_nights_stay_24.xml b/app/src/main/res/drawable/ic_baseline_nights_stay_24.xml new file mode 100644 index 0000000000..a51812eece --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_nights_stay_24.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pref_theme.xml b/app/src/main/res/drawable/ic_pref_theme.xml new file mode 100644 index 0000000000..ec8c04b164 --- /dev/null +++ b/app/src/main/res/drawable/ic_pref_theme.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index f893ec198c..b6c8844334 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -34,14 +34,14 @@ + android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar"> @@ -49,9 +49,10 @@ android:id="@+id/tab_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="?attr/colorPrimary" android:layout_gravity="center_horizontal" - app:tabMode="scrollable"/> + android:background="?attr/colorPrimary" + app:tabMode="scrollable" + app:tabSelectedTextColor="@color/colorPrimaryDark" /> diff --git a/app/src/main/res/layout/multi_select_list_dialog.xml b/app/src/main/res/layout/multi_select_list_dialog.xml index 52d72f1557..7ae58973f5 100644 --- a/app/src/main/res/layout/multi_select_list_dialog.xml +++ b/app/src/main/res/layout/multi_select_list_dialog.xml @@ -2,7 +2,7 @@