package io.scal.secureshareui.login; import timber.log.Timber; import io.scal.secureshareui.controller.SSHSiteController; import io.scal.secureshareui.controller.SiteController; import io.scal.secureshareuilibrary.R; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class SSHLoginActivity extends LockableActivity { private static final String TAG = "SFTPLoginActivity"; public final static String DATA_KEY_SERVER_URL = "server_url"; public final static String DATA_KEY_SERVER_NICKNAME = "server_nickname"; public final static String DATA_KEY_REMOTE_PATH = "remote_path"; private int mAccessResult = Activity.RESULT_CANCELED; EditText mUsername; EditText mPassword; EditText mNickname; EditText mURL; EditText mRemotePath; private Button btnSignIn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth); this.setFinishOnTouchOutside(false); setContentView(R.layout.activity_ssh_login); init(); } private void init() { mUsername = (EditText) findViewById(R.id.etUsername); mPassword = (EditText) findViewById(R.id.etPassword); mNickname = (EditText) findViewById(R.id.etServerName); mURL = (EditText) findViewById(R.id.etServerURL); mRemotePath = (EditText) findViewById(R.id.etRemotePath); btnSignIn = (Button) findViewById(R.id.btnSignIn); btnSignIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { view.setEnabled(false); String username = mUsername.getText().toString(); String password = mPassword.getText().toString(); String host = mURL.getText().toString(); new CheckCredentialsAsync().execute(username, password, host); } }); } private class CheckCredentialsAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { if (SSHSiteController.SSH.checkCredentials(params[0], params[1], params[2])) { // success return Integer.toString(Activity.RESULT_OK); } return Integer.toString(Activity.RESULT_CANCELED); } @Override protected void onPostExecute(String resultStr) { int result = Integer.parseInt(resultStr); btnSignIn.setEnabled(true); TextView tvLoginError = (TextView) findViewById(R.id.tvLoginError); if (result == Activity.RESULT_CANCELED) { mAccessResult = Activity.RESULT_CANCELED; tvLoginError.setVisibility(View.VISIBLE); } else { mAccessResult = Activity.RESULT_OK; tvLoginError.setVisibility(View.GONE); finish(); } } } @Override public void finish() { String username = mUsername.getText().toString(); String password = mPassword.getText().toString(); String nickname = mNickname.getText().toString(); String url = mURL.getText().toString(); String remotePath = mRemotePath.getText().toString(); Intent data = new Intent(); data.putExtra(SiteController.EXTRAS_KEY_USERNAME, username); data.putExtra(SiteController.EXTRAS_KEY_CREDENTIALS, password); try { JSONObject obj = new JSONObject(); obj.put(DATA_KEY_SERVER_URL, url); obj.put(DATA_KEY_SERVER_NICKNAME, nickname); obj.put(DATA_KEY_REMOTE_PATH, remotePath); data.putExtra(SiteController.EXTRAS_KEY_DATA, obj.toString()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } setResult(mAccessResult, data); super.finish(); } }