package org.aisen.weibo.sina.ui.fragment.mention; import org.aisen.weibo.sina.support.bean.TimelineGroupBean; import org.aisen.weibo.sina.support.utils.AppContext; import org.aisen.weibo.sina.support.utils.AppSettings; import org.aisen.weibo.sina.ui.fragment.base.BizFragment; import org.aisen.weibo.sina.ui.fragment.base.BizFragment.RemindType; import org.aisen.weibo.sina.ui.fragment.timeline.ATimelineFragment; import org.sina.android.SinaSDK; import org.sina.android.bean.StatusContents; import android.os.Bundle; import android.text.TextUtils; import com.m.common.params.Params; import com.m.support.task.TaskException; import com.m.ui.fragment.ABaseFragment; /** * 提及的微博 * 100:全部, 101:关注人的 102:原创 * * @author wangdan * */ public class MentionTimelineFragment extends ATimelineFragment { public static ABaseFragment newInstance(TimelineGroupBean bean) { ABaseFragment fragment = new MentionTimelineFragment(); Bundle args = new Bundle(); args.putSerializable("bean", bean); fragment.setArguments(args); return fragment; } @Override protected void config(com.m.ui.fragment.ARefreshFragment.RefreshConfig config) { super.config(config); config.savePosition = false; } @Override protected RefreshListType configListType() { return RefreshListType.androidPulltorefresh; } @Override protected void requestData(RefreshMode mode) { new MentionTimelineTask(mode).execute(); } class MentionTimelineTask extends TimelineTask { public MentionTimelineTask(RefreshMode mode) { super(mode); } @Override protected StatusContents workInBackground(RefreshMode mode, String previousPage, String nextPage, Void... p) throws TaskException { Params params = new Params(); if (mode == RefreshMode.refresh && !TextUtils.isEmpty(previousPage)) params.addParameter("since_id", previousPage); if (mode == RefreshMode.update && !TextUtils.isEmpty(nextPage)) params.addParameter("max_id", nextPage); switch (Integer.parseInt(getGroup().getGroup())) { case 100: params.addParameter("filter_by_author", "0"); break; case 101: params.addParameter("filter_by_author", "1"); break; case 102: params.addParameter("filter_by_type", "0"); break; } params.addParameter("count", String.valueOf(AppSettings.getTimelineCount())); return SinaSDK.getInstance(AppContext.getToken(), getTaskCacheMode(this)).statusesMentions(params); } @Override protected void onSuccess(StatusContents result) { super.onSuccess(result); try { if (AppContext.getUnreadCount() != null && AppContext.getUnreadCount().getMention_status() > 0) { requestDataDelay(1000); // fuck sina AppContext.getUnreadCount().setMention_status(0); BizFragment.getBizFragment(MentionTimelineFragment.this).remindSetCount(RemindType.mention_status); } } catch (Exception e) { } } } @Override public String getLastReadKey() { if (AppContext.isLogedin()) return String.format("MentionTimeline-%s", AppContext.getUser().getIdstr()); return super.getLastReadKey(); } }