package com.stardust.scriptdroid; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import com.stardust.autojs.runtime.api.AutomatorConfig; import com.stardust.automator.AccessibilityEventCommandHost; import com.stardust.scriptdroid.autojs.AutoJs; import org.mozilla.javascript.tools.debugger.Dim; import org.mozilla.javascript.tools.debugger.GuiCallback; /** * Created by Stardust on 2017/1/31. */ public class Pref { private static final SharedPreferences DISPOSABLE_BOOLEAN = App.getApp().getSharedPreferences("DISPOSABLE_BOOLEAN", Context.MODE_PRIVATE); private static final String KEY_SERVER_ADDRESS = "Still love you...17.5.14"; private static final String KEY_SHOULD_SHOW_ANNUNCIATION = "Sing about all the things you forgot, things you are not"; private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(getString(R.string.key_run_mode))) { AutoJs.getInstance().getCommandHost().setRunMode(getRunModeFromValue(sharedPreferences.getString(key, null))); } else if (key.equals(getString(R.string.key_guard_mode))) { AutomatorConfig.setIsUnintendedGuardEnabled(sharedPreferences.getBoolean(getString(R.string.key_guard_mode), false)); } } }; static { AutomatorConfig.setIsUnintendedGuardEnabled(def().getBoolean(getString(R.string.key_guard_mode), false)); } private static int getRunModeFromValue(String value) { if (value == null) return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL; switch (value) { case "KEY_THREAD_POOL": return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL; case "KEY_NEW_THREAD_EVERY_TIME": return AccessibilityEventCommandHost.RUN_MODE_NEW_THREAD_EVERY_TIME; default: return AccessibilityEventCommandHost.RUN_MODE_SINGLE_THREAD; } } private static SharedPreferences def() { return PreferenceManager.getDefaultSharedPreferences(App.getApp()); } private static boolean getDisposableBoolean(String key, boolean defaultValue) { boolean b = DISPOSABLE_BOOLEAN.getBoolean(key, defaultValue); if (b == defaultValue) { DISPOSABLE_BOOLEAN.edit().putBoolean(key, !defaultValue).apply(); } return b; } public static boolean isFirstGoToAccessibilitySetting() { return getDisposableBoolean("I miss you so much ...", true); } public static int oldVersion() { return 0; } public static boolean isRecordVolumeControlEnable() { return def().getBoolean(getString(R.string.key_use_volume_control_record), false); } public static boolean isRunningVolumeControlEnabled() { return def().getBoolean(getString(R.string.key_use_volume_control_running), false); } public static String getStartRecordTrigger() { return def().getString(getString(R.string.key_start_record_trigger), null); } public static String getStopRecordTrigger() { return def().getString(getString(R.string.key_stop_record_trigger), null); } public static boolean hasRecordTrigger() { String startTrigger = getStartRecordTrigger(); String stopTrigger = getStartRecordTrigger(); return startTrigger != null && !startTrigger.equals("NONE") && stopTrigger != null && !startTrigger.equals("NONE"); } public static boolean enableAccessibilityServiceByRoot() { return def().getBoolean(getString(R.string.key_enable_accessibility_service_by_root), false); } private static String getString(int id) { return App.getResString(id); } public static int getMaxTextLengthForCodeCompletion() { try { return Integer.parseInt(def().getString(App.getApp().getString(R.string.key_max_length_for_code_completion), "2000")); } catch (NumberFormatException e) { return 2000; } } public static boolean isFirstUsing() { return getDisposableBoolean("isFirstUsing", true); } static { def().registerOnSharedPreferenceChangeListener(onSharedPreferenceChangeListener); } public static boolean isEditActivityFirstUsing() { return getDisposableBoolean("Still Love Eating 17.4.6", true); } public static String getServerAddressOrDefault(String defaultAddress) { return def().getString(KEY_SERVER_ADDRESS, defaultAddress); } public static void saveServerAddress(String address) { def().edit().putString(KEY_SERVER_ADDRESS, address).apply(); } public static boolean shouldShowAnnunciation() { return getDisposableBoolean(KEY_SHOULD_SHOW_ANNUNCIATION, true); } }