package com.gzsll.hupu.ui.setting; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.text.TextUtils; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import com.gzsll.hupu.R; import com.gzsll.hupu.injector.HasComponent; import com.gzsll.hupu.ui.BaseActivity; import com.gzsll.hupu.util.CacheUtil; import com.gzsll.hupu.util.FileUtil; import com.gzsll.hupu.util.SettingPrefUtil; import com.gzsll.hupu.util.ToastUtil; import com.squareup.otto.Bus; import java.io.File; import javax.inject.Inject; /** * Created by sll on 2016/3/11. */ public class SettingFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener { private ListPreference pTextSize;// 字体大小 private Preference pPicSavePath;// 图片保存路径 private Preference pClearCache; private Preference pTheme; private ListPreference pThreadSort; private ListPreference pSwipeBackEdgeMode;// 手势返回方向 @Inject Bus mBus; @Inject Context mContext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SettingComponent.class.cast(((HasComponent<SettingComponent>) getActivity()).getComponent()) .inject(this); addPreferencesFromResource(R.xml.setting); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); pTextSize = (ListPreference) findPreference("pTextSize"); pTextSize.setOnPreferenceChangeListener(this); setListSetting(Integer.parseInt(prefs.getString("pTextSize", "4")), R.array.txtSizeNum, pTextSize); pPicSavePath = findPreference("pPicSavePath"); pPicSavePath.setOnPreferenceClickListener(this); pPicSavePath.setSummary( "/sdcard" + File.separator + SettingPrefUtil.getPicSavePath(mContext) + File.separator); pClearCache = findPreference("pClearCache"); pClearCache.setOnPreferenceClickListener(this); pClearCache.setSummary(CacheUtil.getCacheSize(mContext)); pThreadSort = (ListPreference) findPreference("pThreadSort"); pThreadSort.setOnPreferenceChangeListener(this); setListSetting(Integer.parseInt(prefs.getString("pThreadSort", "0")), R.array.sortType, pThreadSort); pSwipeBackEdgeMode = (ListPreference) findPreference("pSwipeBackEdgeMode"); pSwipeBackEdgeMode.setOnPreferenceChangeListener(this); setListSetting(Integer.parseInt(prefs.getString("pSwipeBackEdgeMode", "0")), R.array.swipeBackEdgeMode, pSwipeBackEdgeMode); pTheme = findPreference("pTheme"); pTheme.setOnPreferenceClickListener(this); pTheme.setSummary( getResources().getStringArray(R.array.mdColorNames)[SettingPrefUtil.getThemeIndex( mContext)]); // pOfflineCount = (ListPreference) findPreference("pOfflineCount"); // pOfflineCount.setOnPreferenceChangeListener(this); // setListSetting(Integer.parseInt(prefs.getString("pOfflineCount", "0")), R.array.offlineCount, pOfflineCount); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if ("pTextSize".equals(preference.getKey())) { setListSetting(Integer.parseInt(newValue.toString()), R.array.txtSizeNum, pTextSize); } else if ("pThreadSort".equals(preference.getKey())) { setListSetting(Integer.parseInt(newValue.toString()), R.array.sortType, pThreadSort); } else if ("pSwipeBackEdgeMode".equals(preference.getKey())) { setListSetting(Integer.parseInt(newValue.toString()), R.array.swipeBackEdgeMode, pSwipeBackEdgeMode); ((BaseActivity) getActivity()).reload(); } else if ("pOfflineCount".equals(preference.getKey())) { // setListSetting(Integer.parseInt(newValue.toString()), R.array.offlineCount, pOfflineCount); } return true; } @Override public boolean onPreferenceClick(Preference preference) { if ("pPicSavePath".equals(preference.getKey())) { modifyImageSavePath(); } else if ("pClearCache".equals(preference.getKey())) { cleanCache(); } else if ("pTheme".equals(preference.getKey())) { ColorsDialogFragment.launch(getActivity()); } return true; } private void cleanCache() { // new MaterialDialog.Builder(getActivity()).title("提示").content("正在清空缓存...").progress(true,0).show(); CacheUtil.cleanApplicationCache(mContext); Toast.makeText(getActivity(), "缓存清理成功", Toast.LENGTH_SHORT); pClearCache.setSummary(CacheUtil.getCacheSize(mContext)); } private void setTextSize(int value) { String[] valueTitleArr = getResources().getStringArray(R.array.txtSizeNum); pTextSize.setSummary(valueTitleArr[value]); } protected void setListSetting(int value, int hintId, ListPreference listPreference) { String[] valueTitleArr = getResources().getStringArray(hintId); listPreference.setSummary(valueTitleArr[value]); } private void modifyImageSavePath() { new MaterialDialog.Builder(getActivity()).title("修改图片保存路径") .input(null, SettingPrefUtil.getPicSavePath(mContext), new MaterialDialog.InputCallback() { @Override public void onInput(MaterialDialog materialDialog, CharSequence charSequence) { if (TextUtils.isEmpty(charSequence)) { ToastUtil.showToast("路径不能为空"); return; } String path = FileUtil.getSdcardPath() + File.separator + charSequence + File.separator; File file = new File(path); if (file.exists() || file.mkdirs()) { SettingPrefUtil.setPicSavePath(mContext, charSequence.toString()); pPicSavePath.setSummary("/sdcard" + File.separator + charSequence + File.separator); ToastUtil.showToast("更新成功"); } else { ToastUtil.showToast("更新失败"); } } }) .negativeText("取消") .show(); } }