OSDN Git Service

Twilight Location off text
authorJay Aliomer <aaliomer@google.com>
Mon, 20 Apr 2020 01:44:26 +0000 (21:44 -0400)
committerJay Aliomer <aaliomer@google.com>
Thu, 30 Apr 2020 03:14:32 +0000 (23:14 -0400)
When location is disabled, dark theme and night light
will show text and button to take the user to location page

Fixes: 153115261
Fixes: 153115618
Test: manually turn off location and observe view
Change-Id: I24be2f26a4c9e1b3f2a17e83e6f91cb7685f2e28

res/layout/twilight_mode_location_off.xml [new file with mode: 0644]
res/values/ids.xml
res/values/strings.xml
res/xml/dark_mode_settings.xml
res/xml/night_display_settings.xml
src/com/android/settings/display/TwilightLocationPreferenceController.java [new file with mode: 0644]
src/com/android/settings/display/darkmode/DarkModeSettingsFragment.java

diff --git a/res/layout/twilight_mode_location_off.xml b/res/layout/twilight_mode_location_off.xml
new file mode 100644 (file)
index 0000000..da3aa4c
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 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"
+    android:id="@+id/request_background_location_permission"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:paddingStart="8dp"
+        android:paddingEnd="10dp"
+        android:paddingTop="18dp"
+        android:paddingBottom="0dp"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:layout_width="40dp"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_settings_location"
+            android:tint="?android:attr/colorAccent"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="24dp"
+            android:paddingRight="2dp"
+            android:gravity="center_vertical"
+            android:text="@string/twilight_mode_location_off_dialog_message"
+            android:textAppearance="?attr/textAppearanceSubtitle1"
+            android:textSize="16sp"
+            android:textColor="?android:attr/textColorPrimary"/>
+
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/go_to_location_setting"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/twilight_mode_launch_location"
+        style="@style/Widget.AppCompat.Button.Borderless.Colored"
+        android:layout_gravity="end"/>
+
+</LinearLayout>
\ No newline at end of file
index ba14e85..9edfc51 100644 (file)
@@ -32,6 +32,9 @@
     <item type="id" name="action_drag_move_bottom" />
     <item type="id" name="action_drag_remove" />
 
+    <!-- Go to location settings button id -->
+    <item type="id" name="go_to_location_setting" />
+
     <!-- For a menu item allowing users to edit a SIM display name -->
     <item type="id" name="edit_sim_name" />
 </resources>
index d4f3f73..e9fa48d 100644 (file)
     <string name="night_display_not_currently_on">Night Light not currently on</string>
 
     <!-- Twilight Mode -->
+    <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=120] -->
+    <string name="twilight_mode_location_off_dialog_message">Device location needed to determine your sunset and sunrise times.</string>
     <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=40] -->
-    <string name="twilight_mode_location_off_dialog_message">Device location needed to determine you sunset to sunrise</string>
-    <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=40] -->
-    <string name="twilight_mode_launch_location">Turn on location</string>
+    <string name="twilight_mode_launch_location">Location settings</string>
 
     <!--    Dark ui screen-->
     <!-- Display settings screen, activation button action for manual mode. [CHAR LIMIT=40] -->
index a5f03d2..1e0d42e 100644 (file)
     android:title="@string/dark_ui_mode"
     settings:keywords="@string/keywords_dark_ui_mode">
 
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="dark_ui_location_off"
+        android:selectable="false"
+        android:layout="@layout/twilight_mode_location_off"
+        settings:allowDividerBelow="true"
+        settings:controller="com.android.settings.display.TwilightLocationPreferenceController"/>
+
     <DropDownPreference
         android:key="dark_ui_auto_mode"
         android:title="@string/dark_ui_auto_mode_title"
         android:summary="%s"
         android:entries="@array/dark_ui_scheduler_preference_titles"
         android:entryValues="@array/dark_ui_scheduler_preference_titles"
+        settings:allowDividerAbove="true"
         settings:controller="com.android.settings.display.darkmode.DarkModeScheduleSelectorController"
         settings:keywords="@string/keywords_dark_ui_mode"/>
 
index eed5c77..8b7e41a 100644 (file)
     android:title="@string/night_display_title"
     settings:keywords="@string/keywords_display_night_display">
 
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="dark_ui_location_off"
+        android:selectable="false"
+        android:layout="@layout/twilight_mode_location_off"
+        settings:controller="com.android.settings.display.TwilightLocationPreferenceController"
+        settings:allowDividerBelow="true"/>
+
     <DropDownPreference
         android:key="night_display_auto_mode"
         android:title="@string/night_display_auto_mode_title"
diff --git a/src/com/android/settings/display/TwilightLocationPreferenceController.java b/src/com/android/settings/display/TwilightLocationPreferenceController.java
new file mode 100644 (file)
index 0000000..131b0a8
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2020 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.display;
+
+import android.content.Context;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.view.View;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.Settings;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.widget.LayoutPreference;
+
+/**
+ * Controller to take the user to location settings page
+ */
+public class TwilightLocationPreferenceController extends BasePreferenceController {
+    private final LocationManager mLocationManager;
+    private final MetricsFeatureProvider mMetricsFeatureProvider;
+
+    public TwilightLocationPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+        mLocationManager = context.getSystemService(LocationManager.class);
+        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        final LayoutPreference preference = screen.findPreference(getPreferenceKey());
+        final View button = preference.findViewById(R.id.go_to_location_setting);
+        button.setOnClickListener(v -> {
+            mMetricsFeatureProvider.logClickedPreference(preference, getMetricsCategory());
+            final Intent intent = new Intent();
+            intent.setClass(mContext, Settings.LocationSettingsActivity.class);
+            mContext.startActivity(intent);
+        });
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        preference.setVisible(!mLocationManager.isLocationEnabled());
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE_UNSEARCHABLE;
+    }
+}
index 530a541..a5103b0 100644 (file)
@@ -37,7 +37,7 @@ import java.util.List;
 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
 public class DarkModeSettingsFragment extends DashboardFragment {
 
-    private static final String TAG = "DarkModeSettingsFragment";
+    private static final String TAG = "DarkModeSettingsFrag";
     private static final String DARK_THEME_END_TIME = "dark_theme_end_time";
     private static final String DARK_THEME_START_TIME = "dark_theme_start_time";
     private DarkModeObserver mContentObserver;