Home | History | Annotate | Download | only in calendar
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.calendar;
     18 
     19 import android.app.Activity;
     20 import android.app.AlertDialog;
     21 import android.content.DialogInterface;
     22 import android.widget.Button;
     23 
     24 /**
     25  * A helper class for editing the response to an invitation when the invitation
     26  * is a repeating event.
     27  */
     28 public class EditResponseHelper implements DialogInterface.OnClickListener {
     29     private final Activity mParent;
     30     private int mWhichEvents = -1;
     31     private AlertDialog mAlertDialog;
     32 
     33     /**
     34      * This callback is passed in to this object when this object is created
     35      * and is invoked when the "Ok" button is selected.
     36      */
     37     private DialogInterface.OnClickListener mDialogListener;
     38 
     39     public EditResponseHelper(Activity parent) {
     40         mParent = parent;
     41     }
     42 
     43     public void setOnClickListener(DialogInterface.OnClickListener listener) {
     44         mDialogListener = listener;
     45     }
     46 
     47     public int getWhichEvents() {
     48         return mWhichEvents;
     49     }
     50 
     51     public void onClick(DialogInterface dialog, int which) {
     52     }
     53 
     54     /**
     55      * This callback is used when a list item is selected
     56      */
     57     private DialogInterface.OnClickListener mListListener =
     58             new DialogInterface.OnClickListener() {
     59         public void onClick(DialogInterface dialog, int which) {
     60             mWhichEvents = which;
     61 
     62             // Enable the "ok" button now that the user has selected which
     63             // events in the series to delete.
     64             Button ok = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
     65             ok.setEnabled(true);
     66         }
     67     };
     68 
     69     public void showDialog(int whichEvents) {
     70         // We need to have a non-null listener, otherwise we get null when
     71         // we try to fetch the "Ok" button.
     72         if (mDialogListener == null) {
     73             mDialogListener = this;
     74         }
     75         AlertDialog dialog = new AlertDialog.Builder(mParent)
     76                 .setTitle(R.string.change_response_title)
     77                 .setIcon(android.R.drawable.ic_dialog_alert)
     78                 .setSingleChoiceItems(R.array.change_response_labels, whichEvents,
     79                         mListListener)
     80                 .setPositiveButton(android.R.string.ok, mDialogListener)
     81                 .setNegativeButton(android.R.string.cancel, null)
     82                 .show();
     83         mAlertDialog = dialog;
     84 
     85         if (whichEvents == -1) {
     86             // Disable the "Ok" button until the user selects which events to
     87             // delete.
     88             Button ok = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
     89             ok.setEnabled(false);
     90         }
     91     }
     92 }
     93