package org.aisen.weibo.sina.ui.fragment.settings;
import java.io.File;
import java.util.Locale;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.support.db.FriendMentionDB;
import org.aisen.weibo.sina.support.utils.AppSettings;
import org.aisen.weibo.sina.support.utils.BaiduAnalyzeUtils;
import org.aisen.weibo.sina.ui.activity.common.FragmentContainerActivity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import com.m.common.context.GlobalContext;
import com.m.common.settings.SettingUtility;
import com.m.common.utils.ActivityHelper;
import com.m.common.utils.SystemUtility;
import com.m.support.task.TaskException;
import com.m.support.task.WorkTask;
import com.m.ui.activity.BaseActivity;
import com.m.ui.utils.ViewUtils;
/**
* 基本设置
*
* @author wangdan
*
*/
@SuppressLint("SdCardPath") public class BasicSettingsFragment extends BasePreferenceFragment
implements OnPreferenceClickListener , OnPreferenceChangeListener {
public static void launch(Activity from) {
FragmentContainerActivity.launch(from, BasicSettingsFragment.class, null);
}
private ListPreference pTextSize;// 字体大小
private ListPreference pLanguage;// 语言设置
private CheckBoxPreference pShowRemark;// 显示备注
private ListPreference pPicLargeMode;// 高清图片排版模式
private CheckBoxPreference pShowDefGroup;// 显示默认分组微博
private CheckBoxPreference pFastScrollBar;// 显示快速滚动条
private Preference pPicSavePath;// 图片保存路径
private Preference pClearRecentMention;// 清理@历史记录
private CheckBoxPreference pDoubleClickToRefresh;// 置顶并刷新
private ListPreference pListViewAnim;// 列表动画
private ListPreference pRefreshViewType;// 列表刷新控件
private CheckBoxPreference pAutoRefresh;// 列表自动刷新
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
addPreferencesFromResource(R.xml.ui_basic_settings);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GlobalContext.getInstance());
int value = 0;
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
getActivity().getActionBar().setDisplayShowHomeEnabled(false);
getActivity().getActionBar().setTitle(R.string.title_basic_settings);
pDoubleClickToRefresh = (CheckBoxPreference) findPreference("pDoubleClickToRefresh");
pDoubleClickToRefresh.setOnPreferenceChangeListener(this);
pFastScrollBar = (CheckBoxPreference) findPreference("pFastScrollBar");
if (pFastScrollBar != null)
pFastScrollBar.setOnPreferenceChangeListener(this);
pPicSavePath = (Preference) findPreference("pPicSavePath");
pPicSavePath.setOnPreferenceClickListener(this);
// pPicSavePath.setSummary(SystemUtility.getSdcardPath() + File.separator + AppSettings.getImageSavePath() + File.separator);
pPicSavePath.setSummary("/sdcard" + File.separator + AppSettings.getImageSavePath() + File.separator);
pClearRecentMention = (Preference) findPreference("pClearRecentMention");
pClearRecentMention.setOnPreferenceClickListener(this);
setMentionHint();
pListViewAnim = (ListPreference) findPreference("pListViewAnim");
if (pListViewAnim != null) {
pListViewAnim.setOnPreferenceChangeListener(this);
prefs = PreferenceManager.getDefaultSharedPreferences(GlobalContext.getInstance());
value = Integer.parseInt(prefs.getString("pListViewAnim", "0"));
setListSetting(value, R.array.pListViewAnim, pListViewAnim);
}
pRefreshViewType = (ListPreference) findPreference("pRefreshViewType");
if (pRefreshViewType != null) {
pRefreshViewType.setOnPreferenceChangeListener(this);
prefs = PreferenceManager.getDefaultSharedPreferences(GlobalContext.getInstance());
value = Integer.parseInt(prefs.getString("pRefreshViewType", "0"));
setListSetting(value, R.array.pRefreshViewType, pRefreshViewType);
}
pAutoRefresh = (CheckBoxPreference) findPreference("pAutoRefresh");
pAutoRefresh.setOnPreferenceChangeListener(this);
pAutoRefresh.setChecked(SettingUtility.getPermanentSettingAsBool("pAutoRefresh", true));
pTextSize = (ListPreference) findPreference("pTextSize");
pTextSize.setOnPreferenceChangeListener(this);
value = Integer.parseInt(prefs.getString("pTextSize", "0"));
setTextSize(value);
pLanguage = (ListPreference) findPreference("pLanguage");
pLanguage.setOnPreferenceChangeListener(this);
value = Integer.parseInt(prefs.getString("pLanguage", "0"));
setLanguage(value);
pShowRemark = (CheckBoxPreference) findPreference("pShowRemark");
pShowRemark.setOnPreferenceChangeListener(this);
pShowDefGroup = (CheckBoxPreference) findPreference("pShowDefGroup");
pShowDefGroup.setOnPreferenceChangeListener(this);
pPicLargeMode = (ListPreference) findPreference("pPicLargeMode");
pPicLargeMode.setOnPreferenceChangeListener(this);
prefs = PreferenceManager.getDefaultSharedPreferences(GlobalContext.getInstance());
value = Integer.parseInt(prefs.getString("pPicLargeMode", "0"));
setListSetting(value, R.array.picLargeMode, pPicLargeMode);
}
@Override
public boolean onPreferenceClick(Preference preference) {
// 设置图片保存路径
if ("pPicSavePath".equals(preference.getKey())) {
modifyImageSavePath();
}
// 清理好友提及历史记录
else if ("pClearRecentMention".equals(preference.getKey())) {
clearMentionHistory();
}
return true;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// 是否显示默认分组
if ("pShowDefGroup".equals(preference.getKey())) {
ActivityHelper.getInstance().putBooleanShareData("ChanneSortHasChanged", true);
}
// 双击ActionBar同时刷新
else if ("pDoubleClickToRefresh".equals(preference.getKey())) {
SettingUtility.setPermanentSetting("com.m.ON_DOUBLE_CLICK_AC_TO_REFRESH", Boolean.parseBoolean(newValue.toString()));
}
// 列表动画
else if ("pListViewAnim".equals(preference.getKey())) {
setListSetting(Integer.parseInt(newValue.toString()), R.array.pListViewAnim, pListViewAnim);
}
// 设置刷新控件
else if ("pRefreshViewType".equals(preference.getKey())) {
setListSetting(Integer.parseInt(newValue.toString()), R.array.pRefreshViewType, pRefreshViewType);
}
// 列表控件是否自动刷新
else if ("pAutoRefresh".equals(preference.getKey())) {
SettingUtility.setPermanentSetting("pAutoRefresh", Boolean.parseBoolean(newValue.toString()));
}
// 高清图片排版设置
else if ("pPicLargeMode".equals(preference.getKey())) {
setListSetting(Integer.parseInt(newValue.toString()), R.array.picLargeMode, pPicLargeMode);
}
// 列表字体
else if ("pTextSize".equals(preference.getKey())) {
setTextSize(Integer.parseInt(newValue.toString()));
}
// 语言设置
else if ("pLanguage".equals(preference.getKey())) {
int language = Integer.parseInt(newValue.toString());
switch (language) {
// 跟随系统语言
case 0:
SettingUtility.setPermanentSetting("language", null);
SettingUtility.setPermanentSetting("language-country", null);
break;
// 中文简体
case 1:
SettingUtility.setPermanentSetting("language", Locale.SIMPLIFIED_CHINESE.getLanguage());
SettingUtility.setPermanentSetting("language-country", Locale.SIMPLIFIED_CHINESE.getCountry());
break;
// 中文繁体
case 2:
SettingUtility.setPermanentSetting("language", Locale.TAIWAN.getLanguage());
SettingUtility.setPermanentSetting("language-country", Locale.TAIWAN.getCountry());
break;
}
setLanguage(language);
((BaseActivity) getActivity()).reload();
}
return true;
}
private void setMentionHint() {
new WorkTask<Void, Void, Integer>() {
@Override
public Integer workInBackground(Void... params) throws TaskException {
return FriendMentionDB.query().size();
}
@Override
protected void onSuccess(Integer result) {
if (result == 0)
pClearRecentMention.setSummary(null);
else
pClearRecentMention.setSummary(String.format(getString(R.string.settings_basic_history_remind), result));
};
}.execute();
}
// 修改图片保存路径
private void modifyImageSavePath() {
View entryView = View.inflate(getActivity(), R.layout.lay_dialog_remark_entry, null);
final EditText editRemark = (EditText) entryView.findViewById(R.id.editRemark);
editRemark.setHint(R.string.settings_dir_hint);
editRemark.setText(AppSettings.getImageSavePath());
editRemark.setSelection(editRemark.getText().toString().length());
new AlertDialog.Builder(getActivity()).setTitle(R.string.settings_modify_picpath_title)
.setView(entryView)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (TextUtils.isEmpty(editRemark.getText().toString())) {
ViewUtils.showMessage(R.string.update_faild);
return;
}
String path = SystemUtility.getSdcardPath() + File.separator + editRemark.getText().toString() + File.separator;
File file = new File(path);
if (file.exists() || file.mkdirs()) {
AppSettings.setImageSavePath(editRemark.getText().toString());
// pPicSavePath.setSummary(path);
pPicSavePath.setSummary("/sdcard" + File.separator + editRemark.getText().toString() + File.separator);
ViewUtils.showMessage(R.string.update_success);
}
else {
ViewUtils.showMessage(R.string.update_faild);
}
}
})
.show();
}
private void clearMentionHistory() {
new AlertDialog.Builder(getActivity()).setTitle(R.string.remind)
.setMessage(R.string.settings_clear_history_remind)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.settings_clear, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
FriendMentionDB.clear();
setMentionHint();
}
})
.show();
}
private void setTextSize(int value) {
String[] valueTitleArr = getResources().getStringArray(R.array.txtSize);
pTextSize.setSummary(valueTitleArr[value]);
}
private void setLanguage(int value) {
String[] valueTitleArr = getResources().getStringArray(R.array.pLanguage);
pLanguage.setSummary(valueTitleArr[value]);
}
private void setListSetting(int value, int hintId, ListPreference listPreference) {
String[] valueTitleArr = getResources().getStringArray(hintId);
listPreference.setSummary(valueTitleArr[value]);
}
@Override
public void onResume() {
super.onResume();
BaiduAnalyzeUtils.onPageStart("基础设置");
}
@Override
public void onPause() {
super.onPause();
BaiduAnalyzeUtils.onPageEnd("基础设置");
}
}