package com.example.qingyangdemo;
import java.io.File;
import com.example.qingyangdemo.base.AppManager;
import com.example.qingyangdemo.base.BaseApplication;
import com.example.qingyangdemo.common.FileUtil;
import com.example.qingyangdemo.common.UIHelper;
import com.example.qingyangdemo.common.UpdateManager;
import com.example.qingyangdemo.net.Constant;
import com.example.qingyangdemo.ui.IpSetDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
/**
* 系统设置类
*
* @author 赵庆洋
*
*/
public class SettingActivity extends PreferenceActivity {
private SharedPreferences mPreferences;
private BaseApplication myApplication;
// 设置Ip
private Preference ipset;
// 账户
private Preference account;
// 清除缓存
private Preference cache;
// 清除已下载数据
private Preference down;
// 是否启动应用检查更新
private CheckBoxPreference checkup;
// 是否开启提示声音
private CheckBoxPreference voice;
// 检查更新
private Preference update;
// 意见反馈
private Preference feedback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 添加Activity到堆栈
AppManager.getAppManager().addActivity(this);
myApplication = (BaseApplication) getApplication();
// 设置显示Preferences
addPreferencesFromResource(R.xml.preferences);
// 获得SharedPreferences
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
ListView localListView = getListView();
localListView.setBackgroundColor(0);
localListView.setCacheColorHint(0);
((ViewGroup) localListView.getParent()).removeView(localListView);
ViewGroup localViewGroup = (ViewGroup) getLayoutInflater().inflate(
R.layout.setting_activity, null);
((ViewGroup) localViewGroup.findViewById(R.id.setting_content))
.addView(localListView, -1, -1);
setContentView(localViewGroup);
initView();
}
private void initView() {
// 登陆/注销
account = findPreference("account");
if (myApplication.isLogin()) {
account.setTitle(R.string.main_menu_logout);
} else {
account.setTitle(R.string.main_menu_login);
}
account.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
UIHelper.loginOrLogout(SettingActivity.this);
if (myApplication.isLogin()) {
account.setTitle(R.string.main_menu_logout);
} else {
account.setTitle(R.string.main_menu_login);
}
return true;
}
});
// 设置Ip
ipset = findPreference("ipset");
ipset.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(SettingActivity.this,
IpSetDialog.class);
intent.putExtra(IpSetDialog.IS_STRAT_MAIN, false);
startActivity(intent);
return true;
}
});
// 提示声音
voice = (CheckBoxPreference) findPreference("voice");
voice.setChecked(myApplication.isVoice());
if (myApplication.isVoice()) {
voice.setSummary("已开启声音提示");
} else {
voice.setSummary("已关闭声音提示");
}
voice.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
myApplication.setConfigVoice(voice.isChecked());
if (voice.isChecked()) {
voice.setSummary("已开启声音提示");
} else {
voice.setSummary("已关闭声音提示");
}
return true;
}
});
// 启动检查更新
checkup = (CheckBoxPreference) findPreference("checkup");
checkup.setChecked(myApplication.isCheckUp());
checkup.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
myApplication.setConfigCheckUp(checkup.isChecked());
return true;
}
});
// 计算缓存大小
long fileSize = 0;
String cacheSize = "0KB";
File filesDir = getFilesDir();
File cacheDir = getCacheDir();
fileSize += FileUtil.getDirSize(filesDir);
fileSize += FileUtil.getDirSize(cacheDir);
// 2.2版本才有将应用转移到sd卡的功能(当前版本大于2.2的版本)
if (BaseApplication
.isMethodsCompat(android.os.Build.VERSION_CODES.FROYO)) {
File externalCache = getExternalCacheDir();
fileSize += FileUtil.getDirSize(externalCache);
}
if (fileSize > 0) {
cacheSize = FileUtil.formatFileSize(fileSize);
}
// 清除缓存
cache = findPreference("cache");
cache.setSummary(cacheSize);
cache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
UIHelper.clearAppCache(SettingActivity.this);
cache.setSummary("0KB");
return true;
}
});
// 计算下载大小
long downFileSize = 0;
String downSize = "0KB";
downFileSize = FileUtil.getDirSize(FileUtil
.getDirectoryFile(Constant.DOWN_PATH));
if (downFileSize > 0) {
downSize = FileUtil.formatFileSize(downFileSize);
}
down = findPreference("down");
down.setSummary(downSize);
down.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
UIHelper.clearDownCache(SettingActivity.this);
down.setSummary("0KB");
return true;
}
});
feedback = findPreference("feedback");
feedback.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
UIHelper.showFeedBack(SettingActivity.this);
return true;
}
});
// 版本更新
update = findPreference("update");
update.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
UpdateManager.getUpdateManager().checkAppUpdate(
SettingActivity.this, true);
return true;
}
});
}
public void back(View paramView) {
finish();
}
@Override
protected void onDestroy() {
AppManager.getAppManager().finishActivity(this);
super.onDestroy();
}
}