package hillfly.wifichat.fragment;
import hillfly.wifichat.R;
import hillfly.wifichat.activity.AboutActivity;
import hillfly.wifichat.activity.MainTabActivity;
import hillfly.wifichat.activity.SettingInfoActivity;
import hillfly.wifichat.common.ActivitiesManager;
import hillfly.wifichat.common.BaseApplication;
import hillfly.wifichat.common.BaseDialog;
import hillfly.wifichat.common.BaseFragment;
import hillfly.wifichat.common.sql.SqlDBOperate;
import hillfly.wifichat.common.view.SettingSwitchButton;
import hillfly.wifichat.util.FileUtils;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class SettingFragment extends BaseFragment implements OnClickListener,
OnCheckedChangeListener, DialogInterface.OnClickListener {
private Button mAboutUsButton;
private Button mDeleteAllChattingInfoButton;
private Button mExitApplicationButton;
private ImageView mSettingInfoButton;
private SettingSwitchButton mSoundSwitchButton;
private SettingSwitchButton mVibrateSwitchButton;
private RelativeLayout mSettingInfoLayoutButton;
private BaseDialog mDeleteCacheDialog; // 提示窗口
private BaseDialog mExitDialog;
private SqlDBOperate mSqlDBOperate;
private int mDialogFlag;
public SettingFragment() {
}
public SettingFragment(Context context) {
super(context);
}
@Override
public View
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_settting, container, false);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
protected void initViews() {
mSettingInfoButton = (ImageView) findViewById(R.id.btn_setting_my_information);
mSettingInfoLayoutButton = (RelativeLayout) findViewById(R.id.setting_my_info_layout);
mSoundSwitchButton = (SettingSwitchButton) findViewById(R.id.checkbox_sound);
mVibrateSwitchButton = (SettingSwitchButton) findViewById(R.id.checkbox_vibration);
mDeleteAllChattingInfoButton = (Button) findViewById(R.id.btn_delete_all_chattinginfo);
mAboutUsButton = (Button) findViewById(R.id.btn_about_us);
mExitApplicationButton = (Button) findViewById(R.id.btn_exit_application);
}
@Override
protected void initEvents() {
mSettingInfoButton.setOnClickListener(this);
mSettingInfoLayoutButton.setOnClickListener(this);
mSoundSwitchButton.setOnCheckedChangeListener(this);
mVibrateSwitchButton.setOnCheckedChangeListener(this);
mDeleteAllChattingInfoButton.setOnClickListener(this);
mAboutUsButton.setOnClickListener(this);
mExitApplicationButton.setOnClickListener(this);
}
@Override
protected void init() {
mDeleteCacheDialog = BaseDialog.getDialog(getActivity(), R.string.dialog_tips,
getString(R.string.setting_dialog_chatlog_delete_confirm),
getString(R.string.setting_dialog_chatlog_delete_ok), this,
getString(R.string.setting_dialog_chatlog_delete_cancel), this);
mExitDialog = BaseDialog.getDialog(getActivity(), R.string.dialog_tips,
getString(R.string.setting_dialog_logout_confirm),
getString(R.string.setting_dialog_logout_ok), this,
getString(R.string.setting_dialog_logout_cancel), this);
mSoundSwitchButton.setChecked(BaseApplication.getSoundFlag());
mVibrateSwitchButton.setChecked(BaseApplication.getVibrateFlag());
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
// case R.id.btn_setting_my_information:
case R.id.setting_my_info_layout:
startActivity(getActivity(), SettingInfoActivity.class);
break;
case R.id.btn_delete_all_chattinginfo:
mDialogFlag = 1;
mDeleteCacheDialog.show();
break;
case R.id.btn_about_us:
startActivity(getActivity(), AboutActivity.class);
break;
case R.id.btn_exit_application:
mDialogFlag = 2;
mExitDialog.show();
break;
default:
break;
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
switch (buttonView.getId()) {
case R.id.checkbox_sound:
buttonView.setChecked(isChecked);
BaseApplication.setSoundFlag(!isChecked);
break;
case R.id.checkbox_vibration:
buttonView.setChecked(isChecked);
BaseApplication.setVibrateFlag(isChecked);
break;
default:
break;
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch (mDialogFlag) {
case 1:
if (which == 0) {
setAsyncTask(1);
}
else if (which == 1) {
mDeleteCacheDialog.dismiss();
}
break;
case 2:
if (which == 0) {
setAsyncTask(2);
}
else if (which == 1) {
mExitDialog.dismiss();
}
break;
}
}
private void setAsyncTask(final int flag) {
putAsyncTask(new AsyncTask<Void, Void, Boolean>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
switch (flag) {
case 1:
mDeleteCacheDialog.dismiss();
showLoadingDialog(getString(R.string.setting_dialog_chatlog_deleting));
break;
case 2:
mExitDialog.dismiss();
showLoadingDialog(getString(R.string.setting_dialog_logout_confirm));
break;
default:
break;
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
switch (flag) {
case 1:
mSqlDBOperate = new SqlDBOperate(getActivity());
mSqlDBOperate.deteleAllChattingInfo();
mSqlDBOperate.close();
mUDPListener.clearMsgCache();
mUDPListener.clearUnReadMessages();
FileUtils.delAllFile(BaseApplication.SAVE_PATH);
break;
case 2:
break;
default:
break;
}
return true;
}
catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
dismissLoadingDialog();
if (result) {
dismissLoadingDialog();
switch (flag) {
case 1:
((MainTabActivity) getActivity()).handler.sendEmptyMessage(0);
showShortToast(R.string.setting_dialog_toast_delect_success);
break;
case 2:
ActivitiesManager.finishAllActivities(getActivity()
.getApplicationContext());
break;
default:
break;
}
}
else {
showShortToast(R.string.setting_dialog_toast_delect_failue);
}
}
});
}
}