package net.oschina.app.ui;
import java.io.File;
import net.oschina.app.AppContext;
import net.oschina.app.AppManager;
import net.oschina.app.R;
import net.oschina.app.common.FileUtils;
import net.oschina.app.common.MethodsCompat;
import net.oschina.app.common.UIHelper;
import net.oschina.app.common.UpdateManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
public class Setting extends PreferenceActivity{
SharedPreferences mPreferences;
Preference account;
Preference myinfo;
Preference cache;
Preference feedback;
Preference update;
Preference about;
CheckBoxPreference httpslogin;
CheckBoxPreference loadimage;
CheckBoxPreference scroll;
CheckBoxPreference voice;
CheckBoxPreference checkup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//添加Activity到堆栈
AppManager.getAppManager().addActivity(this);
//设置显示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, null);
((ViewGroup)localViewGroup.findViewById(R.id.setting_content)).addView(localListView, -1, -1);
setContentView(localViewGroup);
final AppContext ac = (AppContext)getApplication();
//登录、注销
account = (Preference)findPreference("account");
if(ac.isLogin()){
account.setTitle(R.string.main_menu_logout);
}else{
account.setTitle(R.string.main_menu_login);
}
account.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UIHelper.loginOrLogout(Setting.this);
account.setTitle(R.string.main_menu_login);
return true;
}
});
//我的资料
myinfo = (Preference)findPreference("myinfo");
myinfo.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UIHelper.showUserInfo(Setting.this);
return true;
}
});
//https登录
httpslogin = (CheckBoxPreference)findPreference("httpslogin");
httpslogin.setChecked(ac.isHttpsLogin());
if(ac.isHttpsLogin()){
httpslogin.setSummary("当前以 HTTPS 登录");
}else{
httpslogin.setSummary("当前以 HTTP 登录");
}
httpslogin.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
ac.setConfigHttpsLogin(httpslogin.isChecked());
if(httpslogin.isChecked()){
httpslogin.setSummary("当前以 HTTPS 登录");
}else{
httpslogin.setSummary("当前以 HTTP 登录");
}
return true;
}
});
//加载图片loadimage
loadimage = (CheckBoxPreference)findPreference("loadimage");
loadimage.setChecked(ac.isLoadImage());
if(ac.isLoadImage()){
loadimage.setSummary("页面加载图片 (默认在WIFI网络下加载图片)");
}else{
loadimage.setSummary("页面不加载图片 (默认在WIFI网络下加载图片)");
}
loadimage.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UIHelper.changeSettingIsLoadImage(Setting.this,loadimage.isChecked());
if(loadimage.isChecked()){
loadimage.setSummary("页面加载图片 (默认在WIFI网络下加载图片)");
}else{
loadimage.setSummary("页面不加载图片 (默认在WIFI网络下加载图片)");
}
return true;
}
});
//左右滑动
scroll = (CheckBoxPreference)findPreference("scroll");
scroll.setChecked(ac.isScroll());
if(ac.isScroll()){
scroll.setSummary("已启用左右滑动");
}else{
scroll.setSummary("已关闭左右滑动");
}
scroll.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
ac.setConfigScroll(scroll.isChecked());
if(scroll.isChecked()){
scroll.setSummary("已启用左右滑动");
}else{
scroll.setSummary("已关闭左右滑动");
}
return true;
}
});
//提示声音
voice = (CheckBoxPreference)findPreference("voice");
voice.setChecked(ac.isVoice());
if(ac.isVoice()){
voice.setSummary("已开启提示声音");
}else{
voice.setSummary("已关闭提示声音");
}
voice.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
ac.setConfigVoice(voice.isChecked());
if(voice.isChecked()){
voice.setSummary("已开启提示声音");
}else{
voice.setSummary("已关闭提示声音");
}
return true;
}
});
//启动检查更新
checkup = (CheckBoxPreference)findPreference("checkup");
checkup.setChecked(ac.isCheckUp());
checkup.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
ac.setConfigCheckUp(checkup.isChecked());
return true;
}
});
//计算缓存大小
long fileSize = 0;
String cacheSize = "0KB";
File filesDir = getFilesDir();
File cacheDir = getCacheDir();
fileSize += FileUtils.getDirSize(filesDir);
fileSize += FileUtils.getDirSize(cacheDir);
//2.2版本才有将应用缓存转移到sd卡的功能
if(AppContext.isMethodsCompat(android.os.Build.VERSION_CODES.FROYO)){
File externalCacheDir = MethodsCompat.getExternalCacheDir(this);
fileSize += FileUtils.getDirSize(externalCacheDir);
}
if(fileSize > 0)
cacheSize = FileUtils.formatFileSize(fileSize);
//清除缓存
cache = (Preference)findPreference("cache");
cache.setSummary(cacheSize);
cache.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UIHelper.clearAppCache(Setting.this);
cache.setSummary("0KB");
return true;
}
});
//意见反馈
feedback = (Preference)findPreference("feedback");
feedback.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UIHelper.showFeedBack(Setting.this);
return true;
}
});
//版本更新
update = (Preference)findPreference("update");
update.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UpdateManager.getUpdateManager().checkAppUpdate(Setting.this, true);
return true;
}
});
//关于我们
about = (Preference)findPreference("about");
about.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
UIHelper.showAbout(Setting.this);
return true;
}
});
}
public void back(View paramView)
{
finish();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if(intent.getBooleanExtra("LOGIN", false)){
account.setTitle(R.string.main_menu_logout);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//结束Activity&从堆栈中移除
AppManager.getAppManager().finishActivity(this);
}
}