summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Marshall <tdm@cyngn.com>2014-12-31 10:51:01 -0800
committerTom Marshall <tdm@cyngn.com>2014-12-31 10:51:01 -0800
commitbb6bb3f5e7e67d1ed734c3abc0d9303a6ed63021 (patch)
tree1162ee3fc0f9457262fc135cd291f51434124760
parentd3090cb2c2ca1d6a2441c3bd1413da129ceadc38 (diff)
downloadandroid_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.java28
-rw-r--r--src/com/android/terminal/TerminalLineView.java12
-rw-r--r--src/com/android/terminal/TerminalView.java8
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();