aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/HostListActivity.java
diff options
context:
space:
mode:
authorRyan Hansberry <rhansby@gmail.com>2015-09-22 14:02:21 -0700
committerRyan Hansberry <rhansby@gmail.com>2015-09-22 14:02:21 -0700
commit757b43a3e16b9f0687be9215f2cdc203fda98431 (patch)
treeddb7fffedd83957c80b8d2f1eb72148cfc97c391 /app/src/main/java/org/connectbot/HostListActivity.java
parent0f293ab7927470ab3a2d78064cc3c66e2523415f (diff)
parentea5c3e8b7f1926af45921d35d79fb6dca63b5fd3 (diff)
downloadconnectbot-757b43a3e16b9f0687be9215f2cdc203fda98431.tar.gz
connectbot-757b43a3e16b9f0687be9215f2cdc203fda98431.tar.bz2
connectbot-757b43a3e16b9f0687be9215f2cdc203fda98431.zip
Merge branch 'master' into convert-activities-to-appcompat
Diffstat (limited to 'app/src/main/java/org/connectbot/HostListActivity.java')
-rw-r--r--app/src/main/java/org/connectbot/HostListActivity.java153
1 files changed, 107 insertions, 46 deletions
diff --git a/app/src/main/java/org/connectbot/HostListActivity.java b/app/src/main/java/org/connectbot/HostListActivity.java
index 41ba62b..335b76d 100644
--- a/app/src/main/java/org/connectbot/HostListActivity.java
+++ b/app/src/main/java/org/connectbot/HostListActivity.java
@@ -28,7 +28,9 @@ 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.Dialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
@@ -44,6 +46,8 @@ import android.os.IBinder;
import android.preference.PreferenceManager;
import android.support.annotation.StyleRes;
import android.support.annotation.VisibleForTesting;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v4.app.DialogFragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.format.DateUtils;
@@ -59,6 +63,7 @@ import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
@@ -81,9 +86,6 @@ public class HostListActivity extends AppCompatListActivity implements OnHostSta
private MenuItem sortlast;
- private Spinner transportSpinner;
- private TextView quickconnect;
-
private SharedPreferences prefs = null;
protected boolean makingShortcut = false;
@@ -214,38 +216,18 @@ public class HostListActivity extends AppCompatListActivity implements OnHostSta
this.registerForContextMenu(mListView);
- quickconnect = (TextView) this.findViewById(R.id.front_quickconnect);
- quickconnect.setVisibility(makingShortcut ? View.GONE : View.VISIBLE);
- quickconnect.setOnKeyListener(new OnKeyListener() {
-
- public boolean onKey(View v, int keyCode, KeyEvent event) {
-
- if (event.getAction() == KeyEvent.ACTION_UP) return false;
- if (keyCode != KeyEvent.KEYCODE_ENTER) return false;
-
- return startConsoleActivity();
- }
- });
-
- transportSpinner = (Spinner) findViewById(R.id.transport_selection);
- transportSpinner.setVisibility(makingShortcut ? View.GONE : View.VISIBLE);
- ArrayAdapter<String> transportSelection = new ArrayAdapter<String>(this,
- android.R.layout.simple_spinner_item, TransportFactory.getTransportNames());
- transportSelection.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- transportSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
- String formatHint = TransportFactory.getFormatHint(
- (String) transportSpinner.getSelectedItem(),
- HostListActivity.this);
-
- quickconnect.setHint(formatHint);
- quickconnect.setError(null);
- quickconnect.requestFocus();
+ FloatingActionButton addHostButton =
+ (FloatingActionButton) findViewById(R.id.add_host_button);
+ addHostButton.setVisibility(makingShortcut ? View.GONE : View.VISIBLE);
+ addHostButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DialogFragment dialog = new AddHostDialogFragment();
+ dialog.show(getSupportFragmentManager(), "AddHostDialogFragment");
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
- transportSpinner.setAdapter(transportSelection);
this.inflater = LayoutInflater.from(this);
}
@@ -349,18 +331,7 @@ public class HostListActivity extends AppCompatListActivity implements OnHostSta
/**
* @return
*/
- private boolean startConsoleActivity() {
- Uri uri = TransportFactory.getUri((String) transportSpinner
- .getSelectedItem(), quickconnect.getText().toString());
-
- if (uri == null) {
- quickconnect.setError(getString(R.string.list_format_error,
- TransportFactory.getFormatHint(
- (String) transportSpinner.getSelectedItem(),
- HostListActivity.this)));
- return false;
- }
-
+ private boolean startConsoleActivity(Uri uri) {
HostBean host = TransportFactory.findHost(hostdb, uri);
if (host == null) {
host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
@@ -373,9 +344,6 @@ public class HostListActivity extends AppCompatListActivity implements OnHostSta
intent.setData(uri);
startActivity(intent);
- // Clear the input box for the next entry.
- quickconnect.setText("");
-
return true;
}
@@ -617,4 +585,97 @@ public class HostListActivity extends AppCompatListActivity implements OnHostSta
return hosts.size();
}
}
+
+ public static class AddHostDialogFragment extends DialogFragment {
+ private TextView mAddressField;
+ private Spinner mSpinner;
+
+ HostListActivity mListener;
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ mListener = (HostListActivity) activity;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ LayoutInflater inflater = getActivity().getLayoutInflater();
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+ View addHostDialog = inflater.inflate(R.layout.dia_add_host, null);
+ builder.setView(addHostDialog)
+ .setPositiveButton(R.string.button_add, null)
+ .setNegativeButton(R.string.button_cancel, null);
+ AlertDialog dialog = builder.create();
+
+ mAddressField = (TextView) addHostDialog.findViewById(R.id.front_quickconnect);
+ mAddressField.setOnKeyListener(new OnKeyListener() {
+
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+
+ if (event.getAction() == KeyEvent.ACTION_UP) return false;
+ if (keyCode != KeyEvent.KEYCODE_ENTER) return false;
+
+ processNewUriEntered();
+ return true;
+ }
+ });
+
+ mSpinner = (Spinner) addHostDialog.findViewById(R.id.transport_selection);
+ ArrayAdapter<String> transportSelection = new ArrayAdapter<String>(getActivity(),
+ android.R.layout.simple_spinner_item, TransportFactory.getTransportNames());
+ transportSelection.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
+ String formatHint = TransportFactory.getFormatHint(
+ (String) mSpinner.getSelectedItem(),
+ getActivity());
+ mAddressField.setHint(formatHint);
+ mAddressField.setError(null);
+ mAddressField.requestFocus();
+ }
+
+ public void onNothingSelected(AdapterView<?> arg0) {
+ }
+ });
+ mSpinner.setAdapter(transportSelection);
+
+ return dialog;
+ }
+
+ @Override
+ public void onResume()
+ {
+ super.onResume();
+ final AlertDialog alertDialog = (AlertDialog) getDialog();
+ Button addButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
+ addButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ processNewUriEntered();
+ }
+ });
+ }
+
+ /**
+ * Processes the URI that has been entered. If it is a valid URI, adds that host
+ * and starts ConsoleActivity; otherwise, shows an error in the address field.
+ */
+ private void processNewUriEntered() {
+ Uri uri = TransportFactory.getUri((String) mSpinner
+ .getSelectedItem(), mAddressField.getText().toString());
+ if (uri == null) {
+ mAddressField.setError(getString(R.string.list_format_error,
+ TransportFactory.getFormatHint(
+ (String) mSpinner.getSelectedItem(),
+ getActivity())));
+ mAddressField.requestFocus();
+ return;
+ }
+
+ mListener.startConsoleActivity(uri);
+ getDialog().dismiss();
+ }
+ }
}