package net.oschina.app.ui; import java.io.File; import net.oschina.app.AppConfig; 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 net.oschina.app.widget.PathChooseDialog.ChooseCompleteListener; 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; import android.widget.Toast; public class Setting extends PreferenceActivity { SharedPreferences mPreferences; Preference account; Preference myinfo; Preference cache; Preference feedback; Preference update; Preference about; Preference saveImagePath; 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; } }); // 设置保存图片路径 saveImagePath = (Preference) findPreference("saveimagepath"); saveImagePath.setSummary("目前路径:"+ac.getSaveImagePath()); saveImagePath.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { if (!FileUtils.checkSaveLocationExists() && !FileUtils.checkExternalSDExists()) { Toast.makeText(Setting.this, "手机中尚未安装SD卡", Toast.LENGTH_SHORT).show(); return false; } UIHelper.showFilePathDialog(Setting.this,new ChooseCompleteListener() { @Override public void onComplete(String finalPath) { finalPath = finalPath+File.separator; saveImagePath.setSummary("目前路径:"+finalPath); ac.setSaveImagePath(finalPath); ac.setProperty(AppConfig.SAVE_IMAGE_PATH, finalPath); } }); 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); } }