package org.igarape.copcast.views; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.Toast; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.igarape.copcast.R; import org.igarape.copcast.utils.Globals; import org.igarape.copcast.utils.HttpResponseCallback; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; import static org.igarape.copcast.utils.NetworkUtils.post; public class LoginActivity extends Activity { public static String TAG = LoginActivity.class.getName(); EditText txtId; EditText txtPwd; ProgressDialog pDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); txtId = (EditText) findViewById(R.id.txtLoginUser); //txtId.setText(Globals.getUserLogin(this)); txtPwd = (EditText) findViewById(R.id.txtLoginPassword); /** * Appears a hack * On login_activity I added * android:focusable="true" * android:focusableInTouchMode="true" */ txtId.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { txtId.postDelayed(new Runnable() { @Override public void run() { InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.showSoftInput(txtId, 0); } },200); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.login, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { return item.getItemId() == R.id.action_settings || super.onOptionsItemSelected(item); } public void makeLoginRequest(View view) { pDialog = ProgressDialog.show(this, getString(R.string.login_in), getString(R.string.please_hold), true); final String regId = Globals.getRegistrationId(getApplicationContext()); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username", txtId.getText().toString())); params.add(new BasicNameValuePair("password", txtPwd.getText().toString())); params.add(new BasicNameValuePair("scope", "client")); params.add(new BasicNameValuePair("gcm_registration", regId)); post(this, "/token", params, new HttpResponseCallback() { @Override public void success(JSONObject response) { Log.d(TAG, "@JSONRESPONSE=[" + response + "]"); String token = null; try { token = (String) response.get("token"); String ipAddress = (String) response.get("ipAddress"); if (ipAddress != null) { Globals.setServerIpAddress(ipAddress); } } catch (JSONException e) { Log.e(TAG, "error on login", e); } try { Globals.setStreamingPort(Integer.parseInt((String) response.get("streamingPort"))); Globals.setStreamingUser((String) response.get("streamingUser")); Globals.setStreamingPassword((String) response.get("streamingPassword")); Globals.setStreamingPath((String) response.get("streamingPath")); Globals.setUserName((String) response.get("userName")); } catch (JSONException e) { e.printStackTrace(); } if (pDialog != null) { pDialog.dismiss(); pDialog = null; } Globals.setAccessToken(getBaseContext(), token); Globals.setUserLogin(getBaseContext(), txtId.getText().toString()); Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); LoginActivity.this.finish(); } @Override public void unauthorized() { showToast(R.string.unauthorized_login); } private void showToast(int message) { if (pDialog != null) { pDialog.dismiss(); pDialog = null; } Toast toast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP, 0, 100); toast.show(); } @Override public void failure(int statusCode) { showToast(R.string.server_error); } @Override public void noConnection() { showToast(R.string.network_required); } @Override public void badConnection() { showToast(R.string.connection_error); } @Override public void badRequest() { showToast(R.string.bad_request_error); } @Override public void badResponse() { showToast(R.string.bad_request_error); } }); } private boolean hasErrors() { final String login = txtId.getText().toString(); final String password = txtPwd.getText().toString(); if(null == login || login.isEmpty()){ Log.d(TAG, "login required"); Toast toast = Toast.makeText(getApplicationContext(), R.string.login_required, Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP, 0, 100); toast.show(); return true; } if(null == password || password.isEmpty()){ Log.d(TAG,"password required"); Toast toast = Toast.makeText(getApplicationContext(), R.string.password_required, Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP, 0, 100); toast.show(); return true; } return false; } }