package tw.nekomimi.nekogram; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLog; public class NekoConfig { private static final Object sync = new Object(); public static boolean useIPv6 = false; public static boolean hidePhone = true; public static boolean ignoreBlocked = false; public static boolean forceTablet = false; public static int typeface = 0; public static int nameOrder = 1; public static int mapPreviewProvider = 0; public static boolean transparentStatusBar = true; public static boolean residentNotification = false; public static boolean hideProxySponsorChannel = false; public static boolean saveCacheToPrivateDirectory = Build.VERSION.SDK_INT >= 24; public static boolean showAddToSavedMessages = true; public static boolean showReport = false; public static boolean showPrPr = true; public static boolean showViewHistory = true; public static boolean showAdminActions = true; public static boolean showChangePermissions = true; public static boolean showDeleteDownloadedFile = true; public static boolean xmas = false; public static boolean newYear = false; public static boolean newYearEve = false; public static boolean fireworks = false; private static boolean configLoaded; static { loadConfig(); } public static void saveConfig() { synchronized (sync) { try { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfing", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("useIPv6", useIPv6); editor.putBoolean("hidePhone", hidePhone); editor.putBoolean("ignoreBlocked", ignoreBlocked); editor.putBoolean("forceTablet", forceTablet); editor.putInt("typeface", typeface); editor.putInt("nameOrder", nameOrder); editor.putInt("mapPreviewProvider", mapPreviewProvider); editor.putBoolean("transparentStatusBar", transparentStatusBar); editor.putBoolean("residentNotification", residentNotification); editor.putBoolean("hideProxySponsorChannel", hideProxySponsorChannel); editor.putBoolean("saveCacheToPrivateDirectory", saveCacheToPrivateDirectory); editor.putBoolean("showAddToSavedMessages", showAddToSavedMessages); editor.putBoolean("showReport", showReport); editor.putBoolean("showPrPr", showPrPr); editor.putBoolean("showViewHistory", showViewHistory); editor.putBoolean("showAdminActions", showAdminActions); editor.putBoolean("showChangePermissions", showChangePermissions); editor.putBoolean("showDeleteDownloadedFile", showDeleteDownloadedFile); editor.putBoolean("xmas", xmas); editor.putBoolean("newYear", newYear); editor.putBoolean("newYearEve", newYearEve); editor.putBoolean("fireworks", fireworks); editor.commit(); } catch (Exception e) { FileLog.e(e); } } } public static void loadConfig() { synchronized (sync) { if (configLoaded) { return; } SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); useIPv6 = preferences.getBoolean("useIPv6", false); hidePhone = preferences.getBoolean("hidePhone", true); ignoreBlocked = preferences.getBoolean("ignoreBlocked", false); forceTablet = preferences.getBoolean("forceTablet", false); typeface = preferences.getInt("typeface", 0); nameOrder = preferences.getInt("nameOrder", 1); mapPreviewProvider = preferences.getInt("mapPreviewProvider", 0); transparentStatusBar = preferences.getBoolean("transparentStatusBar", true); residentNotification = preferences.getBoolean("residentNotification", false); hideProxySponsorChannel = preferences.getBoolean("hideProxySponsorChannel", false); saveCacheToPrivateDirectory = preferences.getBoolean("saveCacheToPrivateDirectory", Build.VERSION.SDK_INT >= 24); showAddToSavedMessages = preferences.getBoolean("showAddToSavedMessages", true); showReport = preferences.getBoolean("showReport", false); showPrPr = preferences.getBoolean("showPrPr", true); showViewHistory = preferences.getBoolean("showViewHistory", true); showAdminActions = preferences.getBoolean("showAdminActions", true); showChangePermissions = preferences.getBoolean("showChangePermissions", true); showDeleteDownloadedFile = preferences.getBoolean("showDeleteDownloadedFile", true); xmas = preferences.getBoolean("xmas", false); newYear = preferences.getBoolean("newYear", false); newYearEve = preferences.getBoolean("newYearEve", false); fireworks = preferences.getBoolean("fireworks", false); configLoaded = true; } } public static void toggleShowAddToSavedMessages() { showAddToSavedMessages = !showAddToSavedMessages; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showAddToSavedMessages", showAddToSavedMessages); editor.commit(); } public static void toggleShowReport() { showReport = !showReport; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showReport", showReport); editor.commit(); } public static void toggleShowViewHistory() { showViewHistory = !showViewHistory; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showViewHistory", showViewHistory); editor.commit(); } public static void toggleShowPrPr() { showPrPr = !showPrPr; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showPrPr", showPrPr); editor.commit(); } public static void toggleShowAdminActions() { showAdminActions = !showAdminActions; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showAdminActions", showAdminActions); editor.commit(); } public static void toggleShowChangePermissions() { showChangePermissions = !showChangePermissions; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showChangePermissions", showChangePermissions); editor.commit(); } public static void toggleShowDeleteDownloadedFile() { showDeleteDownloadedFile = !showDeleteDownloadedFile; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("showDeleteDownloadedFile", showDeleteDownloadedFile); editor.commit(); } public static void toggleIPv6() { useIPv6 = !useIPv6; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("useIPv6", useIPv6); editor.commit(); } public static void toggleHidePhone() { hidePhone = !hidePhone; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("hidePhone", hidePhone); editor.commit(); } public static void toggleIgnoreBlocked() { ignoreBlocked = !ignoreBlocked; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("ignoreBlocked", ignoreBlocked); editor.commit(); } public static void toggleForceTablet() { forceTablet = !forceTablet; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("forceTablet", forceTablet); editor.commit(); } public static void toggleTypeface() { typeface = typeface == 0 ? 1 : 0; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("typeface", typeface); editor.commit(); } public static void setNameOrder(int order) { nameOrder = order; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("nameOrder", nameOrder); editor.commit(); } public static void setMapPreviewProvider(int provider) { mapPreviewProvider = provider; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("mapPreviewProvider", mapPreviewProvider); editor.commit(); } public static void toggleTransparentStatusBar() { transparentStatusBar = !transparentStatusBar; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("transparentStatusBar", transparentStatusBar); editor.commit(); } public static void toggleResidentNotification() { residentNotification = !residentNotification; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("residentNotification", residentNotification); editor.commit(); Intent duangIntent = new Intent(ApplicationLoader.applicationContext, DuangService.class); if (residentNotification) { ApplicationLoader.applicationContext.startService(duangIntent); } else { ApplicationLoader.applicationContext.stopService(duangIntent); } } public static void toggleHideProxySponsorChannel() { hideProxySponsorChannel = !hideProxySponsorChannel; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("hideProxySponsorChannel", hideProxySponsorChannel); editor.commit(); } public static void toggleSaveCacheToPrivateDirectory() { saveCacheToPrivateDirectory = !saveCacheToPrivateDirectory; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("saveCacheToPrivateDirectory", saveCacheToPrivateDirectory); editor.commit(); } public static void toggleXmas() { xmas = !xmas; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("xmas", xmas); editor.commit(); } public static void toggleNewYear() { newYear = !newYear; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("newYear", newYear); editor.commit(); } public static void toggleNewYearEve() { newYearEve = !newYearEve; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("newYearEve", newYearEve); editor.commit(); } public static void toggleFireworks() { fireworks = !fireworks; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("fireworks", fireworks); editor.commit(); } }