diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedColorPickerPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedColorPickerPreference.java index 544e8d9c..c0bba331 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedColorPickerPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedColorPickerPreference.java @@ -56,7 +56,7 @@ public class ThemedColorPickerPreference extends Preference implements Themeable } else if ((appSettings.isKeyEqual(key, R.string.pref_key__accent_color_shade))) { color = appSettings.getAccentColor(); } else { - color = appSettings.getColor(getSharedPreferences(), key, color); + color = appSettings.getColor(key, color, getSharedPreferences()); } circle.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java index 81aaa21c..4b3a4e43 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java @@ -77,19 +77,19 @@ public class AppSettings extends AppSettingsBase { //## Getter & Setter for settings //################################# public String getProfileId() { - return getString(prefPod, R.string.pref_key__podprofile_id, ""); + return getString(R.string.pref_key__podprofile_id, ""); } public void setProfileId(String profileId) { - setString(prefPod, R.string.pref_key__podprofile_id, profileId); + setString(R.string.pref_key__podprofile_id, profileId,prefPod); } public boolean isLoadImages() { - return getBool(_prefApp, R.string.pref_key__load_images, true); + return getBool(R.string.pref_key__load_images, true); } public int getMinimumFontSize() { - switch (getString(_prefApp, R.string.pref_key__font_size, "")) { + switch (getString(R.string.pref_key__font_size, "")) { case "huge": return 20; case "large": @@ -97,30 +97,30 @@ public class AppSettings extends AppSettingsBase { case "normal": return 8; default: - setString(_prefApp, R.string.pref_key__font_size, "normal"); + setString(R.string.pref_key__font_size, "normal"); return 8; } } public String getAvatarUrl() { - return getString(prefPod, R.string.pref_key__podprofile_avatar_url, ""); + return getString(R.string.pref_key__podprofile_avatar_url, "",prefPod); } public void setAvatarUrl(String avatarUrl) { - setString(prefPod, R.string.pref_key__podprofile_avatar_url, avatarUrl); + setString(R.string.pref_key__podprofile_avatar_url, avatarUrl,prefPod); } public String getName() { - return getString(prefPod, R.string.pref_key__podprofile_name, ""); + return getString(R.string.pref_key__podprofile_name, "",prefPod); } public void setName(String name) { - setString(prefPod, R.string.pref_key__podprofile_name, name); + setString(R.string.pref_key__podprofile_name, name,prefPod); } public DiasporaPod getPod() { if (currentPod0Cached == null) { - String pref = getString(prefPod, R.string.pref_key__current_pod_0, ""); + String pref = getString(R.string.pref_key__current_pod_0, "",prefPod); try { currentPod0Cached = new DiasporaPod().fromJson(new JSONObject(pref)); @@ -133,23 +133,23 @@ public class AppSettings extends AppSettingsBase { public void setPod(DiasporaPod pod) { try { - setString(prefPod, R.string.pref_key__current_pod_0, - pod == null ? null : pod.toJson().toString()); + setString(R.string.pref_key__current_pod_0, + pod == null ? null : pod.toJson().toString(),prefPod); currentPod0Cached = pod; } catch (JSONException ignored) { } } public boolean hasPod() { - return !getString(prefPod, R.string.pref_key__current_pod_0, "").equals(""); + return !getString(R.string.pref_key__current_pod_0, "",prefPod).equals(""); } public void setPodAspects(DiasporaAspect[] aspects) { - setStringArray(prefPod, R.string.pref_key__podprofile_aspects, aspects); + setStringArray(R.string.pref_key__podprofile_aspects, aspects,prefPod); } public DiasporaAspect[] getAspects() { - String[] s = getStringArray(prefPod, R.string.pref_key__podprofile_aspects); + String[] s = getStringArray(R.string.pref_key__podprofile_aspects,prefPod); DiasporaAspect[] aspects = new DiasporaAspect[s.length]; for (int i = 0; i < aspects.length; i++) { aspects[i] = new DiasporaAspect(s[i]); @@ -158,47 +158,47 @@ public class AppSettings extends AppSettingsBase { } public String[] getFollowedTags() { - return getStringArray(prefPod, R.string.pref_key__podprofile_followed_tags); + return getStringArray(R.string.pref_key__podprofile_followed_tags,prefPod); } public void setFollowedTags(String[] values) { - setStringArray(prefPod, R.string.pref_key__podprofile_followed_tags, values); + setStringArray(R.string.pref_key__podprofile_followed_tags, values,prefPod); } public String[] getFollowedTagsFavs() { - return getStringArray(prefPod, R.string.pref_key__podprofile_followed_tags_favs); + return getStringArray(R.string.pref_key__podprofile_followed_tags_favs,prefPod); } public void setFollowedTagsFavs(List values) { - setStringList(prefPod, R.string.pref_key__podprofile_followed_tags_favs, values); + setStringList(R.string.pref_key__podprofile_followed_tags_favs, values,prefPod); } public String[] getAspectFavs() { - return getStringArray(prefPod, R.string.pref_key__podprofile_aspects_favs); + return getStringArray(R.string.pref_key__podprofile_aspects_favs,prefPod); } public void setAspectFavs(List values) { - setStringList(prefPod, R.string.pref_key__podprofile_aspects_favs, values); + setStringList(R.string.pref_key__podprofile_aspects_favs, values,prefPod); } public int getUnreadMessageCount() { - return getInt(prefPod, R.string.pref_key__podprofile_unread_message_count, 0); + return getInt(R.string.pref_key__podprofile_unread_message_count, 0,prefPod); } public void setUnreadMessageCount(int unreadMessageCount) { - setInt(prefPod, R.string.pref_key__podprofile_unread_message_count, unreadMessageCount); + setInt(R.string.pref_key__podprofile_unread_message_count, unreadMessageCount,prefPod); } public int getNotificationCount() { - return getInt(prefPod, R.string.pref_key__podprofile_notification_count, 0); + return getInt(R.string.pref_key__podprofile_notification_count, 0,prefPod); } public void setNotificationCount(int notificationCount) { - setInt(prefPod, R.string.pref_key__podprofile_notification_count, notificationCount); + setInt(R.string.pref_key__podprofile_notification_count, notificationCount,prefPod); } public boolean isAppendSharedViaApp() { - return getBool(_prefApp, R.string.pref_key__append_shared_via_app, true); + return getBool(R.string.pref_key__append_shared_via_app, true); } @SuppressLint("CommitPrefEdits") @@ -214,7 +214,7 @@ public class AppSettings extends AppSettingsBase { */ public boolean isProxyHttpEnabled() { try { - return getBool(_prefApp, R.string.pref_key__http_proxy_enabled, false); + return getBool(R.string.pref_key__http_proxy_enabled, false); } catch (ClassCastException e) { setProxyHttpEnabled(false); return false; @@ -222,7 +222,7 @@ public class AppSettings extends AppSettingsBase { } public boolean wasProxyEnabled() { - return getBool(_prefApp, R.string.pref_key__proxy_was_enabled, false); + return getBool(R.string.pref_key__proxy_was_enabled, false); } /** @@ -242,11 +242,11 @@ public class AppSettings extends AppSettingsBase { * @return proxy host */ public String getProxyHttpHost() { - return getString(_prefApp, R.string.pref_key__http_proxy_host, ""); + return getString(R.string.pref_key__http_proxy_host, ""); } public void setProxyHttpHost(String value) { - setString(_prefApp, R.string.pref_key__http_proxy_host, value); + setString(R.string.pref_key__http_proxy_host, value); } /** @@ -256,17 +256,17 @@ public class AppSettings extends AppSettingsBase { */ public int getProxyHttpPort() { try { - String str = getString(_prefApp, R.string.pref_key__http_proxy_port, "0"); + String str = getString(R.string.pref_key__http_proxy_port, "0"); return Integer.parseInt(str); } catch (ClassCastException e) { - int port = getInt(_prefApp, R.string.pref_key__http_proxy_port, 0); + int port = getInt(R.string.pref_key__http_proxy_port, 0); setProxyHttpPort(port); return port; } } public void setProxyHttpPort(int value) { - setString(_prefApp, R.string.pref_key__http_proxy_port, Integer.toString(value)); + setString(R.string.pref_key__http_proxy_port, Integer.toString(value)); } public ProxyHandler.ProxySettings getProxySettings() { @@ -274,126 +274,126 @@ public class AppSettings extends AppSettingsBase { } public boolean isIntellihideToolbars() { - return getBool(_prefApp, R.string.pref_key__intellihide_toolbars, true); + return getBool(R.string.pref_key__intellihide_toolbars, true); } public boolean isChromeCustomTabsEnabled() { - return getBool(_prefApp, R.string.pref_key__chrome_custom_tabs_enabled, true); + return getBool(R.string.pref_key__chrome_custom_tabs_enabled, true); } public boolean isLoggingEnabled() { - return getBool(_prefApp, R.string.pref_key__logging_enabled, false); + return getBool(R.string.pref_key__logging_enabled, false); } public boolean isLoggingSpamEnabled() { - return getBool(_prefApp, R.string.pref_key__logging_spam_enabled, false); + return getBool(R.string.pref_key__logging_spam_enabled, false); } public boolean isVisibleInNavExit() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__exit, true); + return getBool(R.string.pref_key__visibility_nav__exit, true); } public boolean isVisibleInNavHelp_license() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__help_license, true); + return getBool(R.string.pref_key__visibility_nav__help_license, true); } public boolean isVisibleInNavPublic_activities() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__public_activities, false); + return getBool(R.string.pref_key__visibility_nav__public_activities, false); } public boolean isVisibleInNavMentions() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__mentions, false); + return getBool(R.string.pref_key__visibility_nav__mentions, false); } public boolean isVisibleInNavCommented() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__commented, true); + return getBool(R.string.pref_key__visibility_nav__commented, true); } public boolean isVisibleInNavLiked() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__liked, true); + return getBool(R.string.pref_key__visibility_nav__liked, true); } public boolean isVisibleInNavActivities() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__activities, true); + return getBool(R.string.pref_key__visibility_nav__activities, true); } public boolean isVisibleInNavAspects() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__aspects, true); + return getBool(R.string.pref_key__visibility_nav__aspects, true); } public boolean isVisibleInNavFollowed_tags() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__followed_tags, true); + return getBool(R.string.pref_key__visibility_nav__followed_tags, true); } public boolean isVisibleInNavProfile() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__profile, true); + return getBool(R.string.pref_key__visibility_nav__profile, true); } public boolean isVisibleInNavContacts() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__contacts, false); + return getBool(R.string.pref_key__visibility_nav__contacts, false); } public boolean isVisibleInNavStatistics() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__statistics, false); + return getBool(R.string.pref_key__visibility_nav__statistics, false); } public boolean isVisibleInNavReports() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__reports, false); + return getBool(R.string.pref_key__visibility_nav__reports, false); } public boolean isVisibleInNavDandelionAccount() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__dandelion_account, false); + return getBool(R.string.pref_key__visibility_nav__dandelion_account, false); } public boolean isVisibleInNavToggleMobileDesktop() { - return getBool(_prefApp, R.string.pref_key__visibility_nav__toggle_mobile_desktop, false); + return getBool(R.string.pref_key__visibility_nav__toggle_mobile_desktop, false); } public boolean isTopbarStreamShortcutEnabled() { - return getBool(_prefApp, R.string.pref_key__topbar_stream_shortcut, false); + return getBool(R.string.pref_key__topbar_stream_shortcut, false); } public String getScreenRotation() { - return getString(_prefApp, R.string.pref_key__screen_rotation, R.string.rotation_val_system); + return getString(R.string.pref_key__screen_rotation, R.string.rotation_val_system); } public boolean isAppFirstStart() { - boolean value = getBool(_prefApp, R.string.pref_key__app_first_start, true); - setBool(_prefApp, R.string.pref_key__app_first_start, false); + boolean value = getBool(R.string.pref_key__app_first_start, true); + setBool(R.string.pref_key__app_first_start, false); return value; } public boolean isAppCurrentVersionFirstStart() { - int value = getInt(_prefApp, R.string.pref_key__app_first_start_current_version, -1); - setInt(_prefApp, R.string.pref_key__app_first_start_current_version, BuildConfig.VERSION_CODE); + int value = getInt(R.string.pref_key__app_first_start_current_version, -1); + setInt(R.string.pref_key__app_first_start_current_version, BuildConfig.VERSION_CODE); return value != BuildConfig.VERSION_CODE && !BuildConfig.IS_TEST_BUILD; } public long getLastVisitedPositionInStream() { - return getLong(prefPod, R.string.pref_key__podprofile_last_stream_position, -1); + return getLong(R.string.pref_key__podprofile_last_stream_position, -1,prefPod); } public void setLastVisitedPositionInStream(long timestamp) { - setLong(prefPod, R.string.pref_key__podprofile_last_stream_position, timestamp); + setLong(R.string.pref_key__podprofile_last_stream_position, timestamp,prefPod); } public void setLanguage(String value) { - setString(_prefApp, R.string.pref_key__language, value); + setString(R.string.pref_key__language, value); } public String getLanguage() { - return getString(_prefApp, R.string.pref_key__language, ""); + return getString(R.string.pref_key__language, ""); } public void setPrimaryColorSettings(int base, int shade) { - setInt(_prefApp, R.string.pref_key__primary_color_base, base); - setInt(_prefApp, R.string.pref_key__primary_color_shade, shade); + setInt(R.string.pref_key__primary_color_base, base); + setInt(R.string.pref_key__primary_color_shade, shade); } public int[] getPrimaryColorSettings() { return new int[]{ - getInt(_prefApp, R.string.pref_key__primary_color_base, rcolor(R.color.md_blue_650)), - getInt(_prefApp, R.string.pref_key__primary_color_shade, rcolor(R.color.primary)) + getInt(R.string.pref_key__primary_color_base, rcolor(R.color.md_blue_650)), + getInt(R.string.pref_key__primary_color_shade, rcolor(R.color.primary)) }; } @@ -402,36 +402,36 @@ public class AppSettings extends AppSettingsBase { if (isAmoledColorMode()) { return Color.BLACK; } else { - return getInt(_prefApp, R.string.pref_key__primary_color_shade, rcolor( + return getInt(R.string.pref_key__primary_color_shade, rcolor( BuildConfig.IS_TEST_BUILD ? R.color.md_brown_800 : R.color.primary)); } } public void setAccentColorSettings(int base, int shade) { - setInt(_prefApp, R.string.pref_key__accent_color_base, base); - setInt(_prefApp, R.string.pref_key__accent_color_shade, shade); + setInt(R.string.pref_key__accent_color_base, base); + setInt(R.string.pref_key__accent_color_shade, shade); } public int[] getAccentColorSettings() { return new int[]{ - getInt(_prefApp, R.string.pref_key__accent_color_base, rcolor(R.color.md_green_400)), - getInt(_prefApp, R.string.pref_key__accent_color_shade, rcolor(R.color.accent)) + getInt(R.string.pref_key__accent_color_base, rcolor(R.color.md_green_400)), + getInt(R.string.pref_key__accent_color_shade, rcolor(R.color.accent)) }; } public int getAccentColor() { - return getInt(_prefApp, R.string.pref_key__accent_color_shade, rcolor(R.color.accent)); + return getInt(R.string.pref_key__accent_color_shade, rcolor(R.color.accent)); } public boolean isExtendedNotificationsActivated() { - return getBool(_prefApp, R.string.pref_key__extended_notifications, false); + return getBool(R.string.pref_key__extended_notifications, false); } public boolean isAmoledColorMode() { - return getBool(_prefApp, R.string.pref_key__primary_color__amoled_mode, false); + return getBool(R.string.pref_key__primary_color__amoled_mode, false); } public boolean isAdBlockEnabled() { - return getBool(_prefApp, R.string.pref_key__adblock_enable, true); + return getBool(R.string.pref_key__adblock_enable, true); } } diff --git a/app/src/main/java/io/github/gsantner/opoc/util/AppSettingsBase.java b/app/src/main/java/io/github/gsantner/opoc/util/AppSettingsBase.java index 53cfc2b1..8a3477e7 100644 --- a/app/src/main/java/io/github/gsantner/opoc/util/AppSettingsBase.java +++ b/app/src/main/java/io/github/gsantner/opoc/util/AppSettingsBase.java @@ -53,6 +53,7 @@ import android.support.annotation.ColorRes; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.content.ContextCompat; +import android.text.TextUtils; import java.util.ArrayList; import java.util.Arrays; @@ -60,8 +61,8 @@ import java.util.List; /** - * Wrapper for settings based on SharedPreferences - * with keys in resources + * Wrapper for settings based on SharedPreferences with keys in resources + * Default SharedPreference (_prefApp) will be taken if no SP is specified, else the first one */ @SuppressWarnings({"WeakerAccess", "unused", "SpellCheckingInspection", "SameParameterValue"}) public class AppSettingsBase { @@ -72,8 +73,9 @@ public class AppSettingsBase { //######################## //## Members, Constructors //######################## - protected final SharedPreferences _prefApp; protected final Context _context; + protected final SharedPreferences _prefApp; + protected final String _prefAppName; public AppSettingsBase(final Context context) { this(context, SHARED_PREF_APP); @@ -81,7 +83,9 @@ public class AppSettingsBase { public AppSettingsBase(final Context context, final String prefAppName) { _context = context.getApplicationContext(); - _prefApp = _context.getSharedPreferences(prefAppName, Context.MODE_PRIVATE); + _prefAppName = TextUtils.isEmpty(prefAppName) ? + _context.getPackageName() + "_preferences" : prefAppName; + _prefApp = _context.getSharedPreferences(_prefAppName, Context.MODE_PRIVATE); } //##################### @@ -128,6 +132,23 @@ public class AppSettingsBase { pref.unregisterOnSharedPreferenceChangeListener(value); } + public SharedPreferences getDefaultPreferences() { + return _prefApp; + } + + public SharedPreferences.Editor getDefaultPreferencesEditor() { + return _prefApp.edit(); + } + + public String getDefaultPreferencesName() { + return _prefAppName; + } + + + private SharedPreferences gp(final SharedPreferences... pref) { + return (pref != null && pref.length > 0 ? pref[0] : _prefApp); + } + //################################# //## Getter for resources //################################# @@ -139,189 +160,251 @@ public class AppSettingsBase { return ContextCompat.getColor(_context, resColorId); } + //################################# - //## Getter & Setter for settings + //## Getter & Setter for String //################################# - public void setString(@StringRes int keyResourceId, String value) { - setString(_prefApp, keyResourceId, value); + public void setString(@StringRes int keyResourceId, String value, final SharedPreferences... pref) { + gp(pref).edit().putString(rstr(keyResourceId), value).apply(); } - public void setString(final SharedPreferences pref, @StringRes int keyResourceId, String value) { - pref.edit().putString(rstr(keyResourceId), value).apply(); + public void setString(String key, String value, final SharedPreferences... pref) { + gp(pref).edit().putString(key, value).apply(); } - public String getString(@StringRes int keyResourceId, String defaultValue) { - return getString(_prefApp, keyResourceId, defaultValue); + public void setString(@StringRes int keyResourceId, @StringRes int defaultValueResourceId, final SharedPreferences... pref) { + gp(pref).edit().putString(rstr(keyResourceId), rstr(defaultValueResourceId)).apply(); } - public String getString(final SharedPreferences pref, @StringRes int keyResourceId, String defaultValue) { - return pref.getString(rstr(keyResourceId), defaultValue); + public String getString(@StringRes int keyResourceId, String defaultValue, final SharedPreferences... pref) { + return gp(pref).getString(rstr(keyResourceId), defaultValue); } - public String getString(@StringRes int keyResourceId, @StringRes int keyResourceIdDefaultValue) { - return getString(_prefApp, keyResourceId, keyResourceIdDefaultValue); + public String getString(@StringRes int keyResourceId, @StringRes int defaultValueResourceId, final SharedPreferences... pref) { + return gp(pref).getString(rstr(keyResourceId), rstr(defaultValueResourceId)); } - public String getString(final SharedPreferences pref, @StringRes int keyResourceId, @StringRes int keyResourceIdDefaultValue) { - return pref.getString(rstr(keyResourceId), rstr(keyResourceIdDefaultValue)); + public String getString(String key, String defaultValue, final SharedPreferences... pref) { + return gp(pref).getString(key, defaultValue); } - public void setStringArray(@StringRes int keyResourceId, Object[] values) { - setStringArray(_prefApp, keyResourceId, values); + public String getString(@StringRes int keyResourceId, String defaultValue, @StringRes int keyResourceIdDefaultValue, final SharedPreferences... pref) { + return gp(pref).getString(rstr(keyResourceId), rstr(keyResourceIdDefaultValue)); } - public void setStringArray(final SharedPreferences pref, @StringRes int keyResourceId, Object[] values) { + public void setStringArray(@StringRes int keyResourceId, Object[] values, final SharedPreferences... pref) { + setStringArray(rstr(keyResourceId), values, gp(pref)); + } + + public void setStringArray(String key, Object[] values, final SharedPreferences... pref) { + setStringArray(key, values, gp(pref)); + } + + private void setStringArray(String key, Object[] values, final SharedPreferences pref) { StringBuilder sb = new StringBuilder(); for (Object value : values) { sb.append(ARRAY_SEPARATOR); sb.append(value.toString().replace(ARRAY_SEPARATOR, ARRAY_SEPARATOR_SUBSTITUTE)); } - setString(pref, keyResourceId, sb.toString().replaceFirst(ARRAY_SEPARATOR, "")); + setString(key, sb.toString().replaceFirst(ARRAY_SEPARATOR, ""), pref); } @NonNull - public String[] getStringArray(@StringRes int keyResourceId) { - return getStringArray(_prefApp, keyResourceId); + public String[] getStringArray(@StringRes int keyResourceId, final SharedPreferences... pref) { + return getStringArray(rstr(keyResourceId), gp(pref)); } - @NonNull - public String[] getStringArray(final SharedPreferences pref, @StringRes int keyResourceId) { - String value = pref.getString(rstr(keyResourceId), ARRAY_SEPARATOR).replace(ARRAY_SEPARATOR_SUBSTITUTE, ARRAY_SEPARATOR); + private String[] getStringArray(String key, final SharedPreferences... pref) { + String value = gp(pref) + .getString(key, ARRAY_SEPARATOR) + .replace(ARRAY_SEPARATOR_SUBSTITUTE, ARRAY_SEPARATOR); if (value.equals(ARRAY_SEPARATOR)) { return new String[0]; } return value.split(ARRAY_SEPARATOR); } - public void setStringList(@StringRes int keyResourceId, List values) { - setStringList(_prefApp, keyResourceId, values); + public void setStringList(@StringRes int keyResourceId, List values, final SharedPreferences... pref) { + setStringArray(rstr(keyResourceId), values.toArray(new String[values.size()]), pref); } - public void setStringList(final SharedPreferences pref, @StringRes int keyResourceId, List values) { - setStringArray(pref, keyResourceId, values.toArray(new String[values.size()])); + public void setStringList(String key, List values, final SharedPreferences... pref) { + setStringArray(key, values.toArray(new String[values.size()]), pref); } - public ArrayList getStringList(@StringRes int keyResourceId) { - return getStringList(_prefApp, keyResourceId); + public ArrayList getStringList(@StringRes int keyResourceId, final SharedPreferences... pref) { + return new ArrayList<>(Arrays.asList(getStringArray(rstr(keyResourceId), gp(pref)))); } - public ArrayList getStringList(final SharedPreferences pref, @StringRes int keyResourceId) { - return new ArrayList<>(Arrays.asList(getStringArray(pref, keyResourceId))); + public ArrayList getStringList(String key, final SharedPreferences... pref) { + return new ArrayList<>(Arrays.asList(getStringArray(key, gp(pref)))); } - public void setLong(@StringRes int keyResourceId, long value) { - setLong(_prefApp, keyResourceId, value); + //################################# + //## Getter & Setter for integer + //################################# + public void setInt(@StringRes int keyResourceId, int value, final SharedPreferences... pref) { + gp(pref).edit().putInt(rstr(keyResourceId), value).apply(); } - public void setLong(final SharedPreferences pref, @StringRes int keyResourceId, long value) { - pref.edit().putLong(rstr(keyResourceId), value).apply(); + public void setInt(String key, int value, final SharedPreferences... pref) { + gp(pref).edit().putInt(key, value).apply(); } - public long getLong(@StringRes int keyResourceId, long defaultValue) { - return getLong(_prefApp, keyResourceId, defaultValue); + public int getInt(@StringRes int keyResourceId, int defaultValue, final SharedPreferences... pref) { + return gp(pref).getInt(rstr(keyResourceId), defaultValue); } - public long getLong(final SharedPreferences pref, @StringRes int keyResourceId, long defaultValue) { - return pref.getLong(rstr(keyResourceId), defaultValue); + public int getInt(String key, int defaultValue, final SharedPreferences... pref) { + return gp(pref).getInt(key, defaultValue); } - public void setBool(@StringRes int keyResourceId, boolean value) { - setBool(_prefApp, keyResourceId, value); + public int getIntOfStringPref(@StringRes int keyResId, int defaultValue, final SharedPreferences... pref) { + return getIntOfStringPref(rstr(keyResId), defaultValue, gp(pref)); } - public void setBool(final SharedPreferences pref, @StringRes int keyResourceId, boolean value) { - pref.edit().putBoolean(rstr(keyResourceId), value).apply(); - } - - public boolean getBool(@StringRes int keyResourceId, boolean defaultValue) { - return getBool(_prefApp, keyResourceId, defaultValue); - } - - public boolean getBool(final SharedPreferences pref, @StringRes int keyResourceId, boolean defaultValue) { - return pref.getBoolean(rstr(keyResourceId), defaultValue); - } - - public int getColor(String key, int defaultColor) { - return getColor(_prefApp, key, defaultColor); - } - - public int getColor(final SharedPreferences pref, String key, int defaultColor) { - return pref.getInt(key, defaultColor); - } - - public int getColor(@StringRes int keyResourceId, int defaultColor) { - return getColor(_prefApp, keyResourceId, defaultColor); - } - - public int getColor(final SharedPreferences pref, @StringRes int keyResourceId, int defaultColor) { - return pref.getInt(rstr(keyResourceId), defaultColor); - } - - public void setDouble(@StringRes int keyResId, double value) { - setDouble(_prefApp, keyResId, value); - } - - public void setDouble(final SharedPreferences pref, @StringRes int keyResId, double value) { - _prefApp.edit().putLong(rstr(keyResId), Double.doubleToRawLongBits(value)).apply(); - } - - public double getDouble(@StringRes int keyResId, double defaultValue) { - return getDouble(_prefApp, keyResId, defaultValue); - } - - public double getDouble(final SharedPreferences pref, @StringRes int keyResId, double defaultValue) { - return Double.longBitsToDouble(_prefApp.getLong(rstr(keyResId), Double.doubleToLongBits(defaultValue))); - } - - public int getIntOfStringPref(@StringRes int keyResId, int defaultValue) { - String strNum = _prefApp.getString(_context.getString(keyResId), Integer.toString(defaultValue)); + public int getIntOfStringPref(String key, int defaultValue, final SharedPreferences... pref) { + String strNum = getString(key, Integer.toString(defaultValue), gp(pref)); return Integer.valueOf(strNum); } - public void setInt(@StringRes int keyResourceId, int value) { - setInt(_prefApp, keyResourceId, value); + + public void setIntArray(@StringRes int keyResourceId, Object[] values, final SharedPreferences... pref) { + setIntArray(rstr(keyResourceId), values, gp(pref)); } - public void setInt(final SharedPreferences pref, @StringRes int keyResourceId, int value) { - pref.edit().putInt(rstr(keyResourceId), value).apply(); + public void setIntArray(String key, Object[] values, final SharedPreferences... pref) { + setIntArray(key, values, gp(pref)); } - public int getInt(@StringRes int keyResourceId, int defaultValue) { - return getInt(_prefApp, keyResourceId, defaultValue); - } - - public int getInt(final SharedPreferences pref, @StringRes int keyResourceId, int defaultValue) { - return pref.getInt(rstr(keyResourceId), defaultValue); - } - - public void setIntList(@StringRes int keyResId, List values) { - setIntList(_prefApp, keyResId, values); - } - - public void setIntList(final SharedPreferences pref, @StringRes int keyResId, List values) { + private void setIntArray(String key, Object[] values, final SharedPreferences pref) { StringBuilder sb = new StringBuilder(); - for (int value : values) { + for (Object value : values) { sb.append(ARRAY_SEPARATOR); - sb.append(Integer.toString(value)); + sb.append(value.toString()); } - setString(_prefApp, keyResId, sb.toString().replaceFirst(ARRAY_SEPARATOR, "")); + setString(key, sb.toString().replaceFirst(ARRAY_SEPARATOR, ""), pref); } @NonNull - public ArrayList getIntList(@StringRes int keyResId) { - return getIntList(_prefApp, keyResId); + public Integer[] getIntArray(@StringRes int keyResourceId, final SharedPreferences... pref) { + return getIntArray(rstr(keyResourceId), gp(pref)); } - @NonNull - public ArrayList getIntList(final SharedPreferences pref, @StringRes int keyResId) { - final ArrayList ret = new ArrayList<>(); - final String value = getString(_prefApp, keyResId, ARRAY_SEPARATOR); + private Integer[] getIntArray(String key, final SharedPreferences... pref) { + String value = gp(pref).getString(key, ARRAY_SEPARATOR); if (value.equals(ARRAY_SEPARATOR)) { - return ret; + return new Integer[0]; } - for (String intstr : value.split(ARRAY_SEPARATOR)) { - ret.add(Integer.parseInt(intstr)); + String[] split = value.split(ARRAY_SEPARATOR); + Integer[] ret = new Integer[split.length]; + for (int i = 0; i < ret.length; i++) { + ret[i] = Integer.parseInt(split[i]); } return ret; } + + public void setIntList(@StringRes int keyResourceId, List values, final SharedPreferences... pref) { + setIntArray(rstr(keyResourceId), values.toArray(new Integer[values.size()]), pref); + } + + public void setIntList(String key, List values, final SharedPreferences... pref) { + setIntArray(key, values.toArray(new Integer[values.size()]), pref); + } + + public ArrayList getIntList(@StringRes int keyResourceId, final SharedPreferences... pref) { + return new ArrayList<>(Arrays.asList(getIntArray(rstr(keyResourceId), gp(pref)))); + } + + public ArrayList getIntList(String key, final SharedPreferences... pref) { + return new ArrayList<>(Arrays.asList(getIntArray(key, gp(pref)))); + } + + + //################################# + //## Getter & Setter for Long + //################################# + public void setLong(@StringRes int keyResourceId, long value, final SharedPreferences... pref) { + gp(pref).edit().putLong(rstr(keyResourceId), value).apply(); + } + + public void setLong(String key, long value, final SharedPreferences... pref) { + gp(pref).edit().putLong(key, value).apply(); + } + + public long getLong(@StringRes int keyResourceId, long defaultValue, final SharedPreferences... pref) { + return gp(pref).getLong(rstr(keyResourceId), defaultValue); + } + + public long getLong(String key, long defaultValue, final SharedPreferences... pref) { + return gp(pref).getLong(key, defaultValue); + } + + //################################# + //## Getter & Setter for Float + //################################# + public void setFloat(@StringRes int keyResourceId, float value, final SharedPreferences... pref) { + gp(pref).edit().putFloat(rstr(keyResourceId), value).apply(); + } + + public void setFloat(String key, float value, final SharedPreferences... pref) { + gp(pref).edit().putFloat(key, value).apply(); + } + + public float getFloat(@StringRes int keyResourceId, float defaultValue, final SharedPreferences... pref) { + return gp(pref).getFloat(rstr(keyResourceId), defaultValue); + } + + public float getFloat(String key, float defaultValue, final SharedPreferences... pref) { + return gp(pref).getFloat(key, defaultValue); + } + + //################################# + //## Getter & Setter for Double + //################################# + public void setDouble(@StringRes int keyResourceId, double value, final SharedPreferences... pref) { + setLong(rstr(keyResourceId), Double.doubleToRawLongBits(value)); + } + + public void setDouble(String key, double value, final SharedPreferences... pref) { + setLong(key, Double.doubleToRawLongBits(value)); + } + + public double getDouble(@StringRes int keyResourceId, double defaultValue, final SharedPreferences... pref) { + return getDouble(rstr(keyResourceId), defaultValue, gp(pref)); + } + + public double getDouble(String key, double defaultValue, final SharedPreferences... pref) { + return Double.longBitsToDouble(getLong(key, Double.doubleToRawLongBits(defaultValue), gp(pref))); + } + + //################################# + //## Getter & Setter for boolean + //################################# + public void setBool(@StringRes int keyResourceId, boolean value, final SharedPreferences... pref) { + gp(pref).edit().putBoolean(rstr(keyResourceId), value).apply(); + } + + public void setBool(String key, boolean value, final SharedPreferences... pref) { + gp(pref).edit().putBoolean(key, value).apply(); + } + + public boolean getBool(@StringRes int keyResourceId, boolean defaultValue, final SharedPreferences... pref) { + return gp(pref).getBoolean(rstr(keyResourceId), defaultValue); + } + + public boolean getBool(String key, boolean defaultValue, final SharedPreferences... pref) { + return gp(pref).getBoolean(key, defaultValue); + } + + //################################# + //## Getter & Setter for Color + //################################# + public int getColor(String key, @ColorRes int defaultColor, final SharedPreferences... pref) { + return gp(pref).getInt(key, rcolor(defaultColor)); + } + + public int getColor(@StringRes int keyResourceId, @ColorRes int defaultColor, final SharedPreferences... pref) { + return gp(pref).getInt(rstr(keyResourceId), rcolor(defaultColor)); + } } diff --git a/app/src/main/java/io/github/gsantner/opoc/util/Helpers.java b/app/src/main/java/io/github/gsantner/opoc/util/Helpers.java index f9f2d452..043797e6 100644 --- a/app/src/main/java/io/github/gsantner/opoc/util/Helpers.java +++ b/app/src/main/java/io/github/gsantner/opoc/util/Helpers.java @@ -59,13 +59,13 @@ public class Helpers { _context = context; } - //######################## - //## Methods - //######################## - public String str(@StringRes int strResId) { - return _context.getString(strResId); + public Context context() { + return _context; } + //######################## + //## Resources + //######################## static class ResType { public static final String DRAWABLE = "drawable"; public static final String STRING = "string"; @@ -78,6 +78,10 @@ public class Helpers { public static final String RAW = "raw"; } + public String str(@StringRes int strResId) { + return _context.getString(strResId); + } + public Drawable drawable(@DrawableRes int resId) { return ContextCompat.getDrawable(_context, resId); } @@ -86,10 +90,23 @@ public class Helpers { return ContextCompat.getColor(_context, resId); } - public Context context() { - return _context; + public int getResId(final String type, final String name) { + return _context.getResources().getIdentifier(name, type, _context.getPackageName()); } + public boolean areResIdsAvailable(final String type, final String... names) { + for (String name : names) { + if (getResId(type, name) == 0) { + return false; + } + } + return true; + } + + //######################## + //## Methods + //######################## + public String colorToHexString(int intColor) { return String.format("#%06X", 0xFFFFFF & intColor); } @@ -105,19 +122,6 @@ public class Helpers { } } - public int getResId(final String type, final String name) { - return _context.getResources().getIdentifier(name, type, _context.getPackageName()); - } - - public boolean areResIdsAvailable(final String type, final String... names) { - for (String name : names) { - if (getResId(type, name) == 0) { - return false; - } - } - return true; - } - public void openWebpageInExternalBrowser(final String url) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); @@ -250,14 +254,8 @@ public class Helpers { } public void setHtmlToTextView(TextView textView, String html) { - Spanned spanned; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { - spanned = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); - } else { - spanned = Html.fromHtml(html); - } textView.setMovementMethod(LinkMovementMethod.getInstance()); - textView.setText(new SpannableString(spanned)); + textView.setText(new SpannableString(htmlToSpanned(html))); } public double getEstimatedScreenSizeInches() { @@ -301,6 +299,16 @@ public class Helpers { + (0.114 * Color.blue(colorOnBottomInt))))); } + @SuppressWarnings("deprecation") + public Spanned htmlToSpanned(String html) { + Spanned result; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + result = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); + } else { + result = Html.fromHtml(html); + } + return result; + } public float px2dp(final float px) { return px / _context.getResources().getDisplayMetrics().density;