10e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang/* 20e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Copyright (C) 2015 The Android Open Source Project 30e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * 40e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Licensed under the Apache License, Version 2.0 (the "License"); 50e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * you may not use this file except in compliance with the License. 60e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * You may obtain a copy of the License at 70e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * 80e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * http://www.apache.org/licenses/LICENSE-2.0 90e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * 100e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Unless required by applicable law or agreed to in writing, software 110e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * distributed under the License is distributed on an "AS IS" BASIS, 120e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * See the License for the specific language governing permissions and 140e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * limitations under the License 150e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang */ 160e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 170e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangpackage com.android.contacts.editor; 180e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 190e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport com.android.contacts.R; 200e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport com.android.contacts.editor.PhotoActionPopup.ChoiceListItem; 210e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 220e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.app.AlertDialog; 230e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.app.Dialog; 240e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.app.DialogFragment; 250e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.content.DialogInterface; 260e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.content.DialogInterface.OnClickListener; 270e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.os.Bundle; 280e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 290e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport java.util.ArrayList; 300e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 310e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang/** 320e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Displays the options for changing the contact photo. 330e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang */ 340e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangpublic class PhotoSourceDialogFragment extends DialogFragment { 350e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 360e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang private static final String ARG_PHOTO_MODE = "photoMode"; 370e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 380e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang /** 390e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Callbacks for the host of the {@link PhotoSourceDialogFragment}. 400e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang */ 410e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public interface Listener { 420e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang void onRemovePictureChosen(); 430e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang void onTakePhotoChosen(); 440e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang void onPickFromGalleryChosen(); 450e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 460e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 470e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public static void show(CompactContactEditorFragment fragment, int photoMode) { 480e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final Bundle args = new Bundle(); 490e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang args.putInt(ARG_PHOTO_MODE, photoMode); 500e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 510e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang PhotoSourceDialogFragment dialog = new PhotoSourceDialogFragment(); 520e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang dialog.setTargetFragment(fragment, 0); 530e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang dialog.setArguments(args); 540e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang dialog.show(fragment.getFragmentManager(), "photoSource"); 550e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 560e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 570e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang @Override 580e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public Dialog onCreateDialog(Bundle savedInstanceState) { 590e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang // Get the available options for changing the photo 600e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final int photoMode = getArguments().getInt(ARG_PHOTO_MODE); 610e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final ArrayList<ChoiceListItem> choices = 620e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang PhotoActionPopup.getChoices(getActivity(), photoMode); 630e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 640e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang // Prepare the AlertDialog items and click listener 650e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final CharSequence[] items = new CharSequence[choices.size()]; 660e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang for (int i = 0; i < items.length; i++) { 670e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang items[i] = choices.get(i).toString(); 680e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 690e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final OnClickListener clickListener = new OnClickListener() { 700e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang @Override 710e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public void onClick(DialogInterface dialogInterface, int which) { 720e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final Listener listener = (Listener) getTargetFragment(); 730e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final ChoiceListItem choice = choices.get(which); 740e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang switch (choice.getId()) { 750e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang case ChoiceListItem.ID_REMOVE: 760e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang listener.onRemovePictureChosen(); 770e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang break; 780e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang case ChoiceListItem.ID_TAKE_PHOTO: 790e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang listener.onTakePhotoChosen(); 800e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang break; 810e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang case ChoiceListItem.ID_PICK_PHOTO: 820e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang listener.onPickFromGalleryChosen(); 830e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang break; 840e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 850e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang dismiss(); 860e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 870e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang }; 880e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 890e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang // Build the AlertDialog 900e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 910e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang builder.setTitle(R.string.menu_change_photo); 920e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang builder.setItems(items, clickListener); 930e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang builder.setNegativeButton(android.R.string.cancel, /* listener =*/ null); 940e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang return builder.create(); 950e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 960e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang} 97