diff options
Diffstat (limited to 'app/src/main')
90 files changed, 1380 insertions, 1127 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 76c421f..f43a428 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,7 @@ android:versionCode="376" android:installLocation="auto"> - <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="4" /> + <uses-sdk /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.VIBRATE" /> @@ -64,17 +64,21 @@ <activity android:name=".HostEditorActivity" android:configChanges="keyboardHidden|orientation" /> <activity android:name=".PortForwardListActivity" android:configChanges="keyboardHidden|orientation" /> <activity android:name=".SettingsActivity" android:configChanges="keyboardHidden|orientation" /> - <activity android:name=".WizardActivity" android:configChanges="keyboardHidden|orientation" /> <activity android:name=".HelpActivity" android:configChanges="keyboardHidden|orientation" /> <activity android:name=".HelpTopicActivity" android:configChanges="keyboardHidden|orientation" /> <activity android:name=".ColorsActivity" android:configChanges="keyboardHidden|orientation" /> + <activity android:name=".EulaActivity" android:parentActivityName=".HelpActivity" + android:configChanges="keyboardHidden|orientation" > + <meta-data android:name="android.support.PARENT_ACTIVITY" + android:value="org.connectbot.HelpActivity" /> + </activity> <service android:name="org.connectbot.service.TerminalManager" android:configChanges="keyboardHidden|orientation" android:description="@string/service_desc" /> <activity android:name=".ConsoleActivity" android:configChanges="keyboardHidden|orientation" - android:theme="@style/NoTitle" android:windowSoftInputMode="stateAlwaysVisible|adjustResize" + android:theme="@style/Theme.AppCompat" android:windowSoftInputMode="stateAlwaysVisible|adjustResize" android:launchMode="singleTop" android:hardwareAccelerated="false"> <intent-filter> <action android:name="android.intent.action.VIEW" /> diff --git a/app/src/main/assets/help/Hints.html b/app/src/main/assets/help/Hints.html index 37583db..4e07792 100644 --- a/app/src/main/assets/help/Hints.html +++ b/app/src/main/assets/help/Hints.html @@ -1,13 +1,26 @@ <html> <body style="background-color: #000; color: #fff"> -<h2>Helpful hints</h2> - -<p>When you have multiple sessions open, you can 'pan' between them by swiping your finger left-to-right or right-to-left over the screen.</p> - +<h2><a name="Shortcuts" />Host Shortcuts</h2> <p>Long-press on your Android desktop to create direct shortcuts to frequently-used SSH hosts.</p> -<p>Slide your finger up/down on the right-half of the terminal screen to look at the scrollback history. Slide up/down on the left-half to send the page up/down keys.</p> +<h2><a name="Page_Up_/_Page_Down" />Page Up / Page Down</h2> +<p>Swiping your finger up and down on the left third of the screen + will send a page up and page down key to the remote host. Many programs + map this to scrolling back into history such as irssi or tinyfugue.</p> +<p><img src="http://connectbot.googlecode.com/svn/trunk/www/gesture-pgup.png" />Page Up gesture</p> +<p><img src="http://connectbot.googlecode.com/svn/trunk/www/gesture-pgdn.png" />Page Down gesture</p> + +<h2><a name="Scroll_back_/_Scroll_forward" />Scroll back / Scroll forward</h2> +<p>Swiping your finger up on the right side of the screen allows you to scroll backward and forward + in the local terminal buffer history.</p> +<p><img src="http://connectbot.googlecode.com/svn/trunk/www/gesture-scrollback.png" />Scroll back gesture</p> +<p><img src="http://connectbot.googlecode.com/svn/trunk/www/gesture-scrollforward.png" />Scroll forward gesture</p> + +<h2><a name="Switching_hosts" />Switching hosts</h2> +<p>Swiping your finger from one side of the screen to the other will switch between currently connected hosts.</p> +<p><img src="http://connectbot.googlecode.com/svn/trunk/www/gesture-hostprev.png" />Previous host gesture</p> +<p><img src="http://connectbot.googlecode.com/svn/trunk/www/gesture-hostnext.png" />Next host gesture</p> </body> </html>
\ No newline at end of file diff --git a/app/src/main/assets/help/PhysicalKeyboard.html b/app/src/main/assets/help/PhysicalKeyboard.html deleted file mode 100644 index 4ff3753..0000000 --- a/app/src/main/assets/help/PhysicalKeyboard.html +++ /dev/null @@ -1,62 +0,0 @@ -<html> -<body style="background-color: #000; color: #fff"> - -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/keyboard.jpg" /></p> -<p>Here are some keyboard shortcuts available when a <strong>hardware -keyboard</strong> is present. If you're using a phone where the main input -type is a <strong>virtual keyboard</strong>, please see the VirtualKeyboard help topic. -</p> -<p><strong>Note:</strong> the side that <strong>shift</strong>, <strong>alt</strong>, -<strong>slash</strong>, and <strong>tab</strong> uses can be changed in -preferences between left, right, and disabled.</p> -<ul> - <li>Control key (CTRL)</li> - <blockquote>Pressing once on the trackball will toggle on - <strong>control</strong> for the next character typed. The cursor will - indicate this state with a < symbol. Note that pressing the - trackball again will send an <strong>escape</strong> key.</blockquote> -</ul> -<ul> - <li>Escape (ESC)</li> - <blockquote>Pressing twice on the trackball will send <strong>escape</strong> - key. Note that some other terminal emulators map pressing <strong>ALT-<i>key</i></strong> - to <strong>escape + <i>key</i></strong>.</blockquote> -</ul> -<ul> - <li>Shift</li> - <blockquote>Pressing the <strong>shift</strong> (up arrow) - key once will make the next key typed its uppercase variant according - to the keyboard layout. This state is indicated with an outline of a - triangle on the top of the cursor. Pressing it twice will turn on <strong>shift - lock</strong> which is indicated by a solid triangle on the top of the cursor.</blockquote> -</ul> -<ul> - <li>Alt</li> - <blockquote>Pressing the <strong>Alt</strong> key once - will make the next key typed its symbol as indicated on the keyboard. - This state is indicated with the outline of a triangle on the bottom of - the cursor. Pressing it twice will turn on <strong>alt lock</strong> - which is indicated by a solid triangle on the bottom of the cursor.</blockquote> -</ul> -<ul> - <li>Slash (opposite side Alt)</li> - <blockquote>The opposite side <strong>alt</strong> key can - be used as a shortcut for the forward slash / character. This aids in - quickly typing directories on the G1.</blockquote> -</ul> -<ul> - <li>Tab (opposite side Shift)</li> - <blockquote>The opposite side <strong>shift</strong> key - can be used as a shortcut for the <strong>tab</strong> key (CTRL-i) for - quick completion in many shells.</blockquote> -</ul> -<ul> - <li>Function keys (F1 through F10)</li> - <blockquote>Hold down the shift key and press numbers 1 - through 10 to send F1 through F10 respectively.</blockquote> -</ul> - - -</body> -</html> diff --git a/app/src/main/assets/help/ScreenGestures.html b/app/src/main/assets/help/ScreenGestures.html deleted file mode 100644 index 9332821..0000000 --- a/app/src/main/assets/help/ScreenGestures.html +++ /dev/null @@ -1,38 +0,0 @@ -<html> -<body style="background-color: #000; color: #fff"> - -<p>Gestures in ConnectBot allow a user to do several things for -which there's no keyboard equivalent. If the gestures seem -backward, then imagine that you're grabbing the text and moving it -with your finger.</p> -<h1><a name="Page_Up_/_Page_Down" />Page Up / Page Down</h1> -<p>Swiping your finger up and down on the left third of the screen -will send a page up and page down key to the remote host. Many programs -map this to scrolling back into history such as irssi or tinyfugue.</p> -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/gesture-pgup.png" /> -Page Up gesture</p> -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/gesture-pgdn.png" /> -Page Down gesture</p> -<h1><a name="Scroll_back_/_Scroll_forward" />Scroll back / Scroll -forward</h1> -<p>Swiping your finger up on the right side of the screen allows you -to scroll backward and forward in the local terminal buffer history.</p> -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/gesture-scrollback.png" /> -Scroll back gesture</p> -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/gesture-scrollforward.png" /> -Scroll forward gesture</p> -<h1><a name="Switching_hosts" />Switching hosts</h1> -<p>Swiping your finger from one side of the screen to the other will -switch between currently connected hosts.</p> -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/gesture-hostprev.png" /> -Previous host gesture</p> -<p><img - src="http://connectbot.googlecode.com/svn/trunk/www/gesture-hostnext.png" /> -Next host gesture</p> -</body> -</html>
\ No newline at end of file diff --git a/app/src/main/assets/help/VirtualKeyboard.html b/app/src/main/assets/help/VirtualKeyboard.html deleted file mode 100644 index 9788161..0000000 --- a/app/src/main/assets/help/VirtualKeyboard.html +++ /dev/null @@ -1,49 +0,0 @@ -<html> -<body style="background-color: #000; color: #fff"> - -<p><img src="http://connectbot.googlecode.com/svn/trunk/www/magic-cb-screen.png" width="100%" /></p> - -<h2>Caveats</h2> -<p>Since ConnectBot doesn't use any of the normal TextView -widgets, Android's IME structure isn't designed to directly -support it.</p> -<p>The best way to use Android with a virtual keyboard is in <strong>Portrait</strong> -mode. By default, ConnectBot is set to use <strong>Portrait</strong> -mode when no hardware keyboard is present. To change this setting, go to -<strong>Preferences</strong> from the <strong>Host List</strong>.</p> -<p>In <strong>Landscape</strong> mode, the Android virtual keyboard -(or other IMEs) will take up the entire screen. Android provides no way -for ConnectBot to resize the terminal view in <strong>Landscape</strong>. -However, you may use a <i>work-around</i>: <strong>Force Resize</strong> -to fit above the virtual keyboard if desired.</p> -<p>On devices without a hardware keyboard, you may press and hold -the <strong>MENU</strong> button to bring up the virtual keyboard. NOTE: -This applies to any program on the Android platform; it is not -ConnectBot specific.</p> -<h2>How to Enter Control, Alt, Escape, and Function Keys</h2> -<p>You can enter any key combination with ConnectBot and the virtual -keyboard, but you must know how keys are mapped on a normal console. For -instance, usually combinations of ALT+letter on a PC keyboard are -actually mapped to sending, sequentially, ESC key then the letter.</p> -<p>Note there are also screen gestures: see the ScreenGestures help topic.</a> -for <strong>Page Up</strong> and <strong>Page Down</strong>.</p> -<ul> - <li>Trackball: 1 press is <strong>CTRL</strong>, 2 presses sends <strong>ESC</strong> - </li> - <li><strong>Tab key</strong> = <strong>CTRL + i</strong></li> - <li><strong>Function key</strong> = <strong>CTRL + number</strong> - </li> -</ul> -<h2>Examples</h2> -<ul> - <li><strong>ESC</strong> = Press the trackball twice.</li> - <li><strong>ALT + Right Arrow</strong> = Press trackball twice - then move trackball to right.</li> - <li><strong>CTRL + A</strong> = Press trackball once then tap the - "A" key on the soft keyboard.</li> - <li><strong>F3</strong> = Press trackball once then tap the - "3" key on the soft keyboard.</li> -</ul> - -</body> -</html> diff --git a/app/src/main/java/de/mud/telnet/TelnetProtocolHandler.java b/app/src/main/java/de/mud/telnet/TelnetProtocolHandler.java index 74f08bb..a2a5d71 100644 --- a/app/src/main/java/de/mud/telnet/TelnetProtocolHandler.java +++ b/app/src/main/java/de/mud/telnet/TelnetProtocolHandler.java @@ -382,7 +382,7 @@ public abstract class TelnetProtocolHandler { if (b>=128) b=(byte)(b-256); if(debug > 2) { - Byte B = new Byte(b); + Byte B = Byte.valueOf(b); System.err.print("byte: " + B.intValue()+ " "); } switch (neg_state) { diff --git a/app/src/main/java/org/apache/harmony/niochar/charset/additional/IBM437.java b/app/src/main/java/org/apache/harmony/niochar/charset/additional/IBM437.java index d61ef59..2835d1b 100644 --- a/app/src/main/java/org/apache/harmony/niochar/charset/additional/IBM437.java +++ b/app/src/main/java/org/apache/harmony/niochar/charset/additional/IBM437.java @@ -53,7 +53,7 @@ public class IBM437 extends Charset { } - private native int nDecode(char[] array, int arrPosition, int remaining, long outAddr, int absolutePos); +// private native int nDecode(char[] array, int arrPosition, int remaining, long outAddr, int absolutePos); protected CoderResult decodeLoop(ByteBuffer bb, CharBuffer cb){ @@ -151,7 +151,7 @@ public class IBM437 extends Charset { super(cs, 1, 1); } - private native void nEncode(long outAddr, int absolutePos, char[] array, int arrPosition, int[] res); +// private native void nEncode(long outAddr, int absolutePos, char[] array, int arrPosition, int[] res); protected CoderResult encodeLoop(CharBuffer cb, ByteBuffer bb){ int bbRemaining = bb.remaining(); diff --git a/app/src/main/java/org/connectbot/ActionBarWrapper.java b/app/src/main/java/org/connectbot/ActionBarWrapper.java deleted file mode 100644 index f6bed8c..0000000 --- a/app/src/main/java/org/connectbot/ActionBarWrapper.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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. - */ - -package org.connectbot; - -import org.connectbot.util.PreferenceConstants; - -import android.annotation.TargetApi; -import android.app.Activity; -import android.app.ActionBar; - -public abstract class ActionBarWrapper { - public interface OnMenuVisibilityListener { - public void onMenuVisibilityChanged(boolean isVisible); - } - - public static ActionBarWrapper getActionBar(Activity activity) { - if (PreferenceConstants.PRE_HONEYCOMB) - return new DummyActionBar(); - else - return new RealActionBar(activity); - } - - public void hide() { - } - - public void show() { - } - - public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) { - } - - public void setDisplayHomeAsUpEnabled(boolean showHomeAsUp) { - } - - private static class DummyActionBar extends ActionBarWrapper { - } - - /** - * Real ActionBar delegate that is only invoked on Honeycomb - * and later. - */ - @TargetApi(11) - private static class RealActionBar extends ActionBarWrapper { - private final ActionBar actionBar; - - public RealActionBar(Activity activity) { - actionBar = activity.getActionBar(); - } - - @Override - public void hide() { - actionBar.hide(); - } - - @Override - public void show() { - actionBar.show(); - } - - @Override - public void addOnMenuVisibilityListener(final OnMenuVisibilityListener listener) { - actionBar.addOnMenuVisibilityListener(new ActionBar.OnMenuVisibilityListener() { - public void onMenuVisibilityChanged(boolean isVisible) { - listener.onMenuVisibilityChanged(isVisible); - } - }); - } - - @Override - public void setDisplayHomeAsUpEnabled(boolean showHomeAsUp) { - actionBar.setDisplayHomeAsUpEnabled(showHomeAsUp); - } - } -} diff --git a/app/src/main/java/org/connectbot/ConsoleActivity.java b/app/src/main/java/org/connectbot/ConsoleActivity.java index 214f878..0e23979 100644 --- a/app/src/main/java/org/connectbot/ConsoleActivity.java +++ b/app/src/main/java/org/connectbot/ConsoleActivity.java @@ -23,13 +23,13 @@ import java.util.List; import org.connectbot.bean.HostBean; import org.connectbot.bean.SelectionArea; +import org.connectbot.service.BridgeDisconnectedListener; import org.connectbot.service.PromptHelper; import org.connectbot.service.TerminalBridge; import org.connectbot.service.TerminalKeyListener; import org.connectbot.service.TerminalManager; import org.connectbot.util.PreferenceConstants; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.ComponentName; @@ -50,9 +50,13 @@ import android.os.Message; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; +import android.support.design.widget.TabLayout; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.text.ClipboardManager; import android.util.Log; import android.view.ContextMenu; @@ -80,6 +84,7 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; +import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; @@ -88,16 +93,20 @@ import android.widget.TextView; import android.widget.Toast; import de.mud.terminal.vt320; -public class ConsoleActivity extends Activity { +public class ConsoleActivity extends AppCompatActivity implements BridgeDisconnectedListener { public final static String TAG = "CB.ConsoleActivity"; protected static final int REQUEST_EDIT = 1; private static final int CLICK_TIME = 400; private static final float MAX_CLICK_DISTANCE = 25f; - private static final int KEYBOARD_DISPLAY_TIME = 1500; + private static final int KEYBOARD_DISPLAY_TIME = 3000; + private static final int KEYBOARD_REPEAT_INITIAL = 500; + private static final int KEYBOARD_REPEAT = 100; protected ViewPager pager = null; + protected TabLayout tabs = null; + protected Toolbar toolbar = null; @Nullable protected TerminalManager bound = null; protected TerminalPagerAdapter adapter = null; @@ -143,7 +152,7 @@ public class ConsoleActivity extends Activity { private ImageView mKeyboardButton; - private ActionBarWrapper actionBar; + private ActionBar actionBar; private boolean inActionBarMenu = false; private boolean titleBarHide; @@ -152,7 +161,7 @@ public class ConsoleActivity extends Activity { bound = ((TerminalManager.TerminalBinder) service).getService(); // let manager know about our event handling services - bound.disconnectHandler = disconnectHandler; + bound.disconnectListener = ConsoleActivity.this; bound.setResizeAllowed(true); final String requestedNickname = (requested != null) ? requested.getFragment() : null; @@ -192,21 +201,16 @@ public class ConsoleActivity extends Activity { } }; - protected Handler disconnectHandler = new Handler() { - @Override - public void handleMessage(Message msg) { + public void onDisconnected(TerminalBridge bridge) { + synchronized (adapter) { + adapter.notifyDataSetChanged(); Log.d(TAG, "Someone sending HANDLE_DISCONNECT to parentHandler"); - // someone below us requested to display a password dialog - // they are sending nickname and requested - TerminalBridge bridge = (TerminalBridge) msg.obj; - - adapter.notifyDataSetChanged(); if (bridge.isAwaitingClose()) { closeBridge(bridge); } } - }; + } protected OnClickListener emulatedKeysListener = new OnClickListener() { @Override @@ -215,38 +219,143 @@ public class ConsoleActivity extends Activity { } }; + protected Handler keyRepeatHandler = new Handler(); + + + /** + * Handle repeatable virtual keys and touch events + */ + public class KeyRepeater implements Runnable, OnTouchListener { + private View mView; + private Handler mHandler; + private boolean mDown; + + public KeyRepeater(Handler handler, View view) { + mView = view; + mHandler = handler; + mView.setOnTouchListener(this); + mDown = false; + } + + @Override + public void run() { + mDown = true; + mHandler.removeCallbacks(this); + mHandler.postDelayed(this, KEYBOARD_REPEAT); + onEmulatedKeyClicked(mView); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + if (BuildConfig.DEBUG) { + Log.d(TAG, "KeyRepeater.onTouch(" + v.getId() + ", " + + event.getAction() + ", " + + event.getActionIndex() + ", " + + event.getActionMasked() + ");"); + } + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mDown = false; + mHandler.postDelayed(this, KEYBOARD_REPEAT_INITIAL); + return (true); + + case MotionEvent.ACTION_CANCEL: + keyRepeatHandler.removeCallbacks(this); + return (true); + + case MotionEvent.ACTION_UP: + keyRepeatHandler.removeCallbacks(this); + if (!mDown) { + onEmulatedKeyClicked(mView); + } + return (true); + } + return false; + } + } + private void onEmulatedKeyClicked(View v) { TerminalView terminal = adapter.getCurrentTerminalView(); if (terminal == null) return; TerminalKeyListener handler = terminal.bridge.getKeyHandler(); - boolean hideKeys = true; + boolean hideKeys = false; - switch (v.getId()) { + switch (v.getId()) { case R.id.button_ctrl: handler.metaPress(TerminalKeyListener.OUR_CTRL_ON, true); + hideKeys = true; break; case R.id.button_esc: handler.sendEscape(); + hideKeys = true; break; case R.id.button_tab: handler.sendTab(); + hideKeys = true; break; + case R.id.button_up: handler.sendPressedKey(vt320.KEY_UP); - hideKeys = false; break; case R.id.button_down: handler.sendPressedKey(vt320.KEY_DOWN); - hideKeys = false; break; case R.id.button_left: handler.sendPressedKey(vt320.KEY_LEFT); - hideKeys = false; break; case R.id.button_right: handler.sendPressedKey(vt320.KEY_RIGHT); - hideKeys = false; + break; + + case R.id.button_home: + handler.sendPressedKey(vt320.KEY_HOME); + break; + case R.id.button_end: + handler.sendPressedKey(vt320.KEY_END); + break; + case R.id.button_pgup: + handler.sendPressedKey(vt320.KEY_PAGE_UP); + break; + case R.id.button_pgdn: + handler.sendPressedKey(vt320.KEY_PAGE_DOWN); + break; + + case R.id.button_f1: + handler.sendPressedKey(vt320.KEY_F1); + break; + case R.id.button_f2: + handler.sendPressedKey(vt320.KEY_F2); + break; + case R.id.button_f3: + handler.sendPressedKey(vt320.KEY_F3); + break; + case R.id.button_f4: + handler.sendPressedKey(vt320.KEY_F4); + break; + case R.id.button_f5: + handler.sendPressedKey(vt320.KEY_F5); + break; + case R.id.button_f6: + handler.sendPressedKey(vt320.KEY_F6); + break; + case R.id.button_f7: + handler.sendPressedKey(vt320.KEY_F7); + break; + case R.id.button_f8: + handler.sendPressedKey(vt320.KEY_F8); + break; + case R.id.button_f9: + handler.sendPressedKey(vt320.KEY_F9); + break; + case R.id.button_f10: + handler.sendPressedKey(vt320.KEY_F10); + break; + case R.id.button_f11: + handler.sendPressedKey(vt320.KEY_F11); + break; + case R.id.button_f12: + handler.sendPressedKey(vt320.KEY_F12); break; } @@ -256,20 +365,21 @@ public class ConsoleActivity extends Activity { autoHideEmulatedKeys(); terminal.bridge.tryKeyVibrate(); + if (titleBarHide) { + actionBar.hide(); + } } /** * @param bridge */ private void closeBridge(final TerminalBridge bridge) { - synchronized (pager) { - updateEmptyVisible(); - updatePromptVisible(); + updateEmptyVisible(); + updatePromptVisible(); - // If we just closed the last bridge, go back to the previous activity. - if (pager.getChildCount() == 0) { - finish(); - } + // If we just closed the last bridge, go back to the previous activity. + if (pager.getChildCount() == 0) { + finish(); } } @@ -343,7 +453,7 @@ public class ConsoleActivity extends Activity { titleBarHide = prefs.getBoolean(PreferenceConstants.TITLEBARHIDE, false); if (titleBarHide) { - getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); + supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); } this.setContentView(R.layout.act_console); @@ -362,6 +472,7 @@ public class ConsoleActivity extends Activity { inflater = LayoutInflater.from(this); + toolbar = (Toolbar) findViewById(R.id.toolbar); pager = (ViewPager) findViewById(R.id.console_flip); registerForContextMenu(pager); pager.addOnPageChangeListener( @@ -371,6 +482,8 @@ public class ConsoleActivity extends Activity { onTerminalChanged(); } }); + adapter = new TerminalPagerAdapter(); + pager.setAdapter(adapter); empty = (TextView) findViewById(android.R.id.empty); @@ -445,17 +558,36 @@ public class ConsoleActivity extends Activity { findViewById(R.id.button_ctrl).setOnClickListener(emulatedKeysListener); findViewById(R.id.button_esc).setOnClickListener(emulatedKeysListener); findViewById(R.id.button_tab).setOnClickListener(emulatedKeysListener); - findViewById(R.id.button_up).setOnClickListener(emulatedKeysListener); - findViewById(R.id.button_down).setOnClickListener(emulatedKeysListener); - findViewById(R.id.button_left).setOnClickListener(emulatedKeysListener); - findViewById(R.id.button_right).setOnClickListener(emulatedKeysListener); - actionBar = ActionBarWrapper.getActionBar(this); + new KeyRepeater(keyRepeatHandler, findViewById(R.id.button_up)); + new KeyRepeater(keyRepeatHandler, findViewById(R.id.button_down)); + new KeyRepeater(keyRepeatHandler, findViewById(R.id.button_left)); + new KeyRepeater(keyRepeatHandler, findViewById(R.id.button_right)); + + findViewById(R.id.button_home).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_end).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_pgup).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_pgdn).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f1).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f2).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f3).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f4).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f5).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f6).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f7).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f8).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f9).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f10).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f11).setOnClickListener(emulatedKeysListener); + findViewById(R.id.button_f12).setOnClickListener(emulatedKeysListener); + + + actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); if (titleBarHide) { actionBar.hide(); } - actionBar.addOnMenuVisibilityListener(new ActionBarWrapper.OnMenuVisibilityListener() { + actionBar.addOnMenuVisibilityListener(new ActionBar.OnMenuVisibilityListener() { public void onMenuVisibilityChanged(boolean isVisible) { inActionBarMenu = isVisible; if (isVisible == false) { @@ -464,6 +596,35 @@ public class ConsoleActivity extends Activity { } }); + if (!hardKeyboard) { + // Show virtual keyboard and scroll back and forth + final HorizontalScrollView keyboardScroll = (HorizontalScrollView) findViewById(R.id.keyboard_hscroll); + showEmulatedKeys(); + keyboardScroll.postDelayed(new Runnable() { + @Override + public void run() { + final int xscroll = findViewById(R.id.button_f12).getRight(); + if (BuildConfig.DEBUG) { + Log.d(TAG, "smoothScrollBy(toEnd[" + xscroll + "])"); + } + keyboardScroll.smoothScrollBy(xscroll, 0); + keyboardScroll.postDelayed(new Runnable() { + @Override + public void run() { + if (BuildConfig.DEBUG) { + Log.d(TAG, "smoothScrollBy(toStart[" + (-xscroll) + "])"); + } + keyboardScroll.smoothScrollBy(-xscroll, 0); + } + }, 1000); + } + }, 1000); + } + + tabs = (TabLayout) findViewById(R.id.tabs); + if (tabs != null) + setupTabLayoutWithViewPager(); + // detect fling gestures to switch between terminals final GestureDetector detect = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { private float totalY = 0; @@ -635,9 +796,32 @@ public class ConsoleActivity extends Activity { } }); + } - adapter = new TerminalPagerAdapter(); - pager.setAdapter(adapter); + /** + * Ties the {@link TabLayout} to the {@link ViewPager}. + * + * <p>This method will: + * <ul> + * <li>Add a {@link ViewPager.OnPageChangeListener} that will forward events to + * this TabLayout.</li> + * <li>Populate the TabLayout's tabs from the ViewPager's {@link PagerAdapter}.</li> + * <li>Set our {@link TabLayout.OnTabSelectedListener} which will forward + * selected events to the ViewPager</li> + * </ul> + * </p> + */ + public void setupTabLayoutWithViewPager() { + tabs.setTabsFromPagerAdapter(adapter); + pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs)); + tabs.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager)); + + if (adapter.getCount() > 0) { + final int curItem = pager.getCurrentItem(); + if (tabs.getSelectedTabPosition() != curItem) { + tabs.getTabAt(curItem).select(); + } + } } /** @@ -784,26 +968,26 @@ public class ConsoleActivity extends Activity { final View resizeView = inflater.inflate(R.layout.dia_resize, null, false); new AlertDialog.Builder(ConsoleActivity.this) - .setView(resizeView) - .setPositiveButton(R.string.button_resize, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - int width, height; - try { - width = Integer.parseInt(((EditText) resizeView - .findViewById(R.id.width)) - .getText().toString()); - height = Integer.parseInt(((EditText) resizeView - .findViewById(R.id.height)) - .getText().toString()); - } catch (NumberFormatException nfe) { - // TODO change this to a real dialog where we can - // make the input boxes turn red to indicate an error. - return; + .setView(resizeView) + .setPositiveButton(R.string.button_resize, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + int width, height; + try { + width = Integer.parseInt(((EditText) resizeView + .findViewById(R.id.width)) + .getText().toString()); + height = Integer.parseInt(((EditText) resizeView + .findViewById(R.id.height)) + .getText().toString()); + } catch (NumberFormatException nfe) { + // TODO change this to a real dialog where we can + // make the input boxes turn red to indicate an error. + return; + } + + terminalView.forceSize(width, height); } - - terminalView.forceSize(width, height); - } - }).setNegativeButton(android.R.string.cancel, null).create().show(); + }).setNegativeButton(android.R.string.cancel, null).create().show(); return true; } @@ -848,13 +1032,13 @@ public class ConsoleActivity extends Activity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - Intent intent = new Intent(this, HostListActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - return true; - default: - return super.onOptionsItemSelected(item); + case android.R.id.home: + Intent intent = new Intent(this, HostListActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); } } @@ -1226,6 +1410,15 @@ public class ConsoleActivity extends Activity { } @Override + public void notifyDataSetChanged() { + super.notifyDataSetChanged(); + if (tabs != null) { + toolbar.setVisibility(this.getCount() > 1 ? View.VISIBLE : View.GONE); + tabs.setTabsFromPagerAdapter(this); + } + } + + @Override public boolean isViewFromObject(View view, Object object) { return view == object; } diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/java/org/connectbot/EulaActivity.java index 9a0c22b..650a5b5 100644 --- a/app/src/main/res/values-v11/styles.xml +++ b/app/src/main/java/org/connectbot/EulaActivity.java @@ -1,8 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- /* * ConnectBot: simple, powerful, open-source SSH client for Android - * Copyright 2007 Kenny Root, Jeffrey Sharkey + * Copyright 2015 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. @@ -16,14 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ ---> -<resources> - <style name="NoTitle" parent="android:Theme.Holo"> - <item name="android:windowContentOverlay">@null</item> - <item name="android:actionBarStyle">@style/SolidActionBar</item> - </style> - <style name="SolidActionBar" parent="android:Widget.Holo.ActionBar"> - <item name="android:background">#222222</item> - </style> -</resources> +package org.connectbot; + +import android.app.Activity; +import android.os.Bundle; + +public class EulaActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.act_eula); + + this.setTitle(String.format("%s: %s", + getResources().getText(R.string.app_name), + getResources().getText(R.string.terms_and_conditions))); + } +} diff --git a/app/src/main/java/org/connectbot/HelpActivity.java b/app/src/main/java/org/connectbot/HelpActivity.java index 5c4fa79..1e78d72 100644 --- a/app/src/main/java/org/connectbot/HelpActivity.java +++ b/app/src/main/java/org/connectbot/HelpActivity.java @@ -20,10 +20,12 @@ package org.connectbot; import java.io.IOException; import android.app.Activity; +import android.app.AlertDialog; import android.content.Intent; import android.content.res.AssetManager; import android.os.Bundle; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; @@ -39,6 +41,9 @@ public class HelpActivity extends Activity { public final static String HELPDIR = "help"; public final static String SUFFIX = ".html"; + private LayoutInflater inflater = null; + + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -73,5 +78,29 @@ public class HelpActivity extends Activity { // TODO Auto-generated catch block Log.e(TAG, "couldn't get list of help assets", e); } + + inflater = LayoutInflater.from(this); + Button shortcutsButton = new Button(this); + shortcutsButton.setText(getResources().getString(R.string.keyboard_shortcuts)); + shortcutsButton.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + final View shortcuts = inflater.inflate(R.layout.dia_keyboard_shortcuts, null, false); + new AlertDialog.Builder(HelpActivity.this) + .setView(shortcuts) + .setTitle(R.string.keyboard_shortcuts) + .show(); + } + }); + content.addView(shortcutsButton); + + Button eulaButton = new Button(this); + eulaButton.setText(getResources().getString(R.string.terms_and_conditions)); + eulaButton.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + Intent intent = new Intent(HelpActivity.this, EulaActivity.class); + HelpActivity.this.startActivity(intent); + } + }); + content.addView(eulaButton); } } diff --git a/app/src/main/java/org/connectbot/HostListActivity.java b/app/src/main/java/org/connectbot/HostListActivity.java index a0d7901..2d8e882 100644 --- a/app/src/main/java/org/connectbot/HostListActivity.java +++ b/app/src/main/java/org/connectbot/HostListActivity.java @@ -26,7 +26,6 @@ import org.connectbot.transport.TransportFactory; import org.connectbot.util.HostDatabase; import org.connectbot.util.PreferenceConstants; -import android.app.Activity; import android.app.AlertDialog; import android.app.ListActivity; import android.content.ComponentName; @@ -70,8 +69,6 @@ public class HostListActivity extends ListActivity { public final static int REQUEST_EDIT = 1; - public final static int REQUEST_EULA = 2; - protected TerminalManager bound = null; protected HostDatabase hostdb; @@ -175,17 +172,7 @@ public class HostListActivity extends ListActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_EULA) { - if (resultCode == Activity.RESULT_OK) { - // yay they agreed, so store that info - Editor edit = prefs.edit(); - edit.putBoolean(PreferenceConstants.EULA, true); - edit.commit(); - } else { - // user didnt agree, so close - this.finish(); - } - } else if (requestCode == REQUEST_EDIT) { + if (requestCode == REQUEST_EDIT) { this.updateList(); } } @@ -224,12 +211,6 @@ public class HostListActivity extends ListActivity { } } - // check for eula agreement - boolean agreed = prefs.getBoolean(PreferenceConstants.EULA, false); - if (!agreed) { - this.startActivityForResult(new Intent(this, WizardActivity.class), REQUEST_EULA); - } - this.makingShortcut = Intent.ACTION_CREATE_SHORTCUT.equals(getIntent().getAction()) || Intent.ACTION_PICK.equals(getIntent().getAction()); diff --git a/app/src/main/java/org/connectbot/SettingsActivity.java b/app/src/main/java/org/connectbot/SettingsActivity.java index 38f3367..153f4ba 100644 --- a/app/src/main/java/org/connectbot/SettingsActivity.java +++ b/app/src/main/java/org/connectbot/SettingsActivity.java @@ -17,8 +17,6 @@ package org.connectbot; -import org.connectbot.util.PreferenceConstants; - import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceActivity; @@ -45,11 +43,6 @@ public class SettingsActivity extends PreferenceActivity { PreferenceManager.setDefaultValues(this, R.xml.preferences, true); - // Since they were able to get to the Settings activity, they already agreed to the EULA - editor = preferences.edit(); - editor.putBoolean(PreferenceConstants.EULA, true); - editor.commit(); - addPreferencesFromResource(R.xml.preferences); } diff --git a/app/src/main/java/org/connectbot/WizardActivity.java b/app/src/main/java/org/connectbot/WizardActivity.java deleted file mode 100644 index 4069c50..0000000 --- a/app/src/main/java/org/connectbot/WizardActivity.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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. - */ - -package org.connectbot; - -import org.connectbot.util.HelpTopicView; - -import android.app.Activity; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; -import android.widget.ViewFlipper; - -/** - * Show a series of wizard-like steps to the user, which might include an EULA, - * program credits, and helpful hints. - * - * @author jsharkey - */ -public class WizardActivity extends Activity { - protected ViewFlipper flipper = null; - private Button next, prev; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.act_wizard); - - this.flipper = (ViewFlipper) findViewById(R.id.wizard_flipper); - - // inflate the layout for EULA step - LayoutInflater inflater = LayoutInflater.from(this); - this.flipper.addView(inflater.inflate(R.layout.wiz_eula, this.flipper, false)); - - // Add a view for each help topic we want the user to see. - String[] topics = getResources().getStringArray(R.array.list_wizard_topics); - for (String topic : topics) { - flipper.addView(new HelpTopicView(this).setTopic(topic)); - } - - next = (Button) findViewById(R.id.action_next); - next.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - if (isLastDisplayed()) { - // user walked past end of wizard, so return okay - WizardActivity.this.setResult(Activity.RESULT_OK); - WizardActivity.this.finish(); - } else { - // show next step and update buttons - flipper.showNext(); - updateButtons(); - } - } - }); - - prev = (Button) findViewById(R.id.action_prev); - prev.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - if (isFirstDisplayed()) { - // user walked past beginning of wizard, so return that they cancelled - WizardActivity.this.setResult(Activity.RESULT_CANCELED); - WizardActivity.this.finish(); - } else { - // show previous step and update buttons - flipper.showPrevious(); - updateButtons(); - } - } - }); - - this.updateButtons(); - } - - protected boolean isFirstDisplayed() { - return (flipper.getDisplayedChild() == 0); - } - - protected boolean isLastDisplayed() { - return (flipper.getDisplayedChild() == flipper.getChildCount() - 1); - } - - protected void updateButtons() { - boolean eula = (flipper.getDisplayedChild() == 0); - - next.setText(eula ? getString(R.string.wizard_agree) : getString(R.string.wizard_next)); - prev.setText(eula ? getString(R.string.delete_neg) : getString(R.string.wizard_back)); - } -} diff --git a/app/src/main/java/org/connectbot/service/TerminalBridge.java b/app/src/main/java/org/connectbot/service/TerminalBridge.java index 6333c17..6d47f96 100644 --- a/app/src/main/java/org/connectbot/service/TerminalBridge.java +++ b/app/src/main/java/org/connectbot/service/TerminalBridge.java @@ -437,8 +437,7 @@ public class TerminalBridge implements VDUDisplay { if (immediate || (host.getQuickDisconnect() && !host.getStayConnected())) { awaitingClose = true; - if (disconnectListener != null) - disconnectListener.onDisconnected(TerminalBridge.this); + triggerDisconnectListener(); } else { { final String line = manager.res.getString(R.string.alert_disconnect_msg); @@ -454,10 +453,7 @@ public class TerminalBridge implements VDUDisplay { manager.res.getString(R.string.prompt_host_disconnected)); if (result == null || result.booleanValue()) { awaitingClose = true; - - // Tell the TerminalManager that we can be destroyed now. - if (disconnectListener != null) - disconnectListener.onDisconnected(TerminalBridge.this); + triggerDisconnectListener(); } } }); @@ -467,6 +463,25 @@ public class TerminalBridge implements VDUDisplay { } } + /** + * Tells the TerminalManager that we can be destroyed now. + */ + private void triggerDisconnectListener() { + if (disconnectListener != null) { + // The disconnect listener should be run on the main thread if possible. + if (parent != null) { + parent.post(new Runnable() { + @Override + public void run() { + disconnectListener.onDisconnected(TerminalBridge.this); + } + }); + } else { + disconnectListener.onDisconnected(TerminalBridge.this); + } + } + } + public void setSelectingForCopy(boolean selectingForCopy) { this.selectingForCopy = selectingForCopy; } diff --git a/app/src/main/java/org/connectbot/service/TerminalManager.java b/app/src/main/java/org/connectbot/service/TerminalManager.java index 8001561..a15dff0 100644 --- a/app/src/main/java/org/connectbot/service/TerminalManager.java +++ b/app/src/main/java/org/connectbot/service/TerminalManager.java @@ -54,9 +54,7 @@ import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.net.Uri; import android.os.Binder; -import android.os.Handler; import android.os.IBinder; -import android.os.Message; import android.os.Vibrator; import android.preference.PreferenceManager; import android.util.Log; @@ -81,7 +79,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen public List<HostBean> disconnected = new LinkedList<HostBean>(); - public Handler disconnectHandler = null; + public BridgeDisconnectedListener disconnectListener = null; public Map<String, KeyHolder> loadedKeypairs = new HashMap<String, KeyHolder>(); @@ -329,6 +327,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen */ public void onDisconnected(TerminalBridge bridge) { boolean shouldHideRunningNotification = false; + Log.d(TAG, "Bridge Disconnected. Removing it."); synchronized (bridges) { // remove this bridge from our list @@ -345,6 +344,10 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen mPendingReconnect.size() == 0) { shouldHideRunningNotification = true; } + + // pass notification back up to gui + if (disconnectListener != null) + disconnectListener.onDisconnected(bridge); } synchronized (disconnected) { @@ -354,10 +357,6 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen if (shouldHideRunningNotification) { ConnectionNotifier.getInstance().hideRunningNotification(this); } - - // pass notification back up to gui - if (disconnectHandler != null) - Message.obtain(disconnectHandler, -1, bridge).sendToTarget(); } public boolean isKeyLoaded(String nickname) { diff --git a/app/src/main/java/org/connectbot/util/HostDatabase.java b/app/src/main/java/org/connectbot/util/HostDatabase.java index 4756157..d8cdf09 100644 --- a/app/src/main/java/org/connectbot/util/HostDatabase.java +++ b/app/src/main/java/org/connectbot/util/HostDatabase.java @@ -678,7 +678,7 @@ public class HostDatabase extends RobustSQLiteOpenHelper { null, null, null); while (c.moveToNext()) { - colors[c.getInt(0)] = new Integer(c.getInt(1)); + colors[c.getInt(0)] = Integer.valueOf(c.getInt(1)); } c.close(); diff --git a/app/src/main/java/org/connectbot/util/PreferenceConstants.java b/app/src/main/java/org/connectbot/util/PreferenceConstants.java index d3cd832..eb0e396 100644 --- a/app/src/main/java/org/connectbot/util/PreferenceConstants.java +++ b/app/src/main/java/org/connectbot/util/PreferenceConstants.java @@ -66,8 +66,6 @@ public class PreferenceConstants { public static final String BUMPY_ARROWS = "bumpyarrows"; - public static final String EULA = "eula"; - public static final String SORT_BY_COLOR = "sortByColor"; public static final String BELL = "bell"; diff --git a/app/src/main/res/anim/fade_out_delayed.xml b/app/src/main/res/anim/fade_out_delayed.xml index 20ca839..5c40b70 100644 --- a/app/src/main/res/anim/fade_out_delayed.xml +++ b/app/src/main/res/anim/fade_out_delayed.xml @@ -19,9 +19,9 @@ --> <alpha xmlns:android="http://schemas.android.com/apk/res/android" - android:fromAlpha="1.0" - android:toAlpha="0.0" android:duration="500" - android:startOffset="1000" android:fillAfter="true" + android:fromAlpha="1.0" + android:startOffset="1000" + android:toAlpha="0.0" /> diff --git a/app/src/main/res/anim/fade_stay_hidden.xml b/app/src/main/res/anim/fade_stay_hidden.xml index e62ca8b..30e00fa 100644 --- a/app/src/main/res/anim/fade_stay_hidden.xml +++ b/app/src/main/res/anim/fade_stay_hidden.xml @@ -19,8 +19,8 @@ --> <alpha xmlns:android="http://schemas.android.com/apk/res/android" - android:fromAlpha="0.0" - android:toAlpha="0.0" android:duration="500" android:fillAfter="true" + android:fromAlpha="0.0" + android:toAlpha="0.0" /> diff --git a/app/src/main/res/anim/keyboard_fade_in.xml b/app/src/main/res/anim/keyboard_fade_in.xml index edd5b94..fa5351f 100644 --- a/app/src/main/res/anim/keyboard_fade_in.xml +++ b/app/src/main/res/anim/keyboard_fade_in.xml @@ -19,7 +19,7 @@ --> <alpha xmlns:android="http://schemas.android.com/apk/res/android" - android:interpolator="@android:anim/accelerate_interpolator" + android:duration="100" android:fromAlpha="0.0" - android:toAlpha="1.0" - android:duration="100" /> + android:interpolator="@android:anim/accelerate_interpolator" + android:toAlpha="1.0"/> diff --git a/app/src/main/res/anim/keyboard_fade_out.xml b/app/src/main/res/anim/keyboard_fade_out.xml index 1f37d32..fcc63e3 100644 --- a/app/src/main/res/anim/keyboard_fade_out.xml +++ b/app/src/main/res/anim/keyboard_fade_out.xml @@ -19,7 +19,7 @@ --> <alpha xmlns:android="http://schemas.android.com/apk/res/android" - android:interpolator="@android:anim/accelerate_interpolator" + android:duration="100" android:fromAlpha="1.0" - android:toAlpha="0.0" - android:duration="100" /> + android:interpolator="@android:anim/accelerate_interpolator" + android:toAlpha="0.0"/> diff --git a/app/src/main/res/anim/slide_left_in.xml b/app/src/main/res/anim/slide_left_in.xml index 29a0048..c60e917 100644 --- a/app/src/main/res/anim/slide_left_in.xml +++ b/app/src/main/res/anim/slide_left_in.xml @@ -19,6 +19,9 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android"> - <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/> + <translate + android:duration="300" + android:fromXDelta="100%p" + android:toXDelta="0"/> <!-- <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> --> </set> diff --git a/app/src/main/res/anim/slide_left_out.xml b/app/src/main/res/anim/slide_left_out.xml index 9c46442..bd7360d 100644 --- a/app/src/main/res/anim/slide_left_out.xml +++ b/app/src/main/res/anim/slide_left_out.xml @@ -19,6 +19,9 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android"> - <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/> + <translate + android:duration="300" + android:fromXDelta="0" + android:toXDelta="-100%p"/> <!-- <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> --> </set> diff --git a/app/src/main/res/anim/slide_right_in.xml b/app/src/main/res/anim/slide_right_in.xml index 0d52c9f..c69f371 100644 --- a/app/src/main/res/anim/slide_right_in.xml +++ b/app/src/main/res/anim/slide_right_in.xml @@ -19,6 +19,9 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android"> - <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="300"/> + <translate + android:duration="300" + android:fromXDelta="-100%p" + android:toXDelta="0"/> <!-- <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> --> </set> diff --git a/app/src/main/res/anim/slide_right_out.xml b/app/src/main/res/anim/slide_right_out.xml index ace4e9d..2f7abbe 100644 --- a/app/src/main/res/anim/slide_right_out.xml +++ b/app/src/main/res/anim/slide_right_out.xml @@ -19,6 +19,9 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android"> - <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="300"/> + <translate + android:duration="300" + android:fromXDelta="0" + android:toXDelta="100%p"/> <!-- <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> --> </set> diff --git a/app/src/main/res/color/blue.xml b/app/src/main/res/color/blue.xml index 981c3ef..7ff859c 100644 --- a/app/src/main/res/color/blue.xml +++ b/app/src/main/res/color/blue.xml @@ -19,8 +19,8 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:color="#000" /> - <item android:state_focused="true" android:color="#000" /> - <item android:state_pressed="true" android:color="#000" /> - <item android:color="#88f" /> + <item android:color="#000" android:state_selected="true"/> + <item android:color="#000" android:state_focused="true"/> + <item android:color="#000" android:state_pressed="true"/> + <item android:color="#88f"/> </selector> diff --git a/app/src/main/res/color/green.xml b/app/src/main/res/color/green.xml index 388ea58..acb166c 100644 --- a/app/src/main/res/color/green.xml +++ b/app/src/main/res/color/green.xml @@ -19,8 +19,8 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:color="#000" /> - <item android:state_focused="true" android:color="#000" /> - <item android:state_pressed="true" android:color="#000" /> - <item android:color="#8f8" /> + <item android:color="#000" android:state_selected="true"/> + <item android:color="#000" android:state_focused="true"/> + <item android:color="#000" android:state_pressed="true"/> + <item android:color="#8f8"/> </selector> diff --git a/app/src/main/res/color/red.xml b/app/src/main/res/color/red.xml index b7e18cd..440ee69 100644 --- a/app/src/main/res/color/red.xml +++ b/app/src/main/res/color/red.xml @@ -19,8 +19,8 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:color="#000" /> - <item android:state_focused="true" android:color="#000" /> - <item android:state_pressed="true" android:color="#000" /> - <item android:color="#f00" /> + <item android:color="#000" android:state_selected="true"/> + <item android:color="#000" android:state_focused="true"/> + <item android:color="#000" android:state_pressed="true"/> + <item android:color="#f00"/> </selector> diff --git a/app/src/main/res/drawable/connected.xml b/app/src/main/res/drawable/connected.xml index 7b633d3..7e15a8d 100644 --- a/app/src/main/res/drawable/connected.xml +++ b/app/src/main/res/drawable/connected.xml @@ -21,14 +21,14 @@ xmlns:android="http://schemas.android.com/apk/res/android"> <item - android:state_checked="true" - android:drawable="@android:drawable/presence_online" /> + android:drawable="@android:drawable/presence_online" + android:state_checked="true"/> <item - android:state_expanded="true" - android:drawable="@android:drawable/presence_busy" /> + android:drawable="@android:drawable/presence_busy" + android:state_expanded="true"/> <item - android:drawable="@android:drawable/presence_invisible" /> + android:drawable="@android:drawable/presence_invisible"/> </selector> diff --git a/app/src/main/res/drawable/ic_btn_back.png b/app/src/main/res/drawable/ic_btn_back.png Binary files differdeleted file mode 100644 index 9615e67..0000000 --- a/app/src/main/res/drawable/ic_btn_back.png +++ /dev/null diff --git a/app/src/main/res/drawable/ic_btn_next.png b/app/src/main/res/drawable/ic_btn_next.png Binary files differdeleted file mode 100644 index ea2a80e..0000000 --- a/app/src/main/res/drawable/ic_btn_next.png +++ /dev/null diff --git a/app/src/main/res/drawable/pubkey.xml b/app/src/main/res/drawable/pubkey.xml index 1926d24..0dbdba9 100644 --- a/app/src/main/res/drawable/pubkey.xml +++ b/app/src/main/res/drawable/pubkey.xml @@ -21,10 +21,10 @@ xmlns:android="http://schemas.android.com/apk/res/android"> <item - android:state_checked="true" - android:drawable="@drawable/pubkey_unlocked" /> + android:drawable="@drawable/pubkey_unlocked" + android:state_checked="true"/> <item - android:drawable="@drawable/pubkey_locked" /> + android:drawable="@drawable/pubkey_locked"/> </selector>
\ No newline at end of file diff --git a/app/src/main/res/layout-land/item_host.xml b/app/src/main/res/layout-land/item_host.xml index 9cde624..cbccd91 100644 --- a/app/src/main/res/layout-land/item_host.xml +++ b/app/src/main/res/layout-land/item_host.xml @@ -18,8 +18,9 @@ */ --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +<RelativeLayout android:id="@android:id/content" + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip" @@ -27,38 +28,38 @@ <ImageView android:id="@android:id/icon" - android:src="@drawable/connected" - android:contentDescription="@string/image_description_connected" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" + android:contentDescription="@string/image_description_connected" android:paddingTop="5dip" + android:src="@drawable/connected" /> <LinearLayout - android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:orientation="horizontal" > - <TextView - android:id="@android:id/text1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:singleLine="true" - android:ellipsize="end" - android:textAppearance="?android:attr/textAppearanceLarge" - /> + <TextView + android:id="@android:id/text1" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:singleLine="true" + android:textAppearance="?android:attr/textAppearanceLarge" + /> + + <TextView + android:id="@android:id/text2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingLeft="10dip" + android:textAppearance="?android:attr/textAppearanceSmall" + /> - <TextView - android:id="@android:id/text2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingLeft="10dip" - android:textAppearance="?android:attr/textAppearanceSmall" - /> - </LinearLayout> </RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout-large/act_console.xml b/app/src/main/res/layout-large/act_console.xml new file mode 100644 index 0000000..66f3d83 --- /dev/null +++ b/app/src/main/res/layout-large/act_console.xml @@ -0,0 +1,342 @@ +<?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:app="http://schemas.android.com/apk/res-auto" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="#ff000000"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:theme="@style/Theme.AppCompat.Light.DarkActionBar"/> + + <android.support.design.widget.TabLayout + android:id="@+id/tabs" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/colorPrimary" + android:textAppearance="?android:attr/textAppearanceMedium" + app:tabMode="scrollable" + app:tabContentStart="60dp" + app:tabIndicatorColor="@android:color/white"/> + + <TextView + android:id="@android:id/empty" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:layout_below="@id/toolbar" + android:gravity="center" + android:text="@string/terminal_no_hosts_connected" + android:textAppearance="?android:attr/textAppearanceMedium"/> + + <android.support.v4.view.ViewPager + android:id="@+id/console_flip" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:layout_below="@id/toolbar" + /> + + <RelativeLayout + android:id="@+id/console_password_group" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:background="#80000000" + android:fadingEdge="horizontal" + android:fadingEdgeLength="25dip" + android:padding="5dip" + android:visibility="gone" + > + + <TextView + android:id="@+id/console_password_instructions" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="5dip" + android:textAppearance="?android:attr/textAppearanceMedium" + android:visibility="gone" + /> + + <EditText + android:id="@+id/console_password" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/console_password_instructions" + android:password="true" + android:singleLine="true" + /> + + </RelativeLayout> + + <RelativeLayout + android:id="@+id/console_boolean_group" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:background="#80000000" + android:fadingEdge="horizontal" + android:fadingEdgeLength="25dip" + android:padding="5dip" + android:visibility="gone" + > + + <TextView + android:id="@+id/console_prompt" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + + <Button + android:id="@+id/console_prompt_no" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_below="@+id/console_prompt" + android:clickable="false" + android:paddingBottom="10dip" + android:paddingLeft="40dip" + android:paddingRight="40dip" + android:paddingTop="5dip" + android:text="@string/button_no" + /> + + <Button + android:id="@+id/console_prompt_yes" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@+id/console_prompt" + android:layout_toLeftOf="@+id/console_prompt_no" + android:paddingBottom="10dip" + android:paddingLeft="40dip" + android:paddingRight="40dip" + android:paddingTop="5dip" + android:text="@string/button_yes" + /> + + </RelativeLayout> + + <LinearLayout + android:id="@+id/keyboard_group" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:background="#55000000" + android:orientation="horizontal" + android:padding="0dip" + android:visibility="gone"> + + <HorizontalScrollView + android:id="@+id/keyboard_hscroll" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:padding="0dp" + android:scrollbars="none"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="match_parent" + android:orientation="horizontal" + android:padding="0dp"> + + <Button + android:id="@+id/button_ctrl" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_toggle_control_character" + android:text="@string/button_key_ctrl"/> + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_esc" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_send_escape_character" + android:text="@string/button_key_esc"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_tab" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_send_tab_character" + android:text="@string/button_key_tab"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_up" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_up" + android:text="@string/button_key_up"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_down" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_down" + android:text="@string/button_key_down"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_left" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_left" + android:text="@string/button_key_left"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_right" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_right" + android:text="@string/button_key_right"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_home" + style="@style/KeyboardButton" + android:text="@string/button_key_home"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_end" + style="@style/KeyboardButton" + android:text="@string/button_key_end"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_pgup" + style="@style/KeyboardButton" + android:text="@string/button_key_pgup"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_pgdn" + style="@style/KeyboardButton" + android:text="@string/button_key_pgdn"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f1" + style="@style/KeyboardButton" + android:text="@string/button_key_f1"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f2" + style="@style/KeyboardButton" + android:text="@string/button_key_f2"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f3" + style="@style/KeyboardButton" + android:text="@string/button_key_f3"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f4" + style="@style/KeyboardButton" + android:text="@string/button_key_f4"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f5" + style="@style/KeyboardButton" + android:text="@string/button_key_f5"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f6" + style="@style/KeyboardButton" + android:text="@string/button_key_f6"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f7" + style="@style/KeyboardButton" + android:text="@string/button_key_f7"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f8" + style="@style/KeyboardButton" + android:text="@string/button_key_f8"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f9" + style="@style/KeyboardButton" + android:text="@string/button_key_f9"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f10" + style="@style/KeyboardButton" + android:text="@string/button_key_f10"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f11" + style="@style/KeyboardButton" + android:text="@string/button_key_f11"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f12" + style="@style/KeyboardButton" + android:text="@string/button_key_f12"/> + </LinearLayout> + </HorizontalScrollView> + + <View style="@style/KeyboardSeparator"/> + + <ImageView + android:id="@+id/button_keyboard" + style="@style/KeyboardKey" + android:background="#55b0b0f0" + android:contentDescription="@string/image_description_show_keyboard" + android:src="@drawable/button_keyboard"/> + </LinearLayout> + +</RelativeLayout> diff --git a/app/src/main/res/layout-port/item_host.xml b/app/src/main/res/layout-port/item_host.xml index 24d34ba..7ee7f0a 100644 --- a/app/src/main/res/layout-port/item_host.xml +++ b/app/src/main/res/layout-port/item_host.xml @@ -18,8 +18,8 @@ */ --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@android:id/content" +<RelativeLayout android:id="@android:id/content" + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip" @@ -27,31 +27,31 @@ <ImageView android:id="@android:id/icon" - android:src="@drawable/connected" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" - android:paddingTop="5dip" android:contentDescription="@string/image_description_connected" + android:paddingTop="5dip" + android:src="@drawable/connected" /> - + <TextView - android:id="@android:id/text1" + android:id="@android:id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:ellipsize="end" android:paddingRight="20dip" android:singleLine="true" - android:ellipsize="end" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView - android:id="@android:id/text2" + android:id="@android:id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" android:layout_below="@android:id/text1" + android:textAppearance="?android:attr/textAppearanceSmall" /> - + </RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/act_colors.xml b/app/src/main/res/layout/act_colors.xml index 53f492c..9081e05 100644 --- a/app/src/main/res/layout/act_colors.xml +++ b/app/src/main/res/layout/act_colors.xml @@ -24,49 +24,43 @@ android:layout_height="fill_parent"> <LinearLayout - android:orientation="horizontal" + android:id="@+id/spinners" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:id="@+id/spinners"> + android:orientation="horizontal"> <Spinner android:id="@+id/fg" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_alignParentStart="true" - android:layout_alignParentLeft="true" - android:minHeight="60dp" android:layout_weight="1" android:gravity="center" + android:minHeight="60dp" /> <Spinner android:id="@+id/bg" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_alignTop="@id/fg" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_toRightOf="@id/fg" - android:minHeight="60dp" android:layout_weight="1" android:gravity="center" + android:minHeight="60dp" /> </LinearLayout> <GridView android:id="@+id/color_grid" - android:layout_height="fill_parent" android:layout_width="fill_parent" - android:padding="10dp" - android:verticalSpacing="10dp" - android:horizontalSpacing="10dp" - android:numColumns="auto_fit" + android:layout_height="fill_parent" + android:layout_below="@+id/spinners" android:columnWidth="60dp" - android:stretchMode="columnWidth" android:gravity="center" + android:horizontalSpacing="10dp" android:minHeight="60dp" - android:layout_below="@+id/spinners" + android:numColumns="auto_fit" + android:padding="10dp" + android:stretchMode="columnWidth" + android:verticalSpacing="10dp" /> </RelativeLayout> diff --git a/app/src/main/res/layout/act_console.xml b/app/src/main/res/layout/act_console.xml index b2c0d08..4bc5ccb 100644 --- a/app/src/main/res/layout/act_console.xml +++ b/app/src/main/res/layout/act_console.xml @@ -18,20 +18,20 @@ */ --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:background="#ff000000" - > + android:background="#ff000000"> <TextView android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:text="@string/terminal_no_hosts_connected" - android:textAppearance="?android:attr/textAppearanceMedium" android:gravity="center" - /> + android:text="@string/terminal_no_hosts_connected" + android:textAppearance="?android:attr/textAppearanceMedium"/> <android.support.v4.view.ViewPager android:id="@+id/console_flip" @@ -44,29 +44,29 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:padding="5dip" android:background="#80000000" android:fadingEdge="horizontal" android:fadingEdgeLength="25dip" + android:padding="5dip" android:visibility="gone" > <TextView android:id="@+id/console_password_instructions" + android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_marginBottom="5dip" android:textAppearance="?android:attr/textAppearanceMedium" - android:layout_width="fill_parent" android:visibility="gone" - android:layout_marginBottom="5dip" /> <EditText android:id="@+id/console_password" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_below="@+id/console_password_instructions" android:password="true" android:singleLine="true" - android:layout_below="@+id/console_password_instructions" /> </RelativeLayout> @@ -76,46 +76,46 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:padding="5dip" android:background="#80000000" android:fadingEdge="horizontal" android:fadingEdgeLength="25dip" + android:padding="5dip" android:visibility="gone" > <TextView android:id="@+id/console_prompt" - android:layout_height="wrap_content" android:layout_width="fill_parent" + android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/console_prompt_no" - android:text="@string/button_no" - android:paddingTop="5dip" - android:paddingBottom="10dip" - android:paddingLeft="40dip" - android:paddingRight="40dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_below="@+id/console_prompt" android:clickable="false" + android:paddingBottom="10dip" + android:paddingLeft="40dip" + android:paddingRight="40dip" + android:paddingTop="5dip" + android:text="@string/button_no" /> <Button android:id="@+id/console_prompt_yes" - android:text="@string/button_yes" - android:paddingTop="5dip" - android:paddingBottom="10dip" - android:paddingLeft="40dip" - android:paddingRight="40dip" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_toLeftOf="@+id/console_prompt_no" android:layout_below="@+id/console_prompt" + android:layout_toLeftOf="@+id/console_prompt_no" + android:paddingBottom="10dip" + android:paddingLeft="40dip" + android:paddingRight="40dip" + android:paddingTop="5dip" + android:text="@string/button_yes" /> </RelativeLayout> @@ -126,155 +126,201 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#55000000" + android:orientation="horizontal" android:padding="0dip" android:visibility="gone"> - <Button - android:id="@+id/button_ctrl" - android:layout_width="0px" + <HorizontalScrollView + android:id="@+id/keyboard_hscroll" + android:layout_width="0dp" + android:layout_height="match_parent" android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_toggle_control_character" android:padding="0dp" - android:text="@string/button_key_ctrl" - android:textSize="10dip" - /> + android:scrollbars="none"> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <LinearLayout + android:layout_width="0dp" + android:layout_height="match_parent" + android:orientation="horizontal" + android:padding="0dp"> - <Button - android:id="@+id/button_esc" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_send_escape_character" - android:padding="0dp" - android:text="@string/button_key_esc" - android:textSize="10dip" - /> + <Button + android:id="@+id/button_ctrl" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_toggle_control_character" + android:text="@string/button_key_ctrl"/> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <View style="@style/KeyboardSeparator"/> - <Button - android:id="@+id/button_tab" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_send_tab_character" - android:padding="0dp" - android:text="@string/button_key_tab" - android:textSize="10dip" - /> + <Button + android:id="@+id/button_esc" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_send_escape_character" + android:text="@string/button_key_esc"/> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <View style="@style/KeyboardSeparator"/> - <Button - android:id="@+id/button_up" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_up" - android:padding="0dp" - android:text="@string/button_key_up" - android:textSize="10dip" - /> + <Button + android:id="@+id/button_tab" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_send_tab_character" + android:text="@string/button_key_tab"/> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <View style="@style/KeyboardSeparator"/> - <Button - android:id="@+id/button_down" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_down" - android:padding="0dp" - android:text="@string/button_key_down" - android:textSize="10dip" - /> + <Button + android:id="@+id/button_up" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_up" + android:text="@string/button_key_up"/> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <View style="@style/KeyboardSeparator"/> - <Button - android:id="@+id/button_left" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_left" - android:padding="0dp" - android:text="@string/button_key_left" - android:textSize="10dip" - /> + <Button + android:id="@+id/button_down" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_down" + android:text="@string/button_key_down"/> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <View style="@style/KeyboardSeparator"/> - <Button - android:id="@+id/button_right" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" - android:background="#55f0f0f0" - android:contentDescription="@string/image_description_right" - android:padding="0dp" - android:text="@string/button_key_right" - android:textSize="10dip" - /> + <Button + android:id="@+id/button_left" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_left" + android:text="@string/button_key_left"/> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#90000000" - /> + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_right" + style="@style/KeyboardButton" + android:contentDescription="@string/image_description_right" + android:text="@string/button_key_right"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_home" + style="@style/KeyboardButton" + android:text="@string/button_key_home"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_end" + style="@style/KeyboardButton" + android:text="@string/button_key_end"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_pgup" + style="@style/KeyboardButton" + android:text="@string/button_key_pgup"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_pgdn" + style="@style/KeyboardButton" + android:text="@string/button_key_pgdn"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f1" + style="@style/KeyboardButton" + android:text="@string/button_key_f1"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f2" + style="@style/KeyboardButton" + android:text="@string/button_key_f2"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f3" + style="@style/KeyboardButton" + android:text="@string/button_key_f3"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f4" + style="@style/KeyboardButton" + android:text="@string/button_key_f4"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f5" + style="@style/KeyboardButton" + android:text="@string/button_key_f5"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f6" + style="@style/KeyboardButton" + android:text="@string/button_key_f6"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f7" + style="@style/KeyboardButton" + android:text="@string/button_key_f7"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f8" + style="@style/KeyboardButton" + android:text="@string/button_key_f8"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f9" + style="@style/KeyboardButton" + android:text="@string/button_key_f9"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f10" + style="@style/KeyboardButton" + android:text="@string/button_key_f10"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f11" + style="@style/KeyboardButton" + android:text="@string/button_key_f11"/> + + <View style="@style/KeyboardSeparator"/> + + <Button + android:id="@+id/button_f12" + style="@style/KeyboardButton" + android:text="@string/button_key_f12"/> + </LinearLayout> + </HorizontalScrollView> + + <View style="@style/KeyboardSeparator"/> <ImageView android:id="@+id/button_keyboard" - android:layout_width="0px" - android:layout_weight="1" - android:layout_height="30dip" - android:layout_margin="0dp" + style="@style/KeyboardKey" + android:background="#55b0b0f0" android:contentDescription="@string/image_description_show_keyboard" - android:padding="0dp" - android:src="@drawable/button_keyboard" - android:background="#55f0f0f0" - android:textSize="10dip" - /> - + android:src="@drawable/button_keyboard"/> </LinearLayout> + </RelativeLayout> diff --git a/app/src/main/res/layout/act_eula.xml b/app/src/main/res/layout/act_eula.xml new file mode 100644 index 0000000..f70188b --- /dev/null +++ b/app/src/main/res/layout/act_eula.xml @@ -0,0 +1,90 @@ +<!-- + ~ ConnectBot: simple, powerful, open-source SSH client for Android + ~ Copyright 2015 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="match_parent" + android:layout_height="match_parent" + tools:context="org.connectbot.EulaActivity"> + + <ScrollView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + > + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="10dip" + > + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="ConnectBot is a simple, powerful, open-source Secure Shell (SSH) client for your Android device." + android:textAppearance="?android:attr/textAppearanceMedium" + /> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:paddingTop="10dip" + android:text="It can manage several SSH sessions, create secure tunnels, and copy/paste between other apps." + android:textAppearance="?android:attr/textAppearanceMedium" + /> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:autoLink="web" + android:paddingTop="10dip" + android:text="@string/copyright_info" + android:textAppearance="?android:attr/textAppearanceSmall" + /> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:paddingTop="10dip" + android:text="About and Credits" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:autoLink="web" + android:paddingTop="10dip" + android:text="Copyright \u00a9 2007-2008 Kenny Root http://the-b.org, Jeffrey Sharkey http://jsharkey.org\n\nBased in part on the Trilead SSH2 client, provided under a BSD-style license. Copyright \u00a9 2007 Trilead AG. http://www.trilead.com\n\nAlso based on JTA Telnet/SSH client, provided under the GPLv2 license. Copyright \u00a9 Matthias L. Jugel, Marcus Meiner 1996-2005. http://www.javassh.org\n\nAlso based in part on the JSOCKS library, provided under the GNU LGPL license. http://jsocks.sourceforge.net\n\nAlso based in part on JZlib provided under a BSD-style license. Copyright \u00a9 JCraft, Inc., 2000-2004 http://www.jcraft.com" + android:textColor="#bebebe" + android:textSize="14sp" + /> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:paddingTop="10dip" + android:text="@string/msg_version" + android:textAppearance="?android:attr/textAppearanceSmall" + /> + + </LinearLayout> + + </ScrollView> + +</RelativeLayout> diff --git a/app/src/main/res/layout/act_generatepubkey.xml b/app/src/main/res/layout/act_generatepubkey.xml index f10b80b..feb0ed9 100644 --- a/app/src/main/res/layout/act_generatepubkey.xml +++ b/app/src/main/res/layout/act_generatepubkey.xml @@ -20,166 +20,171 @@ <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" android:layout_height="wrap_content" - android:scrollbars="vertical" - android:layout_width="fill_parent"> + android:scrollbars="vertical"> <TableLayout - android:orientation="vertical" + android:layout_width="fill_parent" android:layout_height="wrap_content" + android:orientation="vertical" android:paddingLeft="10dip" android:paddingRight="10dip" - android:scrollbars="vertical" - android:layout_width="fill_parent"> + android:scrollbars="vertical"> <TableRow> + <TextView - android:text="@string/prompt_nickname" - android:paddingRight="10dip" android:gravity="end|center_vertical" - android:textAppearance="?android:attr/textAppearanceMedium" /> + android:paddingRight="10dip" + android:text="@string/prompt_nickname" + android:textAppearance="?android:attr/textAppearanceMedium"/> <EditText android:id="@+id/nickname" - android:hint="@string/prompt_nickname_hint_pubkey" android:layout_height="wrap_content" - android:singleLine="true" - android:layout_weight="1" /> + android:layout_weight="1" + android:hint="@string/prompt_nickname_hint_pubkey" + android:singleLine="true"/> </TableRow> <TableRow> + <TextView - android:text="@string/prompt_type" - android:paddingRight="10dip" - android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_gravity="center_vertical" android:gravity="bottom|end" - android:layout_gravity="center_vertical" /> + android:paddingRight="10dip" + android:text="@string/prompt_type" + android:textAppearance="?android:attr/textAppearanceMedium"/> <RadioGroup android:id="@+id/key_type" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal" - android:checkedButton="@+id/rsa"> + android:checkedButton="@+id/rsa" + android:orientation="horizontal"> <RadioButton android:id="@+id/rsa" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="RSA" - android:paddingRight="3dip"/> + android:paddingRight="3dip" + android:text="RSA"/> <RadioButton android:id="@+id/dsa" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="DSA" - android:paddingRight="3dip"/> + android:paddingRight="3dip" + android:text="DSA"/> <RadioButton android:id="@+id/ec" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="EC" /> + android:text="EC"/> </RadioGroup> </TableRow> <TableRow> + <TextView - android:text="@string/prompt_bits" + android:gravity="end|center_vertical" android:paddingRight="10dip" - android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="end|center_vertical" /> + android:text="@string/prompt_bits" + android:textAppearance="?android:attr/textAppearanceMedium"/> <EditText android:id="@+id/bits" - android:inputType="number" android:layout_height="wrap_content" - android:text="1024" + android:layout_weight="1" + android:inputType="number" android:singleLine="true" - android:layout_weight="1" /> + android:text="1024"/> </TableRow> <SeekBar - android:layout_height="wrap_content" android:id="@+id/bits_slider" android:layout_width="fill_parent" - android:paddingBottom="10dip" + android:layout_height="wrap_content" android:max="3328" - android:progress="256" /> + android:paddingBottom="10dip" + android:progress="256"/> <TextView - android:text="@string/prompt_password_can_be_blank" - android:gravity="start" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_width="wrap_content" /> + android:gravity="start" + android:text="@string/prompt_password_can_be_blank"/> <TableRow> + <TextView - android:paddingRight="10dip" - android:gravity="end|center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceMedium" - android:text="@string/prompt_password" /> + android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_password" + android:textAppearance="?android:attr/textAppearanceMedium"/> <EditText android:id="@+id/password1" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_weight="1" android:password="true" - android:singleLine="true" - android:layout_weight="1" /> + android:singleLine="true"/> </TableRow> <TableRow android:paddingBottom="6dip"> + <LinearLayout - android:paddingRight="10dip" + android:gravity="end|center_vertical" android:orientation="vertical" - android:gravity="end|center_vertical"> + android:paddingRight="10dip"> <TextView - android:gravity="end|bottom" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceMedium" - android:text="@string/prompt_password" /> + android:gravity="end|bottom" + android:text="@string/prompt_password" + android:textAppearance="?android:attr/textAppearanceMedium"/> <TextView - android:gravity="end|top" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" - android:text="@string/prompt_again" /> + android:gravity="end|top" + android:text="@string/prompt_again" + android:textAppearance="?android:attr/textAppearanceSmall"/> </LinearLayout> <EditText android:id="@+id/password2" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_weight="1" android:password="true" - android:singleLine="true" - android:layout_weight="1" /> + android:singleLine="true"/> </TableRow> <CheckBox + android:id="@+id/unlock_at_startup" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:id="@+id/unlock_at_startup" - android:text="@string/pubkey_load_on_start" /> + android:text="@string/pubkey_load_on_start"/> <CheckBox + android:id="@+id/confirm_use" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:id="@+id/confirm_use" - android:text="@string/pubkey_confirm_use" /> + android:text="@string/pubkey_confirm_use"/> <Button + android:id="@+id/save" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:id="@+id/save" - android:text="@string/pubkey_generate" + android:layout_marginTop="6dip" android:enabled="false" - android:layout_marginTop="6dip"/> + android:text="@string/pubkey_generate"/> </TableLayout> </ScrollView> diff --git a/app/src/main/res/layout/act_help.xml b/app/src/main/res/layout/act_help.xml index adf17f3..b4bb808 100644 --- a/app/src/main/res/layout/act_help.xml +++ b/app/src/main/res/layout/act_help.xml @@ -27,29 +27,29 @@ <LinearLayout android:id="@+id/topics" - android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" + android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" - android:text="@string/msg_version" - android:paddingTop="2dip" - android:textAppearance="?android:attr/textAppearanceSmall" android:gravity="end" android:paddingRight="2dip" + android:paddingTop="2dip" + android:text="@string/msg_version" + android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" - android:text="@string/help_intro" + android:gravity="center_horizontal" android:paddingTop="2dip" + android:text="@string/help_intro" android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="center_horizontal" /> </LinearLayout> diff --git a/app/src/main/res/layout/act_help_topic.xml b/app/src/main/res/layout/act_help_topic.xml index 7123d63..f02e35e 100644 --- a/app/src/main/res/layout/act_help_topic.xml +++ b/app/src/main/res/layout/act_help_topic.xml @@ -19,9 +19,9 @@ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:orientation="vertical" > <org.connectbot.util.HelpTopicView diff --git a/app/src/main/res/layout/act_hostlist.xml b/app/src/main/res/layout/act_hostlist.xml index a0214d4..647563c 100644 --- a/app/src/main/res/layout/act_hostlist.xml +++ b/app/src/main/res/layout/act_hostlist.xml @@ -20,36 +20,36 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:orientation="vertical" > <LinearLayout android:id="@+id/quickconnect" - android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:orientation="horizontal" > <Spinner android:id="@+id/transport_selection" - android:layout_height="wrap_content" android:layout_width="wrap_content" + android:layout_height="wrap_content" /> <EditText android:id="@+id/front_quickconnect" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:ellipsize="end" + android:focusableInTouchMode="true" android:hint="username@hostname:port" android:inputType="textEmailAddress" android:maxLines="1" - android:ellipsize="end" - android:focusableInTouchMode="true" android:singleLine="true"/> </LinearLayout> @@ -65,10 +65,10 @@ android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:layout_above="@+id/quickconnect" + android:gravity="center" android:text="@string/list_host_empty" android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="center" - android:layout_above="@+id/quickconnect" /> </RelativeLayout> diff --git a/app/src/main/res/layout/act_portforwardlist.xml b/app/src/main/res/layout/act_portforwardlist.xml index b8589d0..46393ae 100644 --- a/app/src/main/res/layout/act_portforwardlist.xml +++ b/app/src/main/res/layout/act_portforwardlist.xml @@ -19,22 +19,24 @@ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:orientation="vertical" > - <ListView android:id="@android:id/list" + <ListView + android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" /> - <TextView android:id="@android:id/empty" + <TextView + android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:gravity="center" android:text="@string/portforward_list_empty" android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="center" /> </LinearLayout> diff --git a/app/src/main/res/layout/act_pubkeylist.xml b/app/src/main/res/layout/act_pubkeylist.xml index ceabb52..0737d05 100644 --- a/app/src/main/res/layout/act_pubkeylist.xml +++ b/app/src/main/res/layout/act_pubkeylist.xml @@ -19,22 +19,24 @@ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:orientation="vertical" > - <ListView android:id="@android:id/list" + <ListView + android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" /> - <TextView android:id="@android:id/empty" + <TextView + android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:gravity="center" android:text="@string/pubkey_list_empty" android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="center" /> </LinearLayout> diff --git a/app/src/main/res/layout/act_wizard.xml b/app/src/main/res/layout/act_wizard.xml deleted file mode 100644 index 97205b9..0000000 --- a/app/src/main/res/layout/act_wizard.xml +++ /dev/null @@ -1,62 +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. - */ ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:gravity="end" - > - - <ViewFlipper - android:id="@+id/wizard_flipper" - android:layout_width="fill_parent" - android:layout_height="0dip" - android:layout_weight="1" - /> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="5dip" - > - - <Button - android:id="@+id/action_prev" - android:layout_width="120dip" - android:layout_height="wrap_content" - android:drawableLeft="@drawable/ic_btn_back" - android:text="Cancel" - android:gravity="center" - /> - - <Button - android:id="@+id/action_next" - android:layout_width="120dip" - android:layout_height="wrap_content" - android:drawableRight="@drawable/ic_btn_next" - android:text="Agree" - android:gravity="center" - /> - - </LinearLayout> - -</LinearLayout> diff --git a/app/src/main/res/layout/dia_changepassword.xml b/app/src/main/res/layout/dia_changepassword.xml index fe5f1dc..7f0d5b2 100644 --- a/app/src/main/res/layout/dia_changepassword.xml +++ b/app/src/main/res/layout/dia_changepassword.xml @@ -26,64 +26,67 @@ > <TableRow android:id="@+id/old_password_prompt"> + <TextView - android:text="@string/prompt_old_password" - android:paddingRight="10dip" + android:layout_width="wrap_content" android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_old_password" android:textAppearance="?android:attr/textAppearanceMedium" - android:layout_width="wrap_content" /> <EditText android:id="@+id/old_password" android:layout_width="200dip" android:layout_height="wrap_content" - android:singleLine="true" android:password="true" + android:singleLine="true" /> </TableRow> <TableRow> + <TextView - android:text="@string/prompt_password" - android:paddingRight="10dip" + android:layout_width="wrap_content" android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_password" android:textAppearance="?android:attr/textAppearanceMedium" - android:layout_width="wrap_content" /> <EditText android:id="@+id/password1" android:layout_width="200dip" android:layout_height="wrap_content" - android:singleLine="true" android:password="true" + android:singleLine="true" /> </TableRow> <TableRow> + <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="vertical" android:gravity="end" + android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/prompt_password" - android:paddingRight="10dip" android:gravity="end|bottom" + android:paddingRight="10dip" + android:text="@string/prompt_password" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/prompt_again" - android:paddingRight="10dip" android:gravity="end|top" + android:paddingRight="10dip" + android:text="@string/prompt_again" android:textAppearance="?android:attr/textAppearanceSmall" /> </LinearLayout> @@ -92,8 +95,8 @@ android:id="@+id/password2" android:layout_width="200dip" android:layout_height="wrap_content" - android:singleLine="true" android:password="true" + android:singleLine="true" /> </TableRow> </TableLayout> diff --git a/app/src/main/res/layout/dia_gatherentropy.xml b/app/src/main/res/layout/dia_gatherentropy.xml index 8c7153a..2fc4a60 100644 --- a/app/src/main/res/layout/dia_gatherentropy.xml +++ b/app/src/main/res/layout/dia_gatherentropy.xml @@ -19,9 +19,9 @@ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:orientation="vertical" android:paddingLeft="10dip" android:paddingRight="10dip" > @@ -29,16 +29,16 @@ <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" + android:gravity="center" android:text="@string/pubkey_touch_hint" - android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="center"/> + android:textAppearance="?android:attr/textAppearanceMedium"/> <org.connectbot.util.EntropyView android:id="@+id/entropy" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:background="#666666ff" android:layout_marginBottom="10dip" android:layout_marginTop="10dip" + android:background="#666666ff" android:drawingCacheQuality="auto"/> </LinearLayout> diff --git a/app/src/main/res/layout/dia_keyboard_shortcuts.xml b/app/src/main/res/layout/dia_keyboard_shortcuts.xml new file mode 100644 index 0000000..b6fb589 --- /dev/null +++ b/app/src/main/res/layout/dia_keyboard_shortcuts.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ ConnectBot: simple, powerful, open-source SSH client for Android + ~ Copyright 2015 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" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <ScrollView + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <TableLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="24dip" + android:stretchColumns="1"> + <TableRow> + <TextView + android:text="Ctrl-Shift-V" + android:padding="3dip" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + <TextView + android:text="@string/console_menu_paste" + android:padding="3dip" + android:gravity="end" + android:layout_weight="1" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + </TableRow> + + <TableRow> + <TextView + android:text="Ctrl and +" + android:padding="3dip" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + <TextView + android:text="@string/increase_font_size" + android:padding="3dip" + android:layout_weight="1" + android:gravity="end" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + </TableRow> + + <TableRow> + <TextView + android:text="Ctrl and -" + android:padding="3dip" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + <TextView + android:text="@string/decrease_font_size" + android:padding="3dip" + android:gravity="end" + android:layout_weight="1" + android:textAppearance="?android:attr/textAppearanceMedium" + /> + </TableRow> + + </TableLayout> + + </ScrollView> +</RelativeLayout> diff --git a/app/src/main/res/layout/dia_password.xml b/app/src/main/res/layout/dia_password.xml index 599af83..148e197 100644 --- a/app/src/main/res/layout/dia_password.xml +++ b/app/src/main/res/layout/dia_password.xml @@ -28,10 +28,10 @@ <EditText android:id="@android:id/text1" android:layout_width="250dip" - android:singleLine="true" android:layout_height="wrap_content" + android:hint="@string/prompt_password" android:password="true" - android:hint="Password" + android:singleLine="true" /> </LinearLayout> diff --git a/app/src/main/res/layout/dia_portforward.xml b/app/src/main/res/layout/dia_portforward.xml index ed6aa40..f2ef3ed 100644 --- a/app/src/main/res/layout/dia_portforward.xml +++ b/app/src/main/res/layout/dia_portforward.xml @@ -19,8 +19,8 @@ --> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_height="fill_parent" android:layout_width="fill_parent" + android:layout_height="fill_parent" android:scrollbars="vertical" > @@ -32,72 +32,77 @@ > <TableRow> + <TextView - android:text="@string/prompt_nickname" - android:paddingRight="10dip" android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_nickname" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/nickname" - android:hint="Internal Webserver" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:singleLine="true" android:layout_weight="1" + android:hint="Internal Webserver" + android:singleLine="true" /> </TableRow> <TableRow> + <TextView - android:text="@string/prompt_type" - android:paddingRight="10dip" android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_type" android:textAppearance="?android:attr/textAppearanceMedium" /> - <Spinner android:id="@+id/portforward_type" + <Spinner + android:id="@+id/portforward_type" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_weight="1" android:entries="@array/list_portforward_types" android:prompt="@string/prompt_type" - android:layout_weight="1" /> </TableRow> <TableRow> + <TextView - android:text="@string/prompt_source_port" - android:paddingRight="10dip" android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_source_port" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/portforward_source" - android:hint="8080" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" + android:hint="8080" android:inputType="number" /> </TableRow> <TableRow> + <TextView - android:text="@string/prompt_destination" - android:paddingRight="10dip" android:gravity="end|center_vertical" + android:paddingRight="10dip" + android:text="@string/prompt_destination" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/portforward_destination" - android:hint="localhost:80" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" + android:hint="localhost:80" android:inputType="textEmailAddress" /> </TableRow> diff --git a/app/src/main/res/layout/dia_resize.xml b/app/src/main/res/layout/dia_resize.xml index 781243d..e31d58e 100644 --- a/app/src/main/res/layout/dia_resize.xml +++ b/app/src/main/res/layout/dia_resize.xml @@ -19,9 +19,9 @@ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:orientation="horizontal" android:paddingLeft="10dip" android:paddingRight="10dip" > @@ -30,17 +30,17 @@ android:id="@+id/width" android:layout_width="100dip" android:layout_height="wrap_content" - android:singleLine="true" android:numeric="integer" + android:singleLine="true" android:text="80"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="x" + android:gravity="end|bottom" android:paddingLeft="10dip" android:paddingRight="10dip" - android:gravity="end|bottom" + android:text="x" android:textAppearance="?android:attr/textAppearanceLarge" /> @@ -49,7 +49,7 @@ android:id="@+id/height" android:layout_width="100dip" android:layout_height="wrap_content" - android:singleLine="true" android:numeric="integer" + android:singleLine="true" android:text="25"/> </LinearLayout> diff --git a/app/src/main/res/layout/item_portforward.xml b/app/src/main/res/layout/item_portforward.xml index 105ef58..f2214a7 100644 --- a/app/src/main/res/layout/item_portforward.xml +++ b/app/src/main/res/layout/item_portforward.xml @@ -19,10 +19,10 @@ --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" android:layout_height="wrap_content" - android:orientation="vertical" android:gravity="start|center_vertical" - android:layout_width="fill_parent" + android:orientation="vertical" android:padding="10dip" > @@ -30,20 +30,20 @@ android:id="@android:id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" - android:text="Tunnel Nickname" - android:layout_alignParentTop="true" - android:layout_alignParentStart="true" android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + android:text="Tunnel Nickname" + android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@android:id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" - android:text="Local port 8080 to 192.168.1.1:80" android:layout_below="@android:id/text1" + android:text="Local port 8080 to 192.168.1.1:80" + android:textAppearance="?android:attr/textAppearanceSmall" /> </RelativeLayout> diff --git a/app/src/main/res/layout/item_pubkey.xml b/app/src/main/res/layout/item_pubkey.xml index 34a7330..ed0c7d2 100644 --- a/app/src/main/res/layout/item_pubkey.xml +++ b/app/src/main/res/layout/item_pubkey.xml @@ -18,8 +18,9 @@ */ --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +<RelativeLayout android:id="@android:id/content" + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip"> @@ -28,29 +29,31 @@ android:id="@android:id/icon1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@drawable/pubkey" - android:contentDescription="@string/image_description_key_is_locked" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" - android:layout_marginLeft="10dip"/> + android:layout_marginLeft="10dip" + android:contentDescription="@string/image_description_key_is_locked" + android:src="@drawable/pubkey"/> <TextView android:id="@android:id/text1" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" - android:text="Key Example" - android:layout_alignParentStart="true" android:layout_alignParentLeft="true" - android:bufferType="normal" android:layout_width="wrap_content" android:layout_toLeftOf="@android:id/icon1"/> + android:layout_alignParentStart="true" + android:layout_toLeftOf="@android:id/icon1" + android:bufferType="normal" + android:text="Key Example" + android:textAppearance="?android:attr/textAppearanceLarge"/> <TextView android:id="@android:id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" - android:text="DSA 1024-bit" android:layout_below="@android:id/text1" + android:text="DSA 1024-bit" + android:textAppearance="?android:attr/textAppearanceSmall" /> </RelativeLayout> diff --git a/app/src/main/res/layout/item_terminal.xml b/app/src/main/res/layout/item_terminal.xml index 9a8ff19..b34c800 100644 --- a/app/src/main/res/layout/item_terminal.xml +++ b/app/src/main/res/layout/item_terminal.xml @@ -28,10 +28,10 @@ android:id="@+id/terminal_overlay" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" + android:layout_centerInParent="true" android:background="#aa000000" android:padding="10dip" - android:layout_centerInParent="true" + android:textAppearance="?android:attr/textAppearanceLarge" /> </RelativeLayout> diff --git a/app/src/main/res/layout/wiz_eula.xml b/app/src/main/res/layout/wiz_eula.xml deleted file mode 100644 index 228befe..0000000 --- a/app/src/main/res/layout/wiz_eula.xml +++ /dev/null @@ -1,87 +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. - */ ---> - -<ScrollView - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_weight="1" - > - - <LinearLayout - android:orientation="vertical" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="10dip" - > - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="ConnectBot is a simple, powerful, open-source Secure Shell (SSH) client for your Android device." - android:textAppearance="?android:attr/textAppearanceMedium" - /> - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:paddingTop="10dip" - android:text="It can manage several SSH sessions, create secure tunnels, and copy/paste between other apps." - android:textAppearance="?android:attr/textAppearanceMedium" - /> - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:paddingTop="10dip" - android:autoLink="web" - android:text="@string/copyright_info" - android:textAppearance="?android:attr/textAppearanceSmall" - /> - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:paddingTop="10dip" - android:text="About and Credits" - android:textAppearance="?android:attr/textAppearanceMedium" - /> - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:paddingTop="10dip" - android:autoLink="web" - android:text="Copyright \u00a9 2007-2008 Kenny Root http://the-b.org, Jeffrey Sharkey http://jsharkey.org\n\nBased in part on the Trilead SSH2 client, provided under a BSD-style license. Copyright \u00a9 2007 Trilead AG. http://www.trilead.com\n\nAlso based on JTA Telnet/SSH client, provided under the GPLv2 license. Copyright \u00a9 Matthias L. Jugel, Marcus Meiner 1996-2005. http://www.javassh.org\n\nAlso based in part on the JSOCKS library, provided under the GNU LGPL license. http://jsocks.sourceforge.net\n\nAlso based in part on JZlib provided under a BSD-style license. Copyright \u00a9 JCraft, Inc., 2000-2004 http://www.jcraft.com" - android:textSize="14sp" - android:textColor="#bebebe" - /> - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:paddingTop="10dip" - android:text="@string/msg_version" - android:textAppearance="?android:attr/textAppearanceSmall" - /> - - </LinearLayout> - -</ScrollView> diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index d19430f..bc6f6db 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -171,9 +171,6 @@ <string name="delete_message">Estas segur que vols esborrar \'%1$s\'?</string> <string name="delete_pos">Sí, esborra</string> <string name="delete_neg">Cancel·la</string> - <string name="wizard_agree">Accepto</string> - <string name="wizard_next">Següent</string> - <string name="wizard_back">Enrere</string> <string name="terminal_no_hosts_connected">No hi ha servidors connectats actualment</string> <string name="terminal_connecting">Connectant a %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Clau de servidor \'%1$s\' verificada: %2$s</string> diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 1d38c19..18d80b4 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -166,9 +166,6 @@ <string name="delete_message">Určitě chcete smazat \'%1$s\'?</string> <string name="delete_pos">Ano, smazat</string> <string name="delete_neg">Zrušit</string> - <string name="wizard_agree">Souhlasím</string> - <string name="wizard_next">Další</string> - <string name="wizard_back">Zpět</string> <string name="terminal_no_hosts_connected">Žádný host není připojený</string> <string name="terminal_connecting">Připojování k %1$s:%2$d přes %3$s</string> <string name="terminal_failed">Selhalo ověření klíče hosta</string> diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 5cd6da7..1b98e6b 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Er du sikker på at du vil slette \'%1$s\'?</string> <string name="delete_pos">Ja, slet</string> <string name="delete_neg">Afbryd</string> - <string name="wizard_agree">Godkend</string> - <string name="wizard_next">Næste</string> - <string name="wizard_back">Tilbage</string> <string name="terminal_no_hosts_connected">Ingen forbindelser aktive i øjeblikket</string> <string name="terminal_connecting">Forbinder til %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Verificeret vært \'%1$s\' nøgle: %2$s</string> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d9dcc40..1cda6a7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -171,9 +171,6 @@ <string name="delete_message">Soll \'%1$s\' wirklich gelöscht werden?</string> <string name="delete_pos">Ja, löschen</string> <string name="delete_neg">Abbrechen</string> - <string name="wizard_agree">Zustimmung</string> - <string name="wizard_next">Weiter</string> - <string name="wizard_back">Zurück</string> <string name="terminal_no_hosts_connected">Zur Zeit keine Hosts verbunden</string> <string name="terminal_connecting">Verbinde mit %1$s:%2$d mittels %3$s</string> <string name="terminal_sucess">Host \'%1$s\' Schlüssel: %2$s bestätigt</string> diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c0d8471..0ab0094 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -170,9 +170,6 @@ <string name="delete_message">¿Está seguro de que quiere eliminar \'%1$s\'?</string> <string name="delete_pos">Sí, eliminar</string> <string name="delete_neg">Cancelar</string> - <string name="wizard_agree">De acuerdo</string> - <string name="wizard_next">Siguiente</string> - <string name="wizard_back">Atrás</string> <string name="terminal_no_hosts_connected">No hay equipos conectados ahora</string> <string name="terminal_connecting">Conectando a %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Host (equipo anfitrion) \'%1$s\' clave: %2$s verifiado.</string> diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index a8462fc..19aac2f 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -172,9 +172,6 @@ <string name="delete_message">Ziur zaude \'%1$s\' ezabatu nahi duzula?</string> <string name="delete_pos">Bai, ezabatu</string> <string name="delete_neg">Utzi</string> - <string name="wizard_agree">Ados</string> - <string name="wizard_next">Hurrengoa</string> - <string name="wizard_back">Atzera</string> <string name="terminal_no_hosts_connected">Ez dago ostalaririk konektatuta une honetan</string> <string name="terminal_connecting">%1$s:%2$d-ra konektatzen %3$s bidez</string> <string name="terminal_sucess">Egiaztatutako ostalaria \'%1$s\' gakoa: %2$s</string> diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index d17bd22..2311edf 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -168,9 +168,6 @@ <string name="delete_message">Oletko varma että haluat poistaa: \'%1$s\'?</string> <string name="delete_pos">Kyllä, poista</string> <string name="delete_neg">Peru</string> - <string name="wizard_agree">Hyväksy</string> - <string name="wizard_next">Seuraava</string> - <string name="wizard_back">Edellinen</string> <string name="terminal_no_hosts_connected">Yhteenkään palvelimeen ei ole yhdistetty</string> <string name="terminal_connecting">Muodostetaan %3$s-yhteys palvelimeen %1$s:%2$d</string> <string name="terminal_sucess">Varmennettiin palvelin \'%1$s\' avain: %2$s</string> diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6c34f56..28afe2b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -179,9 +179,6 @@ <string name="delete_message">Êtes-vous sûr de vouloir supprimer \'%1$s\' ?</string> <string name="delete_pos">Oui, supprimer</string> <string name="delete_neg">Annuler</string> - <string name="wizard_agree">Accepter</string> - <string name="wizard_next">Suivant</string> - <string name="wizard_back">Précédent</string> <string name="terminal_no_hosts_connected">Aucun hôte actuellement connecté</string> <string name="terminal_connecting">Connexion à %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Clé de vérification de l\'hôte \'%1$s\' : %2$s</string> diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 10c0623..aae25e2 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -170,9 +170,6 @@ <string name="delete_message">האם אכן למחוק את \'%1$s\'?</string> <string name="delete_pos">כן, למחוק</string> <string name="delete_neg">ביטול</string> - <string name="wizard_agree">מוסכם</string> - <string name="wizard_next">הבא</string> - <string name="wizard_back">הקודם</string> <string name="terminal_no_hosts_connected">אין מארחים מחוברים כרגע</string> <string name="terminal_connecting">מתבצעת התחברות אל %1$s:%2$d דרך %3$s</string> <string name="terminal_sucess">מפתח של המארח המאומת \'%1$s\': %2$s</string> diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 61becd0..9e71521 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Biztosan törli a \'%1$s\'-t?</string> <string name="delete_pos">Igen, törlés</string> <string name="delete_neg">Mégsem</string> - <string name="wizard_agree">Elfogad</string> - <string name="wizard_next">Következő</string> - <string name="wizard_back">Vissza</string> <string name="terminal_no_hosts_connected">Nincs csatlakozva</string> <string name="terminal_connecting">Csatlakozás %1$s:%2$d a %3$s protokollon</string> <string name="terminal_sucess">Azonosított \'%1$s\' gépnév kulcsa: %2$s</string> diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index c8d93c9..6d89a84 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -168,9 +168,6 @@ <string name="delete_message">Apakah anda yakin ingin menghapus %1$s?</string> <string name="delete_pos">Ya, hapus</string> <string name="delete_neg">Batal</string> - <string name="wizard_agree">Setuju</string> - <string name="wizard_next">Selanjutnya</string> - <string name="wizard_back">Sebelumnya</string> <string name="terminal_no_hosts_connected">Tidak ada host yang saat ini terhubung</string> <string name="terminal_connecting">Menyambungkan ke %1$s:%2$d melalui %3$s</string> <string name="terminal_sucess">Host terverifikasi \'%1$s\' kunci: %2$s</string> diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 174849a..81ccb65 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -148,9 +148,6 @@ <string name="delete_message">Ert þú viss um að þú viljir eyða \'%1$s\'?</string> <string name="delete_pos">Já, eyða</string> <string name="delete_neg">Hætta við</string> - <string name="wizard_agree">Samþykkja</string> - <string name="wizard_next">Næsta</string> - <string name="wizard_back">Til baka</string> <string name="terminal_no_hosts_connected">Engir þjónar tengdir í augnablikinu</string> <string name="terminal_connecting">Tengist við %1$s:%2$d með %3$s</string> <string name="terminal_failed">Ekki tókst að staðfesta lykil þjóns.</string> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index abc690a..cfd0e2c 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -171,9 +171,6 @@ <string name="delete_message">Sei sicuro di voler eliminare \'%1$s\'?</string> <string name="delete_pos">Sì, elimina</string> <string name="delete_neg">Annulla</string> - <string name="wizard_agree">Accetto</string> - <string name="wizard_next">Successiva</string> - <string name="wizard_back">Precedente</string> <string name="terminal_no_hosts_connected">Nessun host attualmente connesso</string> <string name="terminal_connecting">Connessione a %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Host verificato \'%1$s\' chiave: %2$s</string> diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b44efa8..34adda8 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -184,9 +184,6 @@ <string name="delete_message">\'%1$s\'を削除してよろしいですか?</string> <string name="delete_pos">はい、削除します</string> <string name="delete_neg">キャンセル</string> - <string name="wizard_agree">同意します</string> - <string name="wizard_next">次へ</string> - <string name="wizard_back">戻る</string> <string name="terminal_no_hosts_connected">接続済みのホストはありません.</string> <string name="terminal_connecting">%1$s:%2$dに%3$sで接続しています</string> <string name="terminal_sucess">ホスト\'%1$s\' キー%2$s を検証しました</string> diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 54d7d30..a350b18 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -156,9 +156,6 @@ <string name="list_delkey_del">삭제</string> <string name="delete_pos">예, 삭제</string> <string name="delete_neg">취소</string> - <string name="wizard_agree">동의</string> - <string name="wizard_next">다음</string> - <string name="wizard_back">뒤로</string> <string name="terminal_no_hosts_connected">현재 연결된 호스트가 없음</string> <string name="terminal_connecting">%3$s(으)로 %1$s:%2$d에 연결 중</string> <string name="terminal_failed">호스트 키를 확인할 수 없습니다.</string> diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 50ce19e..af4e09b 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Er du sikker på at du vil slette \'%1$s\'?</string> <string name="delete_pos">Ja, slett</string> <string name="delete_neg">Avbryt</string> - <string name="wizard_agree">Godta</string> - <string name="wizard_next">Neste</string> - <string name="wizard_back">Tilbake</string> <string name="terminal_no_hosts_connected">Ingen verter tilkoblet for øyeblikket</string> <string name="terminal_connecting">Kobler til %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Verifiserte vert \'%1$s\' sin nøkkel: %2$s</string> diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 1488b3a..93f5c02 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Weet je zeker dat je \'%1$s\' wilt verwijderen?</string> <string name="delete_pos">Ja, verwijder</string> <string name="delete_neg">Annuleren</string> - <string name="wizard_agree">Ga akkoord</string> - <string name="wizard_next">Volgende</string> - <string name="wizard_back">Terug</string> <string name="terminal_no_hosts_connected">Momenteel geen hosts verbonden</string> <string name="terminal_connecting">Bezig met verbinden naar %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Gecontroleerde host \'%1$s\' sleutel: %2$s</string> diff --git a/app/src/main/res/values-oc/strings.xml b/app/src/main/res/values-oc/strings.xml index 9dcad52..a506fa1 100644 --- a/app/src/main/res/values-oc/strings.xml +++ b/app/src/main/res/values-oc/strings.xml @@ -71,9 +71,6 @@ <string name="list_delkey_backspace">Retorn enrèire</string> <string name="list_delkey_del">Suprimir</string> <string name="delete_neg">Anullar</string> - <string name="wizard_agree">Acceptar</string> - <string name="wizard_next">Seguent</string> - <string name="wizard_back">Precedent</string> <string name="terminal_connecting">Connexion a %1$s:%2$d via %3$s</string> <string name="no">Non</string> <string name="with_confirmation">Aprèp confirmacion</string> diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 37c92f4..b605ae1 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -171,9 +171,6 @@ <string name="delete_message">Jesteś pewien, że chcesz usunąć \'%1$s\'?</string> <string name="delete_pos">Tak, usuń</string> <string name="delete_neg">Anuluj</string> - <string name="wizard_agree">Akceptuj</string> - <string name="wizard_next">Dalej</string> - <string name="wizard_back">Wróć</string> <string name="terminal_no_hosts_connected">Żaden host nie jest obecnie połączony</string> <string name="terminal_connecting">Łączenie z hostem %1$s:%2$d przez %3$s</string> <string name="terminal_sucess">Host \'%1$s \' zweryfikowany kluczem: %2$s</string> diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 7aadeaa..a7e9570 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -171,9 +171,6 @@ <string name="delete_message">Certeza que quer deletar \'%1$s\' ?</string> <string name="delete_pos">Sim, apagar</string> <string name="delete_neg">Cancelar</string> - <string name="wizard_agree">Aceito</string> - <string name="wizard_next">Próximo</string> - <string name="wizard_back">Voltar</string> <string name="terminal_no_hosts_connected">Sem host conectado atualmente</string> <string name="terminal_connecting">Conectando no %1$s:%2$d via %3$s</string> <string name="terminal_sucess">"Anfitrião comprovado \'%1$s\' chave: %2$s"</string> diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 70be69b..d1fc2cd 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Tem a certeza que deseja eliminar \'%1$s\'?</string> <string name="delete_pos">Sim, apagar</string> <string name="delete_neg">Cancelar</string> - <string name="wizard_agree">Aceitar</string> - <string name="wizard_next">Seguinte</string> - <string name="wizard_back">Retroceder</string> <string name="terminal_no_hosts_connected">Nenhum anfitrião ligado actualmente</string> <string name="terminal_connecting">A ligar a %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Verificado anfitrião \'%1$s\' chave: %2$s</string> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 6eae2ba..a3fa802 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -172,9 +172,6 @@ <string name="delete_message">Вы уверены, что хотите удалить \'%1$s\'?</string> <string name="delete_pos">Да, удалить</string> <string name="delete_neg">Отменить</string> - <string name="wizard_agree">Соглашаюсь</string> - <string name="wizard_next">Далее</string> - <string name="wizard_back">Назад</string> <string name="terminal_no_hosts_connected">Нет подключенных узлов</string> <string name="terminal_connecting">Подключение к %1$s:%2$d через %3$s</string> <string name="terminal_sucess">Проверенный узел \'%1$s\' ключ: %2$s</string> diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 47f4aea..60e0b87 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Naozaj chcete zmazať \'%1$s\'?</string> <string name="delete_pos">Áno, vymazať</string> <string name="delete_neg">Zrušiť</string> - <string name="wizard_agree">Súhlasím</string> - <string name="wizard_next">Ďalej</string> - <string name="wizard_back">Späť</string> <string name="terminal_no_hosts_connected">Žiadny hostiteľ nie je pripijený</string> <string name="terminal_connecting">Pripájanie k %1$s:%2$d cez %3$s</string> <string name="terminal_sucess">Hostiteľ overený \'%1$s\' kľúč: %2$s</string> diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 6adca1d..28d97d4 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -156,9 +156,6 @@ <string name="delete_message">Ali ste prepričani, da želite izbrisati \'%1$s\'?</string> <string name="delete_pos">Da, izbriši.</string> <string name="delete_neg">Prekliči</string> - <string name="wizard_agree">Se strinjam</string> - <string name="wizard_next">Naprej</string> - <string name="wizard_back">Nazaj</string> <string name="terminal_no_hosts_connected">Trenutno ni noben gostitelj povezan</string> <string name="terminal_connecting">Povezujem se na %1$s:%2$d preko %3$s</string> <string name="terminal_sucess">Preverjen gostitelj \'%1$s\' ključ: %2$s</string> diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index c0613fb..a3430c5 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -184,9 +184,6 @@ <string name="delete_message">Желите ли заиста да обришете „%1$s“?</string> <string name="delete_pos">Да, обриши</string> <string name="delete_neg">Одустани</string> - <string name="wizard_agree">Прихваћам</string> - <string name="wizard_next">Следеће</string> - <string name="wizard_back">Назад</string> <string name="terminal_no_hosts_connected">Нема повезаних домаћина тренутно</string> <string name="terminal_connecting">Повезујем се са %1$s:%2$d преко %3$s</string> <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string> diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 5151a14..5ea2a55 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -169,9 +169,6 @@ <string name="delete_message">Är du säker att du vill ta bort \'%1$s\'?</string> <string name="delete_pos">Ja, ta bort</string> <string name="delete_neg">Avbryt</string> - <string name="wizard_agree">Godkänn</string> - <string name="wizard_next">Nästa</string> - <string name="wizard_back">Tillbaka</string> <string name="terminal_no_hosts_connected">Inga värdar anslutna</string> <string name="terminal_connecting">Ansluter till %1$s:%2$d via %3$s</string> <string name="terminal_sucess">Verifierad värd \'%1$s\' nyckel: %2$s</string> diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index dd9cfed..41cc553 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -171,9 +171,6 @@ <string name="delete_message">\'%1$s\' silinecek onaylıyor musunuz?</string> <string name="delete_pos">Evet, sil</string> <string name="delete_neg">İptal Et</string> - <string name="wizard_agree">Kabul et</string> - <string name="wizard_next">İleri</string> - <string name="wizard_back">Geri dön</string> <string name="terminal_no_hosts_connected">Hiçbir sunucuya bağlanılmadı</string> <string name="terminal_connecting">%3$s ile %1$s:%2$d bağlanıyor</string> <string name="terminal_sucess">Host doğrulaması \'%1$s\' anahtar: %2$s</string> diff --git a/app/src/main/res/values-v14/styles.xml b/app/src/main/res/values-v14/styles.xml deleted file mode 100644 index 3969010..0000000 --- a/app/src/main/res/values-v14/styles.xml +++ /dev/null @@ -1,29 +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. - */ ---> -<resources> - <style name="NoTitle" parent="android:Theme.DeviceDefault"> - <item name="android:windowContentOverlay">@null</item> - <item name="android:actionBarStyle">@style/SolidActionBar</item> - </style> - - <style name="SolidActionBar" parent="android:Widget.Holo.ActionBar"> - <item name="android:background">#222222</item> - </style> -</resources> diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index cab5816..9e10f66 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -184,9 +184,6 @@ <string name="delete_message">确定要删除\'%1$s\'吗?</string> <string name="delete_pos">是,删除</string> <string name="delete_neg">取消</string> - <string name="wizard_agree">同意</string> - <string name="wizard_next">下一页</string> - <string name="wizard_back">返回</string> <string name="terminal_no_hosts_connected">当前没有连接主机</string> <string name="terminal_connecting">正在通过%3$s连接到 %1$s:%2$d</string> <string name="terminal_sucess">验证主机 %1$s 键值: %2$s</string> diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 1dd6541..4c4d541 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -184,9 +184,6 @@ <string name="delete_message">您確定要刪除 \'%1$s\'</string> <string name="delete_pos">是,刪除</string> <string name="delete_neg">取消</string> - <string name="wizard_agree">同意</string> - <string name="wizard_next">下一步</string> - <string name="wizard_back">返回</string> <string name="terminal_no_hosts_connected">目前沒有已連線主機</string> <string name="terminal_connecting">連接到 %1$s:%2$d,通過 %3$s</string> <string name="terminal_sucess">驗證主機 \'%1$s\' 金鑰: %2$s</string> diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 4721490..23bb1d9 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -123,12 +123,6 @@ <item>@string/portforward_dynamic</item> </string-array> - <string-array name="list_wizard_topics" translatable="false"> - <item>Hints</item> - <item>PhysicalKeyboard</item> - <item>VirtualKeyboard</item> - </string-array> - <string-array name="list_delkey" translatable="false"> <item>@string/list_delkey_del</item> <item>@string/list_delkey_backspace</item> diff --git a/app/src/main/res/values/notrans.xml b/app/src/main/res/values/notrans.xml index 5dacca6..4311e3b 100644 --- a/app/src/main/res/values/notrans.xml +++ b/app/src/main/res/values/notrans.xml @@ -20,7 +20,7 @@ <resources> <string name="app_name" translatable="false">ConnectBot</string> - <string name="copyright_info" translatable="false">Before we get started, we need to get some legal information out of the way. ConnectBot is provided under the Apache License, Version 2.0 (the “License”). Here are a few key points:\n\nYou may not use this program except in compliance with the License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless 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.</string> + <string name="copyright_info" translatable="false">ConnectBot is provided under the Apache License, Version 2.0 (the “License”). Here are a few key points:\n\nYou may not use this program except in compliance with the License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless 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.</string> <!-- "Up" button in virtual keyboard. --> <string name="button_key_up">\u25B2</string> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e08dbd4..c6086da 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,8 +18,8 @@ */ --> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" - xmlns:tools="http://schemas.android.com/tools"> +<resources xmlns:tools="http://schemas.android.com/tools" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- Summary of what ConnectBot is; used as a short description in the Android running apps list --> <string name="app_desc">"Simple, powerful, open-source SSH client."</string> @@ -53,6 +53,16 @@ <string name="help_about">"About ConnectBot"</string> <string name="help_keyboard">"Keyboard"</string> + <!-- Title for the help page with the terms & conditions of the app. --> + <string name="terms_and_conditions">"Terms & Conditions"</string> + + <!-- Title for the help dialog showing keyboard shortcuts. --> + <string name="keyboard_shortcuts">"Keyboard Shortcuts"</string> + <!-- Text in a keyboard shortcuts list lined up to keys which increase the terminal font-size. --> + <string name="increase_font_size">"Increase Font Size"</string> + <!-- Text in a keyboard shortcuts list lined up to keys which decrease the terminal font-size. --> + <string name="decrease_font_size">"Decrease Font Size"</string> + <string name="pubkey_generate">"Generate"</string> <string name="pubkey_import">"Import"</string> <string name="pubkey_delete">"Delete key"</string> @@ -429,13 +439,6 @@ <string name="disconnect_all_pos">"Yes, disconnect"</string> <string name="disconnect_all_neg">"Cancel"</string> - <!-- Button to agree to license terms. --> - <string name="wizard_agree">"Agree"</string> - <!-- Button to go to the next page in the first time start-up wizard. --> - <string name="wizard_next">"Next"</string> - <!-- Button to go to the previous page in the first time start-up wizard. --> - <string name="wizard_back">"Back"</string> - <string name="terminal_no_hosts_connected">"No hosts currently connected"</string> <!-- Displayed in terminal when attempting to connect to a host. The first two @@ -552,4 +555,37 @@ <string name="button_key_ctrl">Ctrl</string> <!-- Text for the "Tab" button in virtual keyboard. --> <string name="button_key_tab">Tab</string> + + <!-- Text for the "Home" button in virtual keyboard. --> + <string name="button_key_home">Home</string> + <!-- Text for the "End" button in virtual keyboard. --> + <string name="button_key_end">End</string> + <!-- Text for the "Page Up" button in virtual keyboard. --> + <string name="button_key_pgup">PgUp</string> + <!-- Text for the "Page Down" button in virtual keyboard. --> + <string name="button_key_pgdn">PgDn</string> + <!-- Text for the "F1" button in virtual keyboard. --> + <string name="button_key_f1">F1</string> + <!-- Text for the "F2" button in virtual keyboard. --> + <string name="button_key_f2">F2</string> + <!-- Text for the "F3" button in virtual keyboard. --> + <string name="button_key_f3">F3</string> + <!-- Text for the "F4" button in virtual keyboard. --> + <string name="button_key_f4">F4</string> + <!-- Text for the "F5" button in virtual keyboard. --> + <string name="button_key_f5">F5</string> + <!-- Text for the "F6" button in virtual keyboard. --> + <string name="button_key_f6">F6</string> + <!-- Text for the "F7" button in virtual keyboard. --> + <string name="button_key_f7">F7</string> + <!-- Text for the "F8" button in virtual keyboard. --> + <string name="button_key_f8">F8</string> + <!-- Text for the "F9" button in virtual keyboard. --> + <string name="button_key_f9">F9</string> + <!-- Text for the "F10" button in virtual keyboard. --> + <string name="button_key_f10">F10</string> + <!-- Text for the "F11" button in virtual keyboard. --> + <string name="button_key_f11">F11</string> + <!-- Text for the "F12" button in virtual keyboard. --> + <string name="button_key_f12">F12</string> </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 22e830b..3ad5fc0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -18,8 +18,24 @@ */ --> <resources> - <style name="NoTitle" parent="android:Theme"> - <item name="android:windowNoTitle">true</item> - <item name="android:windowContentOverlay">@null</item> + + <style name="KeyboardKey"> + <item name="android:layout_width">45dip</item> + <item name="android:layout_height">30dip</item> + <item name="android:layout_margin">0dp</item> + <item name="android:padding">0dp</item> + <item name="android:textSize">10sp</item> + </style> + + + <style name="KeyboardButton" parent="KeyboardKey"> + <item name="android:background">#55f0f0f0</item> + </style> + + + <style name="KeyboardSeparator"> + <item name="android:layout_width">1dip</item> + <item name="android:layout_height">match_parent</item> + <item name="android:background">#90000000</item> </style> </resources> |