package org.softeg.slartus.forpdaplus.prefs; import android.net.Uri; import android.text.TextUtils; import org.softeg.slartus.forpdaapi.ClientPreferences; import org.softeg.slartus.forpdaapi.Forum; import org.softeg.slartus.forpdacommon.Connectivity; import org.softeg.slartus.forpdacommon.ExtPreferences; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.R; import org.softeg.slartus.forpdaplus.download.DownloadsService; import org.softeg.slartus.forpdaplus.listtemplates.ForumBrickInfo; import org.softeg.slartus.forpdaplus.listtemplates.NewsPagerBrickInfo; import java.io.File; import java.util.Calendar; import java.util.HashSet; import java.util.Set; /* * Created by slartus on 23.02.14. */ public class Preferences { public static Boolean isLoadShortUserInfo() { return App.getInstance().getPreferences().getBoolean("isLoadShortUserInfo", false); } public static Boolean isLoadImagesFromWeb(String listName) { return isLoadImages(listName + ".LoadsImages"); } public static Boolean isLoadImages(String prefsKey) { int loadImagesType = ExtPreferences.parseInt(App.getInstance().getPreferences(), prefsKey, 1); if (loadImagesType == 2) { return Connectivity.isConnectedWifi(App.getContext()); } return loadImagesType == 1; } public static Boolean isHideActionBar() { return App.getInstance().getPreferences().getBoolean("actionbar.hide", true); } public static void setHideActionBar(Boolean hide) { App.getInstance().getPreferences().edit().putBoolean("actionbar.hide", hide).apply(); } public static Boolean isHideFab() { return App.getInstance().getPreferences().getBoolean("fab.hide", true); } public static void setHideFab(Boolean hide) { App.getInstance().getPreferences().edit().putBoolean("fab.hide", hide).apply(); } public static Boolean isBrowserView() { return App.getInstance().getPreferences().getBoolean("theme.BrowserStyle", true); } public static void setBrowserView(Boolean view) { App.getInstance().getPreferences().edit().putBoolean("theme.BrowserStyle", view).apply(); } public static Boolean notifyBetaVersions() { return App.getInstance().getPreferences().getBoolean("notify.beta_version", false); } public static void setHideArrows(Boolean hide) { App.getInstance().getPreferences().edit().putBoolean("hideArrows", hide).apply(); } public static Boolean isHideArrows() { return App.getInstance().getPreferences().getBoolean("hideArrows", false); } public static int getFontSize(String prefix) { int res = ExtPreferences.parseInt(App.getInstance().getPreferences(), prefix + ".FontSize", 16); return Math.max(Math.min(res, 72), 1); } public static void setFontSize(String prefix, int value) { App.getInstance().getPreferences().edit().putString(prefix + ".FontSize", Integer.toString(value)).apply(); } public static class Lists { public static Boolean getScrollByButtons() { return App.getInstance().getPreferences().getBoolean("lists.scroll_by_buttons", false); } public static void setLastSelectedList(String listName) { App.getInstance().getPreferences().edit().putString("list.last_selected_list", listName).apply(); } public static String getLastSelectedList() { return App.getInstance().getPreferences().getString("list.last_selected_list", new NewsPagerBrickInfo().getName()); } public static void addLastAction(String name) { String[] lastActions = App.getInstance().getPreferences().getString("lists.last_actions", "").split("\\|"); String newValue = name + "|"; int max = 5; for (String nm : lastActions) { if (TextUtils.isEmpty(nm)) continue; if (nm.equals(name)) continue; newValue += nm + "|"; max--; if (max == 0) break; } App.getInstance().getPreferences().edit().putString("lists.last_actions", newValue).apply(); } public static String[] getLastActions() { return App.getInstance().getPreferences().getString("lists.last_actions", "").split("\\|"); } public static boolean isRefresh() { return App.getInstance().getPreferences().getBoolean("lists.refresh", true); } public static boolean isRefreshOnTab() { return App.getInstance().getPreferences().getBoolean("lists.refresh_on_tab", true); } } public static class List { public static class Favorites { public static Boolean isLoadFullPagesList() { return App.getInstance().getPreferences().getBoolean("lists.favorites.load_all", false); } } public static void setListSort(String listName, String value) { App.getInstance().getPreferences().edit().putString(listName + ".list.sort", value).apply(); } public static String defaultListSort() { return "sortorder.asc"; } public static String getListSort(String listName, String defaultValue) { return App.getInstance().getPreferences().getString(listName + ".list.sort", defaultValue); } public static String getStartForumId() { return App.getInstance().getPreferences().getString(ForumBrickInfo.NAME + ".start_forum_id", null); } public static Forum getStartForum() { String id = App.getInstance().getPreferences().getString(ForumBrickInfo.NAME + ".start_forum_id", null); if (TextUtils.isEmpty(id)) return null; String title = App.getInstance().getPreferences().getString(ForumBrickInfo.NAME + ".start_forum_title", null); if (TextUtils.isEmpty(title)) return null; return new Forum(id, title); } public static void setStartForum(String id, String title) { App.getInstance().getPreferences().edit() .putString(ForumBrickInfo.NAME + ".start_forum_id", id) .putString(ForumBrickInfo.NAME + ".start_forum_title", title) .apply(); } } public static class Forums { public static Boolean isShowImages() { return App.getInstance().getPreferences().getBoolean("forum.list.show_images", true); } } public static class Topic { public static Boolean getReadersAndWriters() { return App.getInstance().getPreferences().getBoolean("theme.ShowReadersAndWriters", false); } public static Boolean getSpoilFirstPost() { return App.getInstance().getPreferences().getBoolean("theme.SpoilFirstPost", true); } public static Boolean getConfirmSend() { return App.getInstance().getPreferences().getBoolean("theme.ConfirmSend", true); } public static void setConfirmSend(Boolean value) { App.getInstance().getPreferences().edit().putBoolean("theme.ConfirmSend", value).apply(); } public static Boolean isShowAvatars() { int loadImagesType = getShowAvatarsOpt(); if (loadImagesType == 1) { return Connectivity.isConnectedWifi(App.getContext()); } return loadImagesType == 0; } public static int getShowAvatarsOpt() { return ExtPreferences.parseInt(App.getInstance().getPreferences(), "topic.show_avatar_opt", 0); } public static void setShowAvatarsOpt(int value) { App.getInstance().getPreferences() .edit().putInt("topic.show_avatar_opt", value).commit(); } public static int getFontSize() { return Preferences.getFontSize("theme"); } public static void setFontSize(int value) { Preferences.setFontSize("theme", value); } public static int getHistoryLimit() { return ExtPreferences.parseInt(App.getInstance().getPreferences(), "topic.history_limit", 5); } public static void setHistoryLimit(int value) { App.getInstance().getPreferences() .edit().putInt("topic.history_limit", value).commit(); } public static class Post { public static void setEnableEmotics(Boolean value) { App.getInstance().getPreferences().edit().putBoolean("topic.post.enableemotics", value).apply(); } public static boolean getEnableEmotics() { return App.getInstance().getPreferences().getBoolean("topic.post.enableemotics", true); } public static void setEnableSign(Boolean value) { App.getInstance().getPreferences().edit().putBoolean("topic.post.enablesign", value).apply(); } public static boolean getEnableSign() { return App.getInstance().getPreferences().getBoolean("topic.post.enablesign", true); } public static void addEmoticToFavorites(String name) { name = name.replace("&", "&").replace("<", "<").replace(">", ">").replace("]", "]").replace("[", "["); Set<String> favoritesEmotics = getEmoticFavorites(); HashSet<String> newlist = new HashSet<>(); newlist.add(name); int max = 9; for (String nm : favoritesEmotics) { if (TextUtils.isEmpty(nm)) continue; if (nm.equals(name)) continue; newlist.add(nm); max--; if (max == 0) break; } App.getInstance().getPreferences().edit().putStringSet("topic.post.emotics_favorites", newlist).apply(); } public static Set<String> getEmoticFavorites() { try { return App.getInstance().getPreferences().getStringSet("topic.post.emotics_favorites", new HashSet<String>()); } catch (Throwable ignored) { return new HashSet<>(); } } } } public static class System { public static boolean getWebviewCompatMode() { return App.getInstance().getPreferences().getBoolean("webviewCompatMode", false); } public static void setSystemDir(String value) { App.getInstance().getPreferences().edit().putString("path.system_path", value).apply(); } public static String getSystemDir() { File dir = App.getInstance().getFilesDir(); if (dir == null) dir = App.getInstance().getExternalFilesDir(null); String res = App.getInstance().getPreferences().getString("path.system_path", dir.getPath()); if (!res.endsWith(File.separator)) res = res.concat(File.separator); return res; } /** * Показывать скролл в браузере * Снимите галочку, если программа падает при вызове темы. Например, для Nook Simple Touch */ public static Boolean isShowWebViewScroll() { return App.getInstance().getPreferences().getBoolean("system.WebViewScroll", true); } public static boolean isScrollUpButton(int keyCode) { return isPrefsButton(keyCode, "keys.scrollUp", "24"); } public static boolean isScrollDownButton(int keyCode) { return isPrefsButton(keyCode, "keys.scrollDown", "25"); } public static boolean isPrefsButton(int keyCode, String prefKey, String defaultValue) { String scrollUpKeys = "," + App.getInstance().getPreferences() .getString(prefKey, defaultValue).replace(" ", "") + ","; return (scrollUpKeys.contains("," + Integer.toString(keyCode) + ",")); } public static boolean isDevSavePage() { return App.getInstance().getPreferences().getBoolean("system.developerSavePage", false); } public static boolean isDevStyle() { return App.getInstance().getPreferences().getBoolean("system.developerStyle", false); } public static boolean isDevGrid() { return App.getInstance().getPreferences().getBoolean("system.developerGrid", false); } public static boolean isDevBounds() { return App.getInstance().getPreferences().getBoolean("system.developerBounds", false); } public static boolean isCurator() { return App.getInstance().getPreferences().getBoolean("system.curator", false); } public static String getDrawerMenuPosition() { return App.getInstance().getPreferences().getString("system.drawermenuposition", "left"); } public static String getDownloadFilesDir() { String res = App.getInstance().getPreferences().getString("downloads.path", DownloadsService.getDownloadDir(App.getContext())); if (TextUtils.isEmpty(res)) return res; if (!res.endsWith(File.separator)) res += File.separator; return res; } public static void setEvaluateJavascriptEnabled(boolean value) { App.getInstance().getPreferences().edit().putBoolean("system.EvaluateJavascriptEnabled", value).apply(); } public static boolean isEvaluateJavascriptEnabled() { return App.getInstance().getPreferences() .getBoolean("system.EvaluateJavascriptEnabled", true); } } public static class News { public static int getLastSelectedSection() { return App.getInstance().getPreferences().getInt("news.lastselectedsection", 0); } public static void setLastSelectedSection(int section) { App.getInstance().getPreferences().edit().putInt("news.lastselectedsection", section).apply(); } public static int getFontSize() { return Preferences.getFontSize("news"); } public static class List { public static Boolean isLoadImages() { return Preferences.isLoadImages("news.list.loadimages"); } public static int getNewsListViewId() { switch (App.getInstance().getPreferences().getString("news.list.view", "full")) { case "medium": return R.layout.item_news_medium; default: return R.layout.item_news; } } } } public static class Menu { public static boolean getGroupExpanded(int groupIndex) { return App.getInstance().getPreferences().getBoolean("menu.GroupExpanded." + groupIndex, true); } public static void setGroupExpanded(int groupIndex, Boolean expanded) { App.getInstance().getPreferences().edit().putBoolean("menu.GroupExpanded." + groupIndex, expanded).apply(); } } public static class Search { } public static class Attention { public static void setAttentionId(String value) { App.getInstance().getPreferences().edit().putString("attention.id", value).apply(); } public static String getAttentionId() { return App.getInstance().getPreferences().getString("attention.id", null); } } public static class Notice { public static void setNotice(String value) { App.getInstance().getPreferences().edit().putString("notice.text", value).apply(); } public static String getNotice() { return App.getInstance().getPreferences().getString("notice.text", null); } } public static class Warning { public static void setWarning(String value) { App.getInstance().getPreferences().edit().putString("warning.text", value).apply(); } public static String getWarning() { return App.getInstance().getPreferences().getString("warning.text", null); } } public static class Files { public static Boolean isConfirmDownload() { return App.getInstance().getPreferences().getBoolean("files.ConfirmDownload", true); } public static void setConfirmDownload(boolean b) { App.getInstance().getPreferences().edit().putBoolean("files.ConfirmDownload", b).apply(); } } public static class Notifications { public static void setSound(Uri soundUri) { ClientPreferences.Notifications.setSound(App.getContext(), soundUri); } public static Uri getSound() { return ClientPreferences.Notifications.getSound(App.getContext()); } public static boolean isDefaultSound() { return ClientPreferences.Notifications.isDefaultSound(App.getContext()); } public static class SilentMode { public static Calendar getStartTime() { return ClientPreferences.Notifications.SilentMode.getStartTime(App.getContext()); } public static void setStartTime(int hourOfDay, int minute) { ClientPreferences.Notifications.SilentMode.setTime(App.getContext(), "notifiers.silent_mode.start_time", hourOfDay, minute); } public static Calendar getEndTime() { return ClientPreferences.Notifications.SilentMode.getTime(App.getContext(), "notifiers.silent_mode.end_time"); } public static void setEndTime(int hourOfDay, int minute) { ClientPreferences.Notifications.SilentMode.setTime(App.getContext(), "notifiers.silent_mode.end_time", hourOfDay, minute); } } public static class Qms { public static void readQmsDone() { App.getInstance().getPreferences().edit().putBoolean("refreshQMSData", true).apply(); } public static boolean isReadDone() { return App.getInstance().getPreferences().getBoolean("refreshQMSData", false); } } } public static void NYDone() { App.getInstance().getPreferences().edit().putBoolean("NYDone", true).apply(); } public static boolean isNYDone() { return App.getInstance().getPreferences().getBoolean("NYDone", false); } }