package org.wikipedia.readinglist;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.wikipedia.activity.FragmentUtil;
import org.wikipedia.page.ExtendedBottomSheetDialogFragment;
import org.wikipedia.readinglist.page.ReadingListPage;
public class ReadingListItemActionsDialog extends ExtendedBottomSheetDialogFragment {
public interface Callback {
void onToggleOffline(int pageIndex);
void onShare(int pageIndex);
void onAddToOther(int pageIndex);
void onDelete(int pageIndex);
}
private int pageIndex;
private ReadingListItemActionsView actionsView;
private ItemActionsCallback itemActionsCallback = new ItemActionsCallback();
@NonNull
public static ReadingListItemActionsDialog newInstance(@NonNull ReadingListPage page,
@NonNull ReadingList list) {
ReadingListItemActionsDialog instance = new ReadingListItemActionsDialog();
Bundle args = new Bundle();
args.putString("pageTitle", page.title());
args.putString("listTitle", list.getTitle());
args.putInt("pageIndex", list.getPages().indexOf(page));
args.putBoolean("pageOffline", page.isOffline());
instance.setArguments(args);
return instance;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
actionsView = new ReadingListItemActionsView(getContext());
actionsView.setCallback(itemActionsCallback);
pageIndex = getArguments().getInt("pageIndex");
actionsView.setState(getArguments().getString("pageTitle", ""),
getArguments().getString("listTitle", ""),
getArguments().getBoolean("pageOffline"));
return actionsView;
}
@Override
public void onDestroyView() {
actionsView.setCallback(null);
actionsView = null;
super.onDestroyView();
}
private class ItemActionsCallback implements ReadingListItemActionsView.Callback {
@Override
public void onToggleOffline() {
dismiss();
if (callback() != null) {
callback().onToggleOffline(pageIndex);
}
}
@Override
public void onShare() {
dismiss();
if (callback() != null) {
callback().onShare(pageIndex);
}
}
@Override
public void onAddToOther() {
dismiss();
if (callback() != null) {
callback().onAddToOther(pageIndex);
}
}
@Override
public void onDelete() {
dismiss();
if (callback() != null) {
callback().onDelete(pageIndex);
}
}
}
@Nullable
private Callback callback() {
return FragmentUtil.getCallback(this, Callback.class);
}
}