package com.codecomb.views;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.OperationApplicationException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.ToggleButton;
import com.codecomb.SettingsManager;
import com.codecomb.exceptions.AppException;
import com.codecomb.module.im.SignalrConnection;
import com.codecomb.module.login.Auth;
import com.codecomb.module.login.AuthManager;
import com.codecomb.module.login.LoginParams;
import com.codecomb.ufreedom.R;
import com.dd.processbutton.iml.ActionProcessButton;
import com.dd.processbutton.util.ProgressGenerator;
import com.dd.processbutton.util.ProgressGenerator.OnCompleteListener;
public class LoginActivity extends Activity implements OnCompleteListener {
protected static final String TAG = "com.ufreedom.codecomb.uis.LoginActivity";
private ActionProcessButton vLogin;
private EditText vUsername;
private EditText vPassword;
private ToggleButton vRememberPassword;
private ToggleButton vAutoLogin;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
context = this;
initWidget();
initListener();
}
private void initWidget() {
vLogin = (ActionProcessButton) findViewById(R.id.vLogin);
vLogin.setMode(ActionProcessButton.Mode.ENDLESS);
vUsername = (EditText) findViewById(R.id.vUsername);
vPassword = (EditText) findViewById(R.id.vPassword);
vRememberPassword = (ToggleButton) findViewById(R.id.vRememberPassword);
vAutoLogin = (ToggleButton) findViewById(R.id.vAutoLogin);
boolean isRememberPassword = SettingsManager.getInstance().isStoreUser();
if(isRememberPassword){
vUsername.setText(SettingsManager.getInstance().getUsername());
vPassword.setText(SettingsManager.getInstance().getPassword());
vRememberPassword.setChecked(true);
}
}
private void initListener() {
vRememberPassword.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
}
}
});
final ProgressGenerator progressGenerator = new ProgressGenerator(this);
vLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
vUsername.setEnabled(false);
vPassword.setEnabled(false);
final String username = vUsername.getText().toString();
final String password = vPassword.getText().toString();
if (username.isEmpty() && password.isEmpty()) {
Toast.makeText(context, R.string.msg_login_input_empty,
Toast.LENGTH_SHORT).show();
} else {
progressGenerator.start(vLogin);
if(vRememberPassword.isChecked()){
SettingsManager.getInstance().setPassword(password);
SettingsManager.getInstance().setUsername(username);
SettingsManager.getInstance().isStoreUser(true);
}
final LoginParams loginParams = new LoginParams();
loginParams.setPassword(password);
loginParams.setUsername(username);
new AsyncTask<Void, Void, Boolean>() {
Auth auth;
@Override
protected Boolean doInBackground(Void... params) {
try {
auth = new Auth();
auth = AuthManager.getInstance().login(loginParams);
SettingsManager.getInstance().setAccessToken(auth.getAccessToken());
if(auth!= null && auth.isSuccess()){
SignalrConnection.getInstance().connect();
return true;
}else{
return false;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
vUsername.setEnabled(true);
vPassword.setEnabled(true);
if (result) {
progressGenerator.complete();
} else {
// Log.e(TAG, auth.toString());
Toast.makeText(context,
auth.getInfo(),
Toast.LENGTH_SHORT).show();
progressGenerator.stop();
}
}
}.execute();
}
}
});
}
@Override
public void onTaskComplete() {
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
@Override
public void onTaskCancle() {
// TODO Auto-generated method stub
}
@Override
public void onTaskStop() {
// TODO Auto-generated method stub
}
}