• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 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.mms.ui;
18 
19 import android.app.AlertDialog;
20 import android.content.Context;
21 import android.content.DialogInterface;
22 import android.content.DialogInterface.OnClickListener;
23 import android.os.Bundle;
24 import android.view.LayoutInflater;
25 import android.view.View;
26 import android.widget.NumberPicker;
27 
28 import com.android.mms.R;
29 
30 /**
31  * A dialog that prompts the user for the message deletion limits.
32  */
33 public class NumberPickerDialog extends AlertDialog implements OnClickListener {
34     private static final String NUMBER = "number";
35 
36     /**
37      * The callback interface used to indicate the user is done filling in
38      * the time (they clicked on the 'Set' button).
39      */
40     public interface OnNumberSetListener {
41 
42         /**
43          * @param number The number that was set.
44          */
onNumberSet(int number)45         void onNumberSet(int number);
46     }
47 
48     private final NumberPicker mNumberPicker;
49     private final OnNumberSetListener mCallback;
50 
51     /**
52      * @param context Parent.
53      * @param callBack How parent is notified.
54      * @param number The initial number.
55      */
NumberPickerDialog(Context context, OnNumberSetListener callBack, int number, int rangeMin, int rangeMax, int title)56     public NumberPickerDialog(Context context,
57             OnNumberSetListener callBack,
58             int number,
59             int rangeMin,
60             int rangeMax,
61             int title) {
62         this(context, AlertDialog.THEME_HOLO_LIGHT, callBack, number, rangeMin, rangeMax, title);
63     }
64 
65     /**
66      * @param context Parent.
67      * @param theme the theme to apply to this dialog
68      * @param callBack How parent is notified.
69      * @param number The initial number.
70      */
NumberPickerDialog(Context context, int theme, OnNumberSetListener callBack, int number, int rangeMin, int rangeMax, int title)71     public NumberPickerDialog(Context context,
72             int theme,
73             OnNumberSetListener callBack,
74             int number,
75             int rangeMin,
76             int rangeMax,
77             int title) {
78         super(context, theme);
79         mCallback = callBack;
80 
81         setTitle(title);
82 
83         setButton(DialogInterface.BUTTON_POSITIVE, context.getText(R.string.set), this);
84         setButton(DialogInterface.BUTTON_NEGATIVE, context.getText(R.string.no),
85                 (OnClickListener) null);
86 
87         LayoutInflater inflater =
88                 (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
89         View view = inflater.inflate(R.layout.number_picker_dialog, null);
90         setView(view);
91         mNumberPicker = (NumberPicker) view.findViewById(R.id.number_picker);
92 
93         // initialize state
94         mNumberPicker.setMinValue(rangeMin);
95         mNumberPicker.setMaxValue(rangeMax);
96         mNumberPicker.setValue(number);
97         mNumberPicker.setOnLongPressUpdateInterval(100); // make the repeat rate three times as fast
98                                                          // as normal since the range is so large.
99         mNumberPicker.setWrapSelectorWheel(false);       // don't wrap from min->max
100     }
101 
onClick(DialogInterface dialog, int which)102     public void onClick(DialogInterface dialog, int which) {
103         if (mCallback != null) {
104             mNumberPicker.clearFocus();
105             mCallback.onNumberSet(mNumberPicker.getValue());
106             dialog.dismiss();
107         }
108     }
109 
110     @Override
onSaveInstanceState()111     public Bundle onSaveInstanceState() {
112         Bundle state = super.onSaveInstanceState();
113         state.putInt(NUMBER, mNumberPicker.getValue());
114         return state;
115     }
116 
117     @Override
onRestoreInstanceState(Bundle savedInstanceState)118     public void onRestoreInstanceState(Bundle savedInstanceState) {
119         super.onRestoreInstanceState(savedInstanceState);
120         int number = savedInstanceState.getInt(NUMBER);
121         mNumberPicker.setValue(number);
122     }
123 }
124