package org.aisen.weibo.sina.ui.fragment.settings;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceManager;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.component.orm.extra.Extra;
import org.aisen.android.ui.activity.basic.BaseActivity;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.base.AppContext;
import org.aisen.weibo.sina.sinasdk.bean.Group;
import org.aisen.weibo.sina.support.sqlit.SinaDB;
import org.aisen.weibo.sina.support.utils.OfflineUtils;
import org.aisen.weibo.sina.support.utils.UMengUtil;
import org.aisen.weibo.sina.ui.activity.base.SinaCommonActivity;
import java.util.List;
/**
* 离线设置
*
* Created by wangdan on 15/4/3.
*/
public class OfflineSettingsFragment extends BasePreferenceFragment
implements Preference.OnPreferenceChangeListener,
Preference.OnPreferenceClickListener {
public static void launch(Activity from) {
SinaCommonActivity.launch(from, OfflineSettingsFragment.class, null);
}
private Preference pOfflineGroups;// 主题设置
private ListPreference pOfflineStatusSize;// 微博离线数量
private ListPreference pOfflinePicTaskCount;// 图片线程数量
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
BaseActivity baseActivity = (BaseActivity) getActivity();
baseActivity.getSupportActionBar().setTitle(R.string.settings_offline);
baseActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
addPreferencesFromResource(R.xml.ui_offline_settings);
pOfflineGroups = (Preference) findPreference("pOfflineGroups");
pOfflineGroups.setOnPreferenceClickListener(this);
setGroupsSummary();
pOfflineStatusSize = (ListPreference) findPreference("pOfflineStatusSize");
pOfflineStatusSize.setOnPreferenceChangeListener(this);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GlobalContext.getInstance());
int value = Integer.parseInt(prefs.getString("pOfflineStatusSize", "2"));
setListSetting(value, R.array.offlineTimelineCount, pOfflineStatusSize);
pOfflinePicTaskCount = (ListPreference) findPreference("pOfflinePicTaskCount");
pOfflinePicTaskCount.setOnPreferenceChangeListener(this);
value = Integer.parseInt(prefs.getString("pOfflinePicTaskCount", "2"));
setPicTaskSetting(value);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ("pOfflineStatusSize".equals(preference.getKey())) {
setListSetting(Integer.parseInt(newValue.toString()), R.array.offlineTimelineCount, pOfflineStatusSize);
}
else if ("pOfflinePicTaskCount".equals(preference.getKey())) {
setPicTaskSetting(Integer.parseInt(newValue.toString()));
}
return true;
}
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference.getKey().equals("pOfflineGroups")) {
final List<Group> groups = SinaDB.getOfflineSqlite().select(new Extra(AppContext.getAccount().getUser().getIdstr(), null), Group.class);
OfflineUtils.showOfflineGroupsModifyDialog(getActivity(), groups,
new OfflineUtils.OnOfflineGroupSetCallback() {
@Override
public void onChanged(List<Group> newGroups) {
SinaDB.getOfflineSqlite().deleteAll(OfflineUtils.getLoggedExtra(null), Group.class);
if (newGroups == null || newGroups.size() == 0) {
} else {
SinaDB.getOfflineSqlite().insertOrReplace(OfflineUtils.getLoggedExtra(null), newGroups);
}
setGroupsSummary();
}
},
R.string.offline_groups_dialog);
}
return true;
}
private void setGroupsSummary() {
List<Group> groups = SinaDB.getOfflineSqlite().select(new Extra(AppContext.getAccount().getUser().getIdstr(), null), Group.class);
String summary = "";
if (groups.size() == 0) {
summary = getString(R.string.offline_none_groups) + ",";
}
else {
for (Group group : groups) {
summary = summary + group.getName() + ",";
}
}
pOfflineGroups.setSummary(summary.substring(0, summary.length() - 1));
}
protected void setPicTaskSetting(int value) {
String[] valueTitleArr = getResources().getStringArray(R.array.picTaskCount);
pOfflinePicTaskCount.setTitle(String.format(getString(R.string.offline_pic_task_count), valueTitleArr[value]));
pOfflinePicTaskCount.setSummary(String.format(getString(R.string.offline_pic_task_count_summary), valueTitleArr[value]));
}
@Override
public void onResume() {
super.onResume();
UMengUtil.onPageStart(getActivity(), "离线设置页");
}
@Override
public void onPause() {
super.onPause();
UMengUtil.onPageEnd(getActivity(), "离线设置页");
}
}