mirror of https://github.com/termux/termux-app
175 lines
6.4 KiB
Java
175 lines
6.4 KiB
Java
package com.termux.shared.settings.preferences;
|
|
|
|
import android.content.Context;
|
|
import android.content.SharedPreferences;
|
|
import android.util.TypedValue;
|
|
|
|
import com.termux.shared.termux.TermuxConstants;
|
|
import com.termux.shared.logger.Logger;
|
|
import com.termux.shared.termux.TermuxUtils;
|
|
import com.termux.shared.data.DataUtils;
|
|
import com.termux.shared.settings.preferences.TermuxPreferenceConstants.TERMUX_APP;
|
|
|
|
import javax.annotation.Nonnull;
|
|
|
|
public class TermuxAppSharedPreferences {
|
|
|
|
private final Context mContext;
|
|
private final SharedPreferences mSharedPreferences;
|
|
|
|
|
|
private int MIN_FONTSIZE;
|
|
private int MAX_FONTSIZE;
|
|
private int DEFAULT_FONTSIZE;
|
|
|
|
private static final String LOG_TAG = "TermuxAppSharedPreferences";
|
|
|
|
public TermuxAppSharedPreferences(@Nonnull Context context) {
|
|
// We use the default context if failed to get termux package context
|
|
mContext = DataUtils.getDefaultIfNull(TermuxUtils.getTermuxPackageContext(context), context);
|
|
mSharedPreferences = getPrivateSharedPreferences(mContext);
|
|
|
|
setFontVariables(context);
|
|
}
|
|
|
|
private static SharedPreferences getPrivateSharedPreferences(Context context) {
|
|
return SharedPreferenceUtils.getPrivateSharedPreferences(context, TermuxConstants.TERMUX_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION);
|
|
}
|
|
|
|
|
|
|
|
public boolean getShowTerminalToolbar() {
|
|
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_SHOW_TERMINAL_TOOLBAR, TERMUX_APP.DEFAULT_VALUE_SHOW_TERMINAL_TOOLBAR);
|
|
}
|
|
|
|
public void setShowTerminalToolbar(boolean value) {
|
|
SharedPreferenceUtils.setBoolean(mSharedPreferences, TERMUX_APP.KEY_SHOW_TERMINAL_TOOLBAR, value, false);
|
|
}
|
|
|
|
public boolean toogleShowTerminalToolbar() {
|
|
boolean currentValue = getShowTerminalToolbar();
|
|
setShowTerminalToolbar(!currentValue);
|
|
return !currentValue;
|
|
}
|
|
|
|
|
|
|
|
public boolean getSoftKeyboardEnabled() {
|
|
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_SOFT_KEYBOARD_ENABLED, TERMUX_APP.DEFAULT_VALUE_KEY_SOFT_KEYBOARD_ENABLED);
|
|
}
|
|
|
|
public void setSoftKeyboardEnabled(boolean value) {
|
|
SharedPreferenceUtils.setBoolean(mSharedPreferences, TERMUX_APP.KEY_SOFT_KEYBOARD_ENABLED, value, false);
|
|
}
|
|
|
|
|
|
|
|
public boolean getKeepScreenOn() {
|
|
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_KEEP_SCREEN_ON, TERMUX_APP.DEFAULT_VALUE_KEEP_SCREEN_ON);
|
|
}
|
|
|
|
public void setKeepScreenOn(boolean value) {
|
|
SharedPreferenceUtils.setBoolean(mSharedPreferences, TERMUX_APP.KEY_KEEP_SCREEN_ON, value, false);
|
|
}
|
|
|
|
|
|
|
|
private void setFontVariables(Context context) {
|
|
float dipInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, context.getResources().getDisplayMetrics());
|
|
|
|
// This is a bit arbitrary and sub-optimal. We want to give a sensible default for minimum font size
|
|
// to prevent invisible text due to zoom be mistake:
|
|
MIN_FONTSIZE = (int) (4f * dipInPixels);
|
|
|
|
// http://www.google.com/design/spec/style/typography.html#typography-line-height
|
|
int defaultFontSize = Math.round(12 * dipInPixels);
|
|
// Make it divisible by 2 since that is the minimal adjustment step:
|
|
if (defaultFontSize % 2 == 1) defaultFontSize--;
|
|
|
|
DEFAULT_FONTSIZE = defaultFontSize;
|
|
|
|
MAX_FONTSIZE = 256;
|
|
}
|
|
|
|
public int getFontSize() {
|
|
int fontSize = SharedPreferenceUtils.getIntStoredAsString(mSharedPreferences, TERMUX_APP.KEY_FONTSIZE, DEFAULT_FONTSIZE);
|
|
return DataUtils.clamp(fontSize, MIN_FONTSIZE, MAX_FONTSIZE);
|
|
}
|
|
|
|
public void setFontSize(int value) {
|
|
SharedPreferenceUtils.setIntStoredAsString(mSharedPreferences, TERMUX_APP.KEY_FONTSIZE, value, false);
|
|
}
|
|
|
|
public void changeFontSize(boolean increase) {
|
|
|
|
int fontSize = getFontSize();
|
|
|
|
fontSize += (increase ? 1 : -1) * 2;
|
|
fontSize = Math.max(MIN_FONTSIZE, Math.min(fontSize, MAX_FONTSIZE));
|
|
|
|
setFontSize(fontSize);
|
|
}
|
|
|
|
|
|
|
|
public String getCurrentSession() {
|
|
return SharedPreferenceUtils.getString(mSharedPreferences, TERMUX_APP.KEY_CURRENT_SESSION, null);
|
|
}
|
|
|
|
public void setCurrentSession(String value) {
|
|
SharedPreferenceUtils.setString(mSharedPreferences, TERMUX_APP.KEY_CURRENT_SESSION, value, false);
|
|
}
|
|
|
|
|
|
|
|
public int getLogLevel() {
|
|
return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_APP.KEY_LOG_LEVEL, Logger.DEFAULT_LOG_LEVEL);
|
|
}
|
|
|
|
public void setLogLevel(Context context, int logLevel) {
|
|
logLevel = Logger.setLogLevel(context, logLevel);
|
|
SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_APP.KEY_LOG_LEVEL, logLevel, false);
|
|
}
|
|
|
|
|
|
|
|
public int getLastNotificationId() {
|
|
return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_APP.KEY_LAST_NOTIFICATION_ID, TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID);
|
|
}
|
|
|
|
public void setLastNotificationId(int notificationId) {
|
|
SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_APP.KEY_LAST_NOTIFICATION_ID, notificationId, false);
|
|
}
|
|
|
|
|
|
|
|
public boolean getTerminalViewKeyLoggingEnabled() {
|
|
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_TERMINAL_VIEW_KEY_LOGGING_ENABLED, TERMUX_APP.DEFAULT_VALUE_TERMINAL_VIEW_KEY_LOGGING_ENABLED);
|
|
}
|
|
|
|
public void setTerminalViewKeyLoggingEnabled(boolean value) {
|
|
SharedPreferenceUtils.setBoolean(mSharedPreferences, TERMUX_APP.KEY_TERMINAL_VIEW_KEY_LOGGING_ENABLED, value, false);
|
|
}
|
|
|
|
|
|
|
|
public boolean getPluginErrorNotificationsEnabled() {
|
|
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_PLUGIN_ERROR_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_PLUGIN_ERROR_NOTIFICATIONS_ENABLED);
|
|
}
|
|
|
|
public void setPluginErrorNotificationsEnabled(boolean value) {
|
|
SharedPreferenceUtils.setBoolean(mSharedPreferences, TERMUX_APP.KEY_PLUGIN_ERROR_NOTIFICATIONS_ENABLED, value, false);
|
|
}
|
|
|
|
|
|
|
|
public boolean getCrashReportNotificationsEnabled() {
|
|
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_CRASH_REPORT_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_CRASH_REPORT_NOTIFICATIONS_ENABLED);
|
|
}
|
|
|
|
public void setCrashReportNotificationsEnabled(boolean value) {
|
|
SharedPreferenceUtils.setBoolean(mSharedPreferences, TERMUX_APP.KEY_CRASH_REPORT_NOTIFICATIONS_ENABLED, value, false);
|
|
}
|
|
|
|
}
|