From 704cc8367bf0ed6554e7a5b8821d8fea2610dff7 Mon Sep 17 00:00:00 2001 From: Andrew Comminos Date: Fri, 15 Jan 2016 21:30:58 -0800 Subject: Prompt for server password on reject. --- .../morlunk/mumbleclient/app/PlumbleActivity.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java b/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java index 938bd4f..acab493 100644 --- a/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java +++ b/app/src/main/java/com/morlunk/mumbleclient/app/PlumbleActivity.java @@ -39,6 +39,7 @@ import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarDrawerToggle; +import android.text.InputType; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -52,6 +53,7 @@ import android.widget.Toast; import com.morlunk.jumble.IJumbleService; import com.morlunk.jumble.JumbleService; import com.morlunk.jumble.model.Server; +import com.morlunk.jumble.protobuf.Mumble; import com.morlunk.jumble.util.JumbleException; import com.morlunk.jumble.util.JumbleObserver; import com.morlunk.jumble.util.MumbleURLParser; @@ -639,6 +641,37 @@ public class PlumbleActivity extends ActionBarActivity implements ListView.OnIte } } }); + } else if (error.getReason() == JumbleException.JumbleDisconnectReason.REJECT && + (error.getReject().getType() == Mumble.Reject.RejectType.WrongUserPW || + error.getReject().getType() == Mumble.Reject.RejectType.WrongServerPW)) { + // FIXME(acomminos): Long conditional. + final EditText passwordField = new EditText(this); + passwordField.setInputType(InputType.TYPE_CLASS_TEXT | + InputType.TYPE_TEXT_VARIATION_PASSWORD); + passwordField.setHint(R.string.password); + ab.setTitle(R.string.invalid_password); + ab.setMessage(error.getMessage()); + ab.setView(passwordField); + ab.setPositiveButton(R.string.reconnect, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Server server = getService().getConnectedServer(); + if (server == null) + return; + String password = passwordField.getText().toString(); + server.setPassword(password); + if (server.isSaved()) + mDatabase.updateServer(server); + connectToServer(server); + } + }); + ab.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (getService() != null) + getService().markErrorShown(); + } + }); } else { ab.setMessage(error.getMessage()); ab.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { -- cgit v1.2.3