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