package com.ichi2.anki.dialogs; import com.afollestad.materialdialogs.MaterialDialog; import com.ichi2.anki.R; import android.app.Dialog; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.DialogFragment; public class CardBrowserContextMenu extends DialogFragment { /** * Context Menu items */ public static final int CONTEXT_MENU_MARK = 0; public static final int CONTEXT_MENU_SUSPEND = 1; public static final int CONTEXT_MENU_DELETE = 2; public static final int CONTEXT_MENU_DETAILS = 3; private static final int MAX_TITLE_LENGTH = 75; private static MaterialDialog.ListCallback mContextMenuListener; public static CardBrowserContextMenu newInstance(String dialogTitle, boolean isMarked, boolean isSuspended, MaterialDialog.ListCallback contextMenuListener) { CardBrowserContextMenu f = new CardBrowserContextMenu(); Bundle args = new Bundle(); args.putString("dialogTitle", dialogTitle); args.putBoolean("isMarked", isMarked); args.putBoolean("isSuspended", isSuspended); mContextMenuListener = contextMenuListener; f.setArguments(args); return f; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Resources res = getResources(); String[] entries = new String[4]; entries[CONTEXT_MENU_DELETE] = res.getString(R.string.card_browser_delete_card); entries[CONTEXT_MENU_DETAILS] = res.getString(R.string.card_editor_preview_card); entries[CONTEXT_MENU_MARK] = res.getString( getArguments().getBoolean("isMarked") ? R.string.card_browser_unmark_card : R.string.card_browser_mark_card); entries[CONTEXT_MENU_SUSPEND] = res.getString( getArguments().getBoolean("isSuspended") ? R.string.card_browser_unsuspend_card : R.string.card_browser_suspend_card); // Ellipsize the title if it's obscenely long String title = getArguments().getString("dialogTitle"); if (title != null && title.length() > MAX_TITLE_LENGTH) { title = title.substring(0, MAX_TITLE_LENGTH) + "…"; } return new MaterialDialog.Builder(getActivity()) .title(title) .items(entries) .itemsCallback(mContextMenuListener) .build(); } }