package com.snda.mzang.tvtogether.activities;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import com.snda.mzang.tvtogether.R;
import com.snda.mzang.tvtogether.base.B;
import com.snda.mzang.tvtogether.base.JSONUtil;
import com.snda.mzang.tvtogether.model.UserInfo;
import com.snda.mzang.tvtogether.utils.C;
import com.snda.mzang.tvtogether.utils.MD5Helper;
import com.snda.mzang.tvtogether.utils.UserSession;
import com.snda.mzang.tvtogether.utils.ui.PopupTipsUtil;
import com.snda.mzang.tvtogether.utils.ui.WaitingDialogAsyncTask;
public class LoginActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Button loginBtn = (Button) this.findViewById(R.id.loginBtn);
final EditText userName = (EditText) this.findViewById(R.id.loginUsername);
final EditText password = (EditText) this.findViewById(R.id.loginPassword);
final CheckBox regNewUser = (CheckBox) this.findViewById(R.id.loginReg);
final CheckBox keepLogin = (CheckBox) this.findViewById(R.id.loginKeepLogin);
final UserInfo userInfo = loadUserInfoFromDB();
if (userInfo != null) {
userName.setText(userInfo.getUserName());
password.setText(C.dummyPassword);
keepLogin.setChecked(true);
}
loginBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String passwordMD5 = userInfo == null ? MD5Helper.getMD5(password.getText().toString()) : userInfo.getPassword();
JSONObject msg = constuctLoginMessage(userName.getText().toString(), passwordMD5, regNewUser.isChecked(), keepLogin.isChecked());
handleLogin(msg);
// Intent intent = new Intent(getApplicationContext(),
// TextDemoActivity.class);
// Bundle bundle = new Bundle();
// bundle.putString("demoMsg", msg);
// intent.putExtras(bundle);
// startActivity(intent);
// String phoneNum = "2323232323";
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_DIAL);
// intent.setData(Uri.parse("tel:" + phoneNum));
// startActivity(intent);
}
});
}
private UserInfo loadUserInfoFromDB() {
UserInfo userInfo = null;
SQLiteDatabase db = this.openOrCreateDatabase(C.DB_NAME, MODE_PRIVATE, null);
Cursor users = db.query(C.TB_USER, new String[] { C.col_username, C.col_password }, null, null, null, null, null);
if (users.moveToNext() == true) {
userInfo = new UserInfo();
userInfo.setUserName(users.getString(0));
userInfo.setPassword(users.getString(1));
}
db.close();
return userInfo;
}
private void handleLogin(final JSONObject msg) {
boolean keepLoginBoolean = JSONUtil.getBoolean(msg, C.keepLogin);
SQLiteDatabase db = this.openOrCreateDatabase(C.DB_NAME, MODE_PRIVATE, null);
db.execSQL("delete from " + C.TB_USER);
if (keepLoginBoolean == true) {
db.execSQL("insert into " + C.TB_USER + " values (?,?)", new String[] { JSONUtil.getString(msg, C.username), JSONUtil.getString(msg, C.password) });
}
db.close();
LoginTask task = new LoginTask(this, "登录中...");
task.execute(msg);
}
class LoginTask extends WaitingDialogAsyncTask<JSONObject, JSONObject> {
public LoginTask(Context context, String waitingMsg) {
super(context, waitingMsg);
}
ProgressDialog waitingDialog;
@Override
protected JSONObject process(final JSONObject data) {
JSONObject ret = C.comm.sendMsg(data);
return ret;
}
@Override
protected void postProcess(JSONObject result) {
if (B.success.equals(JSONUtil.getString(result, B.result)) == true) {
UserSession.setUserId(JSONUtil.getString(result, B.userId));
Intent intent = new Intent(getApplicationContext(), ChannelListActivity.class);
// Bundle bundle = new Bundle();
// bundle.putString("demoMsg", displayMsg);
// intent.putExtras(bundle);
startActivity(intent);
LoginActivity.this.finish();
} else {
String failMsg = JSONUtil.getString(result, B.failMsg);
PopupTipsUtil.displayToast(LoginActivity.this, "登录失败:" + failMsg);
}
}
}
public JSONObject constuctLoginMessage(String userName, String password, boolean regNewUser, boolean keepLogin) {
JSONObject login = new JSONObject();
UserSession.setUserName(userName);
UserSession.setPassword(password);
try {
login.put(C.processor, B.login);
login.put(C.keepLogin, keepLogin);
login.put(C.username, userName);
login.put(C.password, password);
login.put(C.regNewUser, regNewUser);
return login;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}