package org.qii.weiciyuan.ui.browser;
import org.qii.weiciyuan.bean.ShareListBean;
import org.qii.weiciyuan.bean.android.AsyncTaskLoaderResult;
import org.qii.weiciyuan.support.utils.GlobalContext;
import org.qii.weiciyuan.ui.basefragment.AbstractMessageTimeLineFragment;
import org.qii.weiciyuan.ui.interfaces.AbstractAppActivity;
import org.qii.weiciyuan.ui.loader.BrowserShareMsgLoader;
import org.qii.weiciyuan.ui.main.MainTimeLineActivity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.Loader;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
/**
* User: qii
* Date: 13-2-21
*/
public class BrowserShareTimeLineActivity extends AbstractAppActivity {
public static Intent newIntent(String url) {
Intent intent = new Intent(GlobalContext.getInstance(), BrowserShareTimeLineActivity.class);
intent.putExtra("url", url);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = getIntent().getStringExtra("url");
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setDisplayShowTitleEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setTitle(url);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content, BrowserShareTimeLineFragment.newInstance(url))
.commit();
}
// 0.50 feature
// int count = getIntent().getIntExtra("count", 0);
// String subTitle = String.format(getString(R.string.total_share_count), String.valueOf(count));
// getActionBar().setSubtitle(subTitle);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = MainTimeLineActivity.newIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
}
return false;
}
public static class BrowserShareTimeLineFragment
extends AbstractMessageTimeLineFragment<ShareListBean> {
private ShareListBean bean = new ShareListBean();
private String url;
public static BrowserShareTimeLineFragment newInstance(String url) {
BrowserShareTimeLineFragment fragment = new BrowserShareTimeLineFragment();
Bundle bundle = new Bundle();
bundle.putString("url", url);
fragment.setArguments(bundle);
return fragment;
}
public BrowserShareTimeLineFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
url = getArguments().getString("url");
}
@Override
public ShareListBean getList() {
return bean;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("bean", bean);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
switch (getCurrentState(savedInstanceState)) {
case FIRST_TIME_START:
getPullToRefreshListView().setRefreshing();
loadNewMsg();
break;
case SCREEN_ROTATE:
//nothing
refreshLayout(bean);
break;
case ACTIVITY_DESTROY_AND_CREATE:
getList().addNewData((ShareListBean) savedInstanceState.getParcelable("bean"));
timeLineAdapter.notifyDataSetChanged();
refreshLayout(bean);
break;
}
}
@Override
protected void listViewItemClick(AdapterView parent, View view, int position, long id) {
startActivityForResult(
BrowserWeiboMsgActivity.newIntent(getList().getItemList().get(position),
GlobalContext.getInstance().getSpecialToken()), 0);
}
@Override
protected void newMsgLoaderSuccessCallback(ShareListBean newValue, Bundle loaderArgs) {
if (newValue != null && getActivity() != null && newValue.getSize() > 0) {
getList().addNewData(newValue);
getAdapter().notifyDataSetChanged();
getListView().setSelectionAfterHeaderView();
}
}
@Override
protected void oldMsgLoaderSuccessCallback(ShareListBean newValue) {
if (newValue != null && newValue.getSize() > 0) {
getList().addOldData(newValue);
getAdapter().notifyDataSetChanged();
}
}
@Override
public void loadNewMsg() {
getLoaderManager().destroyLoader(MIDDLE_MSG_LOADER_ID);
getLoaderManager().destroyLoader(OLD_MSG_LOADER_ID);
dismissFooterView();
getLoaderManager().restartLoader(NEW_MSG_LOADER_ID, null, msgAsyncTaskLoaderCallback);
}
@Override
protected void loadOldMsg(View view) {
getLoaderManager().destroyLoader(NEW_MSG_LOADER_ID);
getPullToRefreshListView().onRefreshComplete();
getLoaderManager().destroyLoader(MIDDLE_MSG_LOADER_ID);
getLoaderManager().restartLoader(OLD_MSG_LOADER_ID, null, msgAsyncTaskLoaderCallback);
}
protected Loader<AsyncTaskLoaderResult<ShareListBean>> onCreateNewMsgLoader(int id,
Bundle args) {
String token = GlobalContext.getInstance().getSpecialToken();
String sinceId = null;
if (getList().getItemList().size() > 0) {
sinceId = getList().getItemList().get(0).getId();
}
return new BrowserShareMsgLoader(getActivity(), token, url, null);
}
protected Loader<AsyncTaskLoaderResult<ShareListBean>> onCreateOldMsgLoader(int id,
Bundle args) {
String token = GlobalContext.getInstance().getSpecialToken();
String maxId = null;
if (getList().getItemList().size() > 0) {
maxId = getList().getItemList().get(getList().getItemList().size() - 1).getId();
}
return new BrowserShareMsgLoader(getActivity(), token, url, maxId);
}
}
}