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 1931a74ad969b650eb733e536569254ed3978c4f54Walter Jangimport android.app.Activity; 200e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.app.Dialog; 210e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.app.DialogFragment; 220e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.content.DialogInterface; 230e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.content.DialogInterface.OnClickListener; 240e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport android.os.Bundle; 25c40f3e945c43ff1ff90abb7fb2daf56aba315e10Gary Maiimport android.support.v7.app.AlertDialog; 26f34bd4235c0ca3f1cf8b192bb572a4e463bc36ffguanxiongliuimport android.view.View; 27f34bd4235c0ca3f1cf8b192bb572a4e463bc36ffguanxiongliuimport android.widget.TextView; 280e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 290a49afa2ad697307cc04ef4cb86570574fa720f2Gary Maiimport com.android.contacts.R; 300a49afa2ad697307cc04ef4cb86570574fa720f2Gary Maiimport com.android.contacts.editor.PhotoActionPopup.ChoiceListItem; 310a49afa2ad697307cc04ef4cb86570574fa720f2Gary Mai 320e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangimport java.util.ArrayList; 330e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 340e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang/** 350e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Displays the options for changing the contact photo. 360e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang */ 370e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jangpublic class PhotoSourceDialogFragment extends DialogFragment { 380e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 390e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang private static final String ARG_PHOTO_MODE = "photoMode"; 400e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 410e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang /** 420e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang * Callbacks for the host of the {@link PhotoSourceDialogFragment}. 430e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang */ 440e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public interface Listener { 450e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang void onRemovePictureChosen(); 460e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang void onTakePhotoChosen(); 470e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang void onPickFromGalleryChosen(); 480e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 490e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 5031a74ad969b650eb733e536569254ed3978c4f54Walter Jang public static void show(Activity activity, int photoMode) { 5131a74ad969b650eb733e536569254ed3978c4f54Walter Jang if (!(activity instanceof Listener)) { 5231a74ad969b650eb733e536569254ed3978c4f54Walter Jang throw new IllegalArgumentException( 5331a74ad969b650eb733e536569254ed3978c4f54Walter Jang "Activity must implement " + Listener.class.getName()); 5431a74ad969b650eb733e536569254ed3978c4f54Walter Jang } 550e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final Bundle args = new Bundle(); 560e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang args.putInt(ARG_PHOTO_MODE, photoMode); 570e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 580e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang PhotoSourceDialogFragment dialog = new PhotoSourceDialogFragment(); 590e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang dialog.setArguments(args); 6031a74ad969b650eb733e536569254ed3978c4f54Walter Jang dialog.show(activity.getFragmentManager(), "photoSource"); 610e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 620e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 630e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang @Override 640e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public Dialog onCreateDialog(Bundle savedInstanceState) { 650e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang // Get the available options for changing the photo 660e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final int photoMode = getArguments().getInt(ARG_PHOTO_MODE); 670e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final ArrayList<ChoiceListItem> choices = 680e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang PhotoActionPopup.getChoices(getActivity(), photoMode); 690e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 700e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang // Prepare the AlertDialog items and click listener 710e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final CharSequence[] items = new CharSequence[choices.size()]; 720e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang for (int i = 0; i < items.length; i++) { 730e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang items[i] = choices.get(i).toString(); 740e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 750e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final OnClickListener clickListener = new OnClickListener() { 760e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang @Override 770e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang public void onClick(DialogInterface dialogInterface, int which) { 7831a74ad969b650eb733e536569254ed3978c4f54Walter Jang final Listener listener = (Listener) getActivity(); 790e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final ChoiceListItem choice = choices.get(which); 800e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang switch (choice.getId()) { 810e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang case ChoiceListItem.ID_REMOVE: 820e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang listener.onRemovePictureChosen(); 830e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang break; 840e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang case ChoiceListItem.ID_TAKE_PHOTO: 850e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang listener.onTakePhotoChosen(); 860e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang break; 870e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang case ChoiceListItem.ID_PICK_PHOTO: 880e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang listener.onPickFromGalleryChosen(); 890e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang break; 900e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 910e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang dismiss(); 920e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 930e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang }; 940e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang 950e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang // Build the AlertDialog 96f34bd4235c0ca3f1cf8b192bb572a4e463bc36ffguanxiongliu final TextView title = (TextView) View.inflate(getActivity(), R.layout.dialog_title, null); 97f34bd4235c0ca3f1cf8b192bb572a4e463bc36ffguanxiongliu title.setText(R.string.menu_change_photo); 980e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 99f34bd4235c0ca3f1cf8b192bb572a4e463bc36ffguanxiongliu builder.setCustomTitle(title); 1000e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang builder.setItems(items, clickListener); 1010e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang builder.setNegativeButton(android.R.string.cancel, /* listener =*/ null); 1020e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang return builder.create(); 1030e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang } 1040e72ce9d97e0133a5f7cc348eef363bef9395979Walter Jang} 105