diff options
author | Jeremy Klein <jklein24@gmail.com> | 2015-09-28 15:04:23 -0700 |
---|---|---|
committer | Jeremy Klein <jklein24@gmail.com> | 2015-09-28 15:04:23 -0700 |
commit | f434d8d2cdb616d643326353fc9eea3151dd8a6a (patch) | |
tree | 3f53091a732f9cd3a28b2af16d05ed15be3da2d2 /app/src/main/java | |
parent | 5f4f6074c257d4bf4ebbdfa41fc2842baa4d5ddf (diff) | |
parent | 8b76ca32a6b333a6e19f1513bf3ab6f598027656 (diff) | |
download | connectbot-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.java | 127 |
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(); + } + } } |