diff options
author | Ryan Hansberry <rhansby@gmail.com> | 2015-09-22 14:02:21 -0700 |
---|---|---|
committer | Ryan Hansberry <rhansby@gmail.com> | 2015-09-22 14:02:21 -0700 |
commit | 757b43a3e16b9f0687be9215f2cdc203fda98431 (patch) | |
tree | ddb7fffedd83957c80b8d2f1eb72148cfc97c391 /app/src/main/java | |
parent | 0f293ab7927470ab3a2d78064cc3c66e2523415f (diff) | |
parent | ea5c3e8b7f1926af45921d35d79fb6dca63b5fd3 (diff) | |
download | connectbot-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')
-rw-r--r-- | app/src/main/java/org/connectbot/HostListActivity.java | 153 |
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(); + } + } } |