package it.demo.twitterlike.android.ui;
import it.demo.twitterlike.android.tasks.LoginTask;
import it.demo.twitterlike.android.ui.utils.Constants;
import it.demo.twitterlike.android.ui.utils.DeviceUtils;
import it.demo.twitterlike.android.ui.utils.ViewUtils;
import org.springframework.util.StringUtils;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.telly.groundy.Groundy;
import com.telly.groundy.annotations.OnProgress;
import com.telly.groundy.annotations.Param;
public class LoginActivity extends AbstractConnectAsyncActivity {
public static final String DISCONNECT_PARAMETER = "disconnect";
private static final String USER_CONNECTED_CHECKED_PARAMETER = "userConnectedChecked";
private static boolean connected;
public static boolean setPreferences(SharedPreferences preferences,
String username, String password, int id) {
Editor editor = preferences.edit();
editor.putString(Constants.USERNAME_ATTRIBUTE_NAME, username);
editor.putString(Constants.PASSWORD_ATTRIBUTE_NAME, password);
editor.putInt(Constants.USERID_ATTRIBUTE_NAME, id);
boolean commit = editor.commit();
return commit;
}
public static void resetPasswordPreferences(SharedPreferences preferences) {
Editor editor = preferences.edit();
editor.clear();
editor.commit();
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean(USER_CONNECTED_CHECKED_PARAMETER,
connected);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
setContentView(R.layout.activity_login);
if (extras != null) {
if (extras.getBoolean(DISCONNECT_PARAMETER, false)) {
disconnect();
}
}
boolean connected = (savedInstanceState != null && savedInstanceState
.containsKey(USER_CONNECTED_CHECKED_PARAMETER)) ? savedInstanceState
.getBoolean(USER_CONNECTED_CHECKED_PARAMETER) : isConnected();
if (connected) {
doConnect();
} else {
if (!DeviceUtils.isOnline(this)) {
Toast.makeText(LoginActivity.this,
getString(R.string.login_help_nointernetconnection),
Toast.LENGTH_LONG).show();
}
showConnectOption();
}
}
private void showConnectOption() {
final EditText userEditText = (EditText) findViewById(R.id.username);
String defaultUserName = getString(R.string.account_default_username);
if (StringUtils.hasText(defaultUserName)) {
userEditText.setText(defaultUserName);
}
final EditText passEditText = (EditText) findViewById(R.id.password);
String defaultPassword = getString(R.string.account_default_password);
if (StringUtils.hasText(defaultPassword)) {
passEditText.setText(defaultPassword);
}
final Button buttonSend = (Button) findViewById(R.id.sign_in_button);
// Setto il listener sul bottone
buttonSend.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
ViewUtils.closeKeyboard(LoginActivity.this, userEditText);
if (!DeviceUtils.isOnline(LoginActivity.this)) {
makeToastText(R.string.login_help_nointernetconnection);
} else {
String userName = userEditText.getText().toString();
String password = passEditText.getText().toString();
if (userName != null && password != null
&& userName.trim().length() > 0
&& password.trim().length() > 0) {
showProgressDialog(getString(R.string.login_message_user_password_verify));
Groundy.create(LoginTask.class)
.callback(LoginActivity.this)
.callbackManager(callbacksManager)
// required if you want to
// get notified of your task
// lifecycle
.arg(LoginTask.USERNAME_PARAMETER, userName)
.arg(LoginTask.PASSWORD_PARAMETER, password)
.queueUsing(LoginActivity.this);
} else {
makeToastText(R.string.login_message_authentication_username_password_required);
}
}
}
});
}
@OnProgress(LoginTask.class)
public void onProgress(@Param(Groundy.PROGRESS) int progress) {
switch (progress) {
case LoginTask.PROGRESS_UPDATE_SUCCESS_AUTHENTICATION: {
showProgressDialog(getString(R.string.login_message_user_download_content));
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_login, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
// NavUtils.navigateUpFromSameTask(this);
return true;
case R.id.menu_settings: {
Intent intent = new Intent(this, LoginSettingActivity.class);
startActivityForResult(intent, 1);
return true;
}
default:
return super.onOptionsItemSelected(item);
}
}
static void show(Context context) {
show(context, false);
}
static void show(Context context, boolean disconnect) {
final Intent intent = new Intent(context, LoginActivity.class);
intent.putExtra(DISCONNECT_PARAMETER, disconnect);
context.startActivity(intent);
}
}