/* * Copyright (C) 2014 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.settings.notification; import android.content.Context; import android.service.notification.ZenModeConfig; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout; import com.android.settings.R; import java.text.SimpleDateFormat; import java.util.Calendar; public class ZenModeDowntimeDaysSelection extends LinearLayout { private static final int[] DAYS = { Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY }; private static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat("EEEE"); private final SparseBooleanArray mDays = new SparseBooleanArray(); public ZenModeDowntimeDaysSelection(Context context, String mode) { super(context); final int[] days = ZenModeConfig.tryParseDays(mode); if (days != null) { for (int i = 0; i < days.length; i++) { mDays.put(days[i], true); } } setOrientation(VERTICAL); final Calendar c = Calendar.getInstance(); final LayoutInflater inflater = LayoutInflater.from(context); for (int i = 0; i < DAYS.length; i++) { final int day = DAYS[i]; final CheckBox checkBox = (CheckBox) inflater.inflate(R.layout.zen_downtime_day, this, false); c.set(Calendar.DAY_OF_WEEK, day); checkBox.setText(DAY_FORMAT.format(c.getTime())); checkBox.setChecked(mDays.get(day)); checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { mDays.put(day, isChecked); onChanged(getMode()); } }); addView(checkBox); } } private String getMode() { final StringBuilder sb = new StringBuilder(ZenModeConfig.SLEEP_MODE_DAYS_PREFIX); boolean empty = true; for (int i = 0; i < mDays.size(); i++) { final int day = mDays.keyAt(i); if (!mDays.valueAt(i)) continue; if (empty) { empty = false; } else { sb.append(','); } sb.append(day); } return empty ? null : sb.toString(); } protected void onChanged(String mode) { // event hook for subclasses } }