package com.quran.labs.androidquran.presenter.bookmark;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.quran.labs.androidquran.R;
import com.quran.labs.androidquran.presenter.Presenter;
import com.quran.labs.androidquran.ui.fragment.BookmarksFragment;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class BookmarksContextualModePresenter implements Presenter<BookmarksFragment> {
private ActionMode actionMode;
private BookmarksFragment fragment;
private AppCompatActivity activity;
@Inject
BookmarksContextualModePresenter() {
}
public boolean isInActionMode() {
return actionMode != null;
}
private void startActionMode() {
if (activity != null) {
actionMode = activity.startSupportActionMode(new ModeCallback());
}
}
public void invalidateActionMode(boolean startIfStopped) {
if (actionMode != null) {
actionMode.invalidate();
} else if (startIfStopped) {
startActionMode();
}
}
public void finishActionMode() {
if (actionMode != null) {
actionMode.finish();
}
}
private class ModeCallback implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = activity.getMenuInflater();
inflater.inflate(R.menu.bookmark_contextual_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
if (fragment != null) {
fragment.prepareContextualMenu(menu);
}
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
boolean result = fragment != null && fragment.onContextualActionClicked(item.getItemId());
finishActionMode();
return result;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
if (fragment != null) {
fragment.onCloseContextualActionMenu();
}
if (mode == actionMode) {
actionMode = null;
}
}
}
@Override
public void bind(BookmarksFragment fragment) {
this.fragment = fragment;
activity = (AppCompatActivity) fragment.getActivity();
}
@Override
public void unbind(BookmarksFragment fragment) {
if (fragment == this.fragment) {
this.fragment = null;
activity = null;
}
}
}