summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/notification/ZenModeScheduleDaysSelection.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/notification/ZenModeScheduleDaysSelection.java')
-rw-r--r--src/com/android/settings/notification/ZenModeScheduleDaysSelection.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/com/android/settings/notification/ZenModeScheduleDaysSelection.java b/src/com/android/settings/notification/ZenModeScheduleDaysSelection.java
new file mode 100644
index 0000000..6d11ffb
--- /dev/null
+++ b/src/com/android/settings/notification/ZenModeScheduleDaysSelection.java
@@ -0,0 +1,100 @@
+/*
+ * 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.util.SparseBooleanArray;
+import android.view.LayoutInflater;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.LinearLayout;
+import android.widget.ScrollView;
+
+import com.android.settings.R;
+
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Calendar;
+
+public class ZenModeScheduleDaysSelection extends ScrollView {
+ public static final int[] DAYS = {
+ Calendar.SUNDAY,
+ Calendar.MONDAY,
+ Calendar.TUESDAY,
+ Calendar.WEDNESDAY,
+ Calendar.THURSDAY,
+ Calendar.FRIDAY,
+ Calendar.SATURDAY,
+ };
+ private static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat("EEEE");
+
+ private final SparseBooleanArray mDays = new SparseBooleanArray();
+ private final LinearLayout mLayout;
+
+ public ZenModeScheduleDaysSelection(Context context, int[] days) {
+ super(context);
+ mLayout = new LinearLayout(mContext);
+ final int hPad = context.getResources()
+ .getDimensionPixelSize(R.dimen.zen_schedule_day_margin);
+ mLayout.setPadding(hPad, 0, hPad, 0);
+ addView(mLayout);
+ if (days != null) {
+ for (int i = 0; i < days.length; i++) {
+ mDays.put(days[i], true);
+ }
+ }
+ mLayout.setOrientation(LinearLayout.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_schedule_rule_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(getDays());
+ }
+ });
+ mLayout.addView(checkBox);
+ }
+ }
+
+ private int[] getDays() {
+ final SparseBooleanArray rt = new SparseBooleanArray(mDays.size());
+ for (int i = 0; i < mDays.size(); i++) {
+ final int day = mDays.keyAt(i);
+ if (!mDays.valueAt(i)) continue;
+ rt.put(day, true);
+ }
+ final int[] rta = new int[rt.size()];
+ for (int i = 0; i < rta.length; i++) {
+ rta[i] = rt.keyAt(i);
+ }
+ Arrays.sort(rta);
+ return rta;
+ }
+
+ protected void onChanged(int[] days) {
+ // event hook for subclasses
+ }
+}