| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.deskclock; |
| |
| import android.app.AlertDialog.Builder; |
| import android.content.Context; |
| import android.content.DialogInterface; |
| import android.preference.ListPreference; |
| import android.util.AttributeSet; |
| |
| import java.text.DateFormatSymbols; |
| import java.util.Calendar; |
| |
| public class RepeatPreference extends ListPreference { |
| |
| // Initial value that can be set with the values saved in the database. |
| private Alarm.DaysOfWeek mDaysOfWeek = new Alarm.DaysOfWeek(0); |
| // New value that will be set if a positive result comes back from the |
| // dialog. |
| private Alarm.DaysOfWeek mNewDaysOfWeek = new Alarm.DaysOfWeek(0); |
| |
| public RepeatPreference(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| |
| String[] weekdays = new DateFormatSymbols().getWeekdays(); |
| String[] values = new String[] { |
| weekdays[Calendar.MONDAY], |
| weekdays[Calendar.TUESDAY], |
| weekdays[Calendar.WEDNESDAY], |
| weekdays[Calendar.THURSDAY], |
| weekdays[Calendar.FRIDAY], |
| weekdays[Calendar.SATURDAY], |
| weekdays[Calendar.SUNDAY], |
| }; |
| setEntries(values); |
| setEntryValues(values); |
| } |
| |
| @Override |
| protected void onDialogClosed(boolean positiveResult) { |
| if (positiveResult) { |
| mDaysOfWeek.set(mNewDaysOfWeek); |
| setSummary(mDaysOfWeek.toString(getContext(), true)); |
| callChangeListener(mDaysOfWeek); |
| } else { |
| mNewDaysOfWeek.set(mDaysOfWeek); |
| } |
| } |
| |
| @Override |
| protected void onPrepareDialogBuilder(Builder builder) { |
| CharSequence[] entries = getEntries(); |
| CharSequence[] entryValues = getEntryValues(); |
| |
| builder.setMultiChoiceItems( |
| entries, mDaysOfWeek.getBooleanArray(), |
| new DialogInterface.OnMultiChoiceClickListener() { |
| public void onClick(DialogInterface dialog, int which, |
| boolean isChecked) { |
| mNewDaysOfWeek.set(which, isChecked); |
| } |
| }); |
| } |
| |
| public void setDaysOfWeek(Alarm.DaysOfWeek dow) { |
| mDaysOfWeek.set(dow); |
| mNewDaysOfWeek.set(dow); |
| setSummary(dow.toString(getContext(), true)); |
| } |
| |
| public Alarm.DaysOfWeek getDaysOfWeek() { |
| return mDaysOfWeek; |
| } |
| } |