package com.manuelmaly.hn.login; import android.app.Activity; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.manuelmaly.hn.App; import com.manuelmaly.hn.R; import com.manuelmaly.hn.server.HNCredentials; import com.manuelmaly.hn.task.HNLoginTask; import com.manuelmaly.hn.task.ITaskFinishedHandler; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; @EActivity(R.layout.login_dialog) public class LoginActivity extends Activity implements ITaskFinishedHandler<Boolean>{ private static final int TASKCODE_LOGIN = 10; @ViewById(R.id.user_settings_dialog_save_button) Button mSaveButton; @ViewById(R.id.user_settings_dialog_cancel_button) Button mCancelButton; @ViewById(R.id.user_settings_dialog_username) EditText mUsernameText; @ViewById(R.id.user_settings_dialog_password) EditText mPasswordText; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login_dialog); } @Click(R.id.user_settings_dialog_cancel_button) void exit() { setResult(RESULT_CANCELED); finish(); } @Click(R.id.user_settings_dialog_save_button) void saveCredentials() { mSaveButton.setText(R.string.checking); HNLoginTask.start(mUsernameText.getText().toString(), mPasswordText.getText().toString(), this, this, TASKCODE_LOGIN); } @Override public void onTaskFinished(int taskCode, com.manuelmaly.hn.task.ITaskFinishedHandler.TaskResultCode code, Boolean result, Object tag) { // If the result is true that means we successfully logged in if (result != null && result) { setResult(RESULT_OK); // Invalidate the credentials so that future requests reset them HNCredentials.invalidate(); finish(); } else { // Otherwise we probably had an issue, so report that to the user int messageId; if (result != null && !result) messageId = R.string.error_login_failed; else messageId = code.equals(TaskResultCode.NoNetworkConnection) ? R.string.error_login_device_offline : R.string.error_unknown_error; Toast.makeText(App.getInstance(), App.getInstance().getString(messageId), Toast.LENGTH_LONG).show(); mSaveButton.setText(getString(R.string.check_and_save)); } } }