package i2p.bote.android.util; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import i2p.bote.I2PBote; import i2p.bote.android.R; import i2p.bote.folder.EmailFolder; public class MoveToDialogFragment extends DialogFragment { public static final String CURRENT_FOLDER = "current_folder"; public static MoveToDialogFragment newInstance(EmailFolder currentFolder) { MoveToDialogFragment f = new MoveToDialogFragment(); Bundle args = new Bundle(); args.putString(CURRENT_FOLDER, currentFolder.getName()); f.setArguments(args); return f; } public interface MoveToDialogListener { public void onFolderSelected(EmailFolder newFolder); } MoveToDialogListener mListener; List<EmailFolder> mFolders; List<String> mFolderDisplayNames; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (MoveToDialogListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement MoveToDialogListener"); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mFolders = I2PBote.getInstance().getEmailFolders(); mFolderDisplayNames = new ArrayList<String>(); String curFolder = getArguments().getString(CURRENT_FOLDER); Iterator<EmailFolder> i = mFolders.iterator(); while (i.hasNext()) { EmailFolder folder = i.next(); if (folder.getName().equals(curFolder) || BoteHelper.isOutbox(folder.getName())) i.remove(); else mFolderDisplayNames.add( BoteHelper.getFolderDisplayName(getActivity(), folder)); } } @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.action_move_to) .setItems(mFolderDisplayNames.toArray(new String[mFolderDisplayNames.size()]), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mListener.onFolderSelected(mFolders.get(which)); } }) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); return builder.create(); } }