blob: dce36d2b59b88bfe2de3d9be385b7a1550f2938a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
package it.niedermann.owncloud.notes;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.util.Log;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.preference.PreferenceManager;
import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
public class NotesApplication extends Application {
private static final String TAG = NotesApplication.class.getSimpleName();
private static final long LOCK_TIME = 30 * 1000;
private static boolean lockedPreference = false;
private static boolean isLocked = true;
private static long lastInteraction = 0;
private static String PREF_KEY_THEME;
private static boolean isGridViewEnabled = false;
@Override
public void onCreate() {
PREF_KEY_THEME = getString(R.string.pref_key_theme);
setAppTheme(getAppTheme(getApplicationContext()));
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
lockedPreference = prefs.getBoolean(getString(R.string.pref_key_lock), false);
isGridViewEnabled = getDefaultSharedPreferences(this).getBoolean(getString(R.string.pref_key_gridview), false);
super.onCreate();
}
public static void setAppTheme(DarkModeSetting setting) {
AppCompatDelegate.setDefaultNightMode(setting.getModeId());
}
public static boolean isGridViewEnabled() {
return isGridViewEnabled;
}
public static void updateGridViewEnabled(boolean gridView) {
isGridViewEnabled = gridView;
}
public static DarkModeSetting getAppTheme(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String mode;
try {
mode = prefs.getString(PREF_KEY_THEME, DarkModeSetting.SYSTEM_DEFAULT.name());
} catch (ClassCastException e) {
boolean darkModeEnabled = prefs.getBoolean(PREF_KEY_THEME, false);
mode = darkModeEnabled ? DarkModeSetting.DARK.name() : DarkModeSetting.LIGHT.name();
}
return DarkModeSetting.valueOf(mode);
}
public static boolean isDarkThemeActive(Context context, DarkModeSetting setting) {
if (setting == DarkModeSetting.SYSTEM_DEFAULT) {
return isDarkThemeActive(context);
} else {
return setting == DarkModeSetting.DARK;
}
}
public static boolean isDarkThemeActive(Context context) {
int uiMode = context.getResources().getConfiguration().uiMode;
return (uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
}
public static void setLockedPreference(boolean lockedPreference) {
Log.i(TAG, "New locked preference: " + lockedPreference);
NotesApplication.lockedPreference = lockedPreference;
}
public static boolean isLocked() {
if (!isLocked && System.currentTimeMillis() > (LOCK_TIME + lastInteraction)) {
isLocked = true;
}
return lockedPreference && isLocked;
}
public static void unlock() {
isLocked = false;
}
public static void updateLastInteraction() {
lastInteraction = System.currentTimeMillis();
}
}
|