/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.spartacusrex.spartacuside.util;
import android.content.SharedPreferences;
import android.view.KeyEvent;
/**
* Terminal emulator settings
*/
public class TermSettings {
private SharedPreferences mPrefs;
private int mStatusBar = 1;
private int mCursorStyle = 0;
private int mCursorBlink = 0;
private int mFontSize = 12;
private int mColorId = 1;
private int mControlKeyId = 5; // Default to Volume Down
private int mFnKeyId = 4; // Default to Volume Up
private int mUseCookedIME = 0;
private String mShell;
private String mInitialCommand;
private static final String STATUSBAR_KEY = "statusbar";
private static final String CURSORSTYLE_KEY = "cursorstyle";
private static final String CURSORBLINK_KEY = "cursorblink";
private static final String FONTSIZE_KEY = "fontsize";
private static final String COLOR_KEY = "color";
private static final String CONTROLKEY_KEY = "controlkey";
private static final String FNKEY_KEY = "fnkey";
private static final String IME_KEY = "ime";
private static final String SHELL_KEY = "shell";
private static final String INITIALCOMMAND_KEY = "initialcommand";
public static final int WHITE = 0xffffffff;
public static final int BLACK = 0xff000000;
public static final int BLUE = 0xff344ebd;
public static final int GREEN = 0xff00ff00;
public static final int AMBER = 0xffffb651;
public static final int RED = 0xffff0113;
public static final int[][] COLOR_SCHEMES = {{BLACK, WHITE}, {WHITE, BLACK}, {WHITE, BLUE}, {GREEN, BLACK}, {AMBER, BLACK}, {RED, BLACK}};
/** An integer not in the range of real key codes. */
public static final int KEYCODE_NONE = -1;
public static final int CONTROL_KEY_ID_NONE = 7;
public static final int[] CONTROL_KEY_SCHEMES = {
KeyEvent.KEYCODE_DPAD_CENTER,
KeyEvent.KEYCODE_AT,
KeyEvent.KEYCODE_ALT_LEFT,
KeyEvent.KEYCODE_ALT_RIGHT,
KeyEvent.KEYCODE_VOLUME_UP,
KeyEvent.KEYCODE_VOLUME_DOWN,
KeyEvent.KEYCODE_CAMERA,
KEYCODE_NONE
};
public static final int FN_KEY_ID_NONE = 7;
public static final int[] FN_KEY_SCHEMES = {
KeyEvent.KEYCODE_DPAD_CENTER,
KeyEvent.KEYCODE_AT,
KeyEvent.KEYCODE_ALT_LEFT,
KeyEvent.KEYCODE_ALT_RIGHT,
KeyEvent.KEYCODE_VOLUME_UP,
KeyEvent.KEYCODE_VOLUME_DOWN,
KeyEvent.KEYCODE_CAMERA,
KEYCODE_NONE
};
public TermSettings(SharedPreferences prefs) {
readPrefs(prefs);
}
public void readPrefs(SharedPreferences prefs) {
mPrefs = prefs;
mStatusBar = readIntPref(STATUSBAR_KEY, mStatusBar, 1);
// mCursorStyle = readIntPref(CURSORSTYLE_KEY, mCursorStyle, 2);
// mCursorBlink = readIntPref(CURSORBLINK_KEY, mCursorBlink, 1);
mFontSize = readIntPref(FONTSIZE_KEY, mFontSize, 20);
mColorId = readIntPref(COLOR_KEY, mColorId, COLOR_SCHEMES.length - 1);
mControlKeyId = readIntPref(CONTROLKEY_KEY, mControlKeyId,
CONTROL_KEY_SCHEMES.length - 1);
mFnKeyId = readIntPref(FNKEY_KEY, mFnKeyId,
FN_KEY_SCHEMES.length - 1);
mUseCookedIME = readIntPref(IME_KEY, mUseCookedIME, 1);
mShell = readStringPref(SHELL_KEY, mShell);
mInitialCommand = readStringPref(INITIALCOMMAND_KEY, mInitialCommand);
mPrefs = null; // we leak a Context if we hold on to this
}
private int readIntPref(String key, int defaultValue, int maxValue) {
int val;
try {
val = Integer.parseInt(
mPrefs.getString(key, Integer.toString(defaultValue)));
} catch (NumberFormatException e) {
val = defaultValue;
}
val = Math.max(0, Math.min(val, maxValue));
return val;
}
private String readStringPref(String key, String defaultValue) {
return mPrefs.getString(key, defaultValue);
}
public boolean showStatusBar() {
return (mStatusBar != 0);
}
public int getCursorStyle() {
return mCursorStyle;
}
public int getCursorBlink() {
return mCursorBlink;
}
public int getFontSize() {
return mFontSize;
}
public int[] getColorScheme() {
return COLOR_SCHEMES[mColorId];
}
public int getControlKeyId() {
return mControlKeyId;
}
public int getFnKeyId() {
return mFnKeyId;
}
public int getControlKeyCode() {
return CONTROL_KEY_SCHEMES[mControlKeyId];
}
public int getFnKeyCode() {
return FN_KEY_SCHEMES[mFnKeyId];
}
public boolean useCookedIME() {
return (mUseCookedIME != 0);
}
public String getShell() {
return mShell;
}
public String getInitialCommand() {
return mInitialCommand;
}
}