package com.mcxiaoke.minicat.fragment;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CursorAdapter;
import com.mcxiaoke.minicat.AppContext;
import com.mcxiaoke.minicat.adapter.ConversationListCursorAdapter;
import com.mcxiaoke.minicat.api.Paging;
import com.mcxiaoke.minicat.controller.DataController;
import com.mcxiaoke.minicat.controller.UIController;
import com.mcxiaoke.minicat.dao.model.DirectMessageModel;
import com.mcxiaoke.minicat.service.SyncService;
import com.mcxiaoke.minicat.util.Utils;
/**
* @author mcxiaoke
* @version 1.5 2012.03.07
*/
public class ConversationListFragment extends SwipeRefreshListFragment {
private static final String TAG = ConversationListFragment.class
.getSimpleName();
public static ConversationListFragment newInstance(boolean refresh) {
Bundle args = new Bundle();
args.putBoolean("refresh", refresh);
ConversationListFragment fragment = new ConversationListFragment();
fragment.setArguments(args);
if (AppContext.DEBUG) {
Log.d(TAG, "newInstance() " + fragment);
}
return fragment;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
final Cursor cursor = (Cursor) parent.getItemAtPosition(position);
if (cursor != null) {
final DirectMessageModel dm = DirectMessageModel.from(cursor);
if (AppContext.DEBUG) {
Log.d(TAG, "cursor=" + cursor + " dm=" + dm);
}
if (dm != null) {
UIController.showConversation(getActivity(), dm);
}
}
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return DataController.getConversationListLoader(getActivity());
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle("收件箱");
}
@Override
protected void parseArguments(Bundle args) {
}
@Override
protected CursorAdapter onCreateAdapter() {
if (AppContext.DEBUG) {
Log.d(TAG, "createAdapter()");
}
return new ConversationListCursorAdapter(getActivity(), null);
}
@Override
protected void doFetch(boolean doGetMore) {
final ResultHandler handler = new ResultHandler(this);
final Cursor cursor = getCursor();
Paging p = new Paging();
if (doGetMore) {
p.maxId = Utils.getMaxId(cursor);
} else {
p.sinceId = Utils.getSinceId(cursor);
}
SyncService.getConversationList(getActivity(), handler, p);
}
@Override
protected int getType() {
return DirectMessageModel.TYPE_CONVERSATION_LIST;
}
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// final Cursor c = (Cursor) parent.getItemAtPosition(position);
// showPopup(getActivity(), view, c);
return true;
}
@Override
public String getTitle() {
return "收件箱";
}
}