package org.aisen.weibo.sina.ui.fragment.timeline;
import android.os.Bundle;
import org.aisen.android.common.utils.Logger;
import org.aisen.android.network.http.Params;
import org.aisen.android.network.task.TaskException;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.base.AppContext;
import org.aisen.weibo.sina.base.AppSettings;
import org.aisen.weibo.sina.sinasdk.SinaSDK;
import org.aisen.weibo.sina.sinasdk.bean.StatusContents;
import org.aisen.weibo.sina.support.utils.UMengUtil;
import java.lang.reflect.Method;
/**
* 默认微博列表
*
* Created by wangdan on 16/1/2.
*/
public class TimelineDefFragment extends ATimelineFragment {
public static TimelineDefFragment newInstance(String method) {
TimelineDefFragment fragment = new TimelineDefFragment();
Bundle args = new Bundle();
args.putString("method", method);
fragment.setArguments(args);
return fragment;
}
private String method;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
method = savedInstanceState == null ? getArguments().getString("method")
: savedInstanceState.getString("method");
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("method", method);
}
@Override
public void requestData(RefreshMode mode) {
new DefTimelineTask(mode).execute();
}
class DefTimelineTask extends ATimelineTask {
public DefTimelineTask(RefreshMode mode) {
super(mode);
}
@Override
public StatusContents getStatusContents(Params params) throws TaskException {
try {
Method timelineMethod = SinaSDK.class.getMethod(method, new Class[] { Params.class });
return (StatusContents) timelineMethod.invoke(SinaSDK.getInstance(AppContext.getAccount().getAccessToken(), getTaskCacheMode(this)), params);
} catch (Throwable e) {
if (e.getCause() instanceof TaskException) {
throw (TaskException) e.getCause();
}
else {
Logger.printExc(TimelineDefFragment.class, e);
}
}
throw new TaskException(TaskException.TaskError.resultIllegal.toString());
}
}
@Override
public boolean onToolbarDoubleClick() {
requestDataDelaySetRefreshing(AppSettings.REQUEST_DATA_DELAY);
getRefreshView().scrollToPosition(0);
return true;
}
@Override
public void onResume() {
super.onResume();
UMengUtil.onPageStart(getActivity(), getPageName());
}
@Override
public void onPause() {
super.onPause();
UMengUtil.onPageEnd(getActivity(), getPageName());
}
private String getPageName() {
if ("statusesFriendsTimeLine".equals(method)) {
return getString(R.string.timeline_all);
} else if ("statusesBilateralTimeLine".equals(method)) {
return getString(R.string.timeline_bilateral);
} else if ("statusesToMe".equals(method)) {
return getString(R.string.timeline_tome);
}
return getString(R.string.timeline_all);
}
}