/**
*
*/
package com.gmail.charleszq.picorner.ui.flickr;
import java.util.List;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.gmail.charleszq.picorner.BuildConfig;
import com.gmail.charleszq.picorner.R;
import com.gmail.charleszq.picorner.task.AbstractContextAwareTask;
import com.gmail.charleszq.picorner.task.IGeneralTaskDoneListener;
import com.gmail.charleszq.picorner.task.flickr.FetchMyOfflinePhotoSetsTask;
import com.gmail.charleszq.picorner.task.flickr.FetchPhotoSetsTask;
import com.gmail.charleszq.picorner.ui.command.ICommand;
import com.gmail.charleszq.picorner.ui.helper.AbstractHiddenListView;
import com.gmail.charleszq.picorner.ui.helper.IHiddenView;
import com.gmail.charleszq.picorner.ui.helper.PhotoSetItemAdapter;
import com.googlecode.flickrjandroid.photosets.Photoset;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
/**
* @author charles(charleszq@gmail.com)
*
*/
public class MyPhotoSetsHiddenView extends AbstractHiddenListView {
private AbstractContextAwareTask<Integer, Integer, List<Photoset>> mTask;
private int mCurrentPage = 1;
private int mActivePage = 1;
private IGeneralTaskDoneListener<List<Photoset>> mTaskDoneListener = new IGeneralTaskDoneListener<List<Photoset>>() {
@Override
public void onTaskDone(List<Photoset> result) {
mPullToRefreshListView.onRefreshComplete();
if (!result.isEmpty()) {
mCurrentPage = mActivePage;
mAdapter.populateData(result);
mSpace.setVisibility(View.GONE);
} else {
if (mActivePage == 1) {
Context ctx = (Context) mCommand.getAdapter(Context.class);
Toast.makeText(ctx,
ctx.getString(R.string.msg_no_photo_sets),
Toast.LENGTH_SHORT).show();
onAction(IHiddenView.ACTION_CANCEL);
}
}
}
};
/*
* (non-Javadoc)
*
* @see
* com.gmail.charleszq.picorner.ui.helper.AbstractHiddenListView#getContactList
* (android.content.Context)
*/
@Override
protected void getData(final Context ctx) {
runTask(ctx, mCurrentPage);
}
private void runTask(Context c, int page) {
ConnectivityManager cm = (ConnectivityManager) c
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork == null) {
if (BuildConfig.DEBUG) {
Log.d(TAG, "not network available."); //$NON-NLS-1$
}
mTask = new FetchMyOfflinePhotoSetsTask(c);
} else {
mTask = new FetchPhotoSetsTask(c);
}
mTask.addTaskDoneListener(mTaskDoneListener);
mTask.execute(page);
}
@Override
protected void initializeListViewAdapter(final Context ctx,
ICommand<?> command) {
mCurrentPage = 1;
mActivePage = 1;
mAdapter = new PhotoSetItemAdapter(ctx, command);
mLoadingMessage = ctx.getString(R.string.msg_loading_photo_sets);
mPullToRefreshListView.setMode(Mode.BOTH);
mPullToRefreshListView
.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(
PullToRefreshBase<ListView> refreshView) {
if (mCurrentPage > 1) {
mActivePage = mCurrentPage - 1;
runTask(ctx, mActivePage);
} else
mPullToRefreshListView.onRefreshComplete();
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) {
mActivePage = mCurrentPage + 1;
runTask(ctx, mActivePage);
}
});
}
/*
* (non-Javadoc)
*
* @see
* com.gmail.charleszq.picorner.ui.helper.AbstractHiddenListView#onCancel()
*/
@Override
protected void onCancel() {
if (mTask != null)
mTask.cancel(true);
}
}