package com.andrewshu.android.reddit.login; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.andrewshu.android.reddit.R; import com.andrewshu.android.reddit.settings.RedditSettings; /** * The dialog created when the user selects "Login" from the menu. */ public abstract class LoginDialog extends Dialog { private final Activity mActivity; private final RedditSettings mSettings; private final EditText loginUsernameInput; private final EditText loginPasswordInput; public LoginDialog(final Activity activity, RedditSettings settings, boolean finishActivityIfCanceled) { super(activity, settings.getDialogTheme()); mActivity = activity; mSettings = settings; setContentView(R.layout.login_dialog); setTitle("Login to reddit.com"); if (finishActivityIfCanceled) { // If user presses "back" then quit. setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface d) { if (!mSettings.isLoggedIn()) { mActivity.setResult(Activity.RESULT_CANCELED); mActivity.finish(); } } }); } loginUsernameInput = (EditText) findViewById(R.id.login_username_input); loginUsernameInput.setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_TAB)) { loginPasswordInput.requestFocus(); return true; } return false; } }); loginPasswordInput = (EditText) findViewById(R.id.login_password_input); loginPasswordInput.setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { handleLoginChosen(); return true; } return false; } }); final Button loginButton = (Button) findViewById(R.id.login_button); loginButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { handleLoginChosen(); } }); } private void handleLoginChosen() { String user = loginUsernameInput.getText().toString().trim(); String password = loginPasswordInput.getText().toString(); onLoginChosen(user, password); } /** * Called when the login button is clicked * or when enter is pressed on the password field. */ public abstract void onLoginChosen(String user, String password); }