diff options
Diffstat (limited to 'src/com/android/terminal/TerminalView.java')
-rw-r--r-- | src/com/android/terminal/TerminalView.java | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/src/com/android/terminal/TerminalView.java b/src/com/android/terminal/TerminalView.java index 07d9e7b..c24bbfb 100644 --- a/src/com/android/terminal/TerminalView.java +++ b/src/com/android/terminal/TerminalView.java @@ -19,11 +19,15 @@ package com.android.terminal; import static com.android.terminal.Terminal.TAG; import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.FontMetrics; import android.graphics.Typeface; import android.os.Parcelable; +import android.preference.PreferenceManager; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.View; @@ -86,12 +90,11 @@ public class TerminalView extends ListView { // Positions of each possible cell // TODO: make sure this works with surrogate pairs pos = new float[MAX_RUN_LENGTH * 2]; - setTextSize(20); + textPaint.setTypeface(Typeface.MONOSPACE); + textPaint.setAntiAlias(true); } public void setTextSize(float textSize) { - textPaint.setTypeface(Typeface.MONOSPACE); - textPaint.setAntiAlias(true); textPaint.setTextSize(textSize); // Read metrics to get exact pixel dimensions @@ -111,9 +114,25 @@ public class TerminalView extends ListView { } } + private void toggleFullscreenMode() { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); + boolean oldVal = sp.getBoolean(TerminalSettingsActivity.KEY_FULLSCREEN_MODE, false); + SharedPreferences.Editor editor = sp.edit(); + editor.putBoolean(TerminalSettingsActivity.KEY_FULLSCREEN_MODE, !oldVal); + editor.commit(); + TerminalActivity activity = (TerminalActivity) getContext(); + activity.updatePreferences(); + } + private final AdapterView.OnItemClickListener mClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { + // Clicking on top half of view toggles fullscreen mode + if (pos - mScrollRows < mRows / 2) { + toggleFullscreenMode(); + return; + } + // Clicking on bottom half of view shows soft keyboard if (parent.requestFocus()) { InputMethodManager imm = (InputMethodManager) parent.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(parent, InputMethodManager.SHOW_IMPLICIT); @@ -131,6 +150,11 @@ public class TerminalView extends ListView { } }; + private final float PT_PER_INCH = 72.0f; + private float ptToDp(float pt) { + return (pt / PT_PER_INCH) * (float)DisplayMetrics.DENSITY_DEFAULT; + } + public TerminalView(Context context) { this(context, null); } @@ -283,7 +307,7 @@ public class TerminalView extends ListView { term.setClient(mClient); mTermKeys.setTerminal(term); - mMetrics.cursorPaint.setColor(0xf0f0f0); + updatePreferences(); // Populate any current settings mRows = mTerm.getRows(); @@ -336,4 +360,28 @@ public class TerminalView extends ListView { } }; } + + public void updatePreferences() { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); + String val; + + val = sp.getString(TerminalSettingsActivity.KEY_FONT_SIZE, "12"); + mMetrics.setTextSize(ptToDp(Float.parseFloat(val))); + + val = sp.getString(TerminalSettingsActivity.KEY_TEXT_COLORS, "black/white"); + int fg = 0x000000; + int bg = 0xffffff; + int idx = val.indexOf('/'); + if (idx != -1) { + try { + fg = Color.parseColor(val.substring(0, idx)); + bg = Color.parseColor(val.substring(idx+1)); + } + catch (IllegalArgumentException e) { + // Ignore + } + } + mTerm.setColors(fg, bg); + mMetrics.cursorPaint.setColor(fg); + } } |