AppSettings.java

 1package eu.siacs.conversations;
 2
 3import android.content.Context;
 4import android.content.SharedPreferences;
 5import android.net.Uri;
 6
 7import androidx.annotation.BoolRes;
 8import androidx.annotation.NonNull;
 9import androidx.preference.PreferenceManager;
10
11import com.google.common.base.Strings;
12
13public class AppSettings {
14
15    public static final String KEEP_FOREGROUND_SERVICE = "enable_foreground_service";
16    public static final String AWAY_WHEN_SCREEN_IS_OFF = "away_when_screen_off";
17    public static final String TREAT_VIBRATE_AS_SILENT = "treat_vibrate_as_silent";
18    public static final String DND_ON_SILENT_MODE = "dnd_on_silent_mode";
19    public static final String MANUALLY_CHANGE_PRESENCE = "manually_change_presence";
20    public static final String BLIND_TRUST_BEFORE_VERIFICATION = "btbv";
21    public static final String AUTOMATIC_MESSAGE_DELETION = "automatic_message_deletion";
22    public static final String BROADCAST_LAST_ACTIVITY = "last_activity";
23    public static final String THEME = "theme";
24    public static final String SHOW_DYNAMIC_TAGS = "show_dynamic_tags";
25    public static final String OMEMO = "omemo";
26    public static final String ALLOW_SCREENSHOTS = "allow_screenshots";
27    public static final String RINGTONE = "call_ringtone";
28    public static final String BTBV = "btbv";
29
30    public static final String CONFIRM_MESSAGES = "confirm_messages";
31    public static final String ALLOW_MESSAGE_CORRECTION = "allow_message_correction";
32
33    public static final String TRUST_SYSTEM_CA_STORE = "trust_system_ca_store";
34    public static final String REQUIRE_CHANNEL_BINDING = "channel_binding_required";
35    public static final String NOTIFICATION_RINGTONE = "notification_ringtone";
36    public static final String NOTIFICATION_HEADS_UP = "notification_headsup";
37    public static final String NOTIFICATION_VIBRATE = "vibrate_on_notification";
38    public static final String NOTIFICATION_LED = "led";
39    public static final String SHOW_CONNECTION_OPTIONS = "show_connection_options";
40    public static final String USE_TOR = "use_tor";
41    public static final String CHANNEL_DISCOVERY_METHOD = "channel_discovery_method";
42
43    private final Context context;
44
45    public AppSettings(final Context context) {
46        this.context = context;
47    }
48
49    public Uri getRingtone() {
50        final SharedPreferences sharedPreferences =
51                PreferenceManager.getDefaultSharedPreferences(context);
52        final String incomingCallRingtone =
53                sharedPreferences.getString(
54                        RINGTONE, context.getString(R.string.incoming_call_ringtone));
55        return Strings.isNullOrEmpty(incomingCallRingtone) ? null : Uri.parse(incomingCallRingtone);
56    }
57
58    public void setRingtone(final Uri uri) {
59        final SharedPreferences sharedPreferences =
60                PreferenceManager.getDefaultSharedPreferences(context);
61        sharedPreferences.edit().putString(RINGTONE, uri == null ? null : uri.toString()).apply();
62    }
63
64    public boolean isBTBVEnabled() {
65        return getBooleanPreference(BTBV, R.bool.btbv);
66    }
67
68    public boolean isTrustSystemCAStore() {
69        return getBooleanPreference(TRUST_SYSTEM_CA_STORE, R.bool.trust_system_ca_store);
70    }
71
72    public boolean isAllowScreenshots() {
73        return getBooleanPreference(ALLOW_SCREENSHOTS, R.bool.allow_screenshots);
74    }
75
76    public boolean isUseTor() {
77        return getBooleanPreference(USE_TOR, R.bool.use_tor);
78    }
79
80    private boolean getBooleanPreference(@NonNull final String name, @BoolRes int res) {
81        final SharedPreferences sharedPreferences =
82                PreferenceManager.getDefaultSharedPreferences(context);
83        return sharedPreferences.getBoolean(name, context.getResources().getBoolean(res));
84    }
85
86    public String getOmemo() {
87        final SharedPreferences sharedPreferences =
88                PreferenceManager.getDefaultSharedPreferences(context);
89        return sharedPreferences.getString(OMEMO, context.getString(R.string.omemo_setting_default));
90    }
91}