aboutsummaryrefslogtreecommitdiffstats
path: root/app/src
diff options
context:
space:
mode:
authorRyan Hansberry <rhansby@gmail.com>2015-10-14 13:34:46 -0700
committerRyan Hansberry <rhansby@gmail.com>2015-10-14 15:47:14 -0700
commit0b1de8d696ed7abf64766fefe5700e750cd1f30e (patch)
tree5bff78c72f27e0d38217d30cecf423af81959bf3 /app/src
parent1af52a1af5effa89733ddb4925832f4ba14232cd (diff)
downloadconnectbot-0b1de8d696ed7abf64766fefe5700e750cd1f30e.tar.gz
connectbot-0b1de8d696ed7abf64766fefe5700e750cd1f30e.tar.bz2
connectbot-0b1de8d696ed7abf64766fefe5700e750cd1f30e.zip
Made TerminalTextViewOverlay a child view of TerminalView.
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/org/connectbot/ConsoleActivity.java7
-rw-r--r--app/src/main/java/org/connectbot/TerminalView.java23
-rw-r--r--app/src/main/java/org/connectbot/util/TerminalTextViewOverlay.java49
-rw-r--r--app/src/main/res/layout-v11/item_terminal.xml49
4 files changed, 32 insertions, 96 deletions
diff --git a/app/src/main/java/org/connectbot/ConsoleActivity.java b/app/src/main/java/org/connectbot/ConsoleActivity.java
index 711c89c..7241e0e 100644
--- a/app/src/main/java/org/connectbot/ConsoleActivity.java
+++ b/app/src/main/java/org/connectbot/ConsoleActivity.java
@@ -28,7 +28,6 @@ import org.connectbot.service.TerminalBridge;
import org.connectbot.service.TerminalKeyListener;
import org.connectbot.service.TerminalManager;
import org.connectbot.util.PreferenceConstants;
-import org.connectbot.util.TerminalTextViewOverlay;
import org.connectbot.util.TerminalViewPager;
import android.annotation.TargetApi;
@@ -1216,12 +1215,8 @@ public class ConsoleActivity extends AppCompatActivity implements BridgeDisconne
TextView terminalNameOverlay = (TextView) view.findViewById(R.id.terminal_name_overlay);
terminalNameOverlay.setText(bridge.host.getNickname());
- TerminalTextViewOverlay terminalTextViewOverlay =
- (TerminalTextViewOverlay) view.findViewById(R.id.terminal_text_overlay);
-
// and add our terminal view control, using index to place behind overlay
- final TerminalView terminal = new TerminalView(
- container.getContext(), bridge, terminalTextViewOverlay, pager);
+ final TerminalView terminal = new TerminalView(container.getContext(), bridge, pager);
terminal.setId(R.id.terminal_view);
view.addView(terminal, 0);
diff --git a/app/src/main/java/org/connectbot/TerminalView.java b/app/src/main/java/org/connectbot/TerminalView.java
index aec3bc5..c1e41ea 100644
--- a/app/src/main/java/org/connectbot/TerminalView.java
+++ b/app/src/main/java/org/connectbot/TerminalView.java
@@ -53,12 +53,13 @@ import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
-import android.view.ViewGroup.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
+import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
import android.widget.Toast;
import de.mud.terminal.VDUBuffer;
import de.mud.terminal.vt320;
@@ -70,7 +71,7 @@ import de.mud.terminal.vt320;
*
* @author jsharkey
*/
-public class TerminalView extends View implements FontSizeChangedListener {
+public class TerminalView extends FrameLayout implements FontSizeChangedListener {
private final Context context;
public final TerminalBridge bridge;
@@ -113,12 +114,13 @@ public class TerminalView extends View implements FontSizeChangedListener {
private static final String SCREENREADER_INTENT_ACTION = "android.accessibilityservice.AccessibilityService";
private static final String SCREENREADER_INTENT_CATEGORY = "android.accessibilityservice.category.FEEDBACK_SPOKEN";
- public TerminalView(Context context, TerminalBridge bridge, final TerminalTextViewOverlay terminalTextViewOverlay, TerminalViewPager pager) {
+ public TerminalView(Context context, TerminalBridge bridge, TerminalViewPager pager) {
super(context);
+ setWillNotDraw(false);
+
this.context = context;
this.bridge = bridge;
- this.terminalTextViewOverlay = terminalTextViewOverlay;
this.viewPager = pager;
setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
@@ -175,8 +177,11 @@ public class TerminalView extends View implements FontSizeChangedListener {
// connect our view up to the bridge
setOnKeyListener(bridge.getKeyHandler());
- if (terminalTextViewOverlay != null) {
- terminalTextViewOverlay.parent = this;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ terminalTextViewOverlay = new TerminalTextViewOverlay(context, this);
+ terminalTextViewOverlay.setLayoutParams(
+ new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ addView(terminalTextViewOverlay, 0);
// Once terminalTextViewOverlay is active, allow it to handle key events instead.
terminalTextViewOverlay.setOnKeyListener(bridge.getKeyHandler());
@@ -253,7 +258,9 @@ public class TerminalView extends View implements FontSizeChangedListener {
}
public void copyCurrentSelectionToClipboard() {
- terminalTextViewOverlay.copyCurrentSelectionToClipboard();
+ if (terminalTextViewOverlay != null) {
+ terminalTextViewOverlay.copyCurrentSelectionToClipboard();
+ }
}
@Override
@@ -474,8 +481,6 @@ public class TerminalView extends View implements FontSizeChangedListener {
canvas.restore();
}
}
-
- super.onDraw(canvas);
}
public void notifyUser(String message) {
diff --git a/app/src/main/java/org/connectbot/util/TerminalTextViewOverlay.java b/app/src/main/java/org/connectbot/util/TerminalTextViewOverlay.java
index be37524..a00ab47 100644
--- a/app/src/main/java/org/connectbot/util/TerminalTextViewOverlay.java
+++ b/app/src/main/java/org/connectbot/util/TerminalTextViewOverlay.java
@@ -26,10 +26,8 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Build;
-import android.support.annotation.Nullable;
import android.support.v4.view.MotionEventCompat;
import android.text.ClipboardManager;
-import android.util.AttributeSet;
import android.view.ActionMode;
import android.view.InputDevice;
import android.view.KeyEvent;
@@ -50,7 +48,7 @@ import de.mud.terminal.vt320;
*/
@TargetApi(11)
public class TerminalTextViewOverlay extends TextView {
- public TerminalView parent;
+ public TerminalView terminalView; // ryan: this name sucks
private String currentSelection = "";
private ActionMode selectionActionMode;
private ClipboardManager clipboard;
@@ -58,33 +56,20 @@ public class TerminalTextViewOverlay extends TextView {
private int oldBufferHeight = 0;
private int oldScrollY = -1;
- public TerminalTextViewOverlay(Context context) {
+ public TerminalTextViewOverlay(Context context, TerminalView terminalView) {
super(context);
- init();
- }
-
- public TerminalTextViewOverlay(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- init();
- }
- @TargetApi(21)
- public TerminalTextViewOverlay(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init();
- }
+ this.terminalView = terminalView;
+ clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
- private void init() {
setTextColor(Color.TRANSPARENT);
setTypeface(Typeface.MONOSPACE);
setTextIsSelectable(true);
setCustomSelectionActionModeCallback(new TextSelectionActionModeCallback());
-
- clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
}
public void refreshTextFromBuffer() {
- VDUBuffer vb = parent.bridge.getVDUBuffer();
+ VDUBuffer vb = terminalView.bridge.getVDUBuffer();
int numRows = vb.getBufferSize();
int numCols = vb.getColumns() - 1;
oldBufferHeight = numRows;
@@ -111,7 +96,7 @@ public class TerminalTextViewOverlay extends TextView {
* rest of the buffer.
*/
public void onBufferChanged() {
- VDUBuffer vb = parent.bridge.getVDUBuffer();
+ VDUBuffer vb = terminalView.bridge.getVDUBuffer();
int numRows = vb.getBufferSize();
int numNewRows = numRows - oldBufferHeight;
@@ -161,7 +146,7 @@ public class TerminalTextViewOverlay extends TextView {
if (clipboard.hasText()) {
clip = clipboard.getText().toString();
}
- parent.bridge.injectString(clip);
+ terminalView.bridge.injectString(clip);
}
@Override
@@ -176,7 +161,7 @@ public class TerminalTextViewOverlay extends TextView {
public void scrollTo(int x, int y) {
int lineMultiple = y / getLineHeight();
- TerminalBridge bridge = parent.bridge;
+ TerminalBridge bridge = terminalView.bridge;
bridge.buffer.setWindowBase(lineMultiple);
super.scrollTo(0, lineMultiple * getLineHeight());
@@ -192,12 +177,12 @@ public class TerminalTextViewOverlay extends TextView {
// Mouse input is treated differently:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
MotionEventCompat.getSource(event) == InputDevice.SOURCE_MOUSE) {
- if (onMouseEvent(event, parent.bridge)) {
+ if (onMouseEvent(event, terminalView.bridge)) {
return true;
}
- parent.viewPager.setPagingEnabled(true);
+ terminalView.viewPager.setPagingEnabled(true);
} else {
- parent.onTouchEvent(event);
+ terminalView.onTouchEvent(event);
}
super.onTouchEvent(event);
@@ -214,11 +199,11 @@ public class TerminalTextViewOverlay extends TextView {
// Process scroll wheel movement:
float yDistance = MotionEventCompat.getAxisValue(event, MotionEvent.AXIS_VSCROLL);
- vt320 vtBuffer = (vt320) parent.bridge.buffer;
+ vt320 vtBuffer = (vt320) terminalView.bridge.buffer;
boolean mouseReport = vtBuffer.isMouseReportEnabled();
if (mouseReport) {
- int row = (int) Math.floor(event.getY() / parent.bridge.charHeight);
- int col = (int) Math.floor(event.getX() / parent.bridge.charWidth);
+ int row = (int) Math.floor(event.getY() / terminalView.bridge.charHeight);
+ int col = (int) Math.floor(event.getX() / terminalView.bridge.charWidth);
vtBuffer.mouseWheel(
yDistance > 0,
@@ -282,12 +267,12 @@ public class TerminalTextViewOverlay extends TextView {
currentSelection = getText().toString().substring(selectionStart, selectionEnd);
}
} else if (event.getAction() == MotionEvent.ACTION_DOWN) {
- parent.viewPager.setPagingEnabled(false);
+ terminalView.viewPager.setPagingEnabled(false);
vtBuffer.mousePressed(
col, row, mouseEventToJavaModifiers(event));
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
- parent.viewPager.setPagingEnabled(true);
+ terminalView.viewPager.setPagingEnabled(true);
vtBuffer.mouseReleased(col, row);
return true;
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
@@ -349,7 +334,7 @@ public class TerminalTextViewOverlay extends TextView {
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
- return parent.onCreateInputConnection(outAttrs);
+ return terminalView.onCreateInputConnection(outAttrs);
}
private class TextSelectionActionModeCallback implements ActionMode.Callback {
diff --git a/app/src/main/res/layout-v11/item_terminal.xml b/app/src/main/res/layout-v11/item_terminal.xml
deleted file mode 100644
index 25c3c1c..0000000
--- a/app/src/main/res/layout-v11/item_terminal.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * ConnectBot: simple, powerful, open-source SSH client for Android
- * Copyright 2007 Kenny Root, Jeffrey Sharkey
- *
- * 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.
- */
--->
-
-<RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
-
- <TextView
- android:id="@+id/terminal_name_overlay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:background="#aa000000"
- android:padding="10dip"
- android:textAppearance="?android:attr/textAppearanceLarge"
- />
-
- <org.connectbot.util.TerminalTextViewOverlay
- android:id="@+id/terminal_text_overlay"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_centerInParent="true"
- android:background="@android:color/transparent"
- android:isScrollContainer="false"
- android:ellipsize="end"
- tools:ignore="InconsistentLayout"
- />
-
-</RelativeLayout>