package de.vanmar.android.yarrn.queues;
import android.app.Activity;
import android.widget.ListView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.sharedpreferences.Pref;
import de.vanmar.android.yarrn.R;
import de.vanmar.android.yarrn.YarrnAdapter;
import de.vanmar.android.yarrn.YarrnPrefs_;
import de.vanmar.android.yarrn.components.PagingListFragment;
import de.vanmar.android.yarrn.ravelry.IRavelryActivity;
import de.vanmar.android.yarrn.ravelry.dts.QueuedProjectSmall;
import de.vanmar.android.yarrn.ravelry.dts.QueuesResult;
import de.vanmar.android.yarrn.requests.AbstractRavelryGetRequest;
import de.vanmar.android.yarrn.requests.ListQueuesRequest;
@EFragment(R.layout.fragment_queues)
@OptionsMenu(R.menu.fragment_menu)
public class QueuesFragment extends PagingListFragment<QueuesResult, QueuedProjectSmall> {
public interface QueuesFragmentListener extends IRavelryActivity {
/**
* Project with projectId was selected, 0 if no project selected
*/
void onQueuedProjectSelected(int projectId, String username);
}
@ViewById(R.id.queuelist)
ListView queuelist;
@Pref
YarrnPrefs_ prefs;
private QueuesAdapter adapter;
private QueuesFragmentListener listener;
@AfterViews
@Override
public void afterViews() {
super.afterViews();
adapter = new QueuesAdapter(getActivity()) {
@Override
protected void onProjectClicked(final QueuedProjectSmall project) {
listener.onQueuedProjectSelected(project.id, prefs.username().get());
}
};
queuelist.setAdapter(adapter);
}
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
if (activity instanceof QueuesFragmentListener) {
listener = (QueuesFragmentListener) activity;
} else {
throw new ClassCastException(activity.toString()
+ " must implement QueuesFragmentListener");
}
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
@OptionsItem(R.id.menu_refresh)
public void menuRefresh() {
super.menuRefresh();
}
protected void displayResult(final QueuesResult result) {
super.displayResult(result);
if (getActivity() != null) {
getActivity().setTitle(R.string.my_queues_title);
}
}
@Override
protected ListView getListView() {
return queuelist;
}
@Override
protected YarrnAdapter<QueuedProjectSmall> getAdapter() {
return adapter;
}
@Override
protected AbstractRavelryGetRequest<QueuesResult> getRequest(int page) {
return new ListQueuesRequest(this.getActivity().getApplication(), prefs, page, PAGE_SIZE);
}
@Override
protected IRavelryActivity getRavelryActivity() {
return listener;
}
}