package net.oschina.gitapp.ui; import java.io.File; import net.oschina.gitapp.AppContext; import net.oschina.gitapp.AppManager; import net.oschina.gitapp.R; import net.oschina.gitapp.common.FileUtils; import net.oschina.gitapp.common.MethodsCompat; import net.oschina.gitapp.common.UIHelper; import net.oschina.gitapp.common.UpdateManager; import android.content.Intent; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; /** * 设置界面 * @created 2014-07-02 * @author 火蚁(http://my.oschina.net/LittleDY) * */ public class SettingActivity extends PreferenceActivity implements OnPreferenceClickListener { private Preference cache; private Preference feedback; private Preference update; private Preference about; private CheckBoxPreference isReceiveNotice; private CheckBoxPreference voice; private CheckBoxPreference checkup; private AppContext mAppContext; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); initView(); AppManager.getAppManager().addActivity(this); } @SuppressWarnings("deprecation") private void initView() { mAppContext = (AppContext) getApplication(); // 接收通知 isReceiveNotice = (CheckBoxPreference) findPreference("isnotice"); isReceiveNotice.setChecked(mAppContext.isReceiveNotice()); if (mAppContext.isReceiveNotice()) { isReceiveNotice.setSummary("已开启接收通知"); } else { isReceiveNotice.setSummary("已关闭接收通知"); } isReceiveNotice.setOnPreferenceClickListener(this); // 提示声音 voice = (CheckBoxPreference) findPreference("voice"); voice.setChecked(mAppContext.isVoice()); if (mAppContext.isVoice()) { voice.setSummary("已开启提示声音"); } else { voice.setSummary("已关闭提示声音"); } voice.setOnPreferenceClickListener(this); checkup = (CheckBoxPreference) findPreference("checkup"); checkup.setChecked(mAppContext.isCheckUp()); checkup.setOnPreferenceClickListener(this); cache = (Preference) findPreference("cache"); cache.setSummary(calCache()); cache.setOnPreferenceClickListener(this); feedback = (Preference) findPreference("feedback"); update = (Preference) findPreference("update"); about = (Preference) findPreference("about"); feedback.setOnPreferenceClickListener(this); update.setOnPreferenceClickListener(this); about.setOnPreferenceClickListener(this); } @Override public boolean onPreferenceClick(Preference preference) { if (preference == isReceiveNotice) { onReceiveNotice(); } else if (preference == voice) { onVoice(); } else if (preference == checkup) { mAppContext.setConfigCheckUp(checkup.isChecked()); } else if (preference == cache) { onCache(); } else if (preference == feedback) { onFeedBack(); } else if (preference == update) { UpdateManager.getUpdateManager().checkAppUpdate(this, true); } else if (preference == about) { showAbout(); } return true; } private void onReceiveNotice() { mAppContext.setConfigReceiveNotice(isReceiveNotice.isChecked()); if (isReceiveNotice.isChecked()) { isReceiveNotice.setSummary("已开启接收通知"); } else { isReceiveNotice.setSummary("已关闭接收通知"); } } private void onVoice() { mAppContext.setConfigVoice(voice.isChecked()); if (voice.isChecked()) { voice.setSummary("已开启提示声音"); } else { voice.setSummary("已关闭提示声音"); } } private void onCache() { UIHelper.clearAppCache(SettingActivity.this); cache.setSummary("OKB"); } private String calCache() { 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); return cacheSize; } /** * 发送反馈意见到指定的邮箱 */ private void onFeedBack() { Intent i = new Intent(Intent.ACTION_SEND); //i.setType("text/plain"); //模拟器 i.setType("message/rfc822") ; //真机 i.putExtra(Intent.EXTRA_EMAIL, new String[]{"ld@oschina.net", "zhangdeyi@oschina.net"}); i.putExtra(Intent.EXTRA_SUBJECT,"用户反馈-git@osc Android客户端"); i.putExtra(Intent.EXTRA_TEXT, ""); startActivity(Intent.createChooser(i, "send email to me...")); } private void showAbout() { Intent intent = new Intent(SettingActivity.this, About.class); startActivity(intent); } }