153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor/* 253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * Copyright (C) 2007 The Android Open Source Project 353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * 453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * Licensed under the Apache License, Version 2.0 (the "License"); 553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * you may not use this file except in compliance with the License. 653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * You may obtain a copy of the License at 753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * 853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * http://www.apache.org/licenses/LICENSE-2.0 953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * 1053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * Unless required by applicable law or agreed to in writing, software 1153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * distributed under the License is distributed on an "AS IS" BASIS, 1253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * See the License for the specific language governing permissions and 1453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * limitations under the License. 1553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor */ 1653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 1753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorpackage com.android.mms.ui; 1853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 1953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.app.AlertDialog; 2053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.content.Context; 2153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.content.DialogInterface; 2253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.content.DialogInterface.OnClickListener; 2353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.os.Bundle; 2453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.view.LayoutInflater; 2553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.view.View; 267c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylorimport android.widget.NumberPicker; 2753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 2853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport com.android.mms.R; 2953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 3053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor/** 312f3a42025f51d410162b9b4b3583528077117374Tom Taylor * A dialog that prompts the user for the message deletion limits. 3253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor */ 3353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorpublic class NumberPickerDialog extends AlertDialog implements OnClickListener { 3453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private static final String NUMBER = "number"; 3553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 3653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor /** 3753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * The callback interface used to indicate the user is done filling in 3853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * the time (they clicked on the 'Set' button). 3953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor */ 4053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public interface OnNumberSetListener { 4153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 4253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor /** 4353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param number The number that was set. 4453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor */ 4553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor void onNumberSet(int number); 4653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 4753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 487c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor private final NumberPicker mNumberPicker; 4953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private final OnNumberSetListener mCallback; 5053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 5153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor /** 5253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param context Parent. 5353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param callBack How parent is notified. 5453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param number The initial number. 5553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor */ 5653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public NumberPickerDialog(Context context, 5753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor OnNumberSetListener callBack, 5853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int number, 5953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int rangeMin, 6053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int rangeMax, 6153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int title) { 62fe9a5231eaad8616c9797dca8db6ea412d511f36Tom Taylor this(context, AlertDialog.THEME_HOLO_LIGHT, callBack, number, rangeMin, rangeMax, title); 6353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 6453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 6553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor /** 6653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param context Parent. 6753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param theme the theme to apply to this dialog 6853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param callBack How parent is notified. 6953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor * @param number The initial number. 7053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor */ 7153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public NumberPickerDialog(Context context, 7253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int theme, 7353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor OnNumberSetListener callBack, 7453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int number, 7553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int rangeMin, 7653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int rangeMax, 7753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int title) { 7853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor super(context, theme); 7953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mCallback = callBack; 8053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 8153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor setTitle(title); 8253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 8360161290654b704c0e9da25ed34250fd86305a72Christian Mehlmauer setButton(DialogInterface.BUTTON_POSITIVE, context.getText(R.string.set), this); 8460161290654b704c0e9da25ed34250fd86305a72Christian Mehlmauer setButton(DialogInterface.BUTTON_NEGATIVE, context.getText(R.string.no), 8560161290654b704c0e9da25ed34250fd86305a72Christian Mehlmauer (OnClickListener) null); 8653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 8753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor LayoutInflater inflater = 8853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 8995bfdae19e9bb4fd06bf1a5be9d9943bd66b4e7ePaul Westbrook View view = inflater.inflate(R.layout.number_picker_dialog, null); 9053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor setView(view); 917c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mNumberPicker = (NumberPicker) view.findViewById(R.id.number_picker); 9253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 9353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor // initialize state 947c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mNumberPicker.setMinValue(rangeMin); 957c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mNumberPicker.setMaxValue(rangeMax); 967c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mNumberPicker.setValue(number); 977c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mNumberPicker.setOnLongPressUpdateInterval(100); // make the repeat rate three times as fast 987c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor // as normal since the range is so large. 99891b86b877f99698292c2887cff8b2c37e782c2dTom Taylor mNumberPicker.setWrapSelectorWheel(false); // don't wrap from min->max 10053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 10153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 10253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public void onClick(DialogInterface dialog, int which) { 10353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor if (mCallback != null) { 10453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mNumberPicker.clearFocus(); 1057c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mCallback.onNumberSet(mNumberPicker.getValue()); 106c4a34a0ccd414e2bba937e8abd105a0383afff35Tom Taylor dialog.dismiss(); 10753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 10853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 10953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 11053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor @Override 11153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public Bundle onSaveInstanceState() { 11253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor Bundle state = super.onSaveInstanceState(); 1137c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor state.putInt(NUMBER, mNumberPicker.getValue()); 11453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor return state; 11553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 11653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 11753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor @Override 11853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public void onRestoreInstanceState(Bundle savedInstanceState) { 11953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor super.onRestoreInstanceState(savedInstanceState); 12053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor int number = savedInstanceState.getInt(NUMBER); 1217c2ec6959f436a1b8dece400b6618fcc6ad6110fTom Taylor mNumberPicker.setValue(number); 12253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 12353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor} 124