package hillfly.wifichat.activity;
import hillfly.wifichat.R;
import hillfly.wifichat.common.BaseActivity;
import hillfly.wifichat.common.socket.udp.UDPMessageListener;
import hillfly.wifichat.model.Users;
import hillfly.wifichat.util.DateUtils;
import hillfly.wifichat.util.ImageUtils;
import hillfly.wifichat.util.SessionUtils;
import hillfly.wifichat.util.SharePreferenceUtils;
import hillfly.wifichat.util.TextUtils;
import java.util.Calendar;
import java.util.Date;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
public class SettingInfoActivity extends BaseActivity implements OnClickListener,
OnDateChangedListener {
private static final int REQUEST_CODE = 1;
// 登陆年龄限制
private static final int MAX_AGE = 80;
private static final int MIN_AGE = 12;
private EditText mEtNickname;
private TextView mHtvConstellation;
private TextView mHtvAge;
private ImageView mIvAvater;
private DatePicker mDpBirthday;
private Calendar mCalendar;
private Date mMinDate;
private Date mMaxDate;
private Date mSelectDate;
private RadioGroup mRgGender;
private RadioButton mRbGirl;
private RadioButton mRbBoy;
private Button mBtnBack;
private Button mBtnNext;
private int mAge;
private int mAvatar;
private String mGender;
private String mBirthday;
private String mConstellation; // 星座
private String mNickname = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_myprofile);
mUDPListener = UDPMessageListener.getInstance(getApplicationContext());
initViews();
initData();
initEvents();
}
@Override
protected void initViews() {
mIvAvater = (ImageView) findViewById(R.id.setting_my_avater_img);
mEtNickname = (EditText) findViewById(R.id.setting_my_nickname);
mRgGender = (RadioGroup) findViewById(R.id.setting_baseinfo_rg_gender);
mHtvConstellation = (TextView) findViewById(R.id.setting_birthday_htv_constellation);
mHtvAge = (TextView) findViewById(R.id.setting_birthday_htv_age);
mDpBirthday = (DatePicker) findViewById(R.id.setting_birthday_dp_birthday);
mRbBoy = (RadioButton) findViewById(R.id.setting_baseinfo_rb_male);
mRbGirl = (RadioButton) findViewById(R.id.setting_baseinfo_rb_female);
mBtnBack = (Button) findViewById(R.id.setting_btn_back);
mBtnNext = (Button) findViewById(R.id.setting_btn_next);
}
@Override
protected void initEvents() {
setTitle(getString(R.string.setting_text_profile));
mBtnBack.setOnClickListener(this);
mBtnNext.setOnClickListener(this);
mIvAvater.setOnClickListener(this);
}
private void initData() {
mAge = SessionUtils.getAge();
mAvatar = SessionUtils.getAvatar();
mGender = SessionUtils.getGender();
mConstellation = SessionUtils.getConstellation(); // 星座
mBirthday = SessionUtils.getBirthday();
mSelectDate = DateUtils.getDate(mBirthday);
if (mGender.equals("女")) {
mRbGirl.setChecked(true);
}
else {
mRbBoy.setChecked(true);
}
Calendar mMinCalendar = Calendar.getInstance();
Calendar mMaxCalendar = Calendar.getInstance();
mMinCalendar.set(Calendar.YEAR, mMinCalendar.get(Calendar.YEAR) - MIN_AGE);
mMinDate = mMinCalendar.getTime();
mMaxCalendar.set(Calendar.YEAR, mMaxCalendar.get(Calendar.YEAR) - MAX_AGE);
mMaxDate = mMaxCalendar.getTime();
mCalendar = Calendar.getInstance();
mCalendar.setTime(mSelectDate);
flushBirthday(mCalendar);
mDpBirthday.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH),
mCalendar.get(Calendar.DAY_OF_MONTH), this);
mHtvAge.setText(mAge + "");
Picasso.with(mContext).load(ImageUtils.getImageID(Users.AVATAR + mAvatar)).into(mIvAvater);
mEtNickname.setText(SessionUtils.getNickname());
}
private void flushBirthday(Calendar calendar) {
String constellation = TextUtils.getConstellation(calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
mSelectDate = calendar.getTime();
mHtvConstellation.setText(constellation);
int age = TextUtils.getAge(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
mHtvAge.setText(age + "");
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.setting_btn_back:
finish();
break;
case R.id.setting_btn_next:
doNext();
break;
case R.id.setting_my_avater_img:
Intent intent = new Intent(this, ChooseAvatarActivity.class);
startActivityForResult(intent, REQUEST_CODE);
break;
}
}
/**
* 登录资料完整性验证,不完整则无法登陆,完整则记录输入的信息。
*
* @return boolean 返回是否为完整, 完整(true),不完整(false)
*/
private boolean isValidated() {
mNickname = "";
mGender = null;
if (TextUtils.isNull(mEtNickname)) {
showShortToast(R.string.login_toast_nickname);
mEtNickname.requestFocus();
return false;
}
switch (mRgGender.getCheckedRadioButtonId()) {
case R.id.setting_baseinfo_rb_female:
mGender = "女";
break;
case R.id.setting_baseinfo_rb_male:
mGender = "男";
break;
default:
showShortToast(R.string.login_toast_sex);
return false;
}
mNickname = mEtNickname.getText().toString().trim(); // 获取昵称
mConstellation = mHtvConstellation.getText().toString().trim(); // 获取星座
mAge = Integer.parseInt(mHtvAge.getText().toString().trim()); // 获取年龄
return true;
}
private void doNext() {
if ((!isValidated())) {
return;
}
setAsyncTask();
}
private void setAsyncTask() {
putAsyncTask(new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
showLoadingDialog(getString(R.string.login_dialog_saveInfo));
}
@Override
protected Boolean doInBackground(Void... params) {
try {
// 设置用户Session信息
SessionUtils.setNickname(mNickname);
SessionUtils.setBirthday(mBirthday);
SessionUtils.setAge(mAge);
SessionUtils.setGender(mGender);
SessionUtils.setAvatar(mAvatar);
SessionUtils.setConstellation(mConstellation);
SessionUtils.updateUserInfo();
// 在SD卡中存储登陆信息
SharePreferenceUtils mSPUtils = new SharePreferenceUtils();
SharedPreferences.Editor mEditor = mSPUtils.getEditor();
mEditor.putString(Users.NICKNAME, mNickname).putString(Users.GENDER, mGender)
.putInt(Users.AVATAR, mAvatar).putInt(Users.AGE, mAge)
.putString(Users.BIRTHDAY, mBirthday)
.putString(Users.CONSTELLATION, mConstellation);
mEditor.commit();
return true;
}
catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
dismissLoadingDialog();
if (result) {
mUDPListener.notifyOnline();
finish();
}
else {
showShortToast("操作失败,请尝试重启程序。");
}
}
});
}
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mBirthday = String.valueOf(year) + String.format("%02d", monthOfYear + 1)
+ String.format("%02d", dayOfMonth);
mCalendar = Calendar.getInstance();
mCalendar.set(year, monthOfYear, dayOfMonth);
if (mCalendar.getTime().after(mMinDate) || mCalendar.getTime().before(mMaxDate)) {
mCalendar.setTime(mSelectDate);
mDpBirthday.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH),
mCalendar.get(Calendar.DAY_OF_MONTH), this);
}
else {
flushBirthday(mCalendar);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
int result = data.getExtras().getInt("result");
mAvatar = result + 1;
Picasso.with(mContext).load(ImageUtils.getImageID(Users.AVATAR + mAvatar))
.into(mIvAvater);
}
}
}
}