Creates new layout for setting the start & end time, and days of the week, for a schedule-based mode. This is close to the mocks specified in https://screenshot.googleplex.com/8zmb7PAjjt73VkN, but with the following differences: - the end time is left-aligned with the center rather than on the right side of the screen. This is a side effect of using LinearLayout to evenly space start & end times, and could in theory be fixed by using a ConstraintLayout, but that option seems to cause times to overlap instead of wrap when display size is cranked up. Could be fixed later. - no icons yet on either side of the time display - no Done button. Instead, has the "exit at alarm" switch that exists today. Have not yet checked how this interacts with TalkBack, etc. Flag: android.app.modes_ui Bug: 332730302 Test: ZenModeSetSchedulePreferenceControllerTest, ZenModeExitAtAlarmPreferenceControllerTest, ZenModeSetTriggerLinkPreferenceControllerTest Test: manual: interacting with UI in normal size, with font & display at minimum and maximum, and in locales (fr) where the first day of the week is a different day Change-Id: I0b76f55891d6c12fc27720657c9eea6fe42fbafe
229 lines
9.2 KiB
XML
229 lines
9.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
~ Copyright (C) 2024 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.
|
|
-->
|
|
|
|
<LinearLayout
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
android:id="@+id/modes_set_schedule_layout"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_centerHorizontal="true"
|
|
android:gravity="fill_horizontal"
|
|
android:orientation="vertical"
|
|
android:paddingLeft="24dp"
|
|
android:paddingRight="24dp"
|
|
android:paddingTop="24dp"
|
|
android:paddingBottom="24dp">
|
|
|
|
<!-- Start time & end time row -->
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:gravity="fill_horizontal"
|
|
android:orientation="horizontal">
|
|
|
|
<!-- Start time: title (non-clickable preference), time setter -->
|
|
<LinearLayout
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
android:layout_weight="1"
|
|
android:orientation="vertical">
|
|
|
|
<TextView
|
|
android:id="@+id/start_time_label"
|
|
android:clickable="false"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Medium"
|
|
android:text="@string/zen_mode_start_time" />
|
|
|
|
<TextView
|
|
android:id="@+id/start_time"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Title"
|
|
android:textColor="?android:attr/colorAccent"
|
|
android:textSize="40sp" />
|
|
|
|
</LinearLayout>
|
|
|
|
<!-- End time: title (non-clickable preference), time setter -->
|
|
<LinearLayout
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
android:layout_weight="1"
|
|
android:orientation="vertical">
|
|
|
|
<TextView
|
|
android:id="@+id/end_time_label"
|
|
android:clickable="false"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Medium"
|
|
android:text="@string/zen_mode_end_time" />
|
|
|
|
<TextView
|
|
android:id="@+id/end_time"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Title"
|
|
android:textColor="?android:attr/colorAccent"
|
|
android:textSize="40sp" />
|
|
|
|
</LinearLayout>
|
|
|
|
</LinearLayout>
|
|
|
|
<!-- Schedule duration display row -->
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal"
|
|
android:paddingTop="8dp"
|
|
android:paddingBottom="8dp">
|
|
|
|
<!-- left side line divider -->
|
|
<View
|
|
android:layout_width="0dp"
|
|
android:layout_height="1.5dp"
|
|
android:layout_weight="1"
|
|
android:layout_gravity="center_vertical"
|
|
android:background="?android:attr/dividerHorizontal" />
|
|
|
|
<!-- length of schedule -->
|
|
<TextView
|
|
android:id="@+id/schedule_duration"
|
|
android:clickable="false"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:paddingHorizontal="8dp"
|
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Small" />
|
|
|
|
<!-- right side line divider -->
|
|
<View
|
|
android:layout_width="0dp"
|
|
android:layout_height="1.5dp"
|
|
android:layout_weight="1"
|
|
android:layout_gravity="center_vertical"
|
|
android:background="?android:attr/dividerHorizontal" />
|
|
|
|
</LinearLayout>
|
|
|
|
<!-- Buttons for selecting days of the week -->
|
|
<androidx.constraintlayout.widget.ConstraintLayout
|
|
android:id="@+id/days_of_week_container"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:minHeight="10dp"
|
|
android:maxHeight="60dp"
|
|
android:orientation="horizontal">
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day0"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintEnd_toStartOf="@+id/day1"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day1"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintStart_toEndOf="@+id/day0"
|
|
app:layout_constraintEnd_toStartOf="@+id/day2"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day2"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintStart_toEndOf="@+id/day1"
|
|
app:layout_constraintEnd_toStartOf="@+id/day3"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day3"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintStart_toEndOf="@+id/day2"
|
|
app:layout_constraintEnd_toStartOf="@+id/day4"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day4"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintStart_toEndOf="@+id/day3"
|
|
app:layout_constraintEnd_toStartOf="@+id/day5"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day5"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintStart_toEndOf="@+id/day4"
|
|
app:layout_constraintEnd_toStartOf="@+id/day6"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<ToggleButton
|
|
android:id="@+id/day6"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:background="@drawable/modes_schedule_day_toggle"
|
|
android:textColor="@color/modes_set_schedule_text_color"
|
|
android:textSize="18sp"
|
|
app:layout_constraintDimensionRatio="1:1"
|
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
app:layout_constraintEnd_toEndOf="parent"
|
|
app:layout_constraintStart_toEndOf="@+id/day5"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
|
</LinearLayout>
|