aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java
diff options
context:
space:
mode:
authorJeremy Klein <jklein24@gmail.com>2015-09-28 15:04:23 -0700
committerJeremy Klein <jklein24@gmail.com>2015-09-28 15:04:23 -0700
commitf434d8d2cdb616d643326353fc9eea3151dd8a6a (patch)
tree3f53091a732f9cd3a28b2af16d05ed15be3da2d2 /app/src/main/java
parent5f4f6074c257d4bf4ebbdfa41fc2842baa4d5ddf (diff)
parent8b76ca32a6b333a6e19f1513bf3ab6f598027656 (diff)
downloadconnectbot-f434d8d2cdb616d643326353fc9eea3151dd8a6a.tar.gz
connectbot-f434d8d2cdb616d643326353fc9eea3151dd8a6a.tar.bz2
connectbot-f434d8d2cdb616d643326353fc9eea3151dd8a6a.zip
Merge pull request #268 from khorimoto/port-forward-fab
Add FAB to port forward activity.
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/org/connectbot/PortForwardListActivity.java127
1 files changed, 66 insertions, 61 deletions
diff --git a/app/src/main/java/org/connectbot/PortForwardListActivity.java b/app/src/main/java/org/connectbot/PortForwardListActivity.java
index 28b4331..c7f0e7c 100644
--- a/app/src/main/java/org/connectbot/PortForwardListActivity.java
+++ b/app/src/main/java/org/connectbot/PortForwardListActivity.java
@@ -17,6 +17,7 @@
package org.connectbot;
+import java.lang.ref.WeakReference;
import java.util.List;
import org.connectbot.bean.HostBean;
@@ -39,12 +40,12 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.support.annotation.VisibleForTesting;
+import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
@@ -75,6 +76,9 @@ public class PortForwardListActivity extends AppCompatListActivity {
protected TerminalBridge hostBridge = null;
protected LayoutInflater inflater = null;
+
+ protected Handler updateHandler = new Handler(new WeakReference<>(this));
+
private HostBean host;
@Override
@@ -143,18 +147,14 @@ public class PortForwardListActivity extends AppCompatListActivity {
this.registerForContextMenu(mListView);
this.inflater = LayoutInflater.from(this);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuItem add = menu.add(R.string.portforward_menu_add);
- add.setIcon(android.R.drawable.ic_menu_add);
- add.setOnMenuItemClickListener(new OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
+ FloatingActionButton addPortForwardButton =
+ (FloatingActionButton) findViewById(R.id.add_port_forward_button);
+ addPortForwardButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
// build dialog to prompt user about updating
- final View portForwardView = inflater.inflate(R.layout.dia_portforward, null, false);
+ final View portForwardView = View.inflate(PortForwardListActivity.this, R.layout.dia_portforward, null);
final EditText destEdit = (EditText) portForwardView.findViewById(R.id.portforward_destination);
final Spinner typeSpinner = (Spinner) portForwardView.findViewById(R.id.portforward_type);
@@ -168,64 +168,55 @@ public class PortForwardListActivity extends AppCompatListActivity {
});
new AlertDialog.Builder(PortForwardListActivity.this)
- .setView(portForwardView)
- .setPositiveButton(R.string.portforward_pos, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- try {
- final EditText nicknameEdit = (EditText) portForwardView.findViewById(R.id.nickname);
- final EditText sourcePortEdit = (EditText) portForwardView.findViewById(R.id.portforward_source);
-
- String type = HostDatabase.PORTFORWARD_LOCAL;
- switch (typeSpinner.getSelectedItemPosition()) {
- case 0:
- type = HostDatabase.PORTFORWARD_LOCAL;
- break;
- case 1:
- type = HostDatabase.PORTFORWARD_REMOTE;
- break;
- case 2:
- type = HostDatabase.PORTFORWARD_DYNAMIC5;
- break;
- }
+ .setView(portForwardView)
+ .setPositiveButton(R.string.portforward_pos, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ try {
+ final EditText nicknameEdit = (EditText) portForwardView.findViewById(R.id.nickname);
+ final EditText sourcePortEdit = (EditText) portForwardView.findViewById(R.id.portforward_source);
+
+ String type = HostDatabase.PORTFORWARD_LOCAL;
+ switch (typeSpinner.getSelectedItemPosition()) {
+ case 0:
+ type = HostDatabase.PORTFORWARD_LOCAL;
+ break;
+ case 1:
+ type = HostDatabase.PORTFORWARD_REMOTE;
+ break;
+ case 2:
+ type = HostDatabase.PORTFORWARD_DYNAMIC5;
+ break;
+ }
- PortForwardBean portForward = new PortForwardBean(
- host != null ? host.getId() : -1,
- nicknameEdit.getText().toString(), type,
- sourcePortEdit.getText().toString(),
- destEdit.getText().toString());
+ PortForwardBean portForward = new PortForwardBean(
+ host != null ? host.getId() : -1,
+ nicknameEdit.getText().toString(), type,
+ sourcePortEdit.getText().toString(),
+ destEdit.getText().toString());
- if (hostBridge != null) {
- hostBridge.addPortForward(portForward);
- hostBridge.enablePortForward(portForward);
- }
+ if (hostBridge != null) {
+ hostBridge.addPortForward(portForward);
+ hostBridge.enablePortForward(portForward);
+ }
- if (host != null && !hostdb.savePortForward(portForward)) {
- throw new SQLException("Could not save port forward");
- }
+ if (host != null && !hostdb.savePortForward(portForward)) {
+ throw new SQLException("Could not save port forward");
+ }
- updateHandler.sendEmptyMessage(-1);
- } catch (Exception e) {
- Log.e(TAG, "Could not update port forward", e);
- // TODO Show failure dialog.
+ updateHandler.sendEmptyMessage(-1);
+ } catch (Exception e) {
+ Log.e(TAG, "Could not update port forward", e);
+ // TODO Show failure dialog.
+ }
}
- }
- })
- .setNegativeButton(R.string.delete_neg, null).create().show();
-
- return true;
+ })
+ .setNegativeButton(R.string.delete_neg, null).create().show();
}
- });
- return true;
+ public void onNothingSelected(AdapterView<?> arg0) {}
+ });
}
- protected Handler updateHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- PortForwardListActivity.this.updateList();
- }
- };
-
protected void updateList() {
if (hostBridge != null) {
this.portForwards = hostBridge.getPortForwards();
@@ -276,7 +267,7 @@ public class PortForwardListActivity extends AppCompatListActivity {
MenuItem edit = menu.add(R.string.portforward_edit);
edit.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
- final View editTunnelView = inflater.inflate(R.layout.dia_portforward, null, false);
+ final View editTunnelView = View.inflate(PortForwardListActivity.this, R.layout.dia_portforward, null);
final Spinner typeSpinner = (Spinner) editTunnelView.findViewById(R.id.portforward_type);
if (HostDatabase.PORTFORWARD_LOCAL.equals(portForward.getType()))
@@ -432,4 +423,18 @@ public class PortForwardListActivity extends AppCompatListActivity {
return portForwards.size();
}
}
+
+ private static class Handler extends android.os.Handler {
+
+ private WeakReference<PortForwardListActivity> mActivity;
+
+ Handler(WeakReference<PortForwardListActivity> activity) {
+ mActivity = activity;
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ mActivity.get().updateList();
+ }
+ }
}