Snap for 11510485 from 71e2c70225
to 24Q2-release
Change-Id: Ifd7456be2a2ee2cfff112e6a7fa1a0a60203e079
This commit is contained in:
@@ -2508,6 +2508,22 @@
|
||||
android:value="true" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="Settings$ColorContrastActivity"
|
||||
android:exported="true"
|
||||
android:label="@string/accessibility_color_contrast_title">
|
||||
<intent-filter>
|
||||
<action android:name="android.settings.ACCESSIBILITY_COLOR_CONTRAST_SETTINGS" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||
android:value="com.android.settings.accessibility.ColorContrastFragment" />
|
||||
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
|
||||
android:value="@string/menu_key_accessibility"/>
|
||||
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
||||
android:value="true" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="Settings$TextToSpeechSettingsActivity"
|
||||
android:exported="true"
|
||||
|
@@ -30,3 +30,10 @@ flag {
|
||||
description: "Don't show quick settings tooltip in SUW, since the user can't use quick settings there."
|
||||
bug: "294560581"
|
||||
}
|
||||
|
||||
flag {
|
||||
name: "enable_color_contrast_control"
|
||||
namespace: "accessibility"
|
||||
description: "Allows users to control color contrast in the Accessibility settings page."
|
||||
bug: "246577325"
|
||||
}
|
||||
|
@@ -21,10 +21,3 @@ flag {
|
||||
description: "Order the saved bluetooth devices by most recently connected."
|
||||
bug: "306160434"
|
||||
}
|
||||
|
||||
flag {
|
||||
name: "enable_hide_exclusively_managed_bluetooth_device"
|
||||
namespace: "dck_framework"
|
||||
description: "Hide exclusively managed Bluetooth devices in BT settings menu."
|
||||
bug: "322285078"
|
||||
}
|
||||
|
28
res/drawable-night/ic_contrast_high.xml
Normal file
28
res/drawable-night/ic_contrast_high.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_200"
|
||||
android:pathData="M12,4C7,4 2.73,7.11 1,11.5C2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,16c-2.48,0 -4.5,-2.02 -4.5,-4.5S9.52,7 12,7s4.5,2.02 4.5,4.5S14.48,16 12,16z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_50"
|
||||
android:pathData="M12,11.5m-2.7,0a2.7,2.7 0,1 1,5.4 0a2.7,2.7 0,1 1,-5.4 0"/>
|
||||
</vector>
|
28
res/drawable-night/ic_contrast_medium.xml
Normal file
28
res/drawable-night/ic_contrast_medium.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_400"
|
||||
android:pathData="M12,4C7,4 2.73,7.11 1,11.5C2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,16c-2.48,0 -4.5,-2.02 -4.5,-4.5S9.52,7 12,7s4.5,2.02 4.5,4.5S14.48,16 12,16z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_100"
|
||||
android:pathData="M12,11.5m-2.7,0a2.7,2.7 0,1 1,5.4 0a2.7,2.7 0,1 1,-5.4 0"/>
|
||||
</vector>
|
28
res/drawable-night/ic_contrast_standard.xml
Normal file
28
res/drawable-night/ic_contrast_standard.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_700"
|
||||
android:pathData="M12,4C7,4 2.73,7.11 1,11.5C2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,16c-2.48,0 -4.5,-2.02 -4.5,-4.5S9.52,7 12,7s4.5,2.02 4.5,4.5S14.48,16 12,16z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_200"
|
||||
android:pathData="M12,11.5m-2.7,0a2.7,2.7 0,1 1,5.4 0a2.7,2.7 0,1 1,-5.4 0"/>
|
||||
</vector>
|
64
res/drawable/accessibility_contrast_button_background.xml
Normal file
64
res/drawable/accessibility_contrast_button_background.xml
Normal file
@@ -0,0 +1,64 @@
|
||||
<?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.
|
||||
-->
|
||||
<selector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
|
||||
<item android:state_selected="true">
|
||||
<layer-list>
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainerHighest" />
|
||||
<stroke
|
||||
android:color="?androidprv:attr/materialColorSecondary"
|
||||
android:width="@dimen/contrast_button_stroke_width" />
|
||||
<corners android:radius="@dimen/contrast_button_radius"/>
|
||||
</shape>
|
||||
</item>
|
||||
<item
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:left="57dp"
|
||||
android:top="57dp">
|
||||
<vector
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorPrimary"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10c5.52,0 10,-4.48 10,-10S17.52,2 12,2zM10.59,16.6l-4.24,-4.24l1.41,-1.41l2.83,2.83l5.66,-5.66l1.41,1.41L10.59,16.6z"/>
|
||||
</vector>
|
||||
</item>
|
||||
</layer-list>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<layer-list>
|
||||
<item android:top="@dimen/contrast_button_stroke_width"
|
||||
android:bottom="@dimen/contrast_button_stroke_width"
|
||||
android:left="@dimen/contrast_button_stroke_width"
|
||||
android:right="@dimen/contrast_button_stroke_width">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainerHighest" />
|
||||
<corners android:radius="@dimen/contrast_button_radius"/>
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
</item>
|
||||
</selector>
|
22
res/drawable/color_contrast_preview_background.xml
Normal file
22
res/drawable/color_contrast_preview_background.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainerHigh"/>
|
||||
<corners android:radius="20dp" />
|
||||
</shape>
|
@@ -0,0 +1,26 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainer"/>
|
||||
<corners
|
||||
android:bottomLeftRadius="20dp"
|
||||
android:bottomRightRadius="20dp"
|
||||
android:topLeftRadius="0dp"
|
||||
android:topRightRadius="0dp" />
|
||||
</shape>
|
22
res/drawable/color_contrast_preview_button_background.xml
Normal file
22
res/drawable/color_contrast_preview_button_background.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorTertiaryContainer"/>
|
||||
<corners android:radius="7dp" />
|
||||
</shape>
|
22
res/drawable/color_contrast_preview_dialog_background.xml
Normal file
22
res/drawable/color_contrast_preview_dialog_background.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainerLow"/>
|
||||
<corners android:radius="12dp" />
|
||||
</shape>
|
22
res/drawable/color_contrast_preview_icon_edit_background.xml
Normal file
22
res/drawable/color_contrast_preview_icon_edit_background.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorPrimary"/>
|
||||
<corners android:radius="20dp" />
|
||||
</shape>
|
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="oval" >
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainer"/>
|
||||
<size android:width="36dp" android:height="36dp" />
|
||||
</shape>
|
@@ -0,0 +1,23 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorSecondaryContainer"/>
|
||||
<corners android:radius="20dp" />
|
||||
<size android:height="30dp" android:width="60dp" />
|
||||
</shape>
|
22
res/drawable/color_contrast_preview_icon_star_background.xml
Normal file
22
res/drawable/color_contrast_preview_icon_star_background.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="oval" >
|
||||
<solid android:color="?androidprv:attr/materialColorPrimary"/>
|
||||
<size android:width="36dp" android:height="36dp" />
|
||||
</shape>
|
22
res/drawable/color_contrast_preview_tag_background.xml
Normal file
22
res/drawable/color_contrast_preview_tag_background.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?androidprv:attr/materialColorSurfaceContainerHighest"/>
|
||||
<corners android:radius="4dp" />
|
||||
</shape>
|
27
res/drawable/ic_article_24dp.xml
Normal file
27
res/drawable/ic_article_24dp.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:autoMirrored="true">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorOnSurfaceVariant"
|
||||
android:pathData="M19,5v14L5,19L5,5h14m0,-2L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM14,17L7,17v-2h7v2zM17,13L7,13v-2h10v2zM17,9L7,9L7,7h10v2z"/>
|
||||
</vector>
|
26
res/drawable/ic_article_filled_24dp.xml
Normal file
26
res/drawable/ic_article_filled_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="18dp"
|
||||
android:height="18dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorOnTertiaryContainer"
|
||||
android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM14,17H7v-2h7V17zM17,13H7v-2h10V13zM17,9H7V7h10V9z"/>
|
||||
</vector>
|
26
res/drawable/ic_chat_bubble_24dp.xml
Normal file
26
res/drawable/ic_chat_bubble_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorOnSurfaceVariant"
|
||||
android:pathData="M20,2L4,2c-1.1,0 -2,0.9 -2,2v18l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM20,16L4,16L4,4h16v12z"/>
|
||||
</vector>
|
35
res/drawable/ic_color_contrast.xml
Normal file
35
res/drawable/ic_color_contrast.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<com.android.settingslib.widget.AdaptiveIconShapeDrawable
|
||||
android:width="@dimen/accessibility_icon_size"
|
||||
android:height="@dimen/accessibility_icon_size"
|
||||
android:color="@color/accessibility_feature_background"/>
|
||||
</item>
|
||||
<item android:gravity="center">
|
||||
<vector
|
||||
android:width="@dimen/accessibility_icon_foreground_size"
|
||||
android:height="@dimen/accessibility_icon_foreground_size"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM11,19.93C7.06,19.44 4,16.08 4,12s3.05,-7.44 7,-7.93V19.93zM13,4.07C14.03,4.2 15,4.52 15.87,5H13V4.07zM13,7h5.24c0.25,0.31 0.48,0.65 0.68,1H13V7zM13,10h6.74c0.08,0.33 0.15,0.66 0.19,1H13V10zM13,19.93V19h2.87C15,19.48 14.03,19.8 13,19.93zM18.24,17H13v-1h5.92C18.72,16.35 18.49,16.69 18.24,17zM19.74,14H13v-1h6.93C19.89,13.34 19.82,13.67 19.74,14z"/>
|
||||
</vector>
|
||||
</item>
|
||||
</layer-list>
|
28
res/drawable/ic_contrast_high.xml
Normal file
28
res/drawable/ic_contrast_high.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_700"
|
||||
android:pathData="M12,4C7,4 2.73,7.11 1,11.5C2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,16c-2.48,0 -4.5,-2.02 -4.5,-4.5S9.52,7 12,7s4.5,2.02 4.5,4.5S14.48,16 12,16z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_900"
|
||||
android:pathData="M12,11.5m-2.7,0a2.7,2.7 0,1 1,5.4 0a2.7,2.7 0,1 1,-5.4 0"/>
|
||||
</vector>
|
28
res/drawable/ic_contrast_medium.xml
Normal file
28
res/drawable/ic_contrast_medium.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_500"
|
||||
android:pathData="M12,4C7,4 2.73,7.11 1,11.5C2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,16c-2.48,0 -4.5,-2.02 -4.5,-4.5S9.52,7 12,7s4.5,2.02 4.5,4.5S14.48,16 12,16z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_700"
|
||||
android:pathData="M12,11.5m-2.7,0a2.7,2.7 0,1 1,5.4 0a2.7,2.7 0,1 1,-5.4 0"/>
|
||||
</vector>
|
28
res/drawable/ic_contrast_standard.xml
Normal file
28
res/drawable/ic_contrast_standard.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_100"
|
||||
android:pathData="M12,4C7,4 2.73,7.11 1,11.5C2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,16c-2.48,0 -4.5,-2.02 -4.5,-4.5S9.52,7 12,7s4.5,2.02 4.5,4.5S14.48,16 12,16z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/system_accent1_600"
|
||||
android:pathData="M12,11.5m-2.7,0a2.7,2.7 0,1 1,5.4 0a2.7,2.7 0,1 1,-5.4 0"/>
|
||||
</vector>
|
26
res/drawable/ic_edit_24dp.xml
Normal file
26
res/drawable/ic_edit_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorOnPrimary"
|
||||
android:pathData="M20.41,4.94l-1.35,-1.35c-0.78,-0.78 -2.05,-0.78 -2.83,0L3,16.82L3,21h4.18L20.41,7.77c0.79,-0.78 0.79,-2.05 0,-2.83zM6.41,19.06L5,19v-1.36l9.82,-9.82 1.41,1.41 -9.82,9.83z"/>
|
||||
</vector>
|
26
res/drawable/ic_group_24dp.xml
Normal file
26
res/drawable/ic_group_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorSecondary"
|
||||
android:pathData="M15,8c0,-1.42 -0.5,-2.73 -1.33,-3.76C14.09,4.1 14.53,4 15,4c2.21,0 4,1.79 4,4s-1.79,4 -4,4c-0.43,0 -0.84,-0.09 -1.23,-0.21c-0.03,-0.01 -0.06,-0.02 -0.1,-0.03C14.5,10.73 15,9.42 15,8zM16.66,13.13C18.03,14.06 19,15.32 19,17v3h4v-3C23,14.82 19.42,13.53 16.66,13.13zM9,4c2.21,0 4,1.79 4,4s-1.79,4 -4,4s-4,-1.79 -4,-4S6.79,4 9,4zM9,13c2.67,0 8,1.34 8,4v3H1v-3C1,14.34 6.33,13 9,13z"/>
|
||||
</vector>
|
26
res/drawable/ic_inbox_24dp.xml
Normal file
26
res/drawable/ic_inbox_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorOnSecondaryContainer"
|
||||
android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3zM19,5v9h-4.18c-0.41,1.16 -1.51,2 -2.82,2s-2.4,-0.84 -2.82,-2H5V5H19z"/>
|
||||
</vector>
|
25
res/drawable/ic_security_privacy_alert_primary.xml
Normal file
25
res/drawable/ic_security_privacy_alert_primary.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48">
|
||||
<path
|
||||
android:pathData="M22,25.6H26V12.7H22V25.6ZM22,33.9H26V29.6H22V33.9ZM24,44C23.767,44 23.533,43.983 23.3,43.95C23.1,43.883 22.9,43.8 22.7,43.7C17.767,41.167 14.083,38.033 11.65,34.3C9.217,30.533 8,25.967 8,20.6V11.65C8,11.017 8.183,10.45 8.55,9.95C8.917,9.45 9.4,9.083 10,8.85L23,4.15C23.167,4.083 23.333,4.05 23.5,4.05C23.667,4.017 23.833,4 24,4C24.1,4 24.433,4.05 25,4.15L38,8.8C38.6,9.033 39.083,9.417 39.45,9.95C39.817,10.45 40,11.017 40,11.65V20.6C40,25.967 38.75,30.533 36.25,34.3C33.783,38.067 30.117,41.2 25.25,43.7C25.05,43.8 24.85,43.883 24.65,43.95C24.45,43.983 24.233,44 24,44ZM24,41C28.367,38.633 31.617,35.817 33.75,32.55C35.917,29.25 37,25.267 37,20.6V11.65L24,7L11,11.65V20.6C11,25.267 12.1,29.267 14.3,32.6C16.533,35.933 19.767,38.733 24,41Z"
|
||||
android:fillColor="?android:attr/colorAccent"/>
|
||||
</vector>
|
26
res/drawable/ic_star_24dp.xml
Normal file
26
res/drawable/ic_star_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="?androidprv:attr/materialColorOnPrimary"
|
||||
android:pathData="M14.43,10l-2.43,-8l-2.43,8l-7.57,0l6.18,4.41l-2.35,7.59l6.17,-4.69l6.18,4.69l-2.35,-7.59l6.17,-4.41z"/>
|
||||
</vector>
|
@@ -1,84 +0,0 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="364dp"
|
||||
android:height="266dp"
|
||||
android:viewportWidth="364"
|
||||
android:viewportHeight="266">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0.95h364v265.05h-364z"/>
|
||||
<path
|
||||
android:pathData="M339.42,265.47H24.58C11.07,265.47 0,254.17 0,240.39V26.42C0,12.6 11.07,1.3 24.58,1.3H339.52C352.93,1.3 364,12.6 364,26.38V240.49C364,254.17 352.93,265.47 339.42,265.47Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M300.32,99.22C310.82,106.16 324.97,103.31 331.93,92.85C338.89,82.39 336.03,68.29 325.54,61.35L301.31,45.32C290.82,38.38 276.67,41.24 269.7,51.69C262.74,62.15 265.6,76.26 276.1,83.19L300.32,99.22Z"
|
||||
android:fillColor="#C7EBD4"/>
|
||||
<path
|
||||
android:pathData="M323.02,78.05L314.03,79.7C313.56,79.79 313.24,80.25 313.33,80.72L314.98,89.71C315.07,90.19 315.52,90.5 316,90.41L324.99,88.76C325.46,88.68 325.78,88.22 325.69,87.75L324.04,78.76C323.95,78.28 323.5,77.97 323.02,78.05Z"
|
||||
android:fillColor="#5BB974"/>
|
||||
<path
|
||||
android:pathData="M310.61,70.73L310.59,70.95C311.1,73.37 309.48,75.68 307.04,76.1L298.41,77.6C295.97,78.01 293.62,76.36 293.19,73.99L293.21,73.77C292.7,71.35 294.32,69.04 296.76,68.63L305.39,67.13C307.83,66.71 310.1,68.31 310.61,70.73Z"
|
||||
android:fillColor="#5BB974"/>
|
||||
<path
|
||||
android:pathData="M280.24,67.28C283.75,69.56 288.46,68.56 290.74,65.05C293.02,61.54 292.02,56.84 288.51,54.56C285,52.28 280.29,53.28 278.02,56.79C275.73,60.3 276.73,65 280.24,67.28Z"
|
||||
android:fillColor="#5BB974"/>
|
||||
<path
|
||||
android:pathData="M68.38,36.61C69.99,35.55 71.95,35.17 73.84,35.55C75.73,35.92 77.39,37.02 78.48,38.6L78.71,38.97L80.09,41.3C80.7,42.37 81.58,43.26 82.64,43.89C83.7,44.52 84.9,44.87 86.14,44.89L88.76,44.96C90.69,45.04 92.52,45.87 93.84,47.28C95.16,48.69 95.87,50.56 95.82,52.49C95.77,52.62 95.77,52.77 95.83,52.91L95.52,55.59C95.39,56.8 95.58,58.03 96.06,59.15C96.54,60.28 97.3,61.26 98.27,62L100.32,63.72C101.82,64.92 102.8,66.65 103.03,68.56C103.26,70.47 102.73,72.39 101.56,73.91C101.44,73.98 101.39,74.18 101.27,74.26L99.55,76.2C98.72,77.1 98.14,78.2 97.87,79.4C97.59,80.59 97.63,81.84 97.99,83.01L98.66,85.58C99.17,87.44 98.92,89.43 97.97,91.11C97.02,92.78 95.44,94.02 93.58,94.55C93.46,94.63 93.26,94.58 93.13,94.66L90.56,95.23C89.36,95.48 88.24,96.04 87.32,96.84C86.4,97.64 85.69,98.67 85.28,99.82L84.38,102.36C83.69,104.16 82.33,105.61 80.58,106.42C78.83,107.22 76.83,107.31 75.02,106.65C74.88,106.64 74.74,106.57 74.64,106.46L72.32,105.41C71.19,104.94 69.96,104.75 68.74,104.85C67.52,104.96 66.34,105.36 65.31,106.01L63.11,107.43C61.5,108.48 59.54,108.86 57.65,108.49C55.76,108.12 54.1,107.02 53.01,105.44L52.78,105.07L51.4,102.75C50.78,101.68 49.89,100.79 48.81,100.17C47.74,99.55 46.52,99.22 45.28,99.22L42.66,99.15C40.72,99.07 38.9,98.24 37.58,96.83C36.25,95.42 35.54,93.55 35.6,91.62C35.64,91.49 35.64,91.34 35.59,91.2L35.89,88.52C36.02,87.31 35.84,86.08 35.36,84.95C34.88,83.83 34.12,82.84 33.15,82.09L31.08,80.46C30.32,79.87 29.68,79.13 29.21,78.28C28.74,77.44 28.43,76.51 28.32,75.56C28.21,74.6 28.29,73.63 28.55,72.7C28.82,71.77 29.27,70.9 29.87,70.15C29.99,70.07 30.04,69.87 30.16,69.79L31.89,67.77C32.72,66.87 33.3,65.76 33.58,64.57C33.85,63.38 33.81,62.13 33.46,60.96L32.79,58.37C32.29,56.51 32.54,54.53 33.49,52.86C34.44,51.18 36.01,49.95 37.87,49.42C37.99,49.34 38.19,49.39 38.32,49.31L40.89,48.73C42.09,48.48 43.21,47.92 44.13,47.12C45.06,46.31 45.76,45.29 46.17,44.13L47.07,41.6C47.75,39.81 49.12,38.35 50.87,37.55C52.62,36.75 54.62,36.66 56.43,37.31C56.57,37.33 56.71,37.4 56.81,37.5L59.2,38.58C60.33,39.04 61.56,39.23 62.78,39.13C64,39.02 65.18,38.63 66.21,37.97L68.38,36.61Z"
|
||||
android:fillColor="#CEE3FF"/>
|
||||
<path
|
||||
android:pathData="M60.5,74.56C59.92,74.56 59.44,74.37 59.05,73.97C58.65,73.58 58.45,73.09 58.45,72.52C58.45,71.95 58.65,71.46 59.05,71.07C59.44,70.67 59.92,70.48 60.5,70.48C61.07,70.48 61.55,70.67 61.95,71.07C62.34,71.46 62.54,71.95 62.54,72.52C62.54,73.09 62.34,73.58 61.95,73.97C61.55,74.37 61.07,74.56 60.5,74.56ZM70.3,74.56C69.73,74.56 69.25,74.37 68.85,73.97C68.46,73.58 68.26,73.09 68.26,72.52C68.26,71.95 68.46,71.46 68.85,71.07C69.25,70.67 69.73,70.48 70.3,70.48C70.88,70.48 71.36,70.67 71.75,71.07C72.15,71.46 72.35,71.95 72.35,72.52C72.35,73.09 72.15,73.58 71.75,73.97C71.36,74.37 70.88,74.56 70.3,74.56ZM65.4,83.96C69.05,83.96 72.14,82.69 74.68,80.16C77.21,77.63 78.48,74.54 78.48,70.89C78.48,70.23 78.43,69.6 78.35,68.99C78.27,68.37 78.12,67.78 77.9,67.21C77.33,67.34 76.76,67.45 76.19,67.51C75.61,67.58 75.02,67.62 74.39,67.62C71.91,67.62 69.57,67.09 67.36,66.02C65.15,64.96 63.27,63.48 61.72,61.57C60.85,63.69 59.6,65.54 57.98,67.11C56.36,68.67 54.48,69.85 52.32,70.64V70.89C52.32,74.54 53.59,77.63 56.12,80.16C58.66,82.69 61.75,83.96 65.4,83.96ZM65.4,87.23C63.14,87.23 61.01,86.8 59.03,85.94C57.04,85.09 55.31,83.92 53.84,82.45C52.36,80.98 51.2,79.25 50.34,77.26C49.48,75.27 49.05,73.15 49.05,70.89C49.05,68.62 49.48,66.5 50.34,64.51C51.2,62.52 52.36,60.79 53.84,59.32C55.31,57.85 57.04,56.69 59.03,55.83C61.01,54.97 63.14,54.54 65.4,54.54C67.66,54.54 69.79,54.97 71.77,55.83C73.76,56.69 75.49,57.85 76.96,59.32C78.43,60.79 79.6,62.52 80.46,64.51C81.32,66.5 81.74,68.62 81.74,70.89C81.74,73.15 81.32,75.27 80.46,77.26C79.6,79.25 78.43,80.98 76.96,82.45C75.49,83.92 73.76,85.09 71.77,85.94C69.79,86.8 67.66,87.23 65.4,87.23ZM63.19,58.01C64.34,59.92 65.89,61.45 67.85,62.61C69.81,63.77 71.99,64.35 74.39,64.35C74.77,64.35 75.14,64.33 75.49,64.29C75.85,64.25 76.21,64.2 76.6,64.14C75.45,62.24 73.9,60.7 71.94,59.55C69.98,58.39 67.8,57.81 65.4,57.81C65.02,57.81 64.65,57.83 64.3,57.87C63.94,57.91 63.57,57.96 63.19,58.01ZM53.02,66.76C54.41,65.97 55.62,64.95 56.66,63.69C57.69,62.44 58.47,61.04 58.98,59.49C57.6,60.28 56.38,61.3 55.35,62.55C54.31,63.8 53.54,65.21 53.02,66.76Z"
|
||||
android:fillColor="#559DFD"/>
|
||||
<path
|
||||
android:pathData="M185.48,137.47C186.07,137.47 186.56,137.28 186.94,136.89C187.33,136.51 187.52,136.02 187.52,135.43C187.52,134.84 187.33,134.35 186.94,133.96C186.56,133.58 186.07,133.39 185.48,133.39C184.88,133.39 184.4,133.58 184.01,133.96C183.62,134.35 183.43,134.84 183.43,135.43C183.43,136.02 183.62,136.51 184.01,136.89C184.4,137.28 184.88,137.47 185.48,137.47Z"
|
||||
android:fillColor="#202124"/>
|
||||
<path
|
||||
android:pathData="M54.83,176.56L60.78,178.1C63.63,178.83 66.64,178.74 69.45,177.82L75.29,175.92C86.88,172.14 98.07,182.63 94.99,194.4L93.44,200.33C92.69,203.18 92.78,206.18 93.69,208.97L95.6,214.79C99.37,226.35 88.83,237.52 77.03,234.47L71.09,232.93C68.23,232.19 65.22,232.29 62.42,233.2L56.58,235.11C44.98,238.89 33.8,228.4 36.88,216.63L38.43,210.7C39.17,207.85 39.08,204.85 38.17,202.06L36.27,196.23C32.49,184.68 43.03,173.51 54.83,176.56Z"
|
||||
android:fillColor="#FFF7DD"/>
|
||||
<path
|
||||
android:pathData="M80.51,190.74m-6.18,0a6.18,6.18 0,1 1,12.37 0a6.18,6.18 0,1 1,-12.37 0"
|
||||
android:fillColor="#FFC800"/>
|
||||
<path
|
||||
android:pathData="M50.47,219.9m-6.18,0a6.18,6.18 0,1 1,12.37 0a6.18,6.18 0,1 1,-12.37 0"
|
||||
android:fillColor="#FFC800"/>
|
||||
<path
|
||||
android:pathData="M80.51,219.9m-6.18,0a6.18,6.18 0,1 1,12.37 0a6.18,6.18 0,1 1,-12.37 0"
|
||||
android:fillColor="#FFC800"/>
|
||||
<path
|
||||
android:pathData="M77.6,193.13L50.21,220.52"
|
||||
android:strokeWidth="1.76699"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#FFC800"/>
|
||||
<path
|
||||
android:pathData="M80.07,219.9L50.47,219.9"
|
||||
android:strokeWidth="1.76699"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#FFC800"/>
|
||||
<path
|
||||
android:pathData="M311.22,173.59L289.22,173.9C286.98,173.93 284.78,174.55 282.85,175.7C280.92,176.85 279.34,178.48 278.25,180.44L267.53,199.55C266.44,201.5 265.88,203.71 265.91,205.95C265.94,208.18 266.56,210.38 267.72,212.3L278.99,231.12C280.14,233.04 281.78,234.63 283.74,235.72C285.7,236.81 287.91,237.36 290.15,237.33L312.15,237.01C314.39,236.99 316.59,236.37 318.52,235.22C320.45,234.08 322.04,232.45 323.14,230.49L333.84,211.37C334.93,209.41 335.49,207.21 335.45,204.97C335.42,202.73 334.79,200.54 333.64,198.62L322.38,179.8C321.23,177.88 319.59,176.3 317.63,175.21C315.67,174.12 313.46,173.56 311.22,173.59Z"
|
||||
android:fillColor="#CEE3FF"/>
|
||||
<path
|
||||
android:pathData="M285.54,202.36C285.35,202.24 285.23,202.07 285.18,201.88C285.14,201.68 285.19,201.47 285.35,201.25C286.94,198.95 288.98,197.13 291.46,195.8C293.93,194.48 296.6,193.77 299.45,193.68C302.3,193.59 305.02,194.11 307.58,195.24C310.15,196.37 312.32,198.05 314.08,200.28C314.28,200.51 314.35,200.72 314.28,200.91C314.22,201.1 314.11,201.26 313.96,201.4C313.8,201.53 313.61,201.6 313.4,201.59C313.18,201.59 312.99,201.48 312.82,201.27C311.28,199.25 309.32,197.72 306.96,196.69C304.6,195.66 302.11,195.19 299.5,195.27C296.89,195.35 294.46,195.98 292.21,197.15C289.95,198.33 288.11,199.97 286.67,202.09C286.51,202.33 286.33,202.47 286.11,202.51C285.9,202.54 285.71,202.49 285.54,202.36ZM304.89,221.4C302.07,220.8 299.73,219.5 297.89,217.5C296.05,215.5 295.09,213.01 294.99,210.04C294.95,208.71 295.4,207.58 296.34,206.65C297.28,205.72 298.44,205.23 299.81,205.18C301.18,205.14 302.37,205.56 303.37,206.43C304.36,207.3 304.88,208.4 304.92,209.73C304.95,210.6 305.31,211.33 306,211.9C306.69,212.48 307.5,212.76 308.41,212.73C309.33,212.7 310.1,212.38 310.73,211.76C311.35,211.14 311.65,210.39 311.62,209.52C311.53,206.44 310.3,203.89 307.95,201.86C305.6,199.84 302.83,198.87 299.66,198.97C296.48,199.07 293.79,200.21 291.56,202.38C289.34,204.54 288.28,207.15 288.37,210.21C288.39,210.84 288.48,211.64 288.63,212.59C288.78,213.54 289.11,214.65 289.6,215.9C289.69,216.14 289.69,216.35 289.6,216.54C289.51,216.73 289.36,216.87 289.15,216.96C288.94,217.04 288.73,217.04 288.52,216.96C288.32,216.87 288.17,216.72 288.09,216.51C287.65,215.49 287.33,214.47 287.12,213.45C286.92,212.44 286.79,211.38 286.76,210.29C286.65,206.77 287.86,203.77 290.38,201.3C292.9,198.83 295.96,197.54 299.57,197.42C303.2,197.31 306.36,198.4 309.05,200.71C311.73,203.02 313.13,205.94 313.24,209.47C313.28,210.79 312.84,211.92 311.91,212.84C310.98,213.76 309.83,214.24 308.46,214.28C307.09,214.32 305.9,213.91 304.89,213.06C303.88,212.2 303.35,211.1 303.31,209.78C303.28,208.9 302.93,208.18 302.25,207.6C301.57,207.02 300.78,206.75 299.86,206.78C298.95,206.81 298.17,207.13 297.53,207.75C296.89,208.37 296.58,209.11 296.61,209.99C296.69,212.56 297.53,214.69 299.13,216.36C300.73,218.04 302.77,219.18 305.24,219.8C305.48,219.87 305.65,220 305.74,220.18C305.82,220.37 305.84,220.56 305.8,220.78C305.75,220.96 305.64,221.13 305.49,221.27C305.33,221.4 305.13,221.45 304.89,221.4ZM290.53,193.88C290.32,194.02 290.1,194.06 289.89,194C289.67,193.94 289.5,193.81 289.39,193.6C289.27,193.39 289.24,193.2 289.29,193.02C289.34,192.85 289.47,192.69 289.68,192.55C291.16,191.71 292.72,191.05 294.35,190.57C295.97,190.1 297.64,189.83 299.33,189.78C301.05,189.73 302.74,189.88 304.39,190.24C306.05,190.6 307.66,191.14 309.21,191.86C309.46,191.99 309.61,192.14 309.65,192.32C309.7,192.51 309.68,192.7 309.61,192.88C309.53,193.07 309.4,193.22 309.22,193.34C309.03,193.45 308.8,193.44 308.53,193.32C307.08,192.65 305.59,192.14 304.06,191.8C302.53,191.47 300.97,191.32 299.38,191.37C297.82,191.42 296.29,191.65 294.8,192.05C293.3,192.46 291.88,193.07 290.53,193.88ZM296.15,221.12C294.51,219.52 293.24,217.88 292.34,216.2C291.44,214.51 290.95,212.5 290.88,210.17C290.8,207.75 291.63,205.69 293.35,203.97C295.07,202.26 297.19,201.36 299.69,201.28C302.19,201.21 304.37,201.97 306.23,203.57C308.08,205.17 309.05,207.18 309.12,209.6C309.13,209.84 309.06,210.03 308.92,210.18C308.77,210.33 308.58,210.41 308.34,210.42C308.12,210.42 307.93,210.36 307.77,210.22C307.6,210.07 307.52,209.88 307.51,209.65C307.45,207.66 306.65,206.01 305.11,204.72C303.58,203.43 301.79,202.81 299.74,202.88C297.7,202.94 295.96,203.66 294.54,205.05C293.11,206.44 292.43,208.13 292.49,210.12C292.56,212.27 292.99,214.08 293.79,215.55C294.59,217.03 295.74,218.5 297.24,219.97C297.41,220.12 297.5,220.31 297.5,220.52C297.51,220.73 297.44,220.92 297.28,221.08C297.12,221.25 296.94,221.33 296.72,221.34C296.51,221.35 296.32,221.27 296.15,221.12ZM308.25,218.03C305.86,218.11 303.76,217.38 301.94,215.84C300.13,214.3 299.19,212.32 299.11,209.91C299.11,209.7 299.17,209.51 299.32,209.35C299.46,209.18 299.65,209.1 299.89,209.09C300.14,209.08 300.33,209.15 300.49,209.31C300.64,209.46 300.72,209.65 300.73,209.86C300.79,211.85 301.57,213.46 303.06,214.69C304.55,215.91 306.27,216.5 308.2,216.44C308.37,216.43 308.59,216.41 308.89,216.38C309.18,216.34 309.49,216.29 309.81,216.23C310.05,216.17 310.26,216.2 310.44,216.31C310.62,216.42 310.74,216.6 310.8,216.84C310.86,217.05 310.83,217.23 310.7,217.4C310.57,217.56 310.4,217.67 310.18,217.73C309.7,217.88 309.28,217.97 308.92,217.99C308.56,218.01 308.33,218.03 308.25,218.03Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M214.98,100.49V166.46H149.02V100.49H214.98ZM214.98,91.07H149.02C143.83,91.07 139.59,95.31 139.59,100.49V166.46C139.59,171.64 143.83,175.88 149.02,175.88H214.98C220.17,175.88 224.41,171.64 224.41,166.46V100.49C224.41,95.31 220.17,91.07 214.98,91.07Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M186.4,134.74L189.09,149.96H174.95L177.64,134.74C174.62,133.19 172.6,130.03 172.6,126.4C172.6,121.22 176.84,116.98 182.02,116.98C187.2,116.98 191.44,121.22 191.44,126.4C191.44,130.03 189.42,133.19 186.4,134.74Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
</group>
|
||||
</vector>
|
@@ -1,82 +0,0 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="412dp"
|
||||
android:height="300dp"
|
||||
android:viewportWidth="364"
|
||||
android:viewportHeight="265">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h364v265h-364z"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h364v265.05h-364z"/>
|
||||
<path
|
||||
android:pathData="M339.44,265.05H24.56C11.04,265.05 0,253.74 0,239.87V25.18C0,11.31 11.04,0 24.56,0H339.53C352.96,0 364,11.31 364,25.18V240.05C364,253.74 352.96,265.05 339.44,265.05Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M85.7,153.29a17.67,18.11 0,1 0,35.34 0a17.67,18.11 0,1 0,-35.34 0z"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M155.05,153.29m-18.11,0a18.11,18.11 0,1 1,36.22 0a18.11,18.11 0,1 1,-36.22 0"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M208.95,153.29m-18.11,0a18.11,18.11 0,1 1,36.22 0a18.11,18.11 0,1 1,-36.22 0"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M75.1,76.86L288.9,76.86A8.83,8.83 0,0 1,297.74 85.7L297.74,236.78A8.83,8.83 0,0 1,288.9 245.61L75.1,245.61A8.83,8.83 0,0 1,66.26 236.78L66.26,85.7A8.83,8.83 0,0 1,75.1 76.86z"
|
||||
android:fillColor="#E8F0FE"/>
|
||||
<path
|
||||
android:pathData="M288.02,104.25C288.02,112.06 281.69,118.39 273.88,118.39C266.08,118.39 259.75,112.06 259.75,104.25C259.75,96.45 266.08,90.12 273.88,90.12C281.69,90.12 288.02,96.45 288.02,104.25Z"
|
||||
android:fillColor="#D2E3FC"/>
|
||||
<path
|
||||
android:pathData="M275.92,98.6C275.92,97.39 276.99,96.37 278.35,96.37C279.71,96.37 280.78,97.39 280.78,98.6V101.88H282.72V98.6C282.72,96.33 280.74,94.53 278.35,94.53C275.96,94.53 273.98,96.33 273.98,98.6V100.96H267.57C266.18,100.96 265.05,102.03 265.05,103.35V110.7C265.05,112.02 266.18,113.09 267.57,113.09H276.7C278.09,113.09 279.22,112.02 279.22,110.7V103.35C279.22,102.03 278.09,100.96 276.7,100.96H275.92V98.6ZM267.57,102.8C267.25,102.8 266.99,103.05 266.99,103.35V110.7C266.99,111 267.25,111.25 267.57,111.25H276.7C277.02,111.25 277.28,111 277.28,110.7V103.35C277.28,103.05 277.02,102.8 276.7,102.8H267.57ZM272.14,108.68C273.1,108.68 273.88,107.94 273.88,107.03C273.88,106.11 273.1,105.37 272.14,105.37C271.17,105.37 270.39,106.11 270.39,107.03C270.39,107.94 271.17,108.68 272.14,108.68Z"
|
||||
android:fillColor="#669DF6"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M102.04,147.1m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M155.94,147.1m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M102.04,204.53m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M155.94,204.53m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M210.71,203.65m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M265.49,203.65m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#669DF6"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M86.14,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M150.64,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M213.36,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M277.86,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
|
||||
android:fillColor="#3C4043"/>
|
||||
</group>
|
||||
</vector>
|
@@ -1,65 +0,0 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="364dp"
|
||||
android:height="265dp"
|
||||
android:viewportWidth="364"
|
||||
android:viewportHeight="265">
|
||||
<group>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0.48h364v265.05h-364z"/>
|
||||
<path
|
||||
android:pathData="M339.42,264.99H24.58C11.07,264.99 0,253.7 0,239.92V25.94C0,12.12 11.07,0.83 24.58,0.83H339.52C352.93,0.83 364,12.12 364,25.91V240.01C364,253.7 352.93,264.99 339.42,264.99Z"
|
||||
android:fillColor="#000000"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M200.49,144.8C200.49,139.45 205.07,134.95 210.92,134.95C216.77,134.95 221.36,139.45 221.36,144.8V159.36H229.71V144.8C229.71,134.78 221.21,126.82 210.92,126.82C200.64,126.82 192.14,134.78 192.14,144.8V155.29H164.58C158.59,155.29 153.73,160.02 153.73,165.86V198.4C153.73,204.24 158.59,208.98 164.58,208.98H203.82C209.82,208.98 214.68,204.24 214.68,198.4V165.86C214.68,160.02 209.82,155.29 203.82,155.29H200.49V144.8ZM164.58,163.42C163.2,163.42 162.08,164.52 162.08,165.86V198.4C162.08,199.75 163.2,200.85 164.58,200.85H203.82C205.21,200.85 206.33,199.75 206.33,198.4V165.86C206.33,164.52 205.21,163.42 203.82,163.42H164.58ZM184.2,189.46C188.35,189.46 191.72,186.18 191.72,182.13C191.72,178.09 188.35,174.81 184.2,174.81C180.05,174.81 176.69,178.09 176.69,182.13C176.69,186.18 180.05,189.46 184.2,189.46Z"
|
||||
android:fillColor="#C58AF9"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M163.56,220.47C168.99,220.47 173.39,224.87 173.39,230.3C173.39,235.72 168.99,240.13 163.56,240.13C158.13,240.13 153.73,235.72 153.73,230.3C153.73,224.87 158.13,220.47 163.56,220.47Z"
|
||||
android:fillColor="#5F6368"/>
|
||||
<path
|
||||
android:pathData="M201.15,220.47C206.58,220.47 210.98,224.87 210.98,230.3C210.98,235.72 206.58,240.13 201.15,240.13C195.71,240.13 191.32,235.72 191.32,230.3C191.32,224.87 195.71,220.47 201.15,220.47Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M89.23,28.75L257.1,28.75A13.25,13.25 0,0 1,270.35 42L270.35,79.99A13.25,13.25 0,0 1,257.1 93.24L89.23,93.24A13.25,13.25 0,0 1,75.98 79.99L75.98,42A13.25,13.25 0,0 1,89.23 28.75z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M145.78,43.77L241.19,43.77A5.3,5.3 0,0 1,246.49 49.07L246.49,49.07A5.3,5.3 0,0 1,241.19 54.37L145.78,54.37A5.3,5.3 0,0 1,140.48 49.07L140.48,49.07A5.3,5.3 0,0 1,145.78 43.77z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M145.34,64.97L241.64,64.97A4.86,4.86 0,0 1,246.49 69.83L246.49,69.83A4.86,4.86 0,0 1,241.64 74.69L145.34,74.69A4.86,4.86 0,0 1,140.48 69.83L140.48,69.83A4.86,4.86 0,0 1,145.34 64.97z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M108.23,81.76C120.18,81.76 129.87,72.07 129.87,60.11C129.87,48.16 120.18,38.47 108.23,38.47C96.27,38.47 86.58,48.16 86.58,60.11C86.58,72.07 96.27,81.76 108.23,81.76Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M266.37,112.68C278.33,112.68 288.02,102.99 288.02,91.03C288.02,79.08 278.33,69.39 266.37,69.39C254.42,69.39 244.73,79.08 244.73,91.03C244.73,102.99 254.42,112.68 266.37,112.68Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M96.3,70.05V66.96H99.39V56.14C99.39,54 100.04,52.1 101.33,50.43C102.61,48.77 104.29,47.68 106.35,47.17V46.09C106.35,45.44 106.58,44.89 107.03,44.44C107.48,43.99 108.03,43.77 108.67,43.77C109.31,43.77 109.86,43.99 110.31,44.44C110.76,44.89 110.99,45.44 110.99,46.09V47.17C113.05,47.68 114.73,48.77 116.01,50.43C117.3,52.1 117.95,54 117.95,56.14V66.96H121.04V70.05H96.3ZM108.67,74.69C107.82,74.69 107.09,74.39 106.49,73.78C105.88,73.18 105.58,72.45 105.58,71.6H111.76C111.76,72.45 111.46,73.18 110.85,73.78C110.25,74.39 109.52,74.69 108.67,74.69ZM102.49,66.96H114.85V56.14C114.85,54.43 114.25,52.98 113.04,51.77C111.83,50.56 110.37,49.95 108.67,49.95C106.97,49.95 105.51,50.56 104.3,51.77C103.09,52.98 102.49,54.43 102.49,56.14V66.96Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M276.44,81.86V101.1H257.2V81.86H276.44ZM276.44,79.11H257.2C255.68,79.11 254.45,80.34 254.45,81.86V101.1C254.45,102.61 255.68,103.84 257.2,103.84H276.44C277.95,103.84 279.18,102.61 279.18,101.1V81.86C279.18,80.34 277.95,79.11 276.44,79.11Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M268.09,91.85L268.87,96.29H264.75L265.54,91.85C264.65,91.39 264.06,90.47 264.06,89.42C264.06,87.9 265.3,86.67 266.81,86.67C268.33,86.67 269.56,87.9 269.56,89.42C269.56,90.47 268.97,91.39 268.09,91.85Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
</group>
|
||||
</vector>
|
@@ -1,77 +0,0 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="364dp"
|
||||
android:height="266dp"
|
||||
android:viewportWidth="364"
|
||||
android:viewportHeight="266">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0.48h364v265.05h-364z"/>
|
||||
<path
|
||||
android:pathData="M339.42,264.99H24.58C11.07,264.99 0,253.7 0,239.92V25.94C0,12.13 11.07,0.83 24.58,0.83H339.52C352.93,0.83 364,12.13 364,25.91V240.01C364,253.7 352.93,264.99 339.42,264.99Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M75.92,137.81L50.21,111.72C50.1,111.61 49.96,111.54 49.81,111.5C49.66,111.47 49.51,111.49 49.36,111.54C49.22,111.6 49.1,111.7 49.01,111.83C48.93,111.95 48.88,112.1 48.88,112.26L48.52,162.99C48.52,163.14 48.56,163.29 48.64,163.42C48.73,163.54 48.84,163.64 48.98,163.7C49.12,163.76 49.27,163.78 49.42,163.76C49.57,163.73 49.71,163.66 49.82,163.56L75.92,137.81Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M79.16,134.61L87.37,126.51L54.65,107.44C54.48,107.32 54.27,107.28 54.07,107.31C53.87,107.35 53.69,107.46 53.57,107.62C53.45,107.78 53.39,107.99 53.42,108.19C53.44,108.39 53.55,108.58 53.71,108.71L79.16,134.61Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M53.24,166.57C53.09,166.71 53.01,166.89 52.99,167.08C52.97,167.27 53.02,167.47 53.13,167.63C53.24,167.79 53.41,167.9 53.6,167.95C53.79,167.99 53.99,167.97 54.16,167.88L87.22,149.32L79.13,141.09L53.24,166.57Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M101.4,134.67L91.43,128.87L82.37,137.83L91.35,146.94L101.4,141.28C101.97,140.94 102.45,140.46 102.78,139.88C103.11,139.3 103.29,138.64 103.29,137.97C103.29,137.31 103.11,136.65 102.78,136.07C102.45,135.49 101.97,135.01 101.4,134.67Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M263.42,132.67C263.42,136.04 264.61,138.92 267,141.32C269.39,143.71 272.26,144.91 275.61,144.91C278.96,144.91 281.83,143.71 284.22,141.32C286.61,138.92 287.8,136.04 287.8,132.67C287.8,129.31 286.61,126.43 284.22,124.03C281.83,121.63 278.96,120.43 275.61,120.43C272.26,120.43 269.39,121.63 267,124.03C264.61,126.43 263.42,129.31 263.42,132.67ZM275.61,151.03C276.27,151.03 276.9,151.01 277.51,150.95C278.12,150.9 278.73,150.8 279.34,150.65L272.18,163.04C264.51,162.17 258.08,158.87 252.9,153.13C247.72,147.4 245.13,140.58 245.13,132.67C245.13,130.53 245.33,128.45 245.74,126.44C246.14,124.43 246.75,122.5 247.57,120.66L259.76,141.85C261.33,144.6 263.52,146.82 266.31,148.51C269.11,150.19 272.2,151.03 275.61,151.03ZM275.61,114.32C271.55,114.32 267.94,115.5 264.79,117.87C261.64,120.24 259.45,123.26 258.23,126.94L251.07,114.54C253.87,110.77 257.38,107.75 261.63,105.48C265.87,103.21 270.53,102.08 275.61,102.08C280.64,102.08 285.26,103.19 289.48,105.4C293.69,107.62 297.2,110.59 299.99,114.32H275.61ZM303.5,120.43C304.36,122.32 305.01,124.29 305.44,126.32C305.87,128.36 306.09,130.48 306.09,132.67C306.09,140.58 303.51,147.38 298.36,153.1C293.2,158.81 286.84,162.12 279.27,163.04L291.46,141.85C292.22,140.53 292.82,139.09 293.25,137.53C293.68,135.98 293.9,134.36 293.9,132.67C293.9,130.28 293.48,128.04 292.64,125.98C291.8,123.92 290.65,122.07 289.17,120.43H303.5Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M155.01,119.75h41.52v36.22h-41.52z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M175.77,149.2C179.47,149.2 182.62,147.91 185.21,145.33C187.8,142.76 189.09,139.63 189.09,135.95C189.09,132.26 187.8,129.13 185.21,126.56C182.62,123.98 179.47,122.69 175.77,122.69C172.07,122.69 168.93,123.98 166.34,126.56C163.75,129.13 162.46,132.26 162.46,135.95C162.46,139.63 163.75,142.76 166.34,145.33C168.93,147.91 172.07,149.2 175.77,149.2ZM175.77,143.31C173.7,143.31 171.95,142.6 170.52,141.17C169.09,139.75 168.38,138.01 168.38,135.95C168.38,133.88 169.09,132.14 170.52,130.72C171.95,129.29 173.7,128.58 175.77,128.58C177.85,128.58 179.6,129.29 181.03,130.72C182.46,132.14 183.17,133.88 183.17,135.95C183.17,138.01 182.46,139.75 181.03,141.17C179.6,142.6 177.85,143.31 175.77,143.31ZM152.1,159.51C150.47,159.51 149.07,158.93 147.92,157.77C146.76,156.62 146.18,155.24 146.18,153.62V118.28C146.18,116.65 146.76,115.27 147.92,114.11C149.07,112.96 150.47,112.39 152.1,112.39H161.42L166.9,106.5H184.65L190.13,112.39H199.45C201.08,112.39 202.47,112.96 203.63,114.11C204.79,115.27 205.37,116.65 205.37,118.28V153.62C205.37,155.24 204.79,156.62 203.63,157.77C202.47,158.93 201.08,159.51 199.45,159.51H152.1Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M109.51,182.48C121.47,182.48 131.16,172.78 131.16,160.83C131.16,148.88 121.47,139.18 109.51,139.18C97.56,139.18 87.87,148.88 87.87,160.83C87.87,172.78 97.56,182.48 109.51,182.48Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M119.57,151.65V170.89H100.33V151.65H119.57ZM119.57,148.9H100.33C98.82,148.9 97.58,150.14 97.58,151.65V170.89C97.58,172.4 98.82,173.64 100.33,173.64H119.57C121.09,173.64 122.32,172.4 122.32,170.89V151.65C122.32,150.14 121.09,148.9 119.57,148.9Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M111.23,161.64L112.01,166.08H107.89L108.67,161.64C107.79,161.19 107.2,160.27 107.2,159.21C107.2,157.7 108.44,156.46 109.95,156.46C111.46,156.46 112.7,157.7 112.7,159.21C112.7,160.27 112.11,161.19 111.23,161.64Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M208.46,182.48C220.42,182.48 230.11,172.78 230.11,160.83C230.11,148.88 220.42,139.18 208.46,139.18C196.51,139.18 186.82,148.88 186.82,160.83C186.82,172.78 196.51,182.48 208.46,182.48Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M218.52,151.65V170.89H199.29V151.65H218.52ZM218.52,148.9H199.29C197.77,148.9 196.54,150.14 196.54,151.65V170.89C196.54,172.4 197.77,173.64 199.29,173.64H218.52C220.04,173.64 221.27,172.4 221.27,170.89V151.65C221.27,150.14 220.04,148.9 218.52,148.9Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M210.18,161.64L210.96,166.08H206.84L207.62,161.64C206.74,161.19 206.15,160.27 206.15,159.21C206.15,157.7 207.39,156.46 208.9,156.46C210.41,156.46 211.65,157.7 211.65,159.21C211.65,160.27 211.06,161.19 210.18,161.64Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M312.72,182.48C324.67,182.48 334.36,172.78 334.36,160.83C334.36,148.88 324.67,139.18 312.72,139.18C300.76,139.18 291.07,148.88 291.07,160.83C291.07,172.78 300.76,182.48 312.72,182.48Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M322.78,151.65V170.89H303.54V151.65H322.78ZM322.78,148.9H303.54C302.03,148.9 300.79,150.14 300.79,151.65V170.89C300.79,172.4 302.03,173.64 303.54,173.64H322.78C324.29,173.64 325.53,172.4 325.53,170.89V151.65C325.53,150.14 324.29,148.9 322.78,148.9Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M314.43,161.64L315.22,166.08H311.09L311.88,161.64C311,161.19 310.41,160.27 310.41,159.21C310.41,157.7 311.64,156.46 313.15,156.46C314.67,156.46 315.9,157.7 315.9,159.21C315.9,160.27 315.31,161.19 314.43,161.64Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
</group>
|
||||
</vector>
|
@@ -1,100 +0,0 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="364dp"
|
||||
android:height="266dp"
|
||||
android:viewportWidth="364"
|
||||
android:viewportHeight="266">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0.48h364v265.05h-364z"/>
|
||||
<path
|
||||
android:pathData="M339.42,264.99H24.58C11.07,264.99 0,253.7 0,239.92V25.94C0,12.13 11.07,0.83 24.58,0.83H339.52C352.93,0.83 364,12.13 364,25.91V240.01C364,253.7 352.93,264.99 339.42,264.99Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M201.15,182.48C195.72,182.48 191.32,186.88 191.32,192.31C191.32,197.73 195.72,202.14 201.15,202.14C206.58,202.14 210.98,197.73 210.98,192.31C210.98,186.88 206.58,182.48 201.15,182.48Z"
|
||||
android:fillColor="#3C4043"/>
|
||||
<path
|
||||
android:pathData="M163.56,182.48C158.13,182.48 153.73,186.88 153.73,192.31C153.73,197.73 158.13,202.14 163.56,202.14C168.99,202.14 173.39,197.73 173.39,192.31C173.39,186.88 168.99,182.48 163.56,182.48Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M185.48,136.99C186.07,136.99 186.56,136.8 186.94,136.41C187.33,136.03 187.52,135.54 187.52,134.95C187.52,134.36 187.33,133.88 186.94,133.49C186.56,133.1 186.07,132.91 185.48,132.91C184.88,132.91 184.4,133.1 184.01,133.49C183.62,133.88 183.43,134.36 183.43,134.95C183.43,135.54 183.62,136.03 184.01,136.41C184.4,136.8 184.88,136.99 185.48,136.99Z"
|
||||
android:fillColor="#202124"/>
|
||||
<path
|
||||
android:pathData="M338.13,145.81L322.74,131.98C319.02,128.64 313.3,128.94 309.97,132.66C306.63,136.37 306.93,142.09 310.65,145.43L326.05,159.26C329.76,162.6 335.48,162.3 338.82,158.58C342.15,154.87 341.85,149.15 338.13,145.81Z"
|
||||
android:fillColor="#AECBFA"/>
|
||||
<path
|
||||
android:pathData="M325.81,64.64L295.79,43.72C293.73,42.28 290.89,42.79 289.45,44.85L268.54,74.87C267.1,76.93 267.6,79.77 269.67,81.21L299.69,102.13C301.75,103.56 304.59,103.06 306.02,100.99L326.94,70.97C328.38,68.91 327.87,66.07 325.81,64.64Z"
|
||||
android:fillColor="#E8F0FE"/>
|
||||
<path
|
||||
android:pathData="M297.96,73.56C299.44,74.63 301.2,75.25 303.04,75.33C304.87,75.41 306.69,74.95 308.25,74.01C309.82,73.06 311.07,71.68 311.85,70.03C312.63,68.38 312.89,66.53 312.61,64.73C312.34,62.93 311.53,61.25 310.29,59.91C309.05,58.56 307.44,57.61 305.66,57.18C303.88,56.75 302,56.85 300.28,57.47C298.56,58.09 297.06,59.21 295.97,60.68C294.52,62.65 293.91,65.11 294.28,67.53C294.65,69.94 295.98,72.11 297.96,73.56Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M295.71,77.78C287.35,71.94 278.5,69.93 272.37,77.85L302.63,98.92C308.76,91 304.07,83.58 295.71,77.78Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M84.13,50.89L47.87,55.78C45.37,56.11 43.63,58.4 43.96,60.89L48.85,97.15C49.18,99.65 51.47,101.39 53.97,101.06L90.23,96.17C92.72,95.84 94.47,93.55 94.13,91.05L89.25,54.79C88.91,52.3 86.62,50.55 84.13,50.89Z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M69.64,76.29C71.46,76.08 73.18,75.35 74.58,74.17C75.99,72.99 77.01,71.42 77.53,69.66C78.05,67.91 78.03,66.04 77.49,64.3C76.94,62.56 75.89,61.02 74.47,59.88C73.05,58.74 71.32,58.05 69.49,57.9C67.67,57.75 65.84,58.14 64.24,59.02C62.63,59.91 61.32,61.24 60.47,62.87C59.62,64.49 59.27,66.33 59.47,68.15C59.73,70.58 60.94,72.81 62.85,74.33C64.76,75.86 67.2,76.56 69.64,76.29Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M70.84,80.92C60.73,82.28 52.85,86.78 53.69,96.76L90.23,91.82C89.39,81.84 80.92,79.54 70.84,80.92Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<path
|
||||
android:pathData="M39.14,170.33L66.27,160.64A11.49,11.49 115.34,0 1,80.95 167.59L89.91,192.65A11.49,11.49 115.34,0 1,82.96 207.33L55.82,217.03A11.49,11.49 115.34,0 1,41.14 210.07L32.19,185.01A11.49,11.49 115.34,0 1,39.14 170.33z"
|
||||
android:fillColor="#E8F0FE"/>
|
||||
<path
|
||||
android:pathData="M66.57,172.29a4.81,4.58 70.34,1 0,8.63 -3.08a4.81,4.58 70.34,1 0,-8.63 3.08z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M39.14,170.33L66.27,160.64A11.49,11.49 115.34,0 1,80.95 167.59L89.91,192.65A11.49,11.49 115.34,0 1,82.96 207.33L55.82,217.03A11.49,11.49 115.34,0 1,41.14 210.07L32.19,185.01A11.49,11.49 115.34,0 1,39.14 170.33z"/>
|
||||
<path
|
||||
android:pathData="M57.86,186.51C53.39,183.04 46.83,185.22 45.32,190.67L39.9,210.23C38.18,216.44 44.17,222.01 50.24,219.85L72.6,211.86C72.78,211.79 72.95,211.72 73.12,211.65C73.31,211.59 73.49,211.54 73.68,211.47L88.87,206.04C95.09,203.82 96.05,195.42 90.49,191.86L79.38,184.73C74.99,181.92 69.13,184.01 67.52,188.97L66.21,193L57.86,186.51Z"
|
||||
android:fillColor="#669DF6"
|
||||
android:fillType="evenOdd"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M297.35,169.44L324.72,178.44A11.49,11.49 63.19,0 1,332.04 192.93L323.74,218.22A11.49,11.49 63.19,0 1,309.24 225.54L281.87,216.55A11.49,11.49 63.19,0 1,274.54 202.05L282.85,176.77A11.49,11.49 63.19,0 1,297.35 169.44z"
|
||||
android:fillColor="#E9D2FD"/>
|
||||
<path
|
||||
android:pathData="M317.81,187.82a4.81,4.58 108.19,1 0,8.71 2.86a4.81,4.58 108.19,1 0,-8.71 -2.86z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M297.35,169.44L324.72,178.44A11.49,11.49 63.19,0 1,332.04 192.93L323.74,218.22A11.49,11.49 63.19,0 1,309.24 225.54L281.87,216.55A11.49,11.49 63.19,0 1,274.54 202.05L282.85,176.77A11.49,11.49 63.19,0 1,297.35 169.44z"/>
|
||||
<path
|
||||
android:pathData="M302.2,193.71C300.8,188.23 294.29,185.92 289.75,189.3L273.46,201.42C268.3,205.27 269.61,213.34 275.73,215.35L298.28,222.76C298.46,222.82 298.64,222.87 298.83,222.92C299.01,222.99 299.19,223.06 299.38,223.12L314.71,228.15C320.98,230.22 326.89,224.17 324.68,217.95L320.28,205.5C318.54,200.59 312.63,198.65 308.32,201.57L304.82,203.95L302.2,193.71Z"
|
||||
android:fillColor="#C58AF9"
|
||||
android:fillType="evenOdd"/>
|
||||
</group>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M157.77,52.17L131.31,64.89C130.6,65.23 129.79,65.27 129.04,65.01C128.3,64.75 127.69,64.21 127.36,63.5L126.91,62.58C124.89,58.37 124.62,53.52 126.17,49.1C127.72,44.69 130.96,41.07 135.17,39.04C139.39,37.01 144.24,36.74 148.66,38.29C153.07,39.84 156.69,43.08 158.72,47.3L159.16,48.21C159.5,48.92 159.54,49.74 159.28,50.48C159.02,51.22 158.48,51.83 157.77,52.17Z"
|
||||
android:fillColor="#669DF6"/>
|
||||
<path
|
||||
android:pathData="M200.49,106.81C200.49,101.46 205.07,96.96 210.92,96.96C216.77,96.96 221.36,101.46 221.36,106.81V121.37H229.71V106.81C229.71,96.79 221.21,88.83 210.92,88.83C200.64,88.83 192.14,96.79 192.14,106.81V117.3H164.58C158.59,117.3 153.73,122.03 153.73,127.87V160.41C153.73,166.26 158.59,170.99 164.58,170.99H203.82C209.82,170.99 214.68,166.26 214.68,160.41V127.87C214.68,122.03 209.82,117.3 203.82,117.3H200.49V106.81ZM164.58,125.43C163.2,125.43 162.08,126.53 162.08,127.87V160.41C162.08,161.76 163.2,162.85 164.58,162.85H203.82C205.21,162.85 206.33,161.76 206.33,160.41V127.87C206.33,126.53 205.21,125.43 203.82,125.43H164.58ZM184.2,151.47C188.35,151.47 191.72,148.19 191.72,144.14C191.72,140.1 188.35,136.82 184.2,136.82C180.05,136.82 176.69,140.1 176.69,144.14C176.69,148.19 180.05,151.47 184.2,151.47Z"
|
||||
android:fillColor="#C58AF9"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M163.56,182.48C168.99,182.48 173.39,186.88 173.39,192.31C173.39,197.73 168.99,202.14 163.56,202.14C158.13,202.14 153.73,197.73 153.73,192.31C153.73,186.88 158.13,182.48 163.56,182.48Z"
|
||||
android:fillColor="#5F6368"/>
|
||||
<path
|
||||
android:pathData="M201.15,182.48C206.58,182.48 210.98,186.88 210.98,192.31C210.98,197.73 206.58,202.14 201.15,202.14C195.71,202.14 191.32,197.73 191.32,192.31C191.32,186.88 195.71,182.48 201.15,182.48Z"
|
||||
android:fillColor="#C58AF9"/>
|
||||
</vector>
|
@@ -1,143 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2023 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.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="364dp"
|
||||
android:height="265dp"
|
||||
android:viewportWidth="364"
|
||||
android:viewportHeight="265">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h364v265h-364z"/>
|
||||
<path
|
||||
android:pathData="M339.42,265H24.58C11.07,265 0,253.67 0,239.84V25.19C0,11.33 11.07,0 24.58,0H339.52C352.93,0 364,11.33 364,25.16V239.94C364,253.67 352.93,265 339.42,265Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M247.65,93.87V85.83C247.65,84.73 246.73,83.82 245.61,83.82V41.94C245.61,36.42 241.02,32 235.5,32H142.1C136.49,32 132,36.52 132,41.94V233.67C132,239.2 136.59,243.62 142.1,243.62H235.5C241.12,243.62 245.61,239.1 245.61,233.67V135.85C246.73,135.85 247.65,134.95 247.65,133.84V113.86C247.65,112.75 246.73,111.85 245.61,111.85V95.88C246.84,95.88 247.65,94.97 247.65,93.87ZM243.67,233.67C243.67,238.09 240,241.71 235.5,241.71H142.1C137.61,241.71 133.94,238.09 133.94,233.67V41.94C133.94,37.52 137.61,33.91 142.1,33.91H235.5C240,33.91 243.67,37.52 243.67,41.94V233.67Z"
|
||||
android:fillColor="#DADCE0"/>
|
||||
<path
|
||||
android:pathData="M151.68,46.76L225.5,46.76A7.38,7.38 0,0 1,232.89 54.15L232.89,54.15A7.38,7.38 0,0 1,225.5 61.53L151.68,61.53A7.38,7.38 0,0 1,144.3 54.15L144.3,54.15A7.38,7.38 0,0 1,151.68 46.76z"
|
||||
android:fillColor="#444746"/>
|
||||
<path
|
||||
android:pathData="M147.42,187.02L228.54,187.02A8.04,8.04 0,0 1,236.58 195.06L236.58,226.97A8.04,8.04 0,0 1,228.54 235L147.42,235A8.04,8.04 0,0 1,139.38 226.97L139.38,195.06A8.04,8.04 0,0 1,147.42 187.02z"
|
||||
android:fillColor="#1F1F1F"/>
|
||||
<path
|
||||
android:pathData="M154.15,77.52m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M177.52,77.52m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M200.9,77.52m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M224.27,77.52m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M154.15,99.67m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M154.15,121.81m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M154.15,143.96m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M154.15,166.11m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M177.52,99.67m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M177.52,121.81m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M177.52,143.96m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M177.52,166.11m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M200.9,99.67m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M200.9,121.81m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M200.9,143.96m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M200.9,166.11m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M224.27,99.67m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M224.27,121.81m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M224.27,143.96m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M224.27,166.11m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#D9D9D9"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M154.15,199.32m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M154.15,220.24m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M177.52,199.32m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M177.52,220.24m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M200.9,199.32m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M200.9,220.24m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M224.27,199.32m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
<path
|
||||
android:pathData="M224.27,220.24m-7.38,0a7.38,7.38 0,1 1,14.76 0a7.38,7.38 0,1 1,-14.76 0"
|
||||
android:fillColor="#0B57D0"/>
|
||||
</group>
|
||||
</vector>
|
251
res/layout/accessibility_color_contrast_preview.xml
Normal file
251
res/layout/accessibility_color_contrast_preview.xml
Normal file
@@ -0,0 +1,251 @@
|
||||
<?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.
|
||||
-->
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:paddingBottom="24dp"
|
||||
android:background="@drawable/color_contrast_preview_background">
|
||||
|
||||
<View
|
||||
android:id="@+id/preview_background"
|
||||
android:background="?androidprv:attr/materialColorSurface"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
||||
app:layout_constraintBottom_toTopOf="@+id/bottom_appbar_background"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/preview"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:layout_margin="8dp"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:textColor="?androidprv:attr/textColorPrimary"
|
||||
android:text="@string/color_contrast_preview" />
|
||||
|
||||
<View
|
||||
android:id="@+id/email_background"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:background="@drawable/color_contrast_preview_dialog_background"
|
||||
app:layout_constraintBottom_toTopOf="@+id/bottom_appbar_background"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/preview" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_group"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="14dp"
|
||||
android:layout_marginLeft="14dp"
|
||||
android:padding="8dp"
|
||||
android:src="@drawable/ic_group_24dp"
|
||||
android:background="@drawable/color_contrast_preview_icon_group_background"
|
||||
app:layout_constraintStart_toStartOf="@+id/email_background"
|
||||
app:layout_constraintTop_toTopOf="@+id/email_background" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sender_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="17dp"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurface"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintStart_toEndOf="@+id/ic_group"
|
||||
app:layout_constraintTop_toTopOf="@+id/email_background"
|
||||
android:text="@string/color_contrast_preview_sender_name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurfaceVariant"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/sender_name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/sender_name"
|
||||
android:text="@string/color_contrast_preview_email_send_date" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/email_tag"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurface"
|
||||
android:background="@drawable/color_contrast_preview_tag_background"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintStart_toEndOf="@+id/sender_name"
|
||||
app:layout_constraintTop_toTopOf="@+id/sender_name"
|
||||
android:text="@string/color_contrast_preview_email_badge" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_star"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="14dp"
|
||||
android:layout_marginRight="14dp"
|
||||
android:padding="8dp"
|
||||
android:src="@drawable/ic_star_24dp"
|
||||
android:background="@drawable/color_contrast_preview_icon_star_background"
|
||||
app:layout_constraintEnd_toEndOf="@+id/email_background"
|
||||
app:layout_constraintTop_toTopOf="@+id/email_background" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/email_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="14dp"
|
||||
android:layout_marginTop="62dp"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurface"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/email_background"
|
||||
app:layout_constraintTop_toTopOf="@+id/email_background"
|
||||
android:text="@string/color_contrast_preview_email_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/email_body"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurfaceVariant"
|
||||
android:textSize="12sp"
|
||||
android:paddingBottom="8dp"
|
||||
android:maxLines="2"
|
||||
app:layout_constraintStart_toStartOf="@+id/email_title"
|
||||
app:layout_constraintTop_toBottomOf="@+id/email_title"
|
||||
android:text="@string/color_contrast_preview_email_body" />
|
||||
|
||||
<View
|
||||
android:id="@+id/attachment_background"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/color_contrast_preview_button_background"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/ic_article_filled"
|
||||
app:layout_constraintEnd_toEndOf="@+id/email_attachment"
|
||||
app:layout_constraintStart_toStartOf="@+id/email_title"
|
||||
app:layout_constraintTop_toBottomOf="@+id/email_body" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_article_filled"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_article_filled_24dp"
|
||||
android:padding="6dp"
|
||||
app:layout_constraintStart_toStartOf="@+id/email_title"
|
||||
app:layout_constraintTop_toBottomOf="@+id/email_body" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/email_attachment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="8dp"
|
||||
android:textColor="?androidprv:attr/materialColorOnTertiaryContainer"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintStart_toEndOf="@+id/ic_article_filled"
|
||||
app:layout_constraintTop_toTopOf="@+id/attachment_background"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/attachment_background"
|
||||
android:text="@string/color_contrast_preview_email_attachment_name" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_edit"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="48dp"
|
||||
android:padding="27dp"
|
||||
android:src="@drawable/ic_edit_24dp"
|
||||
android:background="@drawable/color_contrast_preview_icon_edit_background"
|
||||
app:layout_constraintEnd_toEndOf="@+id/email_background"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ic_star" />
|
||||
|
||||
<View
|
||||
android:id="@+id/bottom_appbar_background"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/color_contrast_preview_bottom_appbar_background"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/ic_inbox"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/ic_inbox" />
|
||||
|
||||
<ImageView
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/color_contrast_preview_icon_inbox_background"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/ic_inbox"
|
||||
app:layout_constraintEnd_toEndOf="@+id/ic_inbox"
|
||||
app:layout_constraintStart_toStartOf="@+id/ic_inbox"
|
||||
app:layout_constraintTop_toTopOf="@+id/ic_inbox" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_inbox"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="42dp"
|
||||
android:padding="24dp"
|
||||
android:src="@drawable/ic_inbox_24dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/ic_article"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ic_article_filled" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_article"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="24dp"
|
||||
android:src="@drawable/ic_article_24dp"
|
||||
app:layout_constraintStart_toEndOf="@+id/ic_inbox"
|
||||
app:layout_constraintEnd_toStartOf="@+id/ic_chat_bubble"
|
||||
app:layout_constraintTop_toTopOf="@id/ic_inbox"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ic_inbox" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_chat_bubble"
|
||||
android:contentDescription="@null"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="24dp"
|
||||
android:src="@drawable/ic_chat_bubble_24dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/ic_article"
|
||||
app:layout_constraintTop_toTopOf="@id/ic_inbox"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ic_inbox" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
147
res/layout/accessibility_color_contrast_selector.xml
Normal file
147
res/layout/accessibility_color_contrast_selector.xml
Normal file
@@ -0,0 +1,147 @@
|
||||
<?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:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="@dimen/settingslib_illustration_padding"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart">
|
||||
|
||||
<include layout="@layout/accessibility_color_contrast_preview" />
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/contrast_button_default"
|
||||
android:layout_width="@dimen/contrast_button_total_size"
|
||||
android:layout_height="@dimen/contrast_button_total_size"
|
||||
android:background="@drawable/accessibility_contrast_button_background">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:contentDescription="@string/contrast_default"
|
||||
android:src="@drawable/ic_contrast_standard"/>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/contrast_button_text_spacing"
|
||||
android:gravity="center_horizontal|top"
|
||||
android:textSize="@dimen/contrast_button_text_size"
|
||||
android:text="@string/contrast_default"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurface"/>
|
||||
</LinearLayout>
|
||||
|
||||
<Space
|
||||
android:layout_width="@dimen/contrast_button_horizontal_spacing"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/contrast_button_medium"
|
||||
android:layout_width="@dimen/contrast_button_total_size"
|
||||
android:layout_height="@dimen/contrast_button_total_size"
|
||||
android:background="@drawable/accessibility_contrast_button_background">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:contentDescription="@string/contrast_medium"
|
||||
android:src="@drawable/ic_contrast_medium"/>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/contrast_button_text_spacing"
|
||||
android:gravity="center_horizontal|top"
|
||||
android:textSize="@dimen/contrast_button_text_size"
|
||||
android:text="@string/contrast_medium"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurface"/>
|
||||
</LinearLayout>
|
||||
|
||||
<Space
|
||||
android:layout_width="@dimen/contrast_button_horizontal_spacing"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/contrast_button_high"
|
||||
android:layout_width="@dimen/contrast_button_total_size"
|
||||
android:layout_height="@dimen/contrast_button_total_size"
|
||||
android:background="@drawable/accessibility_contrast_button_background">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:contentDescription="@string/contrast_high"
|
||||
android:src="@drawable/ic_contrast_high"/>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/contrast_button_text_spacing"
|
||||
android:gravity="center_horizontal|top"
|
||||
android:textSize="@dimen/contrast_button_text_size"
|
||||
android:text="@string/contrast_high"
|
||||
android:textColor="?androidprv:attr/materialColorOnSurface"/>
|
||||
</LinearLayout>
|
||||
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
95
res/layout/preference_background.xml
Normal file
95
res/layout/preference_background.xml
Normal file
@@ -0,0 +1,95 @@
|
||||
<?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.
|
||||
-->
|
||||
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingVertical="@dimen/settingslib_switchbar_margin"
|
||||
android:background="@android:color/transparent">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/background"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:paddingStart="@dimen/settingslib_switchbar_padding_left"
|
||||
android:paddingEnd="@dimen/settingslib_switchbar_padding_right"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="start|center_vertical"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/icon_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="15dip"
|
||||
android:layout_marginRight="15dip">
|
||||
<androidx.preference.internal.PreferenceImageView
|
||||
android:id="@android:id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:maxWidth="48dp"
|
||||
app:maxHeight="48dp" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="6dip"
|
||||
android:layout_marginRight="6dip"
|
||||
android:layout_marginTop="@dimen/settingslib_switch_title_margin"
|
||||
android:layout_marginBottom="@dimen/settingslib_switch_title_margin"
|
||||
android:layout_weight="1">
|
||||
|
||||
<TextView android:id="@android:id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceListItem"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:ellipsize="marquee"
|
||||
android:fadingEdge="horizontal"
|
||||
android:hyphenationFrequency="normalFast"
|
||||
android:lineBreakWordStyle="phrase" />
|
||||
|
||||
<TextView android:id="@android:id/summary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@android:id/title"
|
||||
android:layout_alignStart="@android:id/title"
|
||||
android:layout_alignLeft="@android:id/title"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:hyphenationFrequency="normalFast"
|
||||
android:lineBreakWordStyle="phrase"
|
||||
android:maxLines="4"
|
||||
android:scrollbars="none"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<!-- Preference should place its actual preference widget here. -->
|
||||
<LinearLayout android:id="@android:id/widget_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical" />
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
25
res/layout/preference_widget_arrow.xml
Normal file
25
res/layout/preference_widget_arrow.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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.
|
||||
-->
|
||||
|
||||
<ImageView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:contentDescription="@null"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_arrow_forward" />
|
@@ -25,13 +25,13 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
<ImageView
|
||||
android:id="@+id/setup_advance_image"
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/lottie_animation"
|
||||
style="@style/SudContentIllustration"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@null"
|
||||
android:src="@null"/>
|
||||
app:lottie_rawRes="@null"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/createMessage"
|
||||
|
@@ -33,14 +33,16 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<ImageView
|
||||
android:id="@+id/setup_education_image"
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/lottie_animation"
|
||||
style="@style/SudContentIllustration"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/private_space_illustration"/>
|
||||
android:layout_height="match_parent"
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true"
|
||||
app:lottie_rawRes="@raw/private_space_illustration"/>
|
||||
<TextView
|
||||
style="@style/PrivateSpaceSetupSubHeaderStyle"
|
||||
android:text="@string/private_space_setup_sub_header"/>
|
||||
|
111
res/layout/private_space_gaia_education_screen.xml
Normal file
111
res/layout/private_space_gaia_education_screen.xml
Normal file
@@ -0,0 +1,111 @@
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/ps_account_intro_screen"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_security_privacy_alert_primary"/>
|
||||
<TextView
|
||||
style="@style/PrivateSpaceSetupTextFontStyle"
|
||||
android:fontFamily="google-sans"
|
||||
android:text="@string/private_space_gaia_education_title"
|
||||
android:layout_margin="24dp"
|
||||
android:layout_marginTop="40dp"
|
||||
android:gravity="center"
|
||||
android:textSize="28sp"/>
|
||||
<TextView
|
||||
style="@style/PrivateSpaceSetupTextFontStyle"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/private_space_gaia_education_description"/>
|
||||
<TextView
|
||||
style="@style/PrivateSpaceSetupTextFontStyle"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/private_space_gaia_education_header"/>
|
||||
<RelativeLayout
|
||||
style="@style/PrivateSpaceSetupBulletPointLayoutStyle"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp">
|
||||
<ImageView
|
||||
android:id="@+id/point1"
|
||||
style="@style/PrivateSpaceBulletPointIconStyle"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_text_dot" />
|
||||
<TextView
|
||||
style="@style/PrivateSpaceBulletPointTextFontStyle"
|
||||
android:layout_toRightOf="@+id/point1"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/private_space_gaia_education_bullet1"/>
|
||||
</RelativeLayout>
|
||||
<RelativeLayout
|
||||
style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
|
||||
<ImageView
|
||||
android:id="@+id/point2"
|
||||
style="@style/PrivateSpaceBulletPointIconStyle"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_text_dot" />
|
||||
<TextView
|
||||
style="@style/PrivateSpaceBulletPointTextFontStyle"
|
||||
android:layout_toRightOf="@+id/point2"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/private_space_gaia_education_bullet2"/>
|
||||
</RelativeLayout>
|
||||
<RelativeLayout
|
||||
style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
|
||||
<ImageView
|
||||
android:id="@+id/point3"
|
||||
style="@style/PrivateSpaceBulletPointIconStyle"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_text_dot" />
|
||||
<TextView
|
||||
style="@style/PrivateSpaceBulletPointTextFontStyle"
|
||||
android:layout_toRightOf="@+id/point3"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/private_space_gaia_education_bullet3"/>
|
||||
</RelativeLayout>
|
||||
<RelativeLayout
|
||||
style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
|
||||
<ImageView
|
||||
android:id="@+id/point4"
|
||||
style="@style/PrivateSpaceBulletPointIconStyle"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_text_dot" />
|
||||
<TextView
|
||||
style="@style/PrivateSpaceBulletPointTextFontStyle"
|
||||
android:layout_toRightOf="@+id/point4"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/private_space_gaia_education_bullet4"/>
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
@@ -31,13 +31,14 @@
|
||||
android:maxWidth="@dimen/animation_max_size"
|
||||
android:maxHeight="@dimen/animation_max_size">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/privatespace_lock_image"
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/lottie_animation"
|
||||
style="@style/SudContentIllustration"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitCenter"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/private_space_choose_lock_illustration"/>
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true"
|
||||
app:lottie_rawRes="@raw/private_space_use_screen_lock_illustration"/>
|
||||
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
@@ -24,13 +24,21 @@
|
||||
app:sucHeaderText="@string/private_space_success_title"
|
||||
app:sudDescriptionText="@string/private_space_access_text"
|
||||
android:icon="@drawable/ic_privatespace_done">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/privatespace_success_image"
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
style="@style/SudContentFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:src="@drawable/private_space_illustration"/>
|
||||
android:maxWidth="@dimen/animation_max_size"
|
||||
android:maxHeight="@dimen/animation_max_size">
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/lottie_animation"
|
||||
style="@style/SudContentIllustration"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true"
|
||||
app:lottie_rawRes="@raw/private_space_illustration"/>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
@@ -35,6 +35,9 @@
|
||||
<action
|
||||
android:id="@+id/action_set_lock_fragment"
|
||||
app:destination="@id/ps_profile_lock_fragment"/>
|
||||
<action
|
||||
android:id="@+id/action_account_intro_fragment"
|
||||
app:destination="@id/ps_account_intro_fragment"/>
|
||||
</fragment>
|
||||
<fragment android:id="@+id/ps_profile_error_fragment"
|
||||
android:name="com.android.settings.privatespace.PrivateProfileCreationError"
|
||||
@@ -51,14 +54,24 @@
|
||||
android:label="fragment_account_error">
|
||||
<action
|
||||
android:id="@+id/action_advance_login_error"
|
||||
app:destination="@id/ps_account_error_fragment"/>
|
||||
app:destination="@id/ps_account_intro_fragment"/>
|
||||
<action
|
||||
android:id="@+id/action_success_fragment"
|
||||
app:destination="@id/ps_profile_success_fragment"/>
|
||||
android:id="@+id/action_skip_account_login"
|
||||
app:destination="@id/ps_profile_lock_fragment"/>
|
||||
</fragment>
|
||||
<fragment android:id="@+id/ps_profile_lock_fragment"
|
||||
android:name="com.android.settings.privatespace.PrivateSpaceSetLockFragment"
|
||||
android:label="fragment_ps_lock">
|
||||
<action
|
||||
android:id="@+id/action_lock_success_fragment"
|
||||
app:destination="@id/ps_profile_success_fragment"/>
|
||||
</fragment>
|
||||
<fragment android:id="@+id/ps_account_intro_fragment"
|
||||
android:name="com.android.settings.privatespace.PrivateSpaceGaiaEducationFragment"
|
||||
android:label="fragment_ps_account_intro">
|
||||
<action
|
||||
android:id="@+id/action_account_lock_fragment"
|
||||
app:destination="@id/ps_profile_lock_fragment"/>
|
||||
<action
|
||||
android:id="@+id/action_advance_login_error"
|
||||
app:destination="@id/ps_account_error_fragment"/>
|
||||
|
1
res/raw/private_space_hide_when_locked_illustration.json
Normal file
1
res/raw/private_space_hide_when_locked_illustration.json
Normal file
File diff suppressed because one or more lines are too long
1
res/raw/private_space_illustration.json
Normal file
1
res/raw/private_space_illustration.json
Normal file
File diff suppressed because one or more lines are too long
1
res/raw/private_space_notifications_illustration.json
Normal file
1
res/raw/private_space_notifications_illustration.json
Normal file
File diff suppressed because one or more lines are too long
1
res/raw/private_space_placeholder_illustration.json
Normal file
1
res/raw/private_space_placeholder_illustration.json
Normal file
File diff suppressed because one or more lines are too long
1
res/raw/private_space_share_photos_illustration.json
Normal file
1
res/raw/private_space_share_photos_illustration.json
Normal file
File diff suppressed because one or more lines are too long
1
res/raw/private_space_unlock_to_share_illustration.json
Normal file
1
res/raw/private_space_unlock_to_share_illustration.json
Normal file
File diff suppressed because one or more lines are too long
1
res/raw/private_space_use_screen_lock_illustration.json
Normal file
1
res/raw/private_space_use_screen_lock_illustration.json
Normal file
File diff suppressed because one or more lines are too long
@@ -198,4 +198,9 @@
|
||||
<attr name="notification_importance_button_background_color_selected" format="color" />
|
||||
<attr name="notification_importance_button_border_color_selected" format="color" />
|
||||
<attr name="notification_importance_button_foreground_color_selected" format="color" />
|
||||
|
||||
<!-- For BackgroundPreference -->
|
||||
<declare-styleable name="BackgroundPreference">
|
||||
<attr name="background" format="reference" />
|
||||
</declare-styleable>
|
||||
</resources>
|
||||
|
@@ -477,4 +477,13 @@
|
||||
<!-- Credential Manager settings dimensions -->
|
||||
<dimen name="credman_primary_provider_pref_left_padding">80dp</dimen>
|
||||
<dimen name="credman_primary_provider_pref_left_padding_compact">24dp</dimen>
|
||||
|
||||
<!-- Color contrast screen -->
|
||||
<dimen name="contrast_button_total_size">90dp</dimen>
|
||||
<dimen name="contrast_button_inner_size">82dp</dimen>
|
||||
<dimen name="contrast_button_radius">20dp</dimen>
|
||||
<dimen name="contrast_button_stroke_width">2dp</dimen>
|
||||
<dimen name="contrast_button_text_size">14sp</dimen>
|
||||
<dimen name="contrast_button_text_spacing">4dp</dimen>
|
||||
<dimen name="contrast_button_horizontal_spacing">16dp</dimen>
|
||||
</resources>
|
||||
|
@@ -152,10 +152,10 @@
|
||||
<string name="bluetooth_pair_other_ear_dialog_left_ear_positive_button">Pair left ear</string>
|
||||
<!-- Title for all hearing devices related controls section. [CHAR LIMIT=60] -->
|
||||
<string name="bluetooth_device_controls_general">For all available hearing devices</string>
|
||||
<!-- Connected devices settings. Title of the preference to show the entrance of the hearing device controls related page. [CHAR LIMIT=65] -->
|
||||
<string name="bluetooth_device_controls_title">Hearing device settings</string>
|
||||
<!-- Connected devices settings. Title of the preference to show the entrance of the hearing device controls related page. [CHAR LIMIT=65] -->
|
||||
<string name="bluetooth_device_controls_summary">Shortcut, hearing aid compatibility</string>
|
||||
<!-- Connected devices settings. Title of the preference to show the entrance of the hearing device settings related page. [CHAR LIMIT=65] -->
|
||||
<string name="bluetooth_device_controls_title">More hearing device settings</string>
|
||||
<!-- Connected devices settings. Summary of the preference to show the item in the hearing device settings related page. [CHAR LIMIT=120] -->
|
||||
<string name="bluetooth_device_controls_summary">Change cross-device settings like shortcut, and telecoil controls</string>
|
||||
<!-- Title for this device specific controls section. [CHAR LIMIT=30] -->
|
||||
<string name="bluetooth_device_controls_specific">For this device</string>
|
||||
<!-- Connected devices settings. Title of the preference to show the entrance of the audio output page. It can change different types of audio are played on phone or other bluetooth devices. [CHAR LIMIT=35] -->
|
||||
@@ -1318,7 +1318,7 @@
|
||||
<!-- Title for private space setup in auto advancing screen informing to explore private space settings for hide and auto lock. [CHAR LIMIT=NONE] -->
|
||||
<string name="private_space_explore_settings_title">Explore private space settings to hide private space and set up automatic locking</string>
|
||||
<!-- Title for private space setup in auto advancing screen informing some system apps are already installed in private space. [CHAR LIMIT=NONE] -->
|
||||
<string name="private_space_apps_installed_title">Some apps are already installed in your private space</string>
|
||||
<string name="private_space_apps_installed_title">Required apps are already installed in your private space</string>
|
||||
<!-- Title for private space creation error screen. [CHAR LIMIT=60] -->
|
||||
<string name="private_space_error_screen_title">Couldn\u2019t set up a private space</string>
|
||||
<!-- Label for button to retry creating private space again on creation error. [CHAR LIMIT=30] -->
|
||||
@@ -1363,6 +1363,22 @@
|
||||
<string name="private_space_notifications_title">Sensitive notifications on lock screen</string>
|
||||
<!-- Summary description for private space sensitive notifications toggle [CHAR LIMIT=200] -->
|
||||
<string name="private_space_sensitive_notifications_description">Show sensitive content when private space is unlocked</string>
|
||||
<!-- Title for private space GAIA education screen [CHAR LIMIT=90] -->
|
||||
<string name="private_space_gaia_education_title">Create a Google Account to help keep your data private</string>
|
||||
<!-- Description for private space GAIA education screen [CHAR LIMIT=120] -->
|
||||
<string name="private_space_gaia_education_description">On the next screen you can sign in to an account to use with your private space</string>
|
||||
<!-- Sub header for private space GAIA education screen [CHAR LIMIT=120] -->
|
||||
<string name="private_space_gaia_education_header"><b>Create a dedicated account to help stop data appearing outside private space, such as:</b></string>
|
||||
<!-- Text for private space GAIA education screen [CHAR LIMIT=90] -->
|
||||
<string name="private_space_gaia_education_bullet1">Synced photos, files, emails, contacts, calendar events, and other data</string>
|
||||
<!-- Text for private space GAIA education screen [CHAR LIMIT=60] -->
|
||||
<string name="private_space_gaia_education_bullet2">App download history and recommendations</string>
|
||||
<!-- Text for private space GAIA education screen [CHAR LIMIT=60] -->
|
||||
<string name="private_space_gaia_education_bullet3">Browsing history, bookmarks, and saved passwords</string>
|
||||
<!-- Text for private space GAIA education screen [CHAR LIMIT=90] -->
|
||||
<string name="private_space_gaia_education_bullet4">Suggested content related to your activity in private space apps</string>
|
||||
<!-- Text for button in private space GAIA education screen to start login [CHAR LIMIT=20] -->
|
||||
<string name="private_space_gaia_education_got_it">Got it</string>
|
||||
|
||||
<!-- Text shown when "Add fingerprint" button is disabled -->
|
||||
<string name="fingerprint_add_max">You can add up to <xliff:g id="count" example="5">%d</xliff:g> fingerprints</string>
|
||||
@@ -4608,6 +4624,28 @@
|
||||
<string name="display_category_title">Display</string>
|
||||
<!-- Title for the accessibility color and motion page. [CHAR LIMIT=50] -->
|
||||
<string name="accessibility_color_and_motion_title">Color and motion</string>
|
||||
<!-- Title for the accessibility color contrast page. [CHAR LIMIT=50] -->
|
||||
<string name="accessibility_color_contrast_title">Color contrast</string>
|
||||
<!-- Intro for the accessibility color contrast page. [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_color_contrast_intro">Higher contrast makes text, buttons, and icons stand out more. Choose the contrast that looks best to you.</string>
|
||||
<!-- Notes in color contrast page footer for something should be aware. [CHAR LIMIT=NONE] -->
|
||||
<string name="color_contrast_note">Some apps may not support all color and text contrast settings</string>
|
||||
<!-- Summary for the accessibility color setting. [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_color_contrast_summary">Adjust how colors and text look against your screen\'s background color</string>
|
||||
<!-- Preview screen title on the color contrast page. [CHAR LIMIT=20] -->
|
||||
<string name="color_contrast_preview">Preview</string>
|
||||
<!-- Preview screen email sender's name on the color contrast page. [CHAR LIMIT=15] -->
|
||||
<string name="color_contrast_preview_sender_name">Helen, Adam</string>
|
||||
<!-- Preview screen email sent date on the color contrast page. [CHAR LIMIT=15] -->
|
||||
<string name="color_contrast_preview_email_send_date">2 days ago</string>
|
||||
<!-- Preview screen email badge on the contrast page. [CHAR LIMIT=15] -->
|
||||
<string name="color_contrast_preview_email_badge">Follow up?</string>
|
||||
<!-- Preview screen email title on the contrast page. [CHAR LIMIT=30] -->
|
||||
<string name="color_contrast_preview_email_title">Business trip report</string>
|
||||
<!-- Preview screen email body on the contrast page. [CHAR LIMIT=NONE] -->
|
||||
<string name="color_contrast_preview_email_body">For further assistance, please reach out to \nmyself or Helen. This report will be</string>
|
||||
<!-- Preview screen email attachment name on the contrast page. [CHAR LIMIT=30] -->
|
||||
<string name="color_contrast_preview_email_attachment_name">Client Expenses</string>
|
||||
<!-- Title for the accessibility text options page. [CHAR LIMIT=50] -->
|
||||
<string name="accessibility_turn_screen_darker_title">Turn screen darker</string>
|
||||
<!-- Title for the accessibility preference category of interaction control services and settings. [CHAR LIMIT=50] -->
|
||||
@@ -4909,6 +4947,10 @@
|
||||
<string name="accessibility_toggle_high_text_contrast_preference_title">High contrast text</string>
|
||||
<!-- Summary for the accessibility preference to high contrast text. [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_toggle_high_text_contrast_preference_summary">Change text color to black or white. Maximizes contrast with the background.</string>
|
||||
<!-- Title for the accessibility preference to high contrast text. [CHAR LIMIT=35] -->
|
||||
<string name="accessibility_toggle_maximize_text_contrast_preference_title">Maximize text contrast</string>
|
||||
<!-- Summary for the accessibility preference to high contrast text. [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_toggle_maximize_text_contrast_preference_summary">Change text color to black or white to increase contrast with the background.</string>
|
||||
<!-- Title for the accessibility preference to auto update screen magnification. [CHAR LIMIT=35] -->
|
||||
<string name="accessibility_toggle_screen_magnification_auto_update_preference_title">Auto
|
||||
update screen magnification</string>
|
||||
@@ -11467,8 +11509,6 @@
|
||||
<!-- Mobile network settings screen, message asking the user to check their pricing with their Carrier, when enabling Data roaming. [CHAR LIMIT=NONE] -->
|
||||
<string name="roaming_check_price_warning">Check with your network provider for pricing.</string>
|
||||
|
||||
<!-- Title for mobile data preference, to display the mobile data usage for each app. [CHAR LIMIT=NONE]-->
|
||||
<string name="mobile_data_usage_title">App data usage</string>
|
||||
<!-- Summary to show the current network mode is invalid. [CHAR LIMIT=NONE]-->
|
||||
<string name="mobile_network_mode_error">Invalid Network Mode <xliff:g id="networkModeId" example="0">%1$d</xliff:g>. Ignore.</string>
|
||||
<!-- Title for _satellite_setting_preference_layout in mobile network settings [CHAR LIMIT=60] -->
|
||||
@@ -12872,6 +12912,8 @@
|
||||
<string name="contrast_title">Contrast</string>
|
||||
<!-- 'Standard' contrast option [CHAR LIMIT=20] -->
|
||||
<string name="contrast_standard">Standard</string>
|
||||
<!-- 'Default' contrast option [CHAR LIMIT=20] -->
|
||||
<string name="contrast_default">Default</string>
|
||||
<!-- 'Medium' contrast option [CHAR LIMIT=20] -->
|
||||
<string name="contrast_medium">Medium</string>
|
||||
<!-- 'High' contrast option [CHAR LIMIT=20] -->
|
||||
|
@@ -21,6 +21,16 @@
|
||||
android:persistent="false"
|
||||
android:title="@string/accessibility_color_and_motion_title">
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.accessibility.ColorContrastFragment"
|
||||
android:key="color_contrast"
|
||||
android:icon="@drawable/ic_color_contrast"
|
||||
android:persistent="false"
|
||||
android:title="@string/accessibility_color_contrast_title"
|
||||
android:summary="@string/accessibility_color_contrast_summary"
|
||||
settings:controller="com.android.settings.accessibility.ContrastPreferenceController"
|
||||
settings:searchable="true"/>
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment"
|
||||
android:icon="@drawable/ic_daltonizer"
|
||||
|
46
res/xml/accessibility_color_contrast.xml
Normal file
46
res/xml/accessibility_color_contrast.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<?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.
|
||||
-->
|
||||
|
||||
<PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:persistent="false"
|
||||
android:title="@string/accessibility_color_contrast_title">
|
||||
|
||||
<com.android.settingslib.widget.TopIntroPreference
|
||||
android:title="@string/accessibility_color_contrast_intro" />
|
||||
|
||||
<com.android.settingslib.widget.LayoutPreference
|
||||
android:key="color_contrast_selector"
|
||||
android:selectable="false"
|
||||
android:layout="@layout/accessibility_color_contrast_selector"
|
||||
settings:controller="com.android.settings.accessibility.ContrastSelectorPreferenceController"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:key="toggle_high_text_contrast_preference"
|
||||
android:persistent="false"
|
||||
android:summary="@string/accessibility_toggle_maximize_text_contrast_preference_summary"
|
||||
android:title="@string/accessibility_toggle_maximize_text_contrast_preference_title"
|
||||
settings:controller=
|
||||
"com.android.settings.accessibility.HighTextContrastPreferenceController" />
|
||||
|
||||
<com.android.settings.accessibility.AccessibilityFooterPreference
|
||||
android:title="@string/color_contrast_note"
|
||||
android:selectable="false"
|
||||
settings:searchable="false"/>
|
||||
|
||||
</PreferenceScreen>
|
@@ -57,9 +57,7 @@
|
||||
android:key="toggle_high_text_contrast_preference"
|
||||
android:persistent="false"
|
||||
android:summary="@string/accessibility_toggle_high_text_contrast_preference_summary"
|
||||
android:title="@string/accessibility_toggle_high_text_contrast_preference_title"
|
||||
settings:controller=
|
||||
"com.android.settings.accessibility.HighTextContrastPreferenceController" />
|
||||
android:title="@string/accessibility_toggle_high_text_contrast_preference_title" />
|
||||
|
||||
<com.android.settings.accessibility.TextReadingResetPreference
|
||||
android:key="reset"
|
||||
|
@@ -95,7 +95,7 @@
|
||||
|
||||
<Preference
|
||||
android:key="data_usage_summary"
|
||||
android:title="@string/mobile_data_usage_title"
|
||||
android:title="@string/app_cellular_data_usage"
|
||||
settings:controller="com.android.settings.network.telephony.DataUsagePreferenceController"/>
|
||||
|
||||
<com.android.settings.datausage.BillingCyclePreference
|
||||
|
@@ -21,7 +21,7 @@
|
||||
<com.android.settingslib.widget.IllustrationPreference
|
||||
android:key="privatespace_hide_video"
|
||||
settings:searchable="false"
|
||||
settings:lottie_rawRes="@drawable/privatespace_placeholder_image"/>
|
||||
settings:lottie_rawRes="@raw/private_space_hide_when_locked_illustration"/>
|
||||
|
||||
<com.android.settingslib.widget.MainSwitchPreference
|
||||
android:key="hide_when_locked"
|
@@ -25,7 +25,7 @@
|
||||
<com.android.settingslib.widget.IllustrationPreference
|
||||
android:key="private_space_settings"
|
||||
settings:searchable="false"
|
||||
settings:lottie_rawRes="@drawable/private_space_illustration"/>
|
||||
settings:lottie_rawRes="@raw/private_space_illustration"/>
|
||||
|
||||
<Preference
|
||||
android:key="private_space_description"
|
||||
|
@@ -117,6 +117,8 @@ public class Settings extends SettingsActivity {
|
||||
public static class TextReadingSettingsActivity extends SettingsActivity { /* empty */ }
|
||||
/** Activity for text color and motion settings. */
|
||||
public static class ColorAndMotionActivity extends SettingsActivity { /* empty */ }
|
||||
/** Activity for color contrast settings. */
|
||||
public static class ColorContrastActivity extends SettingsActivity { /* empty */ }
|
||||
/** Activity for the security dashboard. */
|
||||
public static class SecurityDashboardActivity extends SettingsActivity {
|
||||
|
||||
|
@@ -38,7 +38,6 @@ import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.permission.flags.Flags;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
@@ -829,29 +828,12 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
if (ai == null || ai.metaData == null) return;
|
||||
mFragmentClass = ai.metaData.getString(META_DATA_KEY_FRAGMENT_CLASS);
|
||||
mHighlightMenuKey = ai.metaData.getString(META_DATA_KEY_HIGHLIGHT_MENU_KEY);
|
||||
/* TODO(b/327036144) Once the Flags.walletRoleEnabled() is rolled out, we will replace
|
||||
value for the fragment class within the com.android.settings.nfc.PaymentSettings
|
||||
activity with com.android.settings.connecteddevice.NfcAndPaymentFragment so that this
|
||||
code can be removed.
|
||||
*/
|
||||
if (shouldOverrideContactlessPaymentRouting()) {
|
||||
overrideContactlessPaymentRouting();
|
||||
}
|
||||
} catch (NameNotFoundException nnfe) {
|
||||
// No recovery
|
||||
Log.d(LOG_TAG, "Cannot get Metadata for: " + getComponentName().toString());
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldOverrideContactlessPaymentRouting() {
|
||||
return Flags.walletRoleEnabled()
|
||||
&& mFragmentClass.equals("com.android.settings.nfc.PaymentSettings");
|
||||
}
|
||||
|
||||
private void overrideContactlessPaymentRouting() {
|
||||
mFragmentClass = "com.android.settings.connecteddevice.NfcAndPaymentFragment";
|
||||
}
|
||||
|
||||
// give subclasses access to the Next button
|
||||
public boolean hasNextButton() {
|
||||
return mNextButton != null;
|
||||
|
@@ -22,17 +22,25 @@ import android.util.AttributeSet;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.res.TypedArrayUtils;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* A settings preference with colored rounded rectangle background and an arrow icon on the right
|
||||
* A settings preference with colored rounded rectangle background and an arrow icon on the right.
|
||||
*/
|
||||
public class ArrowPreference extends Preference {
|
||||
public class ArrowPreference extends BackgroundPreference {
|
||||
|
||||
public ArrowPreference(@NonNull Context context) {
|
||||
this(context, null);
|
||||
public ArrowPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
setBackground(
|
||||
com.android.settingslib.widget.mainswitch.R.drawable.settingslib_switch_bar_bg_on);
|
||||
setWidgetLayoutResource(R.layout.preference_widget_arrow);
|
||||
}
|
||||
|
||||
public ArrowPreference(@NonNull Context context, @Nullable AttributeSet attrs,
|
||||
int defStyleAttr) {
|
||||
this(context, attrs, defStyleAttr, 0);
|
||||
}
|
||||
|
||||
public ArrowPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
|
||||
@@ -41,18 +49,7 @@ public class ArrowPreference extends Preference {
|
||||
android.R.attr.preferenceStyle));
|
||||
}
|
||||
|
||||
public ArrowPreference(@NonNull Context context, @Nullable AttributeSet attrs,
|
||||
int defStyleAttr) {
|
||||
this(context, attrs, defStyleAttr, 0);
|
||||
}
|
||||
|
||||
public ArrowPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
setLayoutResource(R.layout.arrow_preference);
|
||||
public ArrowPreference(@NonNull Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.res.TypedArrayUtils;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* A preference with custom background.
|
||||
*/
|
||||
public class BackgroundPreference extends Preference {
|
||||
|
||||
private int mBackgroundId;
|
||||
|
||||
public BackgroundPreference(@NonNull Context context,
|
||||
@Nullable AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
setLayoutResource(R.layout.preference_background);
|
||||
setIconSpaceReserved(false);
|
||||
|
||||
final TypedArray styledAttrs = context.obtainStyledAttributes(attrs,
|
||||
R.styleable.BackgroundPreference);
|
||||
mBackgroundId = styledAttrs.getResourceId(R.styleable.BackgroundPreference_background, 0);
|
||||
styledAttrs.recycle();
|
||||
}
|
||||
|
||||
public BackgroundPreference(@NonNull Context context, @Nullable AttributeSet attrs,
|
||||
int defStyleAttr) {
|
||||
this(context, attrs, defStyleAttr, 0);
|
||||
}
|
||||
|
||||
public BackgroundPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
|
||||
this(context, attrs, TypedArrayUtils.getAttr(context,
|
||||
androidx.preference.R.attr.preferenceStyle,
|
||||
com.android.internal.R.attr.preferenceStyle), 0);
|
||||
}
|
||||
|
||||
public BackgroundPreference(@NonNull Context context) {
|
||||
this(context, null, TypedArrayUtils.getAttr(context,
|
||||
androidx.preference.R.attr.preferenceStyle,
|
||||
com.android.internal.R.attr.preferenceStyle), 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
|
||||
final LinearLayout layout = (LinearLayout) holder.findViewById(R.id.background);
|
||||
if (mBackgroundId != 0) {
|
||||
final Drawable backgroundDrawable = getContext().getDrawable(mBackgroundId);
|
||||
layout.setBackground(backgroundDrawable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the background to a given resource. The resource should refer to a Drawable object.
|
||||
*
|
||||
* @param resId The identifier of the resource.
|
||||
*/
|
||||
public void setBackground(@DrawableRes int resId) {
|
||||
if (mBackgroundId != resId) {
|
||||
mBackgroundId = resId;
|
||||
notifyChanged();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
|
||||
/** Accessibility settings for color contrast. */
|
||||
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
|
||||
public class ColorContrastFragment extends DashboardFragment {
|
||||
|
||||
private static final String TAG = "ColorContrastFragment";
|
||||
|
||||
|
||||
@Override
|
||||
protected int getPreferenceScreenResId() {
|
||||
return R.xml.accessibility_color_contrast;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLogTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
// TODO(b/326539398): Add metrics tracking for color contrast.
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider(R.xml.accessibility_color_contrast);
|
||||
}
|
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
/**
|
||||
* Controller for {@link ColorContrastFragment}.
|
||||
*/
|
||||
public class ContrastPreferenceController extends BasePreferenceController {
|
||||
|
||||
public ContrastPreferenceController(@NonNull Context context, @NonNull String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return Flags.enableColorContrastControl() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
}
|
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static android.app.UiModeManager.ContrastUtils.CONTRAST_LEVEL_HIGH;
|
||||
import static android.app.UiModeManager.ContrastUtils.CONTRAST_LEVEL_MEDIUM;
|
||||
import static android.app.UiModeManager.ContrastUtils.CONTRAST_LEVEL_STANDARD;
|
||||
import static android.app.UiModeManager.ContrastUtils.fromContrastLevel;
|
||||
import static android.app.UiModeManager.ContrastUtils.toContrastLevel;
|
||||
|
||||
import android.app.UiModeManager;
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||
import com.android.settingslib.widget.LayoutPreference;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* Controller for contrast selector.
|
||||
*/
|
||||
public class ContrastSelectorPreferenceController extends BasePreferenceController
|
||||
implements LifecycleObserver, OnStart, OnStop, UiModeManager.ContrastChangeListener {
|
||||
|
||||
private static final String KEY_COLOR_CONTRAST_SELECTOR = "color_contrast_selector";
|
||||
|
||||
private final Executor mMainExecutor;
|
||||
private final UiModeManager mUiModeManager;
|
||||
private Map<Integer, FrameLayout> mContrastButtons = new HashMap<>();
|
||||
|
||||
public ContrastSelectorPreferenceController(@NonNull Context context,
|
||||
@NonNull String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
|
||||
mMainExecutor = mContext.getMainExecutor();
|
||||
mUiModeManager = mContext.getSystemService(UiModeManager.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(@NonNull PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
|
||||
final LayoutPreference mLayoutPreference =
|
||||
screen.findPreference(KEY_COLOR_CONTRAST_SELECTOR);
|
||||
|
||||
mContrastButtons = Map.ofEntries(
|
||||
Map.entry(CONTRAST_LEVEL_STANDARD,
|
||||
mLayoutPreference.findViewById(R.id.contrast_button_default)),
|
||||
Map.entry(CONTRAST_LEVEL_MEDIUM,
|
||||
mLayoutPreference.findViewById(R.id.contrast_button_medium)),
|
||||
Map.entry(CONTRAST_LEVEL_HIGH,
|
||||
mLayoutPreference.findViewById(R.id.contrast_button_high))
|
||||
);
|
||||
|
||||
mContrastButtons.forEach((contrastLevel, contrastButton) -> {
|
||||
contrastButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(@Nullable View v) {
|
||||
Settings.Secure.putFloat(mContext.getContentResolver(),
|
||||
Settings.Secure.CONTRAST_LEVEL,
|
||||
fromContrastLevel(contrastLevel));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
highlightContrast(toContrastLevel(mUiModeManager.getContrast()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
// The main preferences screen is feature guarded, so this always returns AVAILABLE.
|
||||
return AVAILABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
mUiModeManager.addContrastChangeListener(mMainExecutor, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
mUiModeManager.removeContrastChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContrastChanged(float contrast) {
|
||||
highlightContrast(toContrastLevel(contrast));
|
||||
}
|
||||
|
||||
private void highlightContrast(int contrast) {
|
||||
mContrastButtons.forEach((level, button) -> {
|
||||
button.setSelected(level == contrast);
|
||||
});
|
||||
}
|
||||
}
|
@@ -117,6 +117,11 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Flags.enableColorContrastControl()) {
|
||||
// High text contrast toggle will be added inside Color Contrast page on V+.
|
||||
removePreference(HIGH_TEXT_CONTRAST_KEY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -203,10 +208,12 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
||||
mFontWeightAdjustmentController.setEntryPoint(mEntryPoint);
|
||||
controllers.add(mFontWeightAdjustmentController);
|
||||
|
||||
final HighTextContrastPreferenceController highTextContrastController =
|
||||
new HighTextContrastPreferenceController(context, HIGH_TEXT_CONTRAST_KEY);
|
||||
highTextContrastController.setEntryPoint(mEntryPoint);
|
||||
controllers.add(highTextContrastController);
|
||||
if (!Flags.enableColorContrastControl()) {
|
||||
final HighTextContrastPreferenceController highTextContrastController =
|
||||
new HighTextContrastPreferenceController(context, HIGH_TEXT_CONTRAST_KEY);
|
||||
highTextContrastController.setEntryPoint(mEntryPoint);
|
||||
controllers.add(highTextContrastController);
|
||||
}
|
||||
|
||||
final TextReadingResetController resetController =
|
||||
new TextReadingResetController(context, RESET_KEY,
|
||||
|
@@ -26,6 +26,7 @@ import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.accessibility.AccessibilityHearingAidsFragment;
|
||||
import com.android.settings.accessibility.ArrowPreference;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
@@ -83,7 +84,7 @@ public class BluetoothDetailsHearingDeviceControlsController extends BluetoothDe
|
||||
}
|
||||
|
||||
private Preference createHearingDeviceControlsPreference(Context context) {
|
||||
final Preference preference = new Preference(context);
|
||||
final ArrowPreference preference = new ArrowPreference(context);
|
||||
preference.setKey(KEY_HEARING_DEVICE_CONTROLS);
|
||||
preference.setTitle(context.getString(R.string.bluetooth_device_controls_title));
|
||||
preference.setSummary(context.getString(R.string.bluetooth_device_controls_summary));
|
||||
|
@@ -24,9 +24,9 @@ import android.util.Log;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||
import com.android.settings.flags.Flags;
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.flags.Flags;
|
||||
|
||||
/**
|
||||
* Controller to maintain connected bluetooth devices
|
||||
|
@@ -34,13 +34,13 @@ import androidx.preference.PreferenceCategory
|
||||
import androidx.preference.PreferenceGroup
|
||||
import com.android.settings.R
|
||||
import com.android.settings.dashboard.RestrictedDashboardFragment
|
||||
import com.android.settings.flags.Flags
|
||||
import com.android.settingslib.bluetooth.BluetoothCallback
|
||||
import com.android.settingslib.bluetooth.BluetoothDeviceFilter
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothManager
|
||||
import com.android.settingslib.flags.Flags
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@@ -25,10 +25,10 @@ import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||
import com.android.settings.flags.Flags;
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||
import com.android.settingslib.flags.Flags;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@@ -29,6 +29,7 @@ import com.android.settings.accessibility.AccessibilitySettings;
|
||||
import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
|
||||
import com.android.settings.accessibility.CaptioningPropertiesFragment;
|
||||
import com.android.settings.accessibility.ColorAndMotionFragment;
|
||||
import com.android.settings.accessibility.ColorContrastFragment;
|
||||
import com.android.settings.accessibility.TextReadingPreferenceFragment;
|
||||
import com.android.settings.accessibility.TextReadingPreferenceFragmentForSetupWizard;
|
||||
import com.android.settings.accessibility.ToggleColorInversionPreferenceFragment;
|
||||
@@ -379,6 +380,7 @@ public class SettingsGateway {
|
||||
TurnScreenOnDetails.class.getName(),
|
||||
NfcAndPaymentFragment.class.getName(),
|
||||
ColorAndMotionFragment.class.getName(),
|
||||
ColorContrastFragment.class.getName(),
|
||||
LongBackgroundTasksDetails.class.getName(),
|
||||
RegionalPreferencesEntriesFragment.class.getName(),
|
||||
BatteryInfoFragment.class.getName(),
|
||||
|
@@ -18,10 +18,12 @@ package com.android.settings.datausage.lib
|
||||
|
||||
import android.app.usage.NetworkStats
|
||||
import android.content.Context
|
||||
import android.content.pm.UserProperties
|
||||
import android.net.NetworkPolicyManager
|
||||
import android.net.NetworkTemplate
|
||||
import android.os.Process
|
||||
import android.os.UserHandle
|
||||
import android.os.UserManager
|
||||
import android.util.SparseArray
|
||||
import android.util.SparseBooleanArray
|
||||
import androidx.annotation.VisibleForTesting
|
||||
@@ -50,7 +52,11 @@ class AppDataUsageRepository(
|
||||
val items = ArrayList<AppItem>()
|
||||
val knownItems = SparseArray<AppItem>()
|
||||
val profiles = context.userManager.userProfiles
|
||||
bindStats(buckets, profiles, knownItems, items)
|
||||
val userManager : UserManager = context.getSystemService(Context.USER_SERVICE) as UserManager
|
||||
val userIdToIsHiddenMap = profiles.associate { profile ->
|
||||
profile.identifier to shouldSkipProfile(userManager, profile)
|
||||
}
|
||||
bindStats(buckets, userIdToIsHiddenMap, knownItems, items)
|
||||
val restrictedUids = context.getSystemService(NetworkPolicyManager::class.java)!!
|
||||
.getUidsWithPolicy(NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND)
|
||||
for (uid in restrictedUids) {
|
||||
@@ -98,7 +104,7 @@ class AppDataUsageRepository(
|
||||
|
||||
private fun bindStats(
|
||||
buckets: List<Bucket>,
|
||||
profiles: List<UserHandle>,
|
||||
userIdToIsHiddenMap: Map<Int, Boolean>,
|
||||
knownItems: SparseArray<AppItem>,
|
||||
items: ArrayList<AppItem>,
|
||||
) {
|
||||
@@ -108,8 +114,11 @@ class AppDataUsageRepository(
|
||||
val collapseKey: Int
|
||||
val category: Int
|
||||
val userId = UserHandle.getUserId(uid)
|
||||
if(userIdToIsHiddenMap[userId] == true) {
|
||||
continue
|
||||
}
|
||||
if (UserHandle.isApp(uid) || Process.isSdkSandboxUid(uid)) {
|
||||
if (profiles.contains(UserHandle(userId))) {
|
||||
if (userIdToIsHiddenMap.keys.contains(userId)) {
|
||||
if (userId != currentUserId) {
|
||||
// Add to a managed user item.
|
||||
accumulate(
|
||||
@@ -153,6 +162,16 @@ class AppDataUsageRepository(
|
||||
}
|
||||
}
|
||||
|
||||
private fun shouldSkipProfile(userManager : UserManager, userHandle: UserHandle): Boolean {
|
||||
if (android.os.Flags.allowPrivateProfile()
|
||||
&& android.multiuser.Flags.handleInterleavedSettingsForPrivateSpace()) {
|
||||
return (userManager.isQuietModeEnabled(userHandle)
|
||||
&& userManager.getUserProperties(userHandle).showInQuietMode
|
||||
== UserProperties.SHOW_IN_QUIET_MODE_HIDDEN)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Accumulate data usage of a network stats entry for the item mapped by the collapse key.
|
||||
* Creates the item if needed.
|
||||
|
@@ -81,16 +81,12 @@ class DataUsagePreferenceController(context: Context, key: String) :
|
||||
}
|
||||
|
||||
private suspend fun update() {
|
||||
val summary = withContext(Dispatchers.Default) {
|
||||
val (summary, enabled) = withContext(Dispatchers.Default) {
|
||||
networkTemplate = getNetworkTemplate()
|
||||
getDataUsageSummary()
|
||||
}
|
||||
if (summary == null) {
|
||||
preference.isEnabled = false
|
||||
} else {
|
||||
preference.isEnabled = true
|
||||
preference.summary = summary
|
||||
getDataUsageSummaryAndEnabled()
|
||||
}
|
||||
preference.isEnabled = enabled
|
||||
preference.summary = summary
|
||||
}
|
||||
|
||||
private fun getNetworkTemplate(): NetworkTemplate? = when {
|
||||
@@ -105,17 +101,19 @@ class DataUsagePreferenceController(context: Context, key: String) :
|
||||
fun createNetworkCycleDataRepository(): NetworkCycleDataRepository? =
|
||||
networkTemplate?.let { NetworkCycleDataRepository(mContext, it) }
|
||||
|
||||
private fun getDataUsageSummary(): String? {
|
||||
val repository = createNetworkCycleDataRepository() ?: return null
|
||||
private fun getDataUsageSummaryAndEnabled(): Pair<String?, Boolean> {
|
||||
val repository = createNetworkCycleDataRepository() ?: return null to false
|
||||
|
||||
repository.loadFirstCycle()?.let { usageData ->
|
||||
return mContext.getString(
|
||||
R.string.data_usage_template,
|
||||
usageData.formatUsage(mContext),
|
||||
usageData.formatDateRange(mContext),
|
||||
)
|
||||
) to (usageData.usage > 0 || repository.queryUsage(AllTimeRange).usage > 0)
|
||||
}
|
||||
|
||||
return repository.queryUsage(AllTimeRange).takeIf { it.usage > 0 }
|
||||
?.getDataUsedString(mContext)
|
||||
val allTimeUsage = repository.queryUsage(AllTimeRange)
|
||||
if (allTimeUsage.usage > 0) return allTimeUsage.getDataUsedString(mContext) to true
|
||||
return null to false
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,9 @@ import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -32,7 +35,6 @@ import android.util.Pair;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -41,6 +43,7 @@ import androidx.navigation.fragment.NavHostFragment;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
|
||||
import com.airbnb.lottie.LottieAnimationView;
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
@@ -58,21 +61,21 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
private GlifLayout mRootView;
|
||||
private Handler mHandler;
|
||||
private int mScreenTitleIndex;
|
||||
private static final List<Pair<Integer, Integer>> HEADER_IMAGE_PAIRS =
|
||||
private static final List<Pair<Integer, Integer>> HEADER_ILLUSTRATION_PAIRS =
|
||||
ImmutableList.of(
|
||||
new Pair(R.string.private_space_notifications_hidden_title,
|
||||
R.drawable.private_space_setup_notification_illustration),
|
||||
R.raw.private_space_notifications_illustration),
|
||||
new Pair(R.string.private_space_apps_installed_title,
|
||||
R.drawable.private_space_setup_preinstalled_illustration),
|
||||
R.raw.private_space_unlock_to_share_illustration),
|
||||
new Pair(R.string.private_space_explore_settings_title,
|
||||
R.drawable.private_space_setup_sharing_illustration));
|
||||
R.raw.private_space_placeholder_illustration));
|
||||
|
||||
private Runnable mUpdateScreenResources =
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (getActivity() != null) {
|
||||
if (++mScreenTitleIndex < HEADER_IMAGE_PAIRS.size()) {
|
||||
if (++mScreenTitleIndex < HEADER_ILLUSTRATION_PAIRS.size()) {
|
||||
startFadeOutAnimation();
|
||||
mHandler.postDelayed(mUpdateScreenResources, DELAY_BETWEEN_SCREENS);
|
||||
} else if (PrivateSpaceMaintainer.getInstance(getActivity())
|
||||
@@ -81,8 +84,13 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
getContext(),
|
||||
SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_SPACE_CREATED,
|
||||
true);
|
||||
NavHostFragment.findNavController(AutoAdvanceSetupFragment.this)
|
||||
.navigate(R.id.action_set_lock_fragment);
|
||||
if (isConnectedToInternet()) {
|
||||
NavHostFragment.findNavController(AutoAdvanceSetupFragment.this)
|
||||
.navigate(R.id.action_account_intro_fragment);
|
||||
} else {
|
||||
NavHostFragment.findNavController(AutoAdvanceSetupFragment.this)
|
||||
.navigate(R.id.action_set_lock_fragment);
|
||||
}
|
||||
} else {
|
||||
mMetricsFeatureProvider.action(
|
||||
getContext(),
|
||||
@@ -112,7 +120,7 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
}
|
||||
} else {
|
||||
mScreenTitleIndex = savedInstanceState.getInt(TITLE_INDEX);
|
||||
if (mScreenTitleIndex >= HEADER_IMAGE_PAIRS.size()) {
|
||||
if (mScreenTitleIndex >= HEADER_ILLUSTRATION_PAIRS.size()) {
|
||||
return super.onCreateView(inflater, container, savedInstanceState);
|
||||
}
|
||||
}
|
||||
@@ -121,7 +129,7 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
inflater.inflate(R.layout.private_space_advancing_screen, container, false);
|
||||
mRootView.getHeaderTextView().setMaxLines(HEADER_TEXT_MAX_LINES);
|
||||
mRootView.getHeaderTextView().setBreakStrategy(BREAK_STRATEGY_SIMPLE);
|
||||
updateHeaderAndImage();
|
||||
updateHeaderAndIllustration();
|
||||
mHandler = new Handler(Looper.getMainLooper());
|
||||
mHandler.postDelayed(mUpdateScreenResources, DELAY_BETWEEN_SCREENS);
|
||||
OnBackPressedCallback callback =
|
||||
@@ -144,7 +152,9 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
mHandler.removeCallbacks(mUpdateScreenResources);
|
||||
if (mHandler != null) {
|
||||
mHandler.removeCallbacks(mUpdateScreenResources);
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@@ -158,20 +168,21 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
.navigate(R.id.action_advance_profile_error);
|
||||
}
|
||||
|
||||
private void updateHeaderAndImage() {
|
||||
mRootView.setHeaderText(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).first);
|
||||
((ImageView) mRootView.findViewById(R.id.setup_advance_image))
|
||||
.setImageResource(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).second);
|
||||
private void updateHeaderAndIllustration() {
|
||||
mRootView.setHeaderText(HEADER_ILLUSTRATION_PAIRS.get(mScreenTitleIndex).first);
|
||||
LottieAnimationView animationView = mRootView.findViewById(R.id.lottie_animation);
|
||||
animationView.setAnimation(HEADER_ILLUSTRATION_PAIRS.get(mScreenTitleIndex).second);
|
||||
animationView.playAnimation();
|
||||
startFadeInAnimation();
|
||||
}
|
||||
|
||||
private void startFadeInAnimation() {
|
||||
ValueAnimator textView = ObjectAnimator.ofFloat(
|
||||
mRootView.getHeaderTextView(), View.ALPHA, 0f, 1f);
|
||||
ValueAnimator imageView = ObjectAnimator.ofFloat(
|
||||
mRootView.findViewById(R.id.setup_advance_image), View.ALPHA, 0, 1f);
|
||||
ValueAnimator lottieView = ObjectAnimator.ofFloat(
|
||||
mRootView.findViewById(R.id.lottie_animation), View.ALPHA, 0, 1f);
|
||||
AnimatorSet fadeIn = new AnimatorSet();
|
||||
fadeIn.playTogether(textView, imageView);
|
||||
fadeIn.playTogether(textView, lottieView);
|
||||
fadeIn.setDuration(ANIMATION_DURATION_MILLIS).start();
|
||||
}
|
||||
|
||||
@@ -179,15 +190,24 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
|
||||
AnimatorSet fadeOut = new AnimatorSet();
|
||||
ValueAnimator textView = ObjectAnimator.ofFloat(
|
||||
mRootView.getHeaderTextView(), View.ALPHA, 1f, 0f);
|
||||
ValueAnimator imageView = ObjectAnimator.ofFloat(
|
||||
mRootView.findViewById(R.id.setup_advance_image), View.ALPHA, 1f, 0f);
|
||||
fadeOut.playTogether(textView, imageView);
|
||||
ValueAnimator lottieView = ObjectAnimator.ofFloat(
|
||||
mRootView.findViewById(R.id.lottie_animation), View.ALPHA, 1f, 0f);
|
||||
fadeOut.playTogether(textView, lottieView);
|
||||
fadeOut.setDuration(ANIMATION_DURATION_MILLIS).start();
|
||||
fadeOut.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
updateHeaderAndImage();
|
||||
updateHeaderAndIllustration();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** Returns true if device has an active internet connection, false otherwise. */
|
||||
private boolean isConnectedToInternet() {
|
||||
ConnectivityManager cm =
|
||||
(ConnectivityManager)
|
||||
getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
|
||||
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
|
||||
}
|
||||
}
|
||||
|
@@ -47,7 +47,7 @@ public class HidePrivateSpaceSettings extends DashboardFragment{
|
||||
|
||||
@Override
|
||||
protected int getPreferenceScreenResId() {
|
||||
return R.xml.privatespace_hide_locked;
|
||||
return R.xml.private_space_hide_locked;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -60,9 +60,7 @@ public class PrivateProfileCreationError extends InstrumentedFragment {
|
||||
.setText(R.string.private_space_cancel_label)
|
||||
.setListener(onCancel())
|
||||
.setButtonType(FooterButton.ButtonType.CANCEL)
|
||||
.setTheme(
|
||||
androidx.appcompat.R.style
|
||||
.Base_TextAppearance_AppCompat_Widget_Button)
|
||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
|
||||
.build());
|
||||
OnBackPressedCallback callback =
|
||||
new OnBackPressedCallback(true /* enabled by default */) {
|
||||
|
@@ -16,15 +16,9 @@
|
||||
|
||||
package com.android.settings.privatespace;
|
||||
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION;
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -66,9 +60,7 @@ public class PrivateSpaceAccountLoginError extends InstrumentedFragment {
|
||||
.setText(R.string.private_space_skip_login_label)
|
||||
.setListener(onSkip())
|
||||
.setButtonType(FooterButton.ButtonType.CANCEL)
|
||||
.setTheme(
|
||||
androidx.appcompat.R.style
|
||||
.Base_TextAppearance_AppCompat_Widget_Button)
|
||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
|
||||
.build());
|
||||
OnBackPressedCallback callback =
|
||||
new OnBackPressedCallback(true /* enabled by default */) {
|
||||
@@ -93,17 +85,8 @@ public class PrivateSpaceAccountLoginError extends InstrumentedFragment {
|
||||
mMetricsFeatureProvider.action(
|
||||
getContext(),
|
||||
SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_TRY_CREATE_ACCOUNT_AGAIN);
|
||||
PrivateSpaceMaintainer privateSpaceMaintainer =
|
||||
PrivateSpaceMaintainer.getInstance(getActivity());
|
||||
UserHandle userHandle;
|
||||
if (privateSpaceMaintainer.doesPrivateSpaceExist()
|
||||
&& (userHandle = privateSpaceMaintainer.getPrivateProfileHandle()) != null) {
|
||||
Intent intent = new Intent(getContext(), PrivateProfileContextHelperActivity.class);
|
||||
intent.putExtra(EXTRA_ACTION_TYPE, ACCOUNT_LOGIN_ACTION);
|
||||
Log.d(TAG, "Start private space activity for account login");
|
||||
getActivity()
|
||||
.startActivityForResultAsUser(intent, ACCOUNT_LOGIN_ACTION, userHandle);
|
||||
}
|
||||
NavHostFragment.findNavController(PrivateSpaceAccountLoginError.this)
|
||||
.navigate(R.id.action_advance_login_error);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -116,7 +99,7 @@ public class PrivateSpaceAccountLoginError extends InstrumentedFragment {
|
||||
SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_SUCCESS,
|
||||
false);
|
||||
NavHostFragment.findNavController(PrivateSpaceAccountLoginError.this)
|
||||
.navigate(R.id.action_success_fragment);
|
||||
.navigate(R.id.action_skip_account_login);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -62,9 +62,7 @@ public class PrivateSpaceEducation extends InstrumentedFragment {
|
||||
.setText(R.string.private_space_cancel_label)
|
||||
.setListener(onCancel())
|
||||
.setButtonType(FooterButton.ButtonType.CANCEL)
|
||||
.setTheme(
|
||||
androidx.appcompat.R.style
|
||||
.Base_TextAppearance_AppCompat_Widget_Button)
|
||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
|
||||
.build());
|
||||
|
||||
return rootView;
|
||||
|
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.privatespace;
|
||||
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION;
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
|
||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||
import com.google.android.setupcompat.template.FooterButton;
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
/** Fragment for GAIA education screen */
|
||||
public class PrivateSpaceGaiaEducationFragment extends InstrumentedFragment {
|
||||
private static final String TAG = "PrivateSpaceGaiaEduFrag";
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
if (android.os.Flags.allowPrivateProfile()) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View onCreateView(
|
||||
@NonNull LayoutInflater inflater,
|
||||
@Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
GlifLayout rootView =
|
||||
(GlifLayout)
|
||||
inflater.inflate(
|
||||
R.layout.private_space_gaia_education_screen, container, false);
|
||||
final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class);
|
||||
mixin.setPrimaryButton(
|
||||
new FooterButton.Builder(getContext())
|
||||
.setText(R.string.private_space_gaia_education_got_it)
|
||||
.setListener(onStartLogin())
|
||||
.setButtonType(FooterButton.ButtonType.NEXT)
|
||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary)
|
||||
.build());
|
||||
mixin.setSecondaryButton(
|
||||
new FooterButton.Builder(getContext())
|
||||
.setText(R.string.skip_label)
|
||||
.setListener(onSkip())
|
||||
.setButtonType(FooterButton.ButtonType.NEXT)
|
||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
|
||||
.build());
|
||||
OnBackPressedCallback callback =
|
||||
new OnBackPressedCallback(true /* enabled by default */) {
|
||||
@Override
|
||||
public void handleOnBackPressed() {
|
||||
// Handle the back button event. We intentionally don't want to allow back
|
||||
// button to work in this screen during the setup flow.
|
||||
}
|
||||
};
|
||||
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return METRICS_CATEGORY_UNKNOWN;
|
||||
}
|
||||
|
||||
private View.OnClickListener onSkip() {
|
||||
return v -> {
|
||||
NavHostFragment.findNavController(PrivateSpaceGaiaEducationFragment.this)
|
||||
.navigate(R.id.action_account_lock_fragment);
|
||||
};
|
||||
}
|
||||
|
||||
private View.OnClickListener onStartLogin() {
|
||||
return v -> {
|
||||
startAccountLogin();
|
||||
};
|
||||
}
|
||||
|
||||
/** Start new activity in private profile to add an account to private profile */
|
||||
private void startAccountLogin() {
|
||||
UserHandle userHandle =
|
||||
PrivateSpaceMaintainer.getInstance(getActivity()).getPrivateProfileHandle();
|
||||
if (userHandle != null) {
|
||||
Intent intent = new Intent(getContext(), PrivateProfileContextHelperActivity.class);
|
||||
intent.putExtra(EXTRA_ACTION_TYPE, ACCOUNT_LOGIN_ACTION);
|
||||
mMetricsFeatureProvider.action(
|
||||
getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_START);
|
||||
getActivity().startActivityForResultAsUser(intent, ACCOUNT_LOGIN_ACTION, userHandle);
|
||||
} else {
|
||||
Log.w(TAG, "Private profile user handle is null");
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.privatespace;
|
||||
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION;
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE;
|
||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.SET_LOCK_ACTION;
|
||||
|
||||
@@ -31,6 +30,7 @@ import android.view.ViewGroup;
|
||||
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
@@ -70,9 +70,7 @@ public class PrivateSpaceSetLockFragment extends InstrumentedFragment {
|
||||
.setText(R.string.private_space_set_lock_label)
|
||||
.setListener(onClickNewLock())
|
||||
.setButtonType(FooterButton.ButtonType.NEXT)
|
||||
.setTheme(
|
||||
androidx.appcompat.R.style
|
||||
.Base_TextAppearance_AppCompat_Widget_Button)
|
||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
|
||||
.build());
|
||||
OnBackPressedCallback callback =
|
||||
new OnBackPressedCallback(true /* enabled by default */) {
|
||||
@@ -97,10 +95,8 @@ public class PrivateSpaceSetLockFragment extends InstrumentedFragment {
|
||||
mMetricsFeatureProvider.action(
|
||||
getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_USE_SCREEN_LOCK);
|
||||
// Simply Use default screen lock. No need to handle
|
||||
mMetricsFeatureProvider.action(
|
||||
getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_START);
|
||||
Log.d(TAG, "Use device lock for private profile");
|
||||
launchActivityForAction(ACCOUNT_LOGIN_ACTION);
|
||||
NavHostFragment.findNavController(PrivateSpaceSetLockFragment.this)
|
||||
.navigate(R.id.action_lock_success_fragment);
|
||||
};
|
||||
}
|
||||
|
||||
|
@@ -19,8 +19,6 @@ package com.android.settings.privatespace;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
@@ -61,23 +59,12 @@ public class PrivateSpaceSetupActivity extends FragmentActivity {
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
if (requestCode == SET_LOCK_ACTION && resultCode == RESULT_OK) {
|
||||
/* Start new activity in private profile to add an account to private profile */
|
||||
UserHandle userHandle =
|
||||
PrivateSpaceMaintainer.getInstance(this).getPrivateProfileHandle();
|
||||
if (userHandle != null) {
|
||||
Intent intent = new Intent(this, PrivateProfileContextHelperActivity.class);
|
||||
intent.putExtra(EXTRA_ACTION_TYPE, ACCOUNT_LOGIN_ACTION);
|
||||
mMetricsFeatureProvider.action(
|
||||
this, SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_START);
|
||||
startActivityForResultAsUser(intent, ACCOUNT_LOGIN_ACTION, userHandle);
|
||||
} else {
|
||||
Log.w(TAG, "Private profile user handle is null");
|
||||
}
|
||||
mNavHostFragment.getNavController().navigate(R.id.action_success_fragment);
|
||||
} else if (requestCode == ACCOUNT_LOGIN_ACTION) {
|
||||
if (resultCode == RESULT_OK) {
|
||||
mMetricsFeatureProvider.action(
|
||||
this, SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_SUCCESS, true);
|
||||
mNavHostFragment.getNavController().navigate(R.id.action_success_fragment);
|
||||
mNavHostFragment.getNavController().navigate(R.id.action_account_lock_fragment);
|
||||
} else {
|
||||
mMetricsFeatureProvider.action(
|
||||
this,
|
||||
|
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
/** Tests for {@link ArrowPreference} */
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class ArrowPreferenceTest {
|
||||
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
private ArrowPreference mPreference;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mPreference = new ArrowPreference(mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void construct_withArrow() {
|
||||
assertThat(mPreference.getWidgetLayoutResource()).isEqualTo(
|
||||
R.layout.preference_widget_arrow);
|
||||
}
|
||||
}
|
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
/** Tests for {@link BackgroundPreference} */
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class BackgroundPreferenceTest {
|
||||
|
||||
@Rule
|
||||
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
|
||||
private View mRootView = new View(mContext);
|
||||
@Spy
|
||||
private PreferenceViewHolder mViewHolder = PreferenceViewHolder.createInstanceForTests(
|
||||
mRootView);
|
||||
@Spy
|
||||
private LinearLayout mLinearLayout = new LinearLayout(mContext);
|
||||
private BackgroundPreference mPreference;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mPreference = new BackgroundPreference(mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setBackground_success() {
|
||||
doReturn(mLinearLayout).when(mViewHolder).findViewById(R.id.background);
|
||||
|
||||
mPreference.setBackground(android.R.drawable.screen_background_dark);
|
||||
mPreference.onBindViewHolder(mViewHolder);
|
||||
|
||||
verify(mLinearLayout).setBackground(any());
|
||||
}
|
||||
}
|
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.UiModeManager;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.XmlTestUtils;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** Tests for {@link ColorContrastFragment}. */
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class ColorContrastFragmentTest {
|
||||
|
||||
private ColorContrastFragment mFragment;
|
||||
private Context mContext;
|
||||
@Mock
|
||||
private UiModeManager mUiService;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mFragment = spy(new ColorContrastFragment());
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mFragment.getContext()).thenReturn(mContext);
|
||||
when(mContext.getSystemService(UiModeManager.class)).thenReturn(mUiService);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getMetricsCategory_returnsCorrectCategory() {
|
||||
assertThat(mFragment.getMetricsCategory()).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPreferenceScreenResId_returnsCorrectXml() {
|
||||
assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(
|
||||
R.xml.accessibility_color_contrast);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getLogTag_returnsCorrectTag() {
|
||||
assertThat(mFragment.getLogTag()).isEqualTo("ColorContrastFragment");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNonIndexableKeys_existInXmlLayout() {
|
||||
final List<String> niks =
|
||||
ShortcutsSettingsFragment.SEARCH_INDEX_DATA_PROVIDER
|
||||
.getNonIndexableKeys(mContext);
|
||||
final List<String> keys =
|
||||
XmlTestUtils.getKeysFromPreferenceXml(mContext,
|
||||
R.xml.accessibility_color_contrast);
|
||||
assertThat(keys).containsAtLeastElementsIn(niks);
|
||||
}
|
||||
}
|
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.platform.test.flag.junit.CheckFlagsRule;
|
||||
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
||||
import android.platform.test.flag.junit.SetFlagsRule;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
/** Tests for {@link ContrastPreferenceController}. */
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class ContrastPreferenceControllerTest {
|
||||
|
||||
@Rule
|
||||
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
|
||||
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||
|
||||
private static final String PREFERENCE_KEY = "preference_key";
|
||||
|
||||
private Context mContext;
|
||||
private ContrastPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mController = new ContrastPreferenceController(mContext, PREFERENCE_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_flagsEnabled_shouldReturnAvailable() {
|
||||
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_COLOR_CONTRAST_CONTROL);
|
||||
|
||||
assertThat(mController.getAvailabilityStatus())
|
||||
.isEqualTo(BasePreferenceController.AVAILABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_flagsDisabled_shouldReturnUnsupported() {
|
||||
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_COLOR_CONTRAST_CONTROL);
|
||||
|
||||
assertThat(mController.getAvailabilityStatus())
|
||||
.isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
|
||||
}
|
||||
}
|
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.UiModeManager;
|
||||
import android.content.Context;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.widget.LayoutPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/** Tests for {@link ContrastSelectorPreferenceController}. */
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class ContrastSelectorPreferenceControllerTest {
|
||||
|
||||
private static final String PREFERENCE_KEY = "color_contrast_selector";
|
||||
|
||||
@Mock
|
||||
private UiModeManager mUiService;
|
||||
@Mock
|
||||
private Executor mExecutor;
|
||||
@Mock
|
||||
private PreferenceScreen mScreen;
|
||||
@Mock
|
||||
private FrameLayout mFrameLayout;
|
||||
@Mock
|
||||
private LayoutPreference mLayoutPreference;
|
||||
private Context mContext;
|
||||
private ContrastSelectorPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getMainExecutor()).thenReturn(mExecutor);
|
||||
when(mContext.getSystemService(UiModeManager.class)).thenReturn(mUiService);
|
||||
mController = new ContrastSelectorPreferenceController(mContext, PREFERENCE_KEY);
|
||||
when(mScreen.findPreference(PREFERENCE_KEY)).thenReturn(mLayoutPreference);
|
||||
when(mLayoutPreference.findViewById(anyInt())).thenReturn(mFrameLayout);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_byDefault_shouldReturnAvailable() {
|
||||
assertThat(mController.getAvailabilityStatus())
|
||||
.isEqualTo(BasePreferenceController.AVAILABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStart_shouldAddContrastListener() {
|
||||
mController.displayPreference(mScreen);
|
||||
mController.onStart();
|
||||
|
||||
verify(mUiService).addContrastChangeListener(mExecutor, mController);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_shouldRemoveContrastListener() {
|
||||
mController.displayPreference(mScreen);
|
||||
mController.onStart();
|
||||
mController.onStop();
|
||||
|
||||
verify(mUiService).removeContrastChangeListener(mController);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_shouldAddClickListener() {
|
||||
mController.displayPreference(mScreen);
|
||||
|
||||
verify(mFrameLayout, times(3)).setOnClickListener(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onContrastChanged_buttonShouldBeSelected() {
|
||||
mController.displayPreference(mScreen);
|
||||
mController.onContrastChanged(1);
|
||||
|
||||
verify(mFrameLayout, times(2)).setSelected(true);
|
||||
}
|
||||
}
|
@@ -549,6 +549,7 @@ public class EditShortcutsPreferenceFragmentTest {
|
||||
ComponentName componentName, String label) {
|
||||
AccessibilityTarget target = mock(AccessibilityTarget.class);
|
||||
when(target.getComponentName()).thenReturn(componentName);
|
||||
when(target.getId()).thenReturn(componentName.flattenToString());
|
||||
when(target.getLabel()).thenReturn(label);
|
||||
return target;
|
||||
}
|
||||
|
@@ -41,12 +41,12 @@ import android.util.Pair;
|
||||
|
||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.flags.Flags;
|
||||
import com.android.settings.testutils.shadow.ShadowAudioManager;
|
||||
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
||||
import com.android.settings.testutils.shadow.ShadowCachedBluetoothDeviceManager;
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.flags.Flags;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
|
@@ -40,12 +40,12 @@ import android.util.Pair;
|
||||
|
||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.flags.Flags;
|
||||
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||
import com.android.settingslib.flags.Flags;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
|
@@ -33,6 +33,7 @@ import com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE
|
||||
import com.android.settings.datausage.DataUsageUtils
|
||||
import com.android.settings.datausage.lib.DataUsageLib
|
||||
import com.android.settings.datausage.lib.NetworkCycleDataRepository
|
||||
import com.android.settings.datausage.lib.NetworkStatsRepository.Companion.AllTimeRange
|
||||
import com.android.settings.datausage.lib.NetworkUsageData
|
||||
import com.android.settingslib.spa.testutils.waitUntil
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
@@ -140,11 +141,14 @@ class DataUsagePreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun updateState_noUsageData_shouldEnablePreference() = runBlocking {
|
||||
fun updateState_noFistCycleUsageButOtherUsage_shouldEnablePreference() = runBlocking {
|
||||
val usageData = NetworkUsageData(START_TIME, END_TIME, 0L)
|
||||
repository.stub {
|
||||
on { loadFirstCycle() } doReturn usageData
|
||||
on { queryUsage(AllTimeRange) } doReturn
|
||||
NetworkUsageData(AllTimeRange.lower, AllTimeRange.upper, 1L)
|
||||
}
|
||||
preference.isEnabled = false
|
||||
|
||||
controller.onViewCreated(TestLifecycleOwner())
|
||||
|
||||
@@ -152,6 +156,22 @@ class DataUsagePreferenceControllerTest {
|
||||
waitUntil { preference.summary?.contains("0 B used") == true }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun updateState_noDataUsage_shouldDisablePreference() = runBlocking {
|
||||
val usageData = NetworkUsageData(START_TIME, END_TIME, 0L)
|
||||
repository.stub {
|
||||
on { loadFirstCycle() } doReturn usageData
|
||||
on { queryUsage(AllTimeRange) } doReturn
|
||||
NetworkUsageData(AllTimeRange.lower, AllTimeRange.upper, 0L)
|
||||
}
|
||||
preference.isEnabled = true
|
||||
|
||||
controller.onViewCreated(TestLifecycleOwner())
|
||||
|
||||
waitUntil { !preference.isEnabled }
|
||||
waitUntil { preference.summary?.contains("0 B used") == true }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun updateState_shouldUseIecUnit() = runBlocking {
|
||||
val usageData = NetworkUsageData(START_TIME, END_TIME, DataUnit.MEBIBYTES.toBytes(1))
|
||||
|
Reference in New Issue
Block a user