/* * 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.androsz.electricsleepbeta.alarmclock; import java.text.DateFormatSymbols; import java.util.Calendar; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.preference.ListPreference; import android.util.AttributeSet; public class RepeatPreference extends ListPreference { // Initial value that can be set with the values saved in the database. private final Alarm.DaysOfWeek mDaysOfWeek = new Alarm.DaysOfWeek(0); // New value that will be set if a positive result comes back from the // dialog. private final Alarm.DaysOfWeek mNewDaysOfWeek = new Alarm.DaysOfWeek(0); public RepeatPreference(final Context context, final AttributeSet attrs) { super(context, attrs); final String[] weekdays = new DateFormatSymbols().getWeekdays(); final 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); } public Alarm.DaysOfWeek getDaysOfWeek() { return mDaysOfWeek; } @Override protected void onDialogClosed(final boolean positiveResult) { if (positiveResult) { mDaysOfWeek.set(mNewDaysOfWeek); setSummary(mDaysOfWeek.toString(getContext(), true)); callChangeListener(mDaysOfWeek); } } @Override protected void onPrepareDialogBuilder(final Builder builder) { final CharSequence[] entries = getEntries(); getEntryValues(); builder.setMultiChoiceItems(entries, mDaysOfWeek.getBooleanArray(), new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(final DialogInterface dialog, final int which, final boolean isChecked) { mNewDaysOfWeek.set(which, isChecked); } }); } public void setDaysOfWeek(final Alarm.DaysOfWeek dow) { mDaysOfWeek.set(dow); mNewDaysOfWeek.set(dow); setSummary(dow.toString(getContext(), true)); } }