diff options
author | Amith Yamasani <yamasani@google.com> | 2014-07-17 19:13:51 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2014-07-17 20:22:08 -0700 |
commit | c16b73e92b9cb776569b32e8dd616b1c46da9591 (patch) | |
tree | 54b5615b1a217a40c2d72c46e0ab05da6f74f779 | |
parent | c42d4059b59848bef7bea550522e29d4ef95e18b (diff) | |
download | packages_apps_Settings-c16b73e92b9cb776569b32e8dd616b1c46da9591.zip packages_apps_Settings-c16b73e92b9cb776569b32e8dd616b1c46da9591.tar.gz packages_apps_Settings-c16b73e92b9cb776569b32e8dd616b1c46da9591.tar.bz2 |
Improvements to user settings
Exiting guest mode from within guest user.
Updated assets and cleaned up/optimized some asset clipping code.
Bug: 15761851
Bug: 16355550
Change-Id: I431e92bac3cbedd46bd1e33cffc4d9f0c576ca69
65 files changed, 362 insertions, 18 deletions
diff --git a/res/drawable-hdpi/avatar_default_1.png b/res/drawable-hdpi/avatar_default_1.png Binary files differdeleted file mode 100644 index 39ffd73..0000000 --- a/res/drawable-hdpi/avatar_default_1.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_2.png b/res/drawable-hdpi/avatar_default_2.png Binary files differdeleted file mode 100644 index 79203c5..0000000 --- a/res/drawable-hdpi/avatar_default_2.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_3.png b/res/drawable-hdpi/avatar_default_3.png Binary files differdeleted file mode 100644 index 4d179b3..0000000 --- a/res/drawable-hdpi/avatar_default_3.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_4.png b/res/drawable-hdpi/avatar_default_4.png Binary files differdeleted file mode 100644 index 1a0332f..0000000 --- a/res/drawable-hdpi/avatar_default_4.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_5.png b/res/drawable-hdpi/avatar_default_5.png Binary files differdeleted file mode 100644 index 2487e66..0000000 --- a/res/drawable-hdpi/avatar_default_5.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_6.png b/res/drawable-hdpi/avatar_default_6.png Binary files differdeleted file mode 100644 index f57e1eb..0000000 --- a/res/drawable-hdpi/avatar_default_6.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_7.png b/res/drawable-hdpi/avatar_default_7.png Binary files differdeleted file mode 100644 index dc4b2ce..0000000 --- a/res/drawable-hdpi/avatar_default_7.png +++ /dev/null diff --git a/res/drawable-hdpi/avatar_default_8.png b/res/drawable-hdpi/avatar_default_8.png Binary files differdeleted file mode 100644 index 64e7936..0000000 --- a/res/drawable-hdpi/avatar_default_8.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_person_white.png b/res/drawable-hdpi/ic_person_white.png Binary files differnew file mode 100644 index 0000000..009524a --- /dev/null +++ b/res/drawable-hdpi/ic_person_white.png diff --git a/res/drawable-ldrtl-hdpi/avatar_default_1.png b/res/drawable-ldrtl-hdpi/avatar_default_1.png Binary files differdeleted file mode 100644 index 4ebe7fe..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_1.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_2.png b/res/drawable-ldrtl-hdpi/avatar_default_2.png Binary files differdeleted file mode 100644 index 524e556..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_2.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_3.png b/res/drawable-ldrtl-hdpi/avatar_default_3.png Binary files differdeleted file mode 100644 index ea0d69d..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_3.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_4.png b/res/drawable-ldrtl-hdpi/avatar_default_4.png Binary files differdeleted file mode 100644 index 7387835..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_4.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_5.png b/res/drawable-ldrtl-hdpi/avatar_default_5.png Binary files differdeleted file mode 100644 index 0bb455c..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_5.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_6.png b/res/drawable-ldrtl-hdpi/avatar_default_6.png Binary files differdeleted file mode 100644 index fa42704..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_6.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_7.png b/res/drawable-ldrtl-hdpi/avatar_default_7.png Binary files differdeleted file mode 100644 index 79c0fb7..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_7.png +++ /dev/null diff --git a/res/drawable-ldrtl-hdpi/avatar_default_8.png b/res/drawable-ldrtl-hdpi/avatar_default_8.png Binary files differdeleted file mode 100644 index a254b84..0000000 --- a/res/drawable-ldrtl-hdpi/avatar_default_8.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_1.png b/res/drawable-ldrtl-mdpi/avatar_default_1.png Binary files differdeleted file mode 100644 index 2b2c00c..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_1.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_2.png b/res/drawable-ldrtl-mdpi/avatar_default_2.png Binary files differdeleted file mode 100644 index fa05e11..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_2.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_3.png b/res/drawable-ldrtl-mdpi/avatar_default_3.png Binary files differdeleted file mode 100644 index 91c7d5a..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_3.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_4.png b/res/drawable-ldrtl-mdpi/avatar_default_4.png Binary files differdeleted file mode 100644 index 4638ac2..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_4.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_5.png b/res/drawable-ldrtl-mdpi/avatar_default_5.png Binary files differdeleted file mode 100644 index 6d84a15..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_5.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_6.png b/res/drawable-ldrtl-mdpi/avatar_default_6.png Binary files differdeleted file mode 100644 index c62ea5b..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_6.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_7.png b/res/drawable-ldrtl-mdpi/avatar_default_7.png Binary files differdeleted file mode 100644 index fe0cbfe..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_7.png +++ /dev/null diff --git a/res/drawable-ldrtl-mdpi/avatar_default_8.png b/res/drawable-ldrtl-mdpi/avatar_default_8.png Binary files differdeleted file mode 100644 index 424ba3d..0000000 --- a/res/drawable-ldrtl-mdpi/avatar_default_8.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_1.png b/res/drawable-ldrtl-xhdpi/avatar_default_1.png Binary files differdeleted file mode 100644 index 1fdbd46..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_1.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_2.png b/res/drawable-ldrtl-xhdpi/avatar_default_2.png Binary files differdeleted file mode 100644 index 9d3d693..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_2.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_3.png b/res/drawable-ldrtl-xhdpi/avatar_default_3.png Binary files differdeleted file mode 100644 index 3778914..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_3.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_4.png b/res/drawable-ldrtl-xhdpi/avatar_default_4.png Binary files differdeleted file mode 100644 index a25b4f8..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_4.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_5.png b/res/drawable-ldrtl-xhdpi/avatar_default_5.png Binary files differdeleted file mode 100644 index 2840f22..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_5.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_6.png b/res/drawable-ldrtl-xhdpi/avatar_default_6.png Binary files differdeleted file mode 100644 index d438170..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_6.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_7.png b/res/drawable-ldrtl-xhdpi/avatar_default_7.png Binary files differdeleted file mode 100644 index b155d9e..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_7.png +++ /dev/null diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_8.png b/res/drawable-ldrtl-xhdpi/avatar_default_8.png Binary files differdeleted file mode 100644 index a17e3a4..0000000 --- a/res/drawable-ldrtl-xhdpi/avatar_default_8.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_1.png b/res/drawable-mdpi/avatar_default_1.png Binary files differdeleted file mode 100644 index 0d8e3a2..0000000 --- a/res/drawable-mdpi/avatar_default_1.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_2.png b/res/drawable-mdpi/avatar_default_2.png Binary files differdeleted file mode 100644 index 0cc4c3d..0000000 --- a/res/drawable-mdpi/avatar_default_2.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_3.png b/res/drawable-mdpi/avatar_default_3.png Binary files differdeleted file mode 100644 index c43ad6f..0000000 --- a/res/drawable-mdpi/avatar_default_3.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_4.png b/res/drawable-mdpi/avatar_default_4.png Binary files differdeleted file mode 100644 index 6906489..0000000 --- a/res/drawable-mdpi/avatar_default_4.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_5.png b/res/drawable-mdpi/avatar_default_5.png Binary files differdeleted file mode 100644 index 857f277..0000000 --- a/res/drawable-mdpi/avatar_default_5.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_6.png b/res/drawable-mdpi/avatar_default_6.png Binary files differdeleted file mode 100644 index 9d0f968..0000000 --- a/res/drawable-mdpi/avatar_default_6.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_7.png b/res/drawable-mdpi/avatar_default_7.png Binary files differdeleted file mode 100644 index 7db8864..0000000 --- a/res/drawable-mdpi/avatar_default_7.png +++ /dev/null diff --git a/res/drawable-mdpi/avatar_default_8.png b/res/drawable-mdpi/avatar_default_8.png Binary files differdeleted file mode 100644 index 98d67d9..0000000 --- a/res/drawable-mdpi/avatar_default_8.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_person_white.png b/res/drawable-mdpi/ic_person_white.png Binary files differnew file mode 100644 index 0000000..563f1d1 --- /dev/null +++ b/res/drawable-mdpi/ic_person_white.png diff --git a/res/drawable-xhdpi/avatar_default_1.png b/res/drawable-xhdpi/avatar_default_1.png Binary files differdeleted file mode 100644 index 6caa06a..0000000 --- a/res/drawable-xhdpi/avatar_default_1.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_2.png b/res/drawable-xhdpi/avatar_default_2.png Binary files differdeleted file mode 100644 index faf3b15..0000000 --- a/res/drawable-xhdpi/avatar_default_2.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_3.png b/res/drawable-xhdpi/avatar_default_3.png Binary files differdeleted file mode 100644 index 63a80ff..0000000 --- a/res/drawable-xhdpi/avatar_default_3.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_4.png b/res/drawable-xhdpi/avatar_default_4.png Binary files differdeleted file mode 100644 index d743dc6..0000000 --- a/res/drawable-xhdpi/avatar_default_4.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_5.png b/res/drawable-xhdpi/avatar_default_5.png Binary files differdeleted file mode 100644 index b7b822b..0000000 --- a/res/drawable-xhdpi/avatar_default_5.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_6.png b/res/drawable-xhdpi/avatar_default_6.png Binary files differdeleted file mode 100644 index f5b5e84..0000000 --- a/res/drawable-xhdpi/avatar_default_6.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_7.png b/res/drawable-xhdpi/avatar_default_7.png Binary files differdeleted file mode 100644 index 4271c0d..0000000 --- a/res/drawable-xhdpi/avatar_default_7.png +++ /dev/null diff --git a/res/drawable-xhdpi/avatar_default_8.png b/res/drawable-xhdpi/avatar_default_8.png Binary files differdeleted file mode 100644 index 27261a5..0000000 --- a/res/drawable-xhdpi/avatar_default_8.png +++ /dev/null diff --git a/res/drawable-xhdpi/ic_person_white.png b/res/drawable-xhdpi/ic_person_white.png Binary files differnew file mode 100644 index 0000000..0200ece --- /dev/null +++ b/res/drawable-xhdpi/ic_person_white.png diff --git a/res/drawable-xxhdpi/ic_person_white.png b/res/drawable-xxhdpi/ic_person_white.png Binary files differnew file mode 100644 index 0000000..6a6f033 --- /dev/null +++ b/res/drawable-xxhdpi/ic_person_white.png diff --git a/res/drawable-xxxhdpi/ic_person_white.png b/res/drawable-xxxhdpi/ic_person_white.png Binary files differnew file mode 100644 index 0000000..9092553 --- /dev/null +++ b/res/drawable-xxxhdpi/ic_person_white.png diff --git a/res/drawable/ic_avatar_default_1.xml b/res/drawable/ic_avatar_default_1.xml new file mode 100644 index 0000000..edd919a --- /dev/null +++ b/res/drawable/ic_avatar_default_1.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/pink_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_2.xml b/res/drawable/ic_avatar_default_2.xml new file mode 100644 index 0000000..77918a0 --- /dev/null +++ b/res/drawable/ic_avatar_default_2.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/indigo_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_3.xml b/res/drawable/ic_avatar_default_3.xml new file mode 100644 index 0000000..49fd6c4 --- /dev/null +++ b/res/drawable/ic_avatar_default_3.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/blue_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_4.xml b/res/drawable/ic_avatar_default_4.xml new file mode 100644 index 0000000..6992f90 --- /dev/null +++ b/res/drawable/ic_avatar_default_4.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/teal_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_5.xml b/res/drawable/ic_avatar_default_5.xml new file mode 100644 index 0000000..2aa0db2 --- /dev/null +++ b/res/drawable/ic_avatar_default_5.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/green_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_6.xml b/res/drawable/ic_avatar_default_6.xml new file mode 100644 index 0000000..7f9bb32 --- /dev/null +++ b/res/drawable/ic_avatar_default_6.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/light_green_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_7.xml b/res/drawable/ic_avatar_default_7.xml new file mode 100644 index 0000000..1c1c5f3 --- /dev/null +++ b/res/drawable/ic_avatar_default_7.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/orange_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_default_8.xml b/res/drawable/ic_avatar_default_8.xml new file mode 100644 index 0000000..478454e --- /dev/null +++ b/res/drawable/ic_avatar_default_8.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/deep_orange_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/drawable/ic_avatar_guest.xml b/res/drawable/ic_avatar_guest.xml new file mode 100644 index 0000000..f81fe89 --- /dev/null +++ b/res/drawable/ic_avatar_guest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="oval"> + <size android:width="40dp" android:height="40dp" /> + <solid android:color="@color/grey_500" /> + </shape> + </item> + <item android:top="8dp" android:bottom="8dp" android:left="8dp" android:right="8dp" + android:drawable="@drawable/ic_person_white" /> +</layer-list> + diff --git a/res/values/colors.xml b/res/values/colors.xml index b523801..ee9c4c4 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -67,4 +67,17 @@ <color name="default_preference_background_color">@android:color/white</color> <color name="preference_list_fragment_background_color">@color/default_preference_background_color</color> <color name="search_panel_list_background_color">@color/default_preference_background_color</color> + + <!-- Default avatar colors --> + <color name="pink_500">#ffe91e63</color> + <color name="indigo_500">#ff3f51b5</color> + <color name="blue_500">@*android:color/material_blue_500</color> + <color name="teal_500">@*android:color/material_teal_500</color> + <color name="green_500">@*android:color/material_green_500</color> + <color name="light_green_500">#ff8bc34a</color> + <color name="orange_500">@*android:color/material_orange_500</color> + <color name="deep_orange_500">@*android:color/material_deep_orange_500</color> + <!-- Avatar color used for guest --> + <color name="grey_500">@*android:color/material_grey_500</color> + </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index ec4e13c..d938772 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5171,6 +5171,12 @@ <string name="user_delete_button">Delete</string> <!-- Title for Guest user [CHAR LIMIT=35] --> <string name="user_guest">Guest</string> + <!-- Label for item to exit guest mode [CHAR LIMIT=35] --> + <string name="user_exit_guest_title">Exit guest</string> + <!-- Title of dialog to user to confirm exiting guest. [CHAR LIMIT=50] --> + <string name="user_exit_guest_confirm_title">Exiting guest session?</string> + <!-- Message to user to confirm exiting guest. [CHAR LIMIT=none] --> + <string name="user_exit_guest_confirm_message">Ending the guest session will remove local data.</string> <!-- Title of preference to enable calling[CHAR LIMIT=35] --> <string name="user_enable_calling">Enable phone calls?</string> diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 2d58327..e8c99ad 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -37,6 +37,7 @@ import android.content.pm.UserInfo; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; @@ -93,6 +94,7 @@ public class UserSettings extends SettingsPreferenceFragment private static final int DIALOG_USER_CANNOT_MANAGE = 5; private static final int DIALOG_CHOOSE_USER_TYPE = 6; private static final int DIALOG_NEED_LOCKSCREEN = 7; + private static final int DIALOG_CONFIRM_EXIT_GUEST = 8; private static final int MESSAGE_UPDATE_LIST = 1; private static final int MESSAGE_SETUP_USER = 2; @@ -107,16 +109,18 @@ public class UserSettings extends SettingsPreferenceFragment "key_add_user_long_message_displayed"; static final int[] USER_DRAWABLES = { - R.drawable.avatar_default_1, - R.drawable.avatar_default_2, - R.drawable.avatar_default_3, - R.drawable.avatar_default_4, - R.drawable.avatar_default_5, - R.drawable.avatar_default_6, - R.drawable.avatar_default_7, - R.drawable.avatar_default_8 + R.drawable.ic_avatar_default_1, + R.drawable.ic_avatar_default_2, + R.drawable.ic_avatar_default_3, + R.drawable.ic_avatar_default_4, + R.drawable.ic_avatar_default_5, + R.drawable.ic_avatar_default_6, + R.drawable.ic_avatar_default_7, + R.drawable.ic_avatar_default_8 }; + private static final int GUEST_DRAWABLE_ID = R.drawable.ic_avatar_guest; + private static final String KEY_TITLE = "title"; private static final String KEY_SUMMARY = "summary"; @@ -137,6 +141,11 @@ public class UserSettings extends SettingsPreferenceFragment private boolean mIsOwner = UserHandle.myUserId() == UserHandle.USER_OWNER; private boolean mIsGuest; + // A place to cache the generated guest avatar + private Drawable mGuestDrawable; + // A place to cache the generated default avatar + private Drawable mDefaultAvatarDrawable; + private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -195,8 +204,9 @@ public class UserSettings extends SettingsPreferenceFragment addPreferencesFromResource(R.xml.user_settings); mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST); - mMePreference = new UserPreference(context, null, myUserId, - mUserManager.isLinkedUser() ? null : this, null); + mMePreference = new UserPreference(context, null /* attrs */, myUserId, + mUserManager.isLinkedUser() || mIsGuest ? null : this /* settings icon handler */, + null /* delete icon handler */); mMePreference.setKey(KEY_USER_ME); mMePreference.setOnPreferenceClickListener(this); if (mIsOwner) { @@ -275,8 +285,18 @@ public class UserSettings extends SettingsPreferenceFragment } } + /** + * Loads profile information for the current user. + */ private void loadProfile() { mProfileExists = false; + if (mIsGuest) { + // No need to load profile information + mMePreference.setIcon(getEncircledGuestDrawable()); + mMePreference.setTitle(R.string.user_exit_guest_title); + return; + } + new AsyncTask<Void, Void, String>() { @Override protected void onPostExecute(String result) { @@ -370,9 +390,8 @@ public class UserSettings extends SettingsPreferenceFragment mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, true, user); Secure.putIntForUser(getContentResolver(), Secure.LOCATION_MODE, Secure.LOCATION_MODE_OFF, userId); - Bitmap bitmap = BitmapFactory.decodeResource(getResources(), - UserSettings.USER_DRAWABLES[ - userId % UserSettings.USER_DRAWABLES.length]); + Bitmap bitmap = createBitmapFromDrawable( + USER_DRAWABLES[userId % UserSettings.USER_DRAWABLES.length]); mUserManager.setUserIcon(userId, bitmap); // Add shared accounts AccountManager am = AccountManager.get(getActivity()); @@ -385,6 +404,15 @@ public class UserSettings extends SettingsPreferenceFragment return newUserInfo; } + private Bitmap createBitmapFromDrawable(int resId) { + Drawable icon = getResources().getDrawable(resId); + icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); + Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(), + Bitmap.Config.ARGB_8888); + icon.draw(new Canvas(bitmap)); + return bitmap; + } + private UserInfo createTrustedUser() { UserInfo newUserInfo = mUserManager.createUser( getResources().getString(R.string.user_new_user_name), 0); @@ -567,6 +595,21 @@ public class UserSettings extends SettingsPreferenceFragment .create(); return dlg; } + case DIALOG_CONFIRM_EXIT_GUEST: { + Dialog dlg = new AlertDialog.Builder(context) + .setTitle(R.string.user_exit_guest_confirm_title) + .setMessage(R.string.user_exit_guest_confirm_message) + .setPositiveButton(android.R.string.yes, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + exitGuest(); + } + }) + .setNegativeButton(android.R.string.no, null) + .create(); + return dlg; + } default: return null; } @@ -634,6 +677,17 @@ public class UserSettings extends SettingsPreferenceFragment } } + /** + * Erase the current user (guest) and switch to another user. + */ + private void exitGuest() { + // Just to be safe + if (!mIsGuest) { + return; + } + removeThisUser(); + } + private void updateUserList() { if (getActivity() == null) return; List<UserInfo> users = mUserManager.getUsers(true); @@ -695,7 +749,7 @@ public class UserSettings extends SettingsPreferenceFragment if (user.iconPath != null) { if (mUserIcons.get(user.id) == null) { missingIcons.add(user.id); - pref.setIcon(encircle(R.drawable.avatar_default_1)); + pref.setIcon(getEncircledDefaultAvatar()); } else { setPhotoId(pref, user); } @@ -707,7 +761,7 @@ public class UserSettings extends SettingsPreferenceFragment null, null); pref.setEnabled(false); pref.setTitle(R.string.user_new_user_name); - pref.setIcon(encircle(R.drawable.avatar_default_1)); + pref.setIcon(getEncircledDefaultAvatar()); mUserListCategory.addPreference(pref); } @@ -716,7 +770,7 @@ public class UserSettings extends SettingsPreferenceFragment Preference pref = new UserPreference(getActivity(), null, UserPreference.USERID_GUEST_DEFAULTS, mIsOwner ? this : null, null); pref.setTitle(R.string.user_guest); - pref.setIcon(encircle(R.drawable.ic_settings_accounts)); + pref.setIcon(getEncircledGuestDrawable()); pref.setOnPreferenceClickListener(this); mUserListCategory.addPreference(pref); } @@ -765,11 +819,26 @@ public class UserSettings extends SettingsPreferenceFragment } private void assignDefaultPhoto(UserInfo user) { - Bitmap bitmap = BitmapFactory.decodeResource(getResources(), - USER_DRAWABLES[user.id % USER_DRAWABLES.length]); + Bitmap bitmap = createBitmapFromDrawable( + USER_DRAWABLES[user.id % UserSettings.USER_DRAWABLES.length]); mUserManager.setUserIcon(user.id, bitmap); } + private Drawable getEncircledGuestDrawable() { + if (mGuestDrawable == null) { + mGuestDrawable = encircle(createBitmapFromDrawable(GUEST_DRAWABLE_ID)); + } + return mGuestDrawable; + } + + private Drawable getEncircledDefaultAvatar() { + if (mDefaultAvatarDrawable == null) { + mDefaultAvatarDrawable = + encircle(createBitmapFromDrawable(R.drawable.ic_avatar_default_1)); + } + return mDefaultAvatarDrawable; + } + private void setPhotoId(Preference pref, UserInfo user) { Bitmap bitmap = mUserIcons.get(user.id); if (bitmap != null) { @@ -786,6 +855,10 @@ public class UserSettings extends SettingsPreferenceFragment @Override public boolean onPreferenceClick(Preference pref) { if (pref == mMePreference) { + if (mIsGuest) { + showDialog(DIALOG_CONFIRM_EXIT_GUEST); + return true; + } Intent editProfile; if (!mProfileExists) { editProfile = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI); |