diff options
author | Tom Marshall <tdm@cyngn.com> | 2014-12-31 10:51:01 -0800 |
---|---|---|
committer | Tom Marshall <tdm@cyngn.com> | 2014-12-31 10:51:01 -0800 |
commit | bb6bb3f5e7e67d1ed734c3abc0d9303a6ed63021 (patch) | |
tree | 1162ee3fc0f9457262fc135cd291f51434124760 | |
parent | d3090cb2c2ca1d6a2441c3bd1413da129ceadc38 (diff) | |
download | android_packages_apps_Terminal-bb6bb3f5e7e67d1ed734c3abc0d9303a6ed63021.tar.gz android_packages_apps_Terminal-bb6bb3f5e7e67d1ed734c3abc0d9303a6ed63021.tar.bz2 android_packages_apps_Terminal-bb6bb3f5e7e67d1ed734c3abc0d9303a6ed63021.zip |
Show cursor
Change-Id: I31e99d20f3c0fa887f057b352e69969cb805016e
-rw-r--r-- | src/com/android/terminal/Terminal.java | 28 | ||||
-rw-r--r-- | src/com/android/terminal/TerminalLineView.java | 12 | ||||
-rw-r--r-- | src/com/android/terminal/TerminalView.java | 8 |
3 files changed, 47 insertions, 1 deletions
diff --git a/src/com/android/terminal/Terminal.java b/src/com/android/terminal/Terminal.java index 7aa7949..b6e981e 100644 --- a/src/com/android/terminal/Terminal.java +++ b/src/com/android/terminal/Terminal.java @@ -58,6 +58,7 @@ public class Terminal { public void onDamage(int startRow, int endRow, int startCol, int endCol); public void onMoveRect(int destStartRow, int destEndRow, int destStartCol, int destEndCol, int srcStartRow, int srcEndRow, int srcStartCol, int srcEndCol); + public void onMoveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible); public void onBell(); } @@ -68,6 +69,10 @@ public class Terminal { private TerminalClient mClient; + private boolean mCursorVisible; + private int mCursorRow; + private int mCursorCol; + private final TerminalCallbacks mCallbacks = new TerminalCallbacks() { @Override public int damage(int startRow, int endRow, int startCol, int endCol) { @@ -88,6 +93,17 @@ public class Terminal { } @Override + public int moveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible) { + mCursorVisible = (visible != 0); + mCursorRow = posRow; + mCursorCol = posCol; + if (mClient != null) { + mClient.onMoveCursor(posRow, posCol, oldPosRow, oldPosCol, visible); + } + return 1; + } + + @Override public int bell() { if (mClient != null) { mClient.onBell(); @@ -149,6 +165,18 @@ public class Terminal { } } + public boolean getCursorVisible() { + return mCursorVisible; + } + + public int getCursorRow() { + return mCursorRow; + } + + public int getCursorCol() { + return mCursorCol; + } + public String getTitle() { // TODO: hook up to title passed through termprop return mTitle; diff --git a/src/com/android/terminal/TerminalLineView.java b/src/com/android/terminal/TerminalLineView.java index fff1301..2c6ccc0 100644 --- a/src/com/android/terminal/TerminalLineView.java +++ b/src/com/android/terminal/TerminalLineView.java @@ -61,7 +61,8 @@ public class TerminalLineView extends View { final TerminalMetrics m = mMetrics; - for (int col = 0; col < cols;) { + int col; + for (col = 0; col < cols;) { mTerm.getCellRun(row, col, m.run); m.bgPaint.setColor(m.run.bg); @@ -81,5 +82,14 @@ public class TerminalLineView extends View { col += m.run.colSize; } + + if (mTerm.getCursorVisible() && mTerm.getCursorRow() == row) { + col = mTerm.getCursorCol(); + canvas.save(); + canvas.translate(col * m.charWidth, 0); + canvas.drawRect(0, 0, m.charWidth, m.charHeight, m.cursorPaint); + canvas.restore(); + } + } } diff --git a/src/com/android/terminal/TerminalView.java b/src/com/android/terminal/TerminalView.java index f6794b7..07d9e7b 100644 --- a/src/com/android/terminal/TerminalView.java +++ b/src/com/android/terminal/TerminalView.java @@ -68,6 +68,7 @@ public class TerminalView extends ListView { final Paint bgPaint = new Paint(); final Paint textPaint = new Paint(); + final Paint cursorPaint = new Paint(); /** Run of cells used when drawing */ final CellRun run; @@ -202,6 +203,11 @@ public class TerminalView extends ListView { } @Override + public void onMoveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible) { + post(mDamageRunnable); + } + + @Override public void onBell() { Log.i(TAG, "DING!"); } @@ -277,6 +283,8 @@ public class TerminalView extends ListView { term.setClient(mClient); mTermKeys.setTerminal(term); + mMetrics.cursorPaint.setColor(0xf0f0f0); + // Populate any current settings mRows = mTerm.getRows(); mCols = mTerm.getCols(); |