parent
f701f18792
commit
5bc11077d7
|
@ -5,6 +5,8 @@ import android.app.Application;
|
|||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
|
||||
import dummydomain.yetanothercallblocker.data.Config;
|
||||
import dummydomain.yetanothercallblocker.utils.DebuggingUtils;
|
||||
|
||||
|
@ -23,6 +25,10 @@ public class App extends Application {
|
|||
return settings;
|
||||
}
|
||||
|
||||
public static void setUiMode(int uiMode) {
|
||||
AppCompatDelegate.setDefaultNightMode(uiMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
@ -37,6 +43,8 @@ public class App extends Application {
|
|||
settings.init();
|
||||
|
||||
Config.init(getDeviceProtectedStorageContext(), settings);
|
||||
|
||||
setUiMode(settings.getUiMode());
|
||||
}
|
||||
|
||||
private Context getDeviceProtectedStorageContext() {
|
||||
|
|
|
@ -3,6 +3,7 @@ package dummydomain.yetanothercallblocker;
|
|||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import dummydomain.yetanothercallblocker.data.CountryHelper;
|
||||
|
@ -12,6 +13,7 @@ public class Settings extends GenericSettings {
|
|||
public static final String PREF_INCOMING_CALL_NOTIFICATIONS = "incomingCallNotifications";
|
||||
public static final String PREF_BLOCK_CALLS = "blockCalls";
|
||||
public static final String PREF_USE_CONTACTS = "useContacts";
|
||||
public static final String PREF_UI_MODE = "uiMode";
|
||||
public static final String PREF_NUMBER_OF_RECENT_CALLS = "numberOfRecentCalls";
|
||||
public static final String PREF_NOTIFICATIONS_KNOWN = "showNotificationsForKnownCallers";
|
||||
public static final String PREF_NOTIFICATIONS_UNKNOWN = "showNotificationsForUnknownCallers";
|
||||
|
@ -86,6 +88,14 @@ public class Settings extends GenericSettings {
|
|||
setBoolean(PREF_USE_CONTACTS, use);
|
||||
}
|
||||
|
||||
public int getUiMode() {
|
||||
return getInt(PREF_UI_MODE, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
|
||||
}
|
||||
|
||||
public void setUiMode(int mode) {
|
||||
setInt(PREF_UI_MODE, mode);
|
||||
}
|
||||
|
||||
public int getNumberOfRecentCalls() {
|
||||
return getInt(PREF_NUMBER_OF_RECENT_CALLS, 20);
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
|
|||
import java.io.IOException;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import dummydomain.yetanothercallblocker.preference.IntListPreference;
|
||||
import dummydomain.yetanothercallblocker.utils.DebuggingUtils;
|
||||
import dummydomain.yetanothercallblocker.work.UpdateScheduler;
|
||||
|
||||
|
@ -190,6 +191,12 @@ public class SettingsActivity extends AppCompatActivity
|
|||
return true;
|
||||
});
|
||||
|
||||
IntListPreference uiModePref = requireNonNull(findPreference(Settings.PREF_UI_MODE));
|
||||
uiModePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
App.setUiMode(Integer.parseInt((String) newValue));
|
||||
return true;
|
||||
});
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
Preference category = requireNonNull(findPreference(PREF_CATEGORY_NOTIFICATIONS));
|
||||
category.setVisible(false);
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package dummydomain.yetanothercallblocker.preference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import androidx.preference.ListPreference;
|
||||
|
||||
public class IntListPreference extends ListPreference {
|
||||
|
||||
public IntListPreference(Context context, AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
public IntListPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
public IntListPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public IntListPreference(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object onGetDefaultValue(TypedArray a, int index) {
|
||||
return a.getInt(index, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSetInitialValue(Object defaultValue) {
|
||||
int defaultInt = defaultValue != null ? (int) defaultValue : 0;
|
||||
setValue(String.valueOf(getPersistedInt(defaultInt)));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean persistString(String value) {
|
||||
return persistInt(!TextUtils.isEmpty(value) ? Integer.parseInt(value) : 0);
|
||||
}
|
||||
|
||||
}
|
|
@ -77,6 +77,10 @@
|
|||
<string name="notification_background_operation">Выполняется процесс в фоне…</string>
|
||||
<string name="use_contacts">Отображать имена контактов</string>
|
||||
<string name="use_contacts_summary">Номера из телефонной книги никогда не блокируются, и имя контакта отображается рядом/вместо номера</string>
|
||||
<string name="ui_mode">Тема приложения</string>
|
||||
<string name="ui_mode_day">Светлая</string>
|
||||
<string name="ui_mode_night">Тёмная</string>
|
||||
<string name="ui_mode_auto">Определяется системой</string>
|
||||
<string name="number_of_recent_calls">Кол-во недавних вызовов</string>
|
||||
<string name="number_of_recent_calls_summary">Количество недавних вызовов на основном экране</string>
|
||||
<string name="notification_incoming_call_contact">Контакт</string>
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="ui_mode_entries">
|
||||
<item>@string/ui_mode_day</item>
|
||||
<item>@string/ui_mode_night</item>
|
||||
<item>@string/ui_mode_auto</item>
|
||||
</string-array>
|
||||
<string-array name="ui_mode_entry_values">
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>-1</item>
|
||||
</string-array>
|
||||
</resources>
|
|
@ -98,6 +98,10 @@
|
|||
<string name="auto_updates_summary">Automatically receive daily DB updates (these are incremental/delta updates, so they consume very little traffic)</string>
|
||||
<string name="use_contacts">Use contacts</string>
|
||||
<string name="use_contacts_summary">Numbers present in the phone book are never blocked and the contact name is displayed next to/instead of a number throughout the app</string>
|
||||
<string name="ui_mode">UI theme</string>
|
||||
<string name="ui_mode_day">Light</string>
|
||||
<string name="ui_mode_night">Dark</string>
|
||||
<string name="ui_mode_auto">Follow system</string>
|
||||
<string name="number_of_recent_calls">Number of recent calls</string>
|
||||
<string name="number_of_recent_calls_summary">The number of recent calls to display on the main screen</string>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
||||
|
||||
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
||||
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight" />
|
||||
|
||||
<style name="DialogBackgroundTheme" parent="AppTheme.NoActionBar">
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
|
|
|
@ -15,6 +15,13 @@
|
|||
app:key="useContacts"
|
||||
app:summary="@string/use_contacts_summary"
|
||||
app:title="@string/use_contacts" />
|
||||
<dummydomain.yetanothercallblocker.preference.IntListPreference
|
||||
app:defaultValue="-1"
|
||||
app:entries="@array/ui_mode_entries"
|
||||
app:entryValues="@array/ui_mode_entry_values"
|
||||
app:key="uiMode"
|
||||
app:title="@string/ui_mode"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<dummydomain.yetanothercallblocker.preference.IntEditTextPreference
|
||||
app:defaultValue="20"
|
||||
app:key="numberOfRecentCalls"
|
||||
|
|
Loading…
Reference in New Issue