diff --git a/app/src/main/java/com/termux/app/DialogUtils.java b/app/src/main/java/com/termux/app/DialogUtils.java index 97bfbd0e..9bff03dc 100644 --- a/app/src/main/java/com/termux/app/DialogUtils.java +++ b/app/src/main/java/com/termux/app/DialogUtils.java @@ -14,7 +14,8 @@ final class DialogUtils { void onTextSet(String text); } - static void textInput(Activity activity, int titleText, int positiveButtonText, String initialText, final TextSetListener onPositive) { + static void textInput(Activity activity, int titleText, int positiveButtonText, String initialText, final TextSetListener onPositive, + int neutralButtonText, final TextSetListener onNeutral) { final EditText input = new EditText(activity); input.setSingleLine(); if (initialText != null) input.setText(initialText); @@ -31,12 +32,26 @@ final class DialogUtils { layout.setPadding(paddingTopAndSides, paddingTopAndSides, paddingTopAndSides, paddingBottom); layout.addView(input); - new AlertDialog.Builder(activity).setTitle(titleText).setView(layout).setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface d, int whichButton) { - onPositive.onTextSet(input.getText().toString()); - } - }).setNegativeButton(android.R.string.cancel, null).show(); + AlertDialog.Builder builder = new AlertDialog.Builder(activity) + .setTitle(titleText).setView(layout) + .setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int whichButton) { + onPositive.onTextSet(input.getText().toString()); + } + }) + .setNegativeButton(android.R.string.cancel, null); + + if (onNeutral != null) { + builder.setNeutralButton(neutralButtonText, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + onNeutral.onTextSet(input.getText().toString()); + } + }); + } + + builder.show(); input.requestFocus(); } diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index a1e85392..c06eca9b 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -291,30 +291,19 @@ public final class TermuxActivity extends Activity implements ServiceConnection @Override public boolean onLongClick(View v) { Resources res = getResources(); - new AlertDialog.Builder(TermuxActivity.this).setTitle(R.string.new_session) - .setItems(new String[] { res.getString(R.string.new_session_normal_unnamed), res.getString(R.string.new_session_normal_named), - res.getString(R.string.new_session_failsafe) }, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case 0: - addNewSession(false, null); - break; - case 1: - DialogUtils.textInput(TermuxActivity.this, R.string.session_new_named_title, R.string.session_new_named_positive_button, null, - new DialogUtils.TextSetListener() { - @Override - public void onTextSet(String text) { - addNewSession(false, text); - } - }); - break; - case 2: - addNewSession(true, null); - break; + DialogUtils.textInput(TermuxActivity.this, R.string.session_new_named_title, R.string.session_new_named_positive_button, null, + new DialogUtils.TextSetListener() { + @Override + public void onTextSet(String text) { + addNewSession(false, text); + } + }, R.string.new_session_failsafe, new DialogUtils.TextSetListener() { + @Override + public void onTextSet(String text) { + addNewSession(true, text); } } - }).show(); + ); return true; } }); @@ -509,7 +498,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection public void onTextSet(String text) { sessionToRename.mSessionName = text; } - }); + }, -1, null); } @Override diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cb505616..333c071b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,8 +3,6 @@ Termux Termux user New session - Normal - unnamed - Normal - named Failsafe Keyboard Reset