doze: Adapt to S style

* Reference e7db7fc560

* Adapted and rewritten in Kt

* Use Theme.SubSettingsBase for theme
* Replace PreferenceActivity with CollapsingToolbarBaseActivity
* Add Titles to preference screen
* Remove onOptionsItemSelected and where neccessary move to activity

Change-Id: I4d35ade6f45022944df4db787948c03b5bc14e5f
Signed-off-by: Rohan Hasabe <rohanhasabe8@gmail.com>
Signed-off-by: Bruno Martins <bgcngm@gmail.com>
This commit is contained in:
TheScarastic
2021-10-14 01:19:10 +05:30
committed by LuK1337
parent 3f5b2402b6
commit e854088f20
13 changed files with 32 additions and 288 deletions

View File

@@ -47,7 +47,7 @@
android:name=".DozeSettingsActivity"
android:exported="false"
android:label="@string/ambient_display_title"
android:theme="@style/Theme.Main">
android:theme="@style/Theme.SubSettingsBase">
<intent-filter>
<action android:name="org.lineageos.settings.device.DOZE_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />

View File

@@ -2,7 +2,7 @@
public <init>(android.content.Context, android.util.AttributeSet);
}
-keep class ** extends android.support.v14.preference.PreferenceFragment
-keep class ** extends androidx.preference.PreferenceFragment
-keep class org.lineageos.settings.doze.* {
*;
}

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2019-2020 The LineageOS 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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/switchbar_background_color" android:state_activated="false" />
<item android:color="?android:attr/colorAccent" android:state_activated="true" />
</selector>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2019 The LineageOS 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.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/switch_bar_bg" />
</shape>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 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.
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">
<include layout="@layout/switch_bar" />
</LinearLayout>

View File

@@ -1,49 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2016 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/switch_bar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@drawable/switchbar_background"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:clickable="true"
android:gravity="center"
android:theme="@*android:style/ThemeOverlay.DeviceDefault.Accent">
<TextView android:id="@+id/switch_text"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:paddingStart="56dp"
android:maxLines="2"
android:ellipsize="end"
android:textAppearance="@android:style/TextAppearance.Material.Title"
android:textColor="?android:attr/textColorPrimaryInverse"
android:textSize="18sp"
android:textAlignment="viewStart" />
<Switch
android:id="@android:id/switch_widget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@null"
android:theme="@style/Theme.Main.SwitchBar.Switch" />
</LinearLayout>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2020 The LineageOS 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.
-->
<resources>
<color name="switchbar_switch_track_tint">#82000000</color>
<color name="switchbar_switch_thumb_tint">@android:color/black</color>
</resources>

View File

@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2020 The LineageOS 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.
-->
<resources>
<color name="switchbar_background_color">@*android:color/material_grey_600</color>
<color name="switchbar_switch_track_tint">#BFFFFFFF</color>
<color name="switchbar_switch_thumb_tint">@android:color/white</color>
</resources>

View File

@@ -1,72 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015-2016 The CyanogenMod Project
2017-2020 The LineageOS 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<style name="Theme.Main" parent="@android:style/Theme.DeviceDefault.Settings">
<item name="dialogPreferenceStyle">@style/Theme.Main.DialogPreferenceStyle</item>
<item name="preferenceCategoryStyle">@style/Theme.Main.PreferenceCategoryStyle</item>
<item name="preferenceFragmentStyle">@style/Theme.Main.PreferenceFragmentStyle</item>
<item name="preferenceStyle">@style/Theme.Main.PreferenceStyle</item>
<item name="preferenceTheme">@style/Theme.Main.PreferenceTheme</item>
<item name="switchPreferenceStyle">@style/Theme.Main.SwitchPreferenceStyle</item>
</style>
<style name="Theme.Main.DialogPreferenceStyle" parent="@style/Theme.Main.PreferenceStyle" />
<style name="Theme.Main.PreferenceCategoryStyle" parent="@*android:style/Preference.DeviceDefault.Category">
<item name="allowDividerAbove">true</item>
<item name="allowDividerBelow">true</item>
<item name="android:layout">@layout/preference_category_material_settings</item>
</style>
<style name="Theme.Main.PreferenceFragmentStyle" parent="@*android:style/PreferenceFragment.Material">
<item name="allowDividerAfterLastItem">false</item>
</style>
<style name="Theme.Main.PreferenceStyle" parent="@*android:style/Preference.DeviceDefault">
<item name="allowDividerAbove">false</item>
<item name="allowDividerBelow">true</item>
<item name="singleLineTitle">false</item>
<item name="android:layout">@layout/preference_material_settings</item>
</style>
<style name="Theme.Main.PreferenceTheme" parent="@style/PreferenceThemeOverlay.SettingsBase">
<item name="preferenceCategoryTitleTextAppearance">
@style/Theme.Main.TextAppearance.CategoryTitle
</item>
</style>
<style name="Theme.Main.SwitchPreferenceStyle" parent="@style/Theme.Main.PreferenceStyle">
<item name="widgetLayout">@*android:layout/preference_widget_switch</item>
</style>
<style name="Theme.Main.SwitchBar" parent="@android:style/ThemeOverlay.Material.ActionBar">
</style>
<style name="Theme.Main.SwitchBar.Switch">
<item name="android:trackTint">@color/switchbar_switch_track_tint</item>
<item name="android:thumbTint">@color/switchbar_switch_thumb_tint</item>
</style>
<style name="Theme.Main.TextAppearance.CategoryTitle"
parent="@*android:style/TextAppearance.DeviceDefault.Body2">
<item name="android:textAllCaps">true</item>
<item name="android:textSize">11sp</item>
<!-- 0.8 Spacing, 0.8/11 = 0.072727273 -->
<item name="android:letterSpacing">0.072727273</item>
</style>
</resources>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015 The CyanogenMod Project
2018-2019 The LineageOS Project
2018-2021 The LineageOS Project
Licensed under the Apache License, Version 2.0 (the "License"
you may not use this file except in compliance with the License.
@@ -15,7 +15,19 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/ambient_display_title">
<com.android.settingslib.widget.TopIntroPreference
android:key="doze_top_intro"
android:title="@string/ambient_display_enable_summary"/>
<com.android.settingslib.widget.MainSwitchPreference
android:defaultValue="false"
android:key="doze_enable"
android:title="@string/ambient_display_enable_title" />
<SwitchPreference
android:key="always_on_display"

View File

@@ -6,14 +6,15 @@
package org.lineageos.settings.doze
import android.os.Bundle
import android.preference.PreferenceActivity
import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity
import com.android.settingslib.collapsingtoolbar.R
class DozeSettingsActivity : PreferenceActivity() {
class DozeSettingsActivity : CollapsingToolbarBaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
fragmentManager
.beginTransaction()
.replace(android.R.id.content, DozeSettingsFragment(), TAG)
.replace(R.id.content_frame, DozeSettingsFragment(), TAG)
.commit()
}

View File

@@ -10,20 +10,16 @@ import android.app.AlertDialog
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.CompoundButton
import android.widget.Switch
import android.widget.TextView
import androidx.preference.*
import com.android.settingslib.widget.MainSwitchPreference
import com.android.settingslib.widget.OnMainSwitchChangeListener
class DozeSettingsFragment : PreferenceFragment(), Preference.OnPreferenceChangeListener,
CompoundButton.OnCheckedChangeListener {
OnMainSwitchChangeListener {
private lateinit var alwaysOnDisplayPreference: SwitchPreference
private lateinit var switchBar: View
private lateinit var textView: TextView
private lateinit var switchBar: MainSwitchPreference
private var pickUpPreference: ListPreference? = null
private var pocketPreference: SwitchPreference? = null
@@ -32,7 +28,6 @@ class DozeSettingsFragment : PreferenceFragment(), Preference.OnPreferenceChange
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.doze_settings)
activity.actionBar?.setDisplayHomeAsUpEnabled(true)
val prefs = activity.getSharedPreferences("doze_settings", Activity.MODE_PRIVATE)!!
if (savedInstanceState == null && !prefs.getBoolean("first_help_shown", false)) {
@@ -46,6 +41,10 @@ class DozeSettingsFragment : PreferenceFragment(), Preference.OnPreferenceChange
}
val dozeEnabled = Utils.isDozeEnabled(context)
switchBar = findPreference(Utils.DOZE_ENABLE)!!
switchBar.addOnSwitchChangeListener(this)
switchBar.isChecked = dozeEnabled
alwaysOnDisplayPreference = findPreference(Utils.ALWAYS_ON_DISPLAY)!!
alwaysOnDisplayPreference.isEnabled = dozeEnabled
alwaysOnDisplayPreference.isChecked = Utils.isAlwaysOnEnabled(context)
@@ -80,35 +79,6 @@ class DozeSettingsFragment : PreferenceFragment(), Preference.OnPreferenceChange
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
val view = LayoutInflater.from(context).inflate(R.layout.doze, container, false)
(view as ViewGroup).addView(super.onCreateView(inflater, container, savedInstanceState))
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val dozeEnabled = Utils.isDozeEnabled(context)
textView = view.findViewById(R.id.switch_text)
textView.text =
getString(if (dozeEnabled) R.string.switch_bar_on else R.string.switch_bar_off)
switchBar = view.findViewById(R.id.switch_bar)
val switchWidget = switchBar.findViewById<Switch>(android.R.id.switch_widget)
switchWidget.isChecked = dozeEnabled
switchWidget.setOnCheckedChangeListener(this)
switchBar.isActivated = dozeEnabled
switchBar.setOnClickListener {
switchWidget.isChecked = !switchWidget.isChecked
switchBar.isActivated = switchWidget.isChecked
}
}
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
if (preference.key == Utils.ALWAYS_ON_DISPLAY) {
Utils.enableAlwaysOn(context, newValue as Boolean)
@@ -117,13 +87,11 @@ class DozeSettingsFragment : PreferenceFragment(), Preference.OnPreferenceChange
return true
}
override fun onCheckedChanged(compoundButton: CompoundButton, isChecked: Boolean) {
override fun onSwitchChanged(switchView: Switch, isChecked: Boolean) {
Utils.enableDoze(context, isChecked)
Utils.checkDozeService(context)
textView.text =
getString(if (isChecked) R.string.switch_bar_on else R.string.switch_bar_off)
switchBar.isActivated = isChecked
switchBar.isChecked = isChecked
if (!isChecked) {
Utils.enableAlwaysOn(context, false)
@@ -135,13 +103,4 @@ class DozeSettingsFragment : PreferenceFragment(), Preference.OnPreferenceChange
pocketPreference?.isEnabled = isChecked
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.home -> {
activity.onBackPressed()
true
}
else -> false
}
}
}

View File

@@ -23,6 +23,7 @@ object Utils {
private const val DOZE_INTENT = "com.android.systemui.doze.pulse"
const val ALWAYS_ON_DISPLAY = "always_on_display"
const val DOZE_ENABLE = "doze_enable"
const val CATEGORY_PICKUP_SENSOR = "pickup_sensor"
const val CATEGORY_PROXIMITY_SENSOR = "proximity_sensor"