package com.erakk.lnreader.UI.fragment; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.erakk.lnreader.Constants; import com.erakk.lnreader.R; import com.erakk.lnreader.UI.activity.DisplayLightNovelContentActivity; import com.erakk.lnreader.UIHelper; import com.erakk.lnreader.adapter.BookmarkModelAdapter; import com.erakk.lnreader.callback.ICallbackEventData; import com.erakk.lnreader.callback.IExtendedCallbackNotifier; import com.erakk.lnreader.dao.NovelsDao; import com.erakk.lnreader.model.BookmarkModel; import com.erakk.lnreader.task.AsyncTaskResult; import com.erakk.lnreader.task.LoadBookmarkTask; import java.util.ArrayList; import java.util.Arrays; /** * A fragment representing a list of Items. * <p/> * <p/> */ public class BookmarkFragment extends ListFragment implements IExtendedCallbackNotifier<AsyncTaskResult<BookmarkModel[]>> { private BookmarkModelAdapter adapter = null; private ArrayList<BookmarkModel> bookmarks = null; /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). */ public BookmarkFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); getActivity().setTitle(R.string.bookmarks); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); getBookmarks(); } @Override public void onDetach() { super.onDetach(); } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // Get the item that was clicked BookmarkModel page = adapter.getItem(position); // Create new intent Intent intent = new Intent(getActivity(), DisplayLightNovelContentActivity.class); intent.putExtra(Constants.EXTRA_PAGE, page.getPage()); intent.putExtra(Constants.EXTRA_P_INDEX, page.getpIndex()); startActivity(intent); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.fragment_display_bookmark, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_bookmark_delete_selected: handleDeleteBookmark(); return true; } return super.onOptionsItemSelected(item); } // region private methods private void getBookmarks() { LoadBookmarkTask task = new LoadBookmarkTask(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); else task.execute(); } public void handleDeleteBookmark() { if (bookmarks != null) { for (BookmarkModel bookmark : bookmarks) { if (bookmark.isSelected()) NovelsDao.getInstance().deleteBookmark(bookmark); } if (adapter != null) adapter.refreshData(); } } @Override public void onCompleteCallback(ICallbackEventData message, AsyncTaskResult<BookmarkModel[]> result) { int resourceId = R.layout.item_bookmark; if (UIHelper.isSmallScreen(getActivity())) { resourceId = R.layout.item_bookmark; } BookmarkModel[] temp = result.getResult(); bookmarks = new ArrayList<BookmarkModel>(Arrays.asList(temp)); adapter = new BookmarkModelAdapter(getActivity(), resourceId, bookmarks, null); adapter.showPage = true; adapter.showCheckBox = true; setListAdapter(adapter); } @Override public void onProgressCallback(ICallbackEventData message) { } @Override public boolean downloadListSetup(String taskId, String message, int setupType, boolean hasError) { return false; } // endregion }