diff options
Diffstat (limited to 'packages')
101 files changed, 1126 insertions, 764 deletions
diff --git a/packages/Keyguard/res/drawable-hdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-hdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..3819029 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_alarm.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_alarm.png Binary files differdeleted file mode 100644 index d7a8cfc..0000000 --- a/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_alarm.png +++ /dev/null diff --git a/packages/Keyguard/res/drawable-mdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-mdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..2aeedaf --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_alarm.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_alarm.png Binary files differdeleted file mode 100644 index 330ade1..0000000 --- a/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_alarm.png +++ /dev/null diff --git a/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..e28b3f6 --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..f727d01 --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..d9c0623 --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-sw600dp-xxhdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-sw600dp-xxhdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..a36bf1f --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-xxhdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-xhdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..0290bdc --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_alarm.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_alarm.png Binary files differdeleted file mode 100644 index e6cceef..0000000 --- a/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_alarm.png +++ /dev/null diff --git a/packages/Keyguard/res/drawable-xxhdpi/ic_alarm_small.png b/packages/Keyguard/res/drawable-xxhdpi/ic_alarm_small.png Binary files differnew file mode 100644 index 0000000..66968e8 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/ic_alarm_small.png diff --git a/packages/Keyguard/res/layout-land/keyguard_status_area.xml b/packages/Keyguard/res/layout-land/keyguard_status_area.xml deleted file mode 100644 index d450c5c..0000000 --- a/packages/Keyguard/res/layout-land/keyguard_status_area.xml +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -** -** Copyright 2009, 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. -*/ ---> - -<!-- This is a view that shows general status information in Keyguard. --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/keyguard_status_area" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_marginTop="-16dp" - android:orientation="vertical"> - - <TextView - android:id="@+id/date" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:singleLine="true" - android:ellipsize="marquee" - android:textAppearance="?android:attr/textAppearanceMedium" - android:textSize="@dimen/kg_status_date_font_size" - android:textAllCaps="@bool/kg_use_all_caps" - /> - - <TextView - android:id="@+id/alarm_status" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_marginTop="28dp" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:singleLine="true" - android:ellipsize="marquee" - android:textAppearance="?android:attr/textAppearance" - android:textSize="@dimen/kg_status_line_font_size" - android:drawablePadding="4dip" - android:textAllCaps="@bool/kg_use_all_caps" - /> - -</LinearLayout>
\ No newline at end of file diff --git a/packages/Keyguard/res/layout-port/keyguard_status_area.xml b/packages/Keyguard/res/layout-port/keyguard_status_area.xml deleted file mode 100644 index af0d2e8..0000000 --- a/packages/Keyguard/res/layout-port/keyguard_status_area.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -** -** Copyright 2009, 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. -*/ ---> - -<!-- This is a view that shows general status information in Keyguard. --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/keyguard_status_area" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="right" - android:orientation="vertical"> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="0dp" - android:layout_gravity="right"> - <TextView - android:id="@+id/date" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:singleLine="true" - android:ellipsize="marquee" - android:textAppearance="?android:attr/textAppearanceMedium" - android:textSize="@dimen/kg_status_date_font_size" - android:textAllCaps="@bool/kg_use_all_caps" - /> - - <TextView - android:id="@+id/alarm_status" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:singleLine="true" - android:ellipsize="marquee" - android:textAppearance="?android:attr/textAppearance" - android:textSize="@dimen/kg_status_line_font_size" - android:drawablePadding="4dip" - android:textAllCaps="@bool/kg_use_all_caps" - /> - </LinearLayout> - -</LinearLayout> diff --git a/packages/Keyguard/res/layout/keyguard_status_area.xml b/packages/Keyguard/res/layout/keyguard_status_area.xml new file mode 100644 index 0000000..d1f3873 --- /dev/null +++ b/packages/Keyguard/res/layout/keyguard_status_area.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2013, 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. +*/ +--> + +<!-- This is a view that shows general status information in Keyguard. --> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center"> + <TextClock android:id="@+id/date_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@color/clock_white" + android:format12Hour="@string/abbrev_wday_month_day_no_year" + android:format24Hour="@string/abbrev_wday_month_day_no_year" + style="@style/widget_label" + android:gravity="center" + /> + <TextView android:id="@+id/alarm_status" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawablePadding="2dip" + android:drawableLeft="@drawable/ic_alarm_small" + android:drawableStart="@drawable/ic_alarm_small" + android:textColor="@color/clock_gray" + style="@style/widget_label" + android:layout_marginLeft="8dip" + android:layout_marginStart="8dip" + android:gravity="center" + android:visibility="gone" + /> +</LinearLayout> diff --git a/packages/Keyguard/res/layout/keyguard_status_view.xml b/packages/Keyguard/res/layout/keyguard_status_view.xml index 2304d9f..5857fc2 100644 --- a/packages/Keyguard/res/layout/keyguard_status_view.xml +++ b/packages/Keyguard/res/layout/keyguard_status_view.xml @@ -35,34 +35,26 @@ android:layout_height="match_parent" android:gravity="center_horizontal|top" android:contentDescription="@string/keyguard_accessibility_status"> - - <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal|top" - android:orientation="vertical" - android:focusable="true"> - <com.android.keyguard.ClockView + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|top" + android:orientation="vertical" + android:focusable="true"> + <TextClock android:id="@+id/clock_view" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:layout_gravity="right"> - - <TextView android:id="@+id/clock_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:singleLine="true" - android:ellipsize="none" - android:textSize="@dimen/kg_status_clock_font_size" - android:textAppearance="?android:attr/textAppearanceMedium" - android:textColor="#ffffffff" - android:drawablePadding="2dip" - /> - - </com.android.keyguard.ClockView> + android:layout_gravity="center_horizontal|top" + android:textColor="@color/clock_white" + android:singleLine="true" + style="@style/widget_big_thin" + android:format12Hour="@string/keyguard_widget_12_hours_format" + android:format24Hour="@string/keyguard_widget_24_hours_format" + android:baselineAligned="true" + android:layout_marginBottom="@dimen/bottom_text_spacing_digital" /> <include layout="@layout/keyguard_status_area" /> </LinearLayout> - </com.android.keyguard.KeyguardStatusView> </com.android.keyguard.KeyguardWidgetFrame> diff --git a/packages/Keyguard/res/layout/keyguard_transport_control_view.xml b/packages/Keyguard/res/layout/keyguard_transport_control_view.xml index 801999a..81c7425 100644 --- a/packages/Keyguard/res/layout/keyguard_transport_control_view.xml +++ b/packages/Keyguard/res/layout/keyguard_transport_control_view.xml @@ -22,34 +22,133 @@ android:gravity="center_horizontal" android:id="@+id/keyguard_transport_control"> - <!-- Use ImageView for its cropping features; otherwise could be android:background --> - <ImageView - android:id="@+id/albumart" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="fill" - android:scaleType="centerCrop" - android:adjustViewBounds="false" - android:contentDescription="@string/keygaurd_accessibility_media_controls" /> - - <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="bottom"> - <TextView - android:id="@+id/title" + android:layout_gravity="top" + android:gravity="center"> + <ImageView + android:id="@+id/badge" + android:layout_width="32dp" + android:layout_height="32dp" + android:scaleType="fitCenter" /> + <FrameLayout + android:id="@+id/info_container" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dip" - android:layout_marginStart="16dip" - android:layout_marginEnd="16dip" - android:gravity="center_horizontal" - android:singleLine="true" - android:ellipsize="end" - android:textAppearance="?android:attr/textAppearanceMedium" - /> + android:layout_height="wrap_content"> + <LinearLayout + android:id="@+id/metadata_container" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center"> + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="16dip" + android:layout_marginEnd="16dip" + android:gravity="center_horizontal" + android:singleLine="true" + android:ellipsize="marquee" + android:textAppearance="?android:attr/textAppearanceLarge" + android:fontFamily="sans-serif-light" /> + <TextView + android:id="@+id/artist_album" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="16dip" + android:layout_marginEnd="16dip" + android:gravity="center_horizontal" + android:singleLine="true" + android:ellipsize="marquee" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="?android:attr/textColorSecondary" /> + </LinearLayout> + <RelativeLayout + android:id="@+id/transient_seek" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:visibility="invisible"> + <SeekBar + android:id="@+id/transient_seek_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + <TextView + android:id="@+id/transient_seek_time_elapsed" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentStart="true" + android:layout_below="@id/transient_seek_bar" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textSize="12dp" /> + <TextView + android:id="@+id/transient_seek_time_remaining" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_below="@id/transient_seek_bar" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textSize="12dp" /> + </RelativeLayout> + <LinearLayout + android:id="@+id/transient_rating" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:visibility="invisible"> + <RatingBar + android:id="@+id/transient_rating_bar_stars" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + <LinearLayout + android:id="@+id/transient_rating_thumbs" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + <FrameLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1"> + <ImageButton + android:id="@+id/btn_thumbs_up" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:src="@drawable/ic_media_previous" + android:background="?android:attr/selectableItemBackground" + android:minWidth="48dp" + android:minHeight="48dp" + android:contentDescription="@string/keyguard_accessibility_transport_thumbs_up_description"/> + </FrameLayout> + <FrameLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1"> + <ImageButton + android:id="@+id/btn_thumbs_down" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:src="@drawable/ic_media_next" + android:background="?android:attr/selectableItemBackground" + android:minWidth="48dp" + android:minHeight="48dp" + android:contentDescription="@string/keyguard_accessibility_transport_thumbs_down_description"/> + </FrameLayout> + </LinearLayout> + <ToggleButton + android:id="@+id/transient_rating_heart" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="invisible" + android:minWidth="48dp" + android:minHeight="48dp" + android:contentDescription="@string/keyguard_accessibility_transport_heart_description" /> + </LinearLayout> + </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -59,45 +158,45 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"> - <ImageView + <ImageButton android:id="@+id/btn_prev" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/ic_media_previous" - android:clickable="true" android:background="?android:attr/selectableItemBackground" - android:padding="10dip" + android:minWidth="48dp" + android:minHeight="48dp" android:contentDescription="@string/keyguard_accessibility_transport_prev_description"/> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"> - <ImageView + <ImageButton android:id="@+id/btn_play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:clickable="true" android:src="@drawable/ic_media_play" android:background="?android:attr/selectableItemBackground" - android:padding="10dip" + android:minWidth="48dp" + android:minHeight="48dp" android:contentDescription="@string/keyguard_accessibility_transport_play_description"/> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"> - <ImageView + <ImageButton android:id="@+id/btn_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:clickable="true" android:src="@drawable/ic_media_next" android:background="?android:attr/selectableItemBackground" - android:padding="10dip" + android:minWidth="48dp" + android:minHeight="48dp" android:contentDescription="@string/keyguard_accessibility_transport_next_description"/> </FrameLayout> </LinearLayout> diff --git a/packages/Keyguard/res/layout/keyguard_widget_remove_drop_target.xml b/packages/Keyguard/res/layout/keyguard_widget_remove_drop_target.xml index 294c386..58b5b27 100644 --- a/packages/Keyguard/res/layout/keyguard_widget_remove_drop_target.xml +++ b/packages/Keyguard/res/layout/keyguard_widget_remove_drop_target.xml @@ -26,7 +26,7 @@ android:drawablePadding="4dp" android:text="@string/kg_reordering_delete_drop_target_text" android:textColor="#FFF" - android:textSize="13sp" + android:textSize="12dp" android:shadowColor="#000" android:shadowDy="1.0" android:shadowRadius="1.0" diff --git a/packages/Keyguard/res/values-land/dimens.xml b/packages/Keyguard/res/values-land/dimens.xml index 64e043c..bf30332 100644 --- a/packages/Keyguard/res/values-land/dimens.xml +++ b/packages/Keyguard/res/values-land/dimens.xml @@ -19,17 +19,6 @@ --> <resources> - <!-- Default height of a key in the password keyboard for alpha --> - <dimen name="password_keyboard_key_height_alpha">47dip</dimen> - <!-- Default height of a key in the password keyboard for numeric --> - <dimen name="password_keyboard_key_height_numeric">50dip</dimen> - <!-- Default correction for the space key in the password keyboard --> - <dimen name="password_keyboard_spacebar_vertical_correction">2dip</dimen> - <dimen name="preference_widget_width">72dp</dimen> - - <!-- Size of clock font in LockScreen on Unsecure unlock screen. --> - <dimen name="keyguard_lockscreen_clock_font_size">70sp</dimen> - <!-- Shift emergency button from the left edge by this amount. Used by landscape layout on phones --> <dimen name="kg_emergency_button_shift">30dp</dimen> diff --git a/packages/Keyguard/res/values-large/dimens.xml b/packages/Keyguard/res/values-large/dimens.xml index 8cd614d..0b5d4ad 100644 --- a/packages/Keyguard/res/values-large/dimens.xml +++ b/packages/Keyguard/res/values-large/dimens.xml @@ -17,13 +17,6 @@ */ --> <resources> - <!-- Default height of a key in the password keyboard for alpha --> - <dimen name="password_keyboard_key_height_alpha">75dip</dimen> - <!-- Default height of a key in the password keyboard for numeric --> - <dimen name="password_keyboard_key_height_numeric">75dip</dimen> - <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> - <dimen name="password_keyboard_height">48.0mm</dimen> - <!-- Minimum width of the search view text entry area. --> <dimen name="search_view_text_min_width">192dip</dimen> diff --git a/packages/Keyguard/res/values-sw600dp/dimens.xml b/packages/Keyguard/res/values-sw600dp/dimens.xml index c0e3937..f8a1362 100644 --- a/packages/Keyguard/res/values-sw600dp/dimens.xml +++ b/packages/Keyguard/res/values-sw600dp/dimens.xml @@ -18,9 +18,6 @@ */ --> <resources> - <!-- Size of clock font in LockScreen. --> - <dimen name="keyguard_pattern_unlock_clock_font_size">112sp</dimen> - <!-- Size of lockscreen outerring on unsecure unlock LockScreen --> <dimen name="keyguard_lockscreen_outerring_diameter">364dp</dimen> @@ -37,9 +34,6 @@ <!-- Size of the clock font in keyguard's status view --> <dimen name="kg_status_clock_font_size">141dp</dimen> - <!-- Size of the date font in keyguard's status view --> - <dimen name="kg_status_date_font_size">25.5dp</dimen> - <!-- Size of the generic status lines keyguard's status view --> <dimen name="kg_status_line_font_size">16sp</dimen> @@ -68,4 +62,8 @@ <!-- Margin around the various security views --> <dimen name="keyguard_muliuser_selector_margin">12dp</dimen> + <!-- Overload default clock widget parameters --> + <dimen name="widget_label_font_size">16dp</dimen> + <dimen name="widget_big_font_size">141dp</dimen> + </resources> diff --git a/packages/Keyguard/res/values-sw720dp/dimens.xml b/packages/Keyguard/res/values-sw720dp/dimens.xml index b29ac22..0790b79 100644 --- a/packages/Keyguard/res/values-sw720dp/dimens.xml +++ b/packages/Keyguard/res/values-sw720dp/dimens.xml @@ -21,9 +21,6 @@ <!-- Size of the clock font in keyguard's status view --> <dimen name="kg_status_clock_font_size">188dp</dimen> - <!-- Size of the date font in keyguard's status view --> - <dimen name="kg_status_date_font_size">34dp</dimen> - <!-- Size of the generic status lines keyguard's status view --> <dimen name="kg_status_line_font_size">19sp</dimen> diff --git a/packages/Keyguard/res/values-xlarge/dimens.xml b/packages/Keyguard/res/values-xlarge/dimens.xml deleted file mode 100644 index b8cf287..0000000 --- a/packages/Keyguard/res/values-xlarge/dimens.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* //device/apps/common/assets/res/any/dimens.xml -** -** Copyright 2006, 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. -*/ ---> -<resources> - <!-- Default height of a key in the password keyboard for alpha --> - <dimen name="password_keyboard_key_height_alpha">75dip</dimen> - <!-- Default height of a key in the password keyboard for numeric --> - <dimen name="password_keyboard_key_height_numeric">75dip</dimen> - <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> - <dimen name="password_keyboard_height">48.0mm</dimen> -</resources> diff --git a/packages/Keyguard/res/values/alias.xml b/packages/Keyguard/res/values/alias.xml index c964391..b22311e 100644 --- a/packages/Keyguard/res/values/alias.xml +++ b/packages/Keyguard/res/values/alias.xml @@ -34,9 +34,6 @@ <!-- Alias used to reference framework drawable in keyguard. --> <item type="drawable" name="ic_contact_picture">@*android:drawable/ic_contact_picture</item> - <!-- Alias used to reference framework drawable in keyguard. --> - <item type="drawable" name="ic_lock_idle_alarm">@*android:drawable/ic_lock_idle_alarm</item> - <!-- Alias used to reference framework "OK" string in keyguard. --> <item type="string" name="ok">@*android:string/ok</item> @@ -52,4 +49,4 @@ <!-- Alias used to reference framework activity duration. --> <item type="integer" name="config_activityDefaultDur">@*android:integer/config_activityDefaultDur</item> -</resources>
\ No newline at end of file +</resources> diff --git a/packages/Keyguard/res/values/colors.xml b/packages/Keyguard/res/values/colors.xml index 0c56a43..a9e8061 100644 --- a/packages/Keyguard/res/values/colors.xml +++ b/packages/Keyguard/res/values/colors.xml @@ -23,4 +23,8 @@ <!-- FaceLock --> <color name="facelock_spotlight_mask">#CC000000</color> + + <!-- Clock --> + <color name="clock_white">#ffffffff</color> + <color name="clock_gray">#80ffffff</color> </resources> diff --git a/packages/Keyguard/res/values/dimens.xml b/packages/Keyguard/res/values/dimens.xml index ce72f43..8039b09 100644 --- a/packages/Keyguard/res/values/dimens.xml +++ b/packages/Keyguard/res/values/dimens.xml @@ -18,17 +18,6 @@ */ --> <resources> - <!-- Default height of a key in the password keyboard for alpha (used by keyguard) --> - <dimen name="password_keyboard_key_height_alpha">56dip</dimen> - <!-- Default height of a key in the password keyboard for numeric (used by keyguard) --> - <dimen name="password_keyboard_key_height_numeric">56dip</dimen> - <!-- Default correction for the space key in the password keyboard (used by keyguard) --> - <dimen name="password_keyboard_spacebar_vertical_correction">4dip</dimen> - <!-- Default horizontal gap between keys in the password keyboard (used by keyguard) --> - <dimen name="password_keyboard_horizontalGap">3dip</dimen> - <!-- Default vertical gap between keys in the password keyboard (used by keyguard) --> - <dimen name="password_keyboard_verticalGap">9dip</dimen> - <!-- Size of lockscreen outerring on unsecure unlock LockScreen --> <dimen name="keyguard_lockscreen_outerring_diameter">270dp</dimen> @@ -47,9 +36,6 @@ <!-- Default distance from each snap target that GlowPadView considers a "hit" --> <dimen name="glowpadview_inner_radius">15dip</dimen> - <!-- Size of clock font in LockScreen on Unsecure unlock screen. --> - <dimen name="keyguard_lockscreen_clock_font_size">80dip</dimen> - <!-- Size of status line font on Unsecure unlock LockScreen. --> <dimen name="keyguard_lockscreen_status_line_font_size">14dip</dimen> @@ -84,11 +70,8 @@ <!-- Size of the clock font in keyguard's status view --> <dimen name="kg_status_clock_font_size">75dp</dimen> - <!-- Size of the date font in keyguard's status view --> - <dimen name="kg_status_date_font_size">15dp</dimen> - <!-- Size of the generic status lines keyguard's status view --> - <dimen name="kg_status_line_font_size">13dp</dimen> + <dimen name="kg_status_line_font_size">12dp</dimen> <!-- Size of margin on the right of keyguard's status view --> <dimen name="kg_status_line_font_right_margin">16dp</dimen> @@ -166,5 +149,12 @@ used on tablets; on phones, this size is determined by the space left by the security mode. --> <dimen name="kg_small_widget_height">160dp</dimen> + + <!-- Default clock parameters --> + <dimen name="bottom_text_spacing_digital">-8dp</dimen> + <dimen name="label_font_size">14dp</dimen> + <dimen name="widget_label_font_size">12dp</dimen> + <dimen name="widget_big_font_size">80dp</dimen> + <dimen name="big_font_size">120dp</dimen> </resources> diff --git a/packages/Keyguard/res/values/donottranslate.xml b/packages/Keyguard/res/values/donottranslate.xml new file mode 100644 index 0000000..71d3ed7 --- /dev/null +++ b/packages/Keyguard/res/values/donottranslate.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2013 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. +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- String matching the lock screen format for displaying the date. --> + <string name="abbrev_wday_month_day_no_year">EEE, MMMM d</string> + <!-- Format for describing the date, for accessibility. --> + <string name="full_wday_month_day_no_year">EEEE, MMMM d</string> +</resources> diff --git a/packages/Keyguard/res/values/strings.xml b/packages/Keyguard/res/values/strings.xml index 89e7240..abc4483 100644 --- a/packages/Keyguard/res/values/strings.xml +++ b/packages/Keyguard/res/values/strings.xml @@ -94,6 +94,10 @@ progress dialog in the meantime. this is the emssage. --> <string name="keyguard_sim_unlock_progress_dialog_message">Unlocking SIM card\u2026</string> + <!-- Time format strings for fall-back clock widget --> + <string name="keyguard_widget_12_hours_format" translatable="false">h:mm</string> + <!-- Time format strings for fall-back clock widget --> + <string name="keyguard_widget_24_hours_format" translatable="false">kk:mm</string> <!-- Accessibility description sent when user changes the current lock screen widget. [CHAR_LIMIT=none] --> <string name="keyguard_accessibility_widget_changed">%1$s. Widget %2$d of %3$d.</string> @@ -148,6 +152,13 @@ <string name="keyguard_accessibility_transport_play_description">Play button</string> <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> <string name="keyguard_accessibility_transport_stop_description">Stop button</string> + <!-- Shown on transport control of lockscreen. Pressing button rates the track as "thumbs up." --> + <string name="keyguard_accessibility_transport_thumbs_up_description">Thumbs up</string> + <!-- Shown on transport control of lockscreen. Pressing button rates the track as "thumbs down." --> + <string name="keyguard_accessibility_transport_thumbs_down_description">Thumbs down</string> + <!-- Shown on transport control of lockscreen. Pressing button toggles the "heart" rating. --> + <string name="keyguard_accessibility_transport_heart_description">Heart</string> + <!-- Accessibility description for when the device prompts the user to dismiss keyguard in order to complete an action. This will be followed by a message about the current diff --git a/packages/Keyguard/res/values/styles.xml b/packages/Keyguard/res/values/styles.xml index a31f708..44f560f 100644 --- a/packages/Keyguard/res/values/styles.xml +++ b/packages/Keyguard/res/values/styles.xml @@ -52,5 +52,20 @@ <item name="android:windowEnterAnimation">@anim/lock_screen_enter</item> <item name="android:windowExitAnimation">@anim/lock_screen_exit</item> </style> + + <!-- Built-in clock widget stuff --> + <style name="widget_label"> + <item name="android:textStyle">bold</item> + <item name="android:textAllCaps">true</item> + <item name="android:fontFamily">sans-serif-condensed</item> + <item name="android:textSize">@dimen/kg_status_line_font_size</item> + </style> + <style name="big_thin"> + <item name="android:textSize">@dimen/big_font_size</item> + <item name="android:fontFamily">sans-serif-thin</item> + </style> + <style name="widget_big_thin" parent="big_thin"> + <item name="android:textSize">@dimen/widget_big_font_size</item> + </style> </resources> diff --git a/packages/Keyguard/src/com/android/keyguard/ClockView.java b/packages/Keyguard/src/com/android/keyguard/ClockView.java deleted file mode 100644 index ad85e9a..0000000 --- a/packages/Keyguard/src/com/android/keyguard/ClockView.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (C) 2012 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.keyguard; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.database.ContentObserver; -import android.graphics.Typeface; -import android.os.Handler; -import android.os.UserHandle; -import android.provider.Settings; -import android.text.format.DateFormat; -import android.util.AttributeSet; -import android.view.View; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import java.lang.ref.WeakReference; -import java.text.DateFormatSymbols; -import java.util.Calendar; - -/** - * Displays the time - */ -public class ClockView extends RelativeLayout { - private static final String ANDROID_CLOCK_FONT_FILE = "/system/fonts/AndroidClock.ttf"; - private final static String M12 = "h:mm"; - private final static String M24 = "HH:mm"; - - private Calendar mCalendar; - private String mFormat; - private TextView mTimeView; - private AmPm mAmPm; - private ContentObserver mFormatChangeObserver; - private int mAttached = 0; // for debugging - tells us whether attach/detach is unbalanced - - /* called by system on minute ticks */ - private final Handler mHandler = new Handler(); - private BroadcastReceiver mIntentReceiver; - - private static class TimeChangedReceiver extends BroadcastReceiver { - private WeakReference<ClockView> mClock; - private Context mContext; - - public TimeChangedReceiver(ClockView clock) { - mClock = new WeakReference<ClockView>(clock); - mContext = clock.getContext(); - } - - @Override - public void onReceive(Context context, Intent intent) { - // Post a runnable to avoid blocking the broadcast. - final boolean timezoneChanged = - intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED); - final ClockView clock = mClock.get(); - if (clock != null) { - clock.mHandler.post(new Runnable() { - public void run() { - if (timezoneChanged) { - clock.mCalendar = Calendar.getInstance(); - } - clock.updateTime(); - } - }); - } else { - try { - mContext.unregisterReceiver(this); - } catch (RuntimeException e) { - // Shouldn't happen - } - } - } - }; - - static class AmPm { - private TextView mAmPmTextView; - private String mAmString, mPmString; - - AmPm(View parent, Typeface tf) { - // No longer used, uncomment if we decide to use AM/PM indicator again - // mAmPmTextView = (TextView) parent.findViewById(R.id.am_pm); - if (mAmPmTextView != null && tf != null) { - mAmPmTextView.setTypeface(tf); - } - - String[] ampm = new DateFormatSymbols().getAmPmStrings(); - mAmString = ampm[0]; - mPmString = ampm[1]; - } - - void setShowAmPm(boolean show) { - if (mAmPmTextView != null) { - mAmPmTextView.setVisibility(show ? View.VISIBLE : View.GONE); - } - } - - void setIsMorning(boolean isMorning) { - if (mAmPmTextView != null) { - mAmPmTextView.setText(isMorning ? mAmString : mPmString); - } - } - } - - private static class FormatChangeObserver extends ContentObserver { - private WeakReference<ClockView> mClock; - private Context mContext; - public FormatChangeObserver(ClockView clock) { - super(new Handler()); - mClock = new WeakReference<ClockView>(clock); - mContext = clock.getContext(); - } - @Override - public void onChange(boolean selfChange) { - ClockView digitalClock = mClock.get(); - if (digitalClock != null) { - digitalClock.setDateFormat(); - digitalClock.updateTime(); - } else { - try { - mContext.getContentResolver().unregisterContentObserver(this); - } catch (RuntimeException e) { - // Shouldn't happen - } - } - } - } - - public ClockView(Context context) { - this(context, null); - } - - public ClockView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - mTimeView = (TextView) findViewById(R.id.clock_text); - mTimeView.setTypeface(Typeface.createFromFile(ANDROID_CLOCK_FONT_FILE)); - mAmPm = new AmPm(this, null); - mCalendar = Calendar.getInstance(); - setDateFormat(); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - - mAttached++; - - /* monitor time ticks, time changed, timezone */ - if (mIntentReceiver == null) { - mIntentReceiver = new TimeChangedReceiver(this); - IntentFilter filter = new IntentFilter(); - filter.addAction(Intent.ACTION_TIME_TICK); - filter.addAction(Intent.ACTION_TIME_CHANGED); - filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); - mContext.registerReceiverAsUser(mIntentReceiver, UserHandle.OWNER, filter, null, null ); - } - - /* monitor 12/24-hour display preference */ - if (mFormatChangeObserver == null) { - mFormatChangeObserver = new FormatChangeObserver(this); - mContext.getContentResolver().registerContentObserver( - Settings.System.CONTENT_URI, true, mFormatChangeObserver); - } - - updateTime(); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - - mAttached--; - - if (mIntentReceiver != null) { - mContext.unregisterReceiver(mIntentReceiver); - } - if (mFormatChangeObserver != null) { - mContext.getContentResolver().unregisterContentObserver( - mFormatChangeObserver); - } - - mFormatChangeObserver = null; - mIntentReceiver = null; - } - - void updateTime(Calendar c) { - mCalendar = c; - updateTime(); - } - - public void updateTime() { - mCalendar.setTimeInMillis(System.currentTimeMillis()); - - CharSequence newTime = DateFormat.format(mFormat, mCalendar); - mTimeView.setText(newTime); - mAmPm.setIsMorning(mCalendar.get(Calendar.AM_PM) == 0); - } - - private void setDateFormat() { - mFormat = android.text.format.DateFormat.is24HourFormat(getContext()) ? M24 : M12; - mAmPm.setShowAmPm(mFormat.equals(M12)); - } -} diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java index bc8c866..63aab4d 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java @@ -134,6 +134,10 @@ public class KeyguardHostView extends KeyguardViewBase { void userActivity(); } + interface TransportControlCallback { + void userActivity(); + } + /*package*/ interface OnDismissAction { /* returns true if the dismiss should be deferred */ boolean onDismiss(); @@ -1222,6 +1226,11 @@ public class KeyguardHostView extends KeyguardViewBase { LayoutInflater inflater = LayoutInflater.from(mContext); mTransportControl = (KeyguardTransportControlView) inflater.inflate(R.layout.keyguard_transport_control_view, this, false); + mTransportControl.setTransportControlCallback(new TransportControlCallback() { + public void userActivity() { + mViewMediatorCallback.userActivity(); + } + }); } return mTransportControl; } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java index 0289a1f..ffb619b 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java @@ -38,17 +38,9 @@ public class KeyguardStatusView extends GridLayout { private static final boolean DEBUG = KeyguardViewMediator.DEBUG; private static final String TAG = "KeyguardStatusView"; - public static final int LOCK_ICON = 0; // R.drawable.ic_lock_idle_lock; - public static final int ALARM_ICON = R.drawable.ic_lock_idle_alarm; - public static final int CHARGING_ICON = 0; //R.drawable.ic_lock_idle_charging; - public static final int BATTERY_LOW_ICON = 0; //R.drawable.ic_lock_idle_low_battery; - - private SimpleDateFormat mDateFormat; private LockPatternUtils mLockPatternUtils; - private TextView mDateView; private TextView mAlarmStatusView; - private ClockView mClockView; private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { @@ -81,21 +73,12 @@ public class KeyguardStatusView extends GridLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); - Resources res = getContext().getResources(); - final Locale locale = Locale.getDefault(); - final String datePattern = res.getString(R.string.system_ui_date_pattern); - final String bestFormat = ICU.getBestDateTimePattern(datePattern, locale.toString()); - mDateFormat = new SimpleDateFormat(bestFormat, locale); - mDateView = (TextView) findViewById(R.id.date); + mAlarmStatusView = (TextView) findViewById(R.id.alarm_status); - mClockView = (ClockView) findViewById(R.id.clock_view); mLockPatternUtils = new LockPatternUtils(getContext()); - // Use custom font in mDateView - mDateView.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD); - // Required to get Marquee to work. - final View marqueeViews[] = { mDateView, mAlarmStatusView }; + final View marqueeViews[] = { mAlarmStatusView }; for (int i = 0; i < marqueeViews.length; i++) { View v = marqueeViews[i]; if (v == null) { @@ -107,8 +90,6 @@ public class KeyguardStatusView extends GridLayout { } protected void refresh() { - mClockView.updateTime(); - refreshDate(); refreshAlarmStatus(); // might as well } @@ -117,17 +98,12 @@ public class KeyguardStatusView extends GridLayout { String nextAlarm = mLockPatternUtils.getNextAlarm(); if (!TextUtils.isEmpty(nextAlarm)) { mAlarmStatusView.setText(nextAlarm); - mAlarmStatusView.setCompoundDrawablesWithIntrinsicBounds(ALARM_ICON, 0, 0, 0); mAlarmStatusView.setVisibility(View.VISIBLE); } else { mAlarmStatusView.setVisibility(View.GONE); } } - void refreshDate() { - mDateView.setText(mDateFormat.format(new Date())); - } - @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java index 2a5f979..83d8ab1 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java @@ -16,191 +16,263 @@ package com.android.keyguard; -import android.app.PendingIntent; -import android.app.PendingIntent.CanceledException; import android.content.Context; -import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.graphics.Bitmap; +import android.graphics.ColorMatrix; +import android.graphics.ColorMatrixColorFilter; +import android.graphics.drawable.Drawable; import android.media.AudioManager; -import android.media.IRemoteControlDisplay; +import android.media.MediaMetadataEditor; import android.media.MediaMetadataRetriever; import android.media.RemoteControlClient; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; +import android.media.RemoteController; import android.os.Parcel; import android.os.Parcelable; -import android.os.RemoteException; import android.os.SystemClock; -import android.text.Spannable; import android.text.TextUtils; -import android.text.style.ForegroundColorSpan; +import android.text.format.DateFormat; +import android.transition.ChangeBounds; +import android.transition.ChangeText; +import android.transition.Fade; +import android.transition.TransitionManager; +import android.transition.TransitionSet; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.View; -import android.view.View.OnClickListener; +import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.SeekBar; import android.widget.TextView; -import java.lang.ref.WeakReference; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + /** * This is the widget responsible for showing music controls in keyguard. */ -public class KeyguardTransportControlView extends FrameLayout implements OnClickListener { +public class KeyguardTransportControlView extends FrameLayout { - private static final int MSG_UPDATE_STATE = 100; - private static final int MSG_SET_METADATA = 101; - private static final int MSG_SET_TRANSPORT_CONTROLS = 102; - private static final int MSG_SET_ARTWORK = 103; - private static final int MSG_SET_GENERATION_ID = 104; private static final int DISPLAY_TIMEOUT_MS = 5000; // 5s + private static final int RESET_TO_METADATA_DELAY = 5000; protected static final boolean DEBUG = false; protected static final String TAG = "TransportControlView"; - private ImageView mAlbumArt; + private static final boolean ANIMATE_TRANSITIONS = false; + + private ViewGroup mMetadataContainer; + private ViewGroup mInfoContainer; private TextView mTrackTitle; + private TextView mTrackArtistAlbum; + + private View mTransientSeek; + private SeekBar mTransientSeekBar; + private TextView mTransientSeekTimeElapsed; + private TextView mTransientSeekTimeRemaining; + private ImageView mBtnPrev; private ImageView mBtnPlay; private ImageView mBtnNext; - private int mClientGeneration; private Metadata mMetadata = new Metadata(); - private boolean mAttached; - private PendingIntent mClientIntent; private int mTransportControlFlags; private int mCurrentPlayState; private AudioManager mAudioManager; - private IRemoteControlDisplayWeak mIRCD; + private RemoteController mRemoteController; + + private ImageView mBadge; + + private boolean mSeekEnabled; + private boolean mUserSeeking; + private java.text.DateFormat mFormat; /** * The metadata which should be populated into the view once we've been attached */ - private Bundle mPopulateMetadataWhenAttached = null; + private RemoteController.MetadataEditor mPopulateMetadataWhenAttached = null; - // This handler is required to ensure messages from IRCD are handled in sequence and on - // the UI thread. - private Handler mHandler = new Handler() { + private RemoteController.OnClientUpdateListener mRCClientUpdateListener = + new RemoteController.OnClientUpdateListener() { @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_UPDATE_STATE: - if (mClientGeneration == msg.arg1) updatePlayPauseState(msg.arg2); - break; + public void onClientChange(boolean clearing) { + if (clearing) { + clearMetadata(); + } + } - case MSG_SET_METADATA: - if (mClientGeneration == msg.arg1) updateMetadata((Bundle) msg.obj); - break; + @Override + public void onClientPlaybackStateUpdate(int state) { + setSeekBarsEnabled(false); + updatePlayPauseState(state); + } - case MSG_SET_TRANSPORT_CONTROLS: - if (mClientGeneration == msg.arg1) updateTransportControls(msg.arg2); - break; + @Override + public void onClientPlaybackStateUpdate(int state, long stateChangeTimeMs, + long currentPosMs, float speed) { + setSeekBarsEnabled(mMetadata != null && mMetadata.duration > 0); + updatePlayPauseState(state); + if (DEBUG) Log.d(TAG, "onClientPlaybackStateUpdate(state=" + state + + ", stateChangeTimeMs=" + stateChangeTimeMs + ", currentPosMs=" + currentPosMs + + ", speed=" + speed + ")"); + } - case MSG_SET_ARTWORK: - if (mClientGeneration == msg.arg1) { - mMetadata.bitmap = (Bitmap) msg.obj; - KeyguardUpdateMonitor.getInstance(getContext()).dispatchSetBackground( - mMetadata.bitmap); - } - break; + @Override + public void onClientTransportControlUpdate(int transportControlFlags) { + updateTransportControls(transportControlFlags); + } - case MSG_SET_GENERATION_ID: - if (DEBUG) Log.v(TAG, "New genId = " + msg.arg1 + ", clearing = " + msg.arg2); - mClientGeneration = msg.arg1; - mClientIntent = (PendingIntent) msg.obj; - break; + @Override + public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) { + updateMetadata(metadataEditor); + } + }; + private final Runnable mUpdateSeekBars = new Runnable() { + public void run() { + if (updateSeekBars()) { + postDelayed(this, 1000); } } }; - /** - * This class is required to have weak linkage to the current TransportControlView - * because the remote process can hold a strong reference to this binder object and - * we can't predict when it will be GC'd in the remote process. Without this code, it - * would allow a heavyweight object to be held on this side of the binder when there's - * no requirement to run a GC on the other side. - */ - private static class IRemoteControlDisplayWeak extends IRemoteControlDisplay.Stub { - private WeakReference<Handler> mLocalHandler; - - IRemoteControlDisplayWeak(Handler handler) { - mLocalHandler = new WeakReference<Handler>(handler); + private final Runnable mResetToMetadata = new Runnable() { + public void run() { + resetToMetadata(); } + }; - public void setPlaybackState(int generationId, int state, long stateChangeTimeMs, - long currentPosMs, float speed) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_UPDATE_STATE, generationId, state).sendToTarget(); + private final OnClickListener mTransportCommandListener = new OnClickListener() { + public void onClick(View v) { + int keyCode = -1; + if (v == mBtnPrev) { + keyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS; + } else if (v == mBtnNext) { + keyCode = KeyEvent.KEYCODE_MEDIA_NEXT; + } else if (v == mBtnPlay) { + keyCode = KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE; } - } - - public void setMetadata(int generationId, Bundle metadata) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_METADATA, generationId, 0, metadata).sendToTarget(); + if (keyCode != -1) { + sendMediaButtonClick(keyCode); } } + }; - public void setTransportControlInfo(int generationId, int flags, int posCapabilities) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_TRANSPORT_CONTROLS, generationId, flags) - .sendToTarget(); + private final OnLongClickListener mTransportShowSeekBarListener = new OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + if (mSeekEnabled) { + return tryToggleSeekBar(); } + return false; } + }; - public void setArtwork(int generationId, Bitmap bitmap) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_ARTWORK, generationId, 0, bitmap).sendToTarget(); + private final SeekBar.OnSeekBarChangeListener mOnSeekBarChangeListener = + new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if (fromUser) { + scrubTo(progress); + delayResetToMetadata(); } + updateSeekDisplay(); } - public void setAllMetadata(int generationId, Bundle metadata, Bitmap bitmap) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_METADATA, generationId, 0, metadata).sendToTarget(); - handler.obtainMessage(MSG_SET_ARTWORK, generationId, 0, bitmap).sendToTarget(); - } + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + mUserSeeking = true; } - public void setCurrentClientId(int clientGeneration, PendingIntent mediaIntent, - boolean clearing) throws RemoteException { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_GENERATION_ID, - clientGeneration, (clearing ? 1 : 0), mediaIntent).sendToTarget(); - } + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + mUserSeeking = false; } }; + private static final int TRANSITION_DURATION = 200; + private final TransitionSet mMetadataChangeTransition; + + KeyguardHostView.TransportControlCallback mTransportControlCallback; + public KeyguardTransportControlView(Context context, AttributeSet attrs) { super(context, attrs); if (DEBUG) Log.v(TAG, "Create TCV " + this); mAudioManager = new AudioManager(mContext); mCurrentPlayState = RemoteControlClient.PLAYSTATE_NONE; // until we get a callback - mIRCD = new IRemoteControlDisplayWeak(mHandler); + mRemoteController = new RemoteController(context); + mRemoteController.setOnClientUpdateListener(mRCClientUpdateListener); + + final DisplayMetrics dm = context.getResources().getDisplayMetrics(); + final int dim = Math.max(dm.widthPixels, dm.heightPixels); + mRemoteController.setArtworkConfiguration(true, dim, dim); + + final ChangeText tc = new ChangeText(); + tc.setChangeBehavior(ChangeText.CHANGE_BEHAVIOR_OUT_IN); + final TransitionSet inner = new TransitionSet(); + inner.addTransition(tc).addTransition(new ChangeBounds()); + final TransitionSet tg = new TransitionSet(); + tg.addTransition(new Fade(Fade.OUT)).addTransition(inner). + addTransition(new Fade(Fade.IN)); + tg.setOrdering(TransitionSet.ORDERING_SEQUENTIAL); + tg.setDuration(TRANSITION_DURATION); + mMetadataChangeTransition = tg; } private void updateTransportControls(int transportControlFlags) { mTransportControlFlags = transportControlFlags; + setSeekBarsEnabled( + (transportControlFlags & RemoteControlClient.FLAG_KEY_MEDIA_POSITION_UPDATE) != 0); + } + + void setSeekBarsEnabled(boolean enabled) { + if (enabled == mSeekEnabled) return; + + mSeekEnabled = enabled; + if (mTransientSeek.getVisibility() == VISIBLE) { + mTransientSeek.setVisibility(INVISIBLE); + mMetadataContainer.setVisibility(VISIBLE); + mUserSeeking = false; + cancelResetToMetadata(); + } + if (enabled) { + mUpdateSeekBars.run(); + postDelayed(mUpdateSeekBars, 1000); + } else { + removeCallbacks(mUpdateSeekBars); + } + } + + public void setTransportControlCallback(KeyguardHostView.TransportControlCallback + transportControlCallback) { + mTransportControlCallback = transportControlCallback; } @Override public void onFinishInflate() { super.onFinishInflate(); + mInfoContainer = (ViewGroup) findViewById(R.id.info_container); + mMetadataContainer = (ViewGroup) findViewById(R.id.metadata_container); + mBadge = (ImageView) findViewById(R.id.badge); mTrackTitle = (TextView) findViewById(R.id.title); mTrackTitle.setSelected(true); // enable marquee - mAlbumArt = (ImageView) findViewById(R.id.albumart); + mTrackArtistAlbum = (TextView) findViewById(R.id.artist_album); + mTrackArtistAlbum.setSelected(true); + mTransientSeek = findViewById(R.id.transient_seek); + mTransientSeekBar = (SeekBar) findViewById(R.id.transient_seek_bar); + mTransientSeekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener); + mTransientSeekTimeElapsed = (TextView) findViewById(R.id.transient_seek_time_elapsed); + mTransientSeekTimeRemaining = (TextView) findViewById(R.id.transient_seek_time_remaining); mBtnPrev = (ImageView) findViewById(R.id.btn_prev); mBtnPlay = (ImageView) findViewById(R.id.btn_play); mBtnNext = (ImageView) findViewById(R.id.btn_next); final View buttons[] = { mBtnPrev, mBtnPlay, mBtnNext }; for (View view : buttons) { - view.setOnClickListener(this); + view.setOnClickListener(mTransportCommandListener); + view.setOnLongClickListener(mTransportShowSeekBarListener); } } @@ -212,32 +284,34 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick updateMetadata(mPopulateMetadataWhenAttached); mPopulateMetadataWhenAttached = null; } - if (!mAttached) { - if (DEBUG) Log.v(TAG, "Registering TCV " + this); - mAudioManager.registerRemoteControlDisplay(mIRCD); - } - mAttached = true; + if (DEBUG) Log.v(TAG, "Registering TCV " + this); + mAudioManager.registerRemoteController(mRemoteController); } @Override - protected void onSizeChanged (int w, int h, int oldw, int oldh) { - if (mAttached) { - final DisplayMetrics dm = getContext().getResources().getDisplayMetrics(); - int dim = Math.max(dm.widthPixels, dm.heightPixels); - if (DEBUG) Log.v(TAG, "TCV uses bitmap size=" + dim); - mAudioManager.remoteControlDisplayUsesBitmapSize(mIRCD, dim, dim); - } + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + final DisplayMetrics dm = getContext().getResources().getDisplayMetrics(); + final int dim = Math.max(dm.widthPixels, dm.heightPixels); + mRemoteController.setArtworkConfiguration(true, dim, dim); } @Override public void onDetachedFromWindow() { if (DEBUG) Log.v(TAG, "onDetachFromWindow()"); super.onDetachedFromWindow(); - if (mAttached) { - if (DEBUG) Log.v(TAG, "Unregistering TCV " + this); - mAudioManager.unregisterRemoteControlDisplay(mIRCD); - } - mAttached = false; + if (DEBUG) Log.v(TAG, "Unregistering TCV " + this); + mAudioManager.unregisterRemoteController(mRemoteController); + mUserSeeking = false; + } + + void setBadgeIcon(Drawable bmp) { + mBadge.setImageDrawable(bmp); + + final ColorMatrix cm = new ColorMatrix(); + cm.setSaturation(0); + mBadge.setColorFilter(new ColorMatrixColorFilter(cm)); + mBadge.setImageAlpha(0xef); } class Metadata { @@ -245,21 +319,39 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick private String trackTitle; private String albumTitle; private Bitmap bitmap; + private long duration; + + public void clear() { + artist = null; + trackTitle = null; + albumTitle = null; + bitmap = null; + duration = -1; + } public String toString() { - return "Metadata[artist=" + artist + " trackTitle=" + trackTitle + " albumTitle=" + albumTitle + "]"; + return "Metadata[artist=" + artist + " trackTitle=" + trackTitle + + " albumTitle=" + albumTitle + " duration=" + duration + "]"; } } - private String getMdString(Bundle data, int id) { - return data.getString(Integer.toString(id)); + void clearMetadata() { + mPopulateMetadataWhenAttached = null; + mMetadata.clear(); + populateMetadata(); } - private void updateMetadata(Bundle data) { - if (mAttached) { - mMetadata.artist = getMdString(data, MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST); - mMetadata.trackTitle = getMdString(data, MediaMetadataRetriever.METADATA_KEY_TITLE); - mMetadata.albumTitle = getMdString(data, MediaMetadataRetriever.METADATA_KEY_ALBUM); + void updateMetadata(RemoteController.MetadataEditor data) { + if (isAttachedToWindow()) { + mMetadata.artist = data.getString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, + mMetadata.artist); + mMetadata.trackTitle = data.getString(MediaMetadataRetriever.METADATA_KEY_TITLE, + mMetadata.trackTitle); + mMetadata.albumTitle = data.getString(MediaMetadataRetriever.METADATA_KEY_ALBUM, + mMetadata.albumTitle); + mMetadata.duration = data.getLong(MediaMetadataRetriever.METADATA_KEY_DURATION, -1); + mMetadata.bitmap = data.getBitmap(MediaMetadataEditor.BITMAP_KEY_ARTWORK, + mMetadata.bitmap); populateMetadata(); } else { mPopulateMetadataWhenAttached = data; @@ -270,12 +362,22 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick * Populates the given metadata into the view */ private void populateMetadata() { - StringBuilder sb = new StringBuilder(); - int trackTitleLength = 0; + if (ANIMATE_TRANSITIONS && isLaidOut() && mMetadataContainer.getVisibility() == VISIBLE) { + TransitionManager.beginDelayedTransition(mMetadataContainer, mMetadataChangeTransition); + } + + final String remoteClientPackage = mRemoteController.getRemoteControlClientPackageName(); + Drawable badgeIcon = null; + try { + badgeIcon = getContext().getPackageManager().getApplicationIcon(remoteClientPackage); + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "Couldn't get remote control client package icon", e); + } + setBadgeIcon(badgeIcon); if (!TextUtils.isEmpty(mMetadata.trackTitle)) { - sb.append(mMetadata.trackTitle); - trackTitleLength = mMetadata.trackTitle.length(); + mTrackTitle.setText(mMetadata.trackTitle); } + StringBuilder sb = new StringBuilder(); if (!TextUtils.isEmpty(mMetadata.artist)) { if (sb.length() != 0) { sb.append(" - "); @@ -288,16 +390,27 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick } sb.append(mMetadata.albumTitle); } - mTrackTitle.setText(sb.toString(), TextView.BufferType.SPANNABLE); - Spannable str = (Spannable) mTrackTitle.getText(); - if (trackTitleLength != 0) { - str.setSpan(new ForegroundColorSpan(0xffffffff), 0, trackTitleLength, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - trackTitleLength++; - } - if (sb.length() > trackTitleLength) { - str.setSpan(new ForegroundColorSpan(0x7fffffff), trackTitleLength, sb.length(), - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + mTrackArtistAlbum.setText(sb.toString()); + + if (mMetadata.duration >= 0) { + setSeekBarsEnabled(true); + setSeekBarDuration(mMetadata.duration); + + final String skeleton; + + if (mMetadata.duration >= 86400000) { + skeleton = "DDD kk mm ss"; + } else if (mMetadata.duration >= 3600000) { + skeleton = "kk mm ss"; + } else { + skeleton = "mm ss"; + } + mFormat = new SimpleDateFormat(DateFormat.getBestDateTimePattern( + getContext().getResources().getConfiguration().locale, + skeleton)); + mFormat.setTimeZone(TimeZone.getTimeZone("GMT+0")); + } else { + setSeekBarsEnabled(false); } KeyguardUpdateMonitor.getInstance(getContext()).dispatchSetBackground( @@ -314,6 +427,66 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick updatePlayPauseState(mCurrentPlayState); } + void updateSeekDisplay() { + if (mMetadata != null && mRemoteController != null && mFormat != null) { + final long timeElapsed = mRemoteController.getEstimatedMediaPosition(); + final long duration = mMetadata.duration; + final long remaining = duration - timeElapsed; + + mTransientSeekTimeElapsed.setText(mFormat.format(new Date(timeElapsed))); + mTransientSeekTimeRemaining.setText(mFormat.format(new Date(remaining))); + + if (DEBUG) Log.d(TAG, "updateSeekDisplay timeElapsed=" + timeElapsed + + " duration=" + duration + " remaining=" + remaining); + } + } + + boolean tryToggleSeekBar() { + if (ANIMATE_TRANSITIONS) { + TransitionManager.beginDelayedTransition(mInfoContainer); + } + if (mTransientSeek.getVisibility() == VISIBLE) { + mTransientSeek.setVisibility(INVISIBLE); + mMetadataContainer.setVisibility(VISIBLE); + cancelResetToMetadata(); + } else { + mTransientSeek.setVisibility(VISIBLE); + mMetadataContainer.setVisibility(INVISIBLE); + delayResetToMetadata(); + } + mTransportControlCallback.userActivity(); + return true; + } + + void resetToMetadata() { + if (ANIMATE_TRANSITIONS) { + TransitionManager.beginDelayedTransition(mInfoContainer); + } + if (mTransientSeek.getVisibility() == VISIBLE) { + mTransientSeek.setVisibility(INVISIBLE); + mMetadataContainer.setVisibility(VISIBLE); + } + // TODO Also hide ratings, if applicable + } + + void delayResetToMetadata() { + removeCallbacks(mResetToMetadata); + postDelayed(mResetToMetadata, RESET_TO_METADATA_DELAY); + } + + void cancelResetToMetadata() { + removeCallbacks(mResetToMetadata); + } + + void setSeekBarDuration(long duration) { + mTransientSeekBar.setMax((int) duration); + } + + void scrubTo(int progress) { + mRemoteController.seekTo(progress); + mTransportControlCallback.userActivity(); + } + private static void setVisibilityBasedOnFlag(View view, int flags, int flag) { if ((flags & flag) != 0) { view.setVisibility(View.VISIBLE); @@ -341,6 +514,9 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick case RemoteControlClient.PLAYSTATE_PLAYING: imageResId = R.drawable.ic_media_pause; imageDescId = R.string.keyguard_transport_pause_description; + if (mSeekEnabled) { + postDelayed(mUpdateSeekBars, 1000); + } break; case RemoteControlClient.PLAYSTATE_BUFFERING: @@ -354,11 +530,30 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick imageDescId = R.string.keyguard_transport_play_description; break; } + + if (state != RemoteControlClient.PLAYSTATE_PLAYING) { + removeCallbacks(mUpdateSeekBars); + updateSeekBars(); + } mBtnPlay.setImageResource(imageResId); mBtnPlay.setContentDescription(getResources().getString(imageDescId)); mCurrentPlayState = state; } + boolean updateSeekBars() { + final int position = (int) mRemoteController.getEstimatedMediaPosition(); + if (position >= 0) { + if (!mUserSeeking) { + mTransientSeekBar.setProgress(position); + } + return true; + } + Log.w(TAG, "Updating seek bars; received invalid estimated media position (" + + position + "). Disabling seek."); + setSeekBarsEnabled(false); + return false; + } + static class SavedState extends BaseSavedState { boolean clientPresent; @@ -389,48 +584,13 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick }; } - public void onClick(View v) { - int keyCode = -1; - if (v == mBtnPrev) { - keyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS; - } else if (v == mBtnNext) { - keyCode = KeyEvent.KEYCODE_MEDIA_NEXT; - } else if (v == mBtnPlay) { - keyCode = KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE; - - } - if (keyCode != -1) { - sendMediaButtonClick(keyCode); - } - } - private void sendMediaButtonClick(int keyCode) { - if (mClientIntent == null) { - // Shouldn't be possible because this view should be hidden in this case. - Log.e(TAG, "sendMediaButtonClick(): No client is currently registered"); - return; - } - // use the registered PendingIntent that will be processed by the registered - // media button event receiver, which is the component of mClientIntent - KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode); - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON); - intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); - try { - mClientIntent.send(getContext(), 0, intent); - } catch (CanceledException e) { - Log.e(TAG, "Error sending intent for media button down: "+e); - e.printStackTrace(); - } + // TODO We should think about sending these up/down events accurately with touch up/down + // on the buttons, but in the near term this will interfere with the long press behavior. + mRemoteController.sendMediaKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keyCode)); + mRemoteController.sendMediaKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keyCode)); - keyEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode); - intent = new Intent(Intent.ACTION_MEDIA_BUTTON); - intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); - try { - mClientIntent.send(getContext(), 0, intent); - } catch (CanceledException e) { - Log.e(TAG, "Error sending intent for media button up: "+e); - e.printStackTrace(); - } + mTransportControlCallback.userActivity(); } public boolean providesClock() { diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java index ec3eb15..dc28bd0 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java @@ -124,6 +124,7 @@ public class KeyguardViewMediator { private static final int SHOW_ASSISTANT = 14; private static final int DISPATCH_EVENT = 15; private static final int LAUNCH_CAMERA = 16; + private static final int DISMISS = 17; /** * The default amount of time we stay awake (used for all key input) @@ -910,12 +911,16 @@ public class KeyguardViewMediator { /** * Dismiss the keyguard through the security layers. */ - public void dismiss() { + public void handleDismiss() { if (mShowing && !mHidden) { mKeyguardViewManager.dismiss(); } } + public void dismiss() { + mHandler.sendEmptyMessage(DISMISS); + } + /** * Send message to keyguard telling it to reset its state. * @param options options about how to show the keyguard @@ -1014,14 +1019,13 @@ public class KeyguardViewMediator { }; public void keyguardDone(boolean authenticated, boolean wakeup) { - mKeyguardDonePending = false; + if (DEBUG) Log.d(TAG, "keyguardDone(" + authenticated + ")"); + EventLog.writeEvent(70000, 2); synchronized (this) { - EventLog.writeEvent(70000, 2); - if (DEBUG) Log.d(TAG, "keyguardDone(" + authenticated + ")"); - Message msg = mHandler.obtainMessage(KEYGUARD_DONE, authenticated ? 1 : 0, - wakeup ? 1 : 0); - mHandler.sendMessage(msg); + mKeyguardDonePending = false; } + Message msg = mHandler.obtainMessage(KEYGUARD_DONE, authenticated ? 1 : 0, wakeup ? 1 : 0); + mHandler.sendMessage(msg); } /** @@ -1037,31 +1041,31 @@ public class KeyguardViewMediator { switch (msg.what) { case SHOW: handleShow((Bundle) msg.obj); - return ; + break; case HIDE: handleHide(); - return ; + break; case RESET: handleReset((Bundle) msg.obj); - return ; + break; case VERIFY_UNLOCK: handleVerifyUnlock(); - return; + break; case NOTIFY_SCREEN_OFF: handleNotifyScreenOff(); - return; + break; case NOTIFY_SCREEN_ON: handleNotifyScreenOn((IKeyguardShowCallback) msg.obj); - return; + break; case KEYGUARD_DONE: handleKeyguardDone(msg.arg1 != 0, msg.arg2 != 0); - return; + break; case KEYGUARD_DONE_DRAWING: handleKeyguardDoneDrawing(); - return; + break; case KEYGUARD_DONE_AUTHENTICATING: keyguardDone(true, true); - return; + break; case SET_HIDDEN: handleSetHidden(msg.arg1 != 0); break; @@ -1079,6 +1083,9 @@ public class KeyguardViewMediator { case LAUNCH_CAMERA: handleLaunchCamera(); break; + case DISMISS: + handleDismiss(); + break; } } }; @@ -1178,8 +1185,7 @@ public class KeyguardViewMediator { private void updateActivityLockScreenState() { try { - ActivityManagerNative.getDefault().setLockScreenShown( - mShowing && !mHidden); + ActivityManagerNative.getDefault().setLockScreenShown(mShowing && !mHidden); } catch (RemoteException e) { } } diff --git a/packages/PrintSpooler/res/layout/select_printer_activity.xml b/packages/PrintSpooler/res/layout/select_printer_activity.xml index e86e9aa..2792dcf 100644 --- a/packages/PrintSpooler/res/layout/select_printer_activity.xml +++ b/packages/PrintSpooler/res/layout/select_printer_activity.xml @@ -38,25 +38,30 @@ android:layout_gravity="center" android:gravity="center" android:orientation="vertical"> - + <ImageView - android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="12dip" android:src="@*android:drawable/ic_grayedout_printer" - android:contentDescription="@string/print_no_printers_found"> + android:contentDescription="@string/print_searching_for_printers"> </ImageView> <TextView - android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="?android:attr/textColorSecondary" - android:text="@string/print_no_printers_found"> + android:text="@string/print_searching_for_printers"> </TextView> + <ProgressBar + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:indeterminate="true" + style="@android:style/Widget.Holo.ProgressBar.Horizontal"> + </ProgressBar> + </LinearLayout> </FrameLayout> diff --git a/packages/PrintSpooler/res/values-af/strings.xml b/packages/PrintSpooler/res/values-af/strings.xml index 7e15080..6361df4 100644 --- a/packages/PrintSpooler/res/values-af/strings.xml +++ b/packages/PrintSpooler/res/values-af/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Alle drukkers…"</string> <string name="search" msgid="5421724265322228497">"Deursoek"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle drukkers"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Voeg diens by"</string> <string name="choose_print_service" msgid="3740309762324459694">"Kies drukdiens"</string> - <string name="search_play_store" msgid="1575218005860538249">"Soek in Play-winkel"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Geen drukkers gekry nie"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Druk tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kanselleer tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Drukkerfout by <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-am/strings.xml b/packages/PrintSpooler/res/values-am/strings.xml index bac0527..be683ba 100644 --- a/packages/PrintSpooler/res/values-am/strings.xml +++ b/packages/PrintSpooler/res/values-am/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"ሁሉም አታሚዎች…"</string> <string name="search" msgid="5421724265322228497">"ፍለጋ"</string> <string name="all_printers_label" msgid="3178848870161526399">"ሁሉም አታሚዎች"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"አገልግሎት አክል"</string> <string name="choose_print_service" msgid="3740309762324459694">"የህትመት አገልግሎት ይምረጡ"</string> - <string name="search_play_store" msgid="1575218005860538249">"በPlay ሱቅ ውስጥ ይፈልጉ"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"ምንም አታሚዎች አልተገኙም"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን በማተም ላይ"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን በመተው ላይ"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"የአታሚ ስህተት <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ar/strings.xml b/packages/PrintSpooler/res/values-ar/strings.xml index 4cca804..eae6a91 100644 --- a/packages/PrintSpooler/res/values-ar/strings.xml +++ b/packages/PrintSpooler/res/values-ar/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"جميع الطابعات…"</string> <string name="search" msgid="5421724265322228497">"بحث"</string> <string name="all_printers_label" msgid="3178848870161526399">"جميع الطابعات"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"إضافة خدمة"</string> <string name="choose_print_service" msgid="3740309762324459694">"اختر خدمة طباعة"</string> - <string name="search_play_store" msgid="1575218005860538249">"البحث في سوق Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"لم يتم العثور على طابعات"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"جارٍ طباعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"جارٍ إلغاء <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"خطا في الطابعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-bg/strings.xml b/packages/PrintSpooler/res/values-bg/strings.xml index dc5c4f9..f4410a0 100644 --- a/packages/PrintSpooler/res/values-bg/strings.xml +++ b/packages/PrintSpooler/res/values-bg/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Всички принтери…"</string> <string name="search" msgid="5421724265322228497">"Търсене"</string> <string name="all_printers_label" msgid="3178848870161526399">"Всички принтери"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Добавяне на услуга"</string> <string name="choose_print_service" msgid="3740309762324459694">"Избиране на услуга за отпечатване"</string> - <string name="search_play_store" msgid="1575218005860538249">"Търсене в Google Play Магазин"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Няма намерени принтери"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ се отпечатва"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ се анулира"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Грешка в принтера при „<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“"</string> diff --git a/packages/PrintSpooler/res/values-ca/strings.xml b/packages/PrintSpooler/res/values-ca/strings.xml index 9bc03f9..79de899 100644 --- a/packages/PrintSpooler/res/values-ca/strings.xml +++ b/packages/PrintSpooler/res/values-ca/strings.xml @@ -30,13 +30,14 @@ <string name="install_for_print_preview" msgid="6366303997385509332">"Instal·la un lector de PDF per a visualitz. prèvia"</string> <string name="printing_app_crashed" msgid="854477616686566398">"L\'aplicació d\'impressió ha fallat"</string> <string name="page_count_unknown" msgid="7412881437770983864">"no disponible"</string> - <string name="generating_print_job" msgid="3119608742651698916">"S\'està gener. tasca impressió"</string> + <string name="generating_print_job" msgid="3119608742651698916">"Generant tasca impressió"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Desa com a PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Totes les impressores…"</string> <string name="search" msgid="5421724265322228497">"Cerca"</string> <string name="all_printers_label" msgid="3178848870161526399">"Totes les impressores"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Afegeix un servei"</string> <string name="choose_print_service" msgid="3740309762324459694">"Selecció del servei d\'impressió"</string> - <string name="search_play_store" msgid="1575218005860538249">"Cerca a Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"No s\'ha trobat cap impressora"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"S\'està imprimint <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"S\'està cancel·lant <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Error d\'impressora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-cs/strings.xml b/packages/PrintSpooler/res/values-cs/strings.xml index f402eb3..151165f 100644 --- a/packages/PrintSpooler/res/values-cs/strings.xml +++ b/packages/PrintSpooler/res/values-cs/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Všechny tiskárny…"</string> <string name="search" msgid="5421724265322228497">"Hledat"</string> <string name="all_printers_label" msgid="3178848870161526399">"Všechny tiskárny"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Přidat službu"</string> <string name="choose_print_service" msgid="3740309762324459694">"Zvolte službu tisku"</string> - <string name="search_play_store" msgid="1575218005860538249">"Vyhledat v Obchodě Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nebyly nalezeny žádné tiskárny"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Tisk úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Rušení úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Chyba tiskárny u úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-da/strings.xml b/packages/PrintSpooler/res/values-da/strings.xml index 26457b6..e9c4d6d 100644 --- a/packages/PrintSpooler/res/values-da/strings.xml +++ b/packages/PrintSpooler/res/values-da/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Alle printere..."</string> <string name="search" msgid="5421724265322228497">"Søg"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle printere"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Tilføj tjeneste"</string> <string name="choose_print_service" msgid="3740309762324459694">"Vælg udskriftstjeneste"</string> - <string name="search_play_store" msgid="1575218005860538249">"Søg i Play Butik"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Der blev ikke fundet nogen printere"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> udskrives"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> annulleres"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Udskriften <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> mislykkedes"</string> diff --git a/packages/PrintSpooler/res/values-de/strings.xml b/packages/PrintSpooler/res/values-de/strings.xml index ceffeda..417792e 100644 --- a/packages/PrintSpooler/res/values-de/strings.xml +++ b/packages/PrintSpooler/res/values-de/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Alle Drucker…"</string> <string name="search" msgid="5421724265322228497">"Suchen"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle Drucker"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Dienst hinzufügen"</string> <string name="choose_print_service" msgid="3740309762324459694">"Druckdienst auswählen"</string> - <string name="search_play_store" msgid="1575218005860538249">"Im Play Store suchen"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Keine Drucker gefunden"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> wird gedruckt..."</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> wird abgebrochen..."</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Druckerfehler <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-el/strings.xml b/packages/PrintSpooler/res/values-el/strings.xml index 44ba5d4..331315d 100644 --- a/packages/PrintSpooler/res/values-el/strings.xml +++ b/packages/PrintSpooler/res/values-el/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Όλοι οι εκτυπωτές…"</string> <string name="search" msgid="5421724265322228497">"Αναζήτηση"</string> <string name="all_printers_label" msgid="3178848870161526399">"Όλοι οι εκτυπωτές"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Προσθήκη υπηρεσίας"</string> <string name="choose_print_service" msgid="3740309762324459694">"Επιλέξτε υπηρεσία εκτύπωσης"</string> - <string name="search_play_store" msgid="1575218005860538249">"Αναζήτηση στο play store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Δεν βρέθηκαν εκτυπωτές"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Εκτύπωση <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Ακύρωση <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Σφάλμα εκτυπωτή <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-en-rGB/strings.xml b/packages/PrintSpooler/res/values-en-rGB/strings.xml index 7b77483..5fc9c68 100644 --- a/packages/PrintSpooler/res/values-en-rGB/strings.xml +++ b/packages/PrintSpooler/res/values-en-rGB/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"All printers…"</string> <string name="search" msgid="5421724265322228497">"Search"</string> <string name="all_printers_label" msgid="3178848870161526399">"All printers"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string> <string name="choose_print_service" msgid="3740309762324459694">"Choose print service"</string> - <string name="search_play_store" msgid="1575218005860538249">"Search in Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"No printers found"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Printing <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelling <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printer error <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-en-rIN/strings.xml b/packages/PrintSpooler/res/values-en-rIN/strings.xml index 7b77483..5fc9c68 100644 --- a/packages/PrintSpooler/res/values-en-rIN/strings.xml +++ b/packages/PrintSpooler/res/values-en-rIN/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"All printers…"</string> <string name="search" msgid="5421724265322228497">"Search"</string> <string name="all_printers_label" msgid="3178848870161526399">"All printers"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string> <string name="choose_print_service" msgid="3740309762324459694">"Choose print service"</string> - <string name="search_play_store" msgid="1575218005860538249">"Search in Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"No printers found"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Printing <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelling <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printer error <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-es-rUS/strings.xml b/packages/PrintSpooler/res/values-es-rUS/strings.xml index 8f76e9d..c2b97d8 100644 --- a/packages/PrintSpooler/res/values-es-rUS/strings.xml +++ b/packages/PrintSpooler/res/values-es-rUS/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string> <string name="search" msgid="5421724265322228497">"Buscar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Agregar servicio"</string> <string name="choose_print_service" msgid="3740309762324459694">"Elegir servicio de impresión"</string> - <string name="search_play_store" msgid="1575218005860538249">"Buscar en Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"No se encontraron impresoras"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimiendo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Error de impresora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-es/strings.xml b/packages/PrintSpooler/res/values-es/strings.xml index f7c5790..350834a 100644 --- a/packages/PrintSpooler/res/values-es/strings.xml +++ b/packages/PrintSpooler/res/values-es/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string> <string name="search" msgid="5421724265322228497">"Buscar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Añadir servicio"</string> <string name="choose_print_service" msgid="3740309762324459694">"Seleccionar servicio de impresión"</string> - <string name="search_play_store" msgid="1575218005860538249">"Buscar en Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"No se encontraron impresoras"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimiendo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Error de impresora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-et-rEE/strings.xml b/packages/PrintSpooler/res/values-et-rEE/strings.xml index 0d28170..94a6775 100644 --- a/packages/PrintSpooler/res/values-et-rEE/strings.xml +++ b/packages/PrintSpooler/res/values-et-rEE/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Kõik printerid …"</string> <string name="search" msgid="5421724265322228497">"Otsing"</string> <string name="all_printers_label" msgid="3178848870161526399">"Kõik printerid"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Lisa teenus"</string> <string name="choose_print_service" msgid="3740309762324459694">"Prinditeenuse valimine"</string> - <string name="search_play_store" msgid="1575218005860538249">"Otsi Play poest"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Printereid ei leitud"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Prinditöö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> printimine"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Prinditöö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> tühistamine"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printeri viga: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-fa/strings.xml b/packages/PrintSpooler/res/values-fa/strings.xml index b5435c6..320dfb0 100644 --- a/packages/PrintSpooler/res/values-fa/strings.xml +++ b/packages/PrintSpooler/res/values-fa/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"همه چاپگرها..."</string> <string name="search" msgid="5421724265322228497">"جستجو"</string> <string name="all_printers_label" msgid="3178848870161526399">"همه چاپگرها"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"افزودن سرویس"</string> <string name="choose_print_service" msgid="3740309762324459694">"انتخاب سرویس چاپ"</string> - <string name="search_play_store" msgid="1575218005860538249">"جستجو در فروشگاه Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"هیچ چاپگری یافت نشد"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"در حال چاپ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"در حال لغو <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"خطای چاپگر <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-fi/strings.xml b/packages/PrintSpooler/res/values-fi/strings.xml index cbf9931..9e92744 100644 --- a/packages/PrintSpooler/res/values-fi/strings.xml +++ b/packages/PrintSpooler/res/values-fi/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Kaikki tulostimet…"</string> <string name="search" msgid="5421724265322228497">"Haku"</string> <string name="all_printers_label" msgid="3178848870161526399">"Kaikki tulostimet"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Lisää palvelu"</string> <string name="choose_print_service" msgid="3740309762324459694">"Valitse tulostuspalvelu"</string> - <string name="search_play_store" msgid="1575218005860538249">"Haku Play-kaupasta"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Tulostimia ei löydy"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Tulostetaan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Peruutetaan työ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Tulostinvirhe työlle <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-fr-rCA/strings.xml b/packages/PrintSpooler/res/values-fr-rCA/strings.xml index f5c504f..779fd7d 100644 --- a/packages/PrintSpooler/res/values-fr-rCA/strings.xml +++ b/packages/PrintSpooler/res/values-fr-rCA/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string> <string name="search" msgid="5421724265322228497">"Rechercher"</string> <string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Ajouter le service"</string> <string name="choose_print_service" msgid="3740309762324459694">"Sélectionner le service d\'impression"</string> - <string name="search_play_store" msgid="1575218005860538249">"Rechercher dans la boutique Google Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Aucune imprimante trouvée"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Impression de <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> en cours…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annulation de « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> »…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Erreur impression : « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> »"</string> diff --git a/packages/PrintSpooler/res/values-fr/strings.xml b/packages/PrintSpooler/res/values-fr/strings.xml index 2d6a7a1..440e549 100644 --- a/packages/PrintSpooler/res/values-fr/strings.xml +++ b/packages/PrintSpooler/res/values-fr/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string> <string name="search" msgid="5421724265322228497">"Rechercher"</string> <string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Ajouter un service"</string> <string name="choose_print_service" msgid="3740309762324459694">"Sélectionner le service d\'impression"</string> - <string name="search_play_store" msgid="1575218005860538249">"Rechercher sur le Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Aucune imprimante trouvée"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Impression de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" en cours…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annulation de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" en cours…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Erreur impression pour \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string> diff --git a/packages/PrintSpooler/res/values-hi/strings.xml b/packages/PrintSpooler/res/values-hi/strings.xml index 59a88a8..59a4054 100644 --- a/packages/PrintSpooler/res/values-hi/strings.xml +++ b/packages/PrintSpooler/res/values-hi/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"सभी प्रिंटर..."</string> <string name="search" msgid="5421724265322228497">"खोजें"</string> <string name="all_printers_label" msgid="3178848870161526399">"सभी प्रिंटर"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"सेवा जोड़ें"</string> <string name="choose_print_service" msgid="3740309762324459694">"प्रिंट सेवा चुनें"</string> - <string name="search_play_store" msgid="1575218005860538249">"Play स्टोर में खोजें"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"कोई प्रिंटर नहीं मिला"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> प्रिंट हो रहा है"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> रद्द हो रहा है"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"प्रिंटर त्रुटि <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-hr/strings.xml b/packages/PrintSpooler/res/values-hr/strings.xml index 399e14e..19f546e 100644 --- a/packages/PrintSpooler/res/values-hr/strings.xml +++ b/packages/PrintSpooler/res/values-hr/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Svi pisači…"</string> <string name="search" msgid="5421724265322228497">"Pretraživanje"</string> <string name="all_printers_label" msgid="3178848870161526399">"Svi pisači"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj uslugu"</string> <string name="choose_print_service" msgid="3740309762324459694">"Odaberite uslugu ispisa"</string> - <string name="search_play_store" msgid="1575218005860538249">"Pretraži u Trgovini Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nije pronađen nijedan pisač"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Ispisivanje <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Otkazivanje zadatka <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Pogreška pisača <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-hu/strings.xml b/packages/PrintSpooler/res/values-hu/strings.xml index ea997c5..31505f0 100644 --- a/packages/PrintSpooler/res/values-hu/strings.xml +++ b/packages/PrintSpooler/res/values-hu/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Az összes nyomtató…"</string> <string name="search" msgid="5421724265322228497">"Keresés"</string> <string name="all_printers_label" msgid="3178848870161526399">"Az összes nyomtató"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Szolgáltatás hozzáadása"</string> <string name="choose_print_service" msgid="3740309762324459694">"Nyomtatási szolgáltatás kiválasztása"</string> - <string name="search_play_store" msgid="1575218005860538249">"Keresés a Play Áruházban"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nem található nyomtató"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> nyomtatása"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> törlése"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Nyomtatási hiba: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-hy-rAM/strings.xml b/packages/PrintSpooler/res/values-hy-rAM/strings.xml index 47d8627..1634984 100644 --- a/packages/PrintSpooler/res/values-hy-rAM/strings.xml +++ b/packages/PrintSpooler/res/values-hy-rAM/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Բոլոր տպիչները..."</string> <string name="search" msgid="5421724265322228497">"Որոնել"</string> <string name="all_printers_label" msgid="3178848870161526399">"Բոլոր տպիչները"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Ավելացնել ծառայություն"</string> <string name="choose_print_service" msgid="3740309762324459694">"Ընտրեք տպելու ծառայությունը"</string> - <string name="search_play_store" msgid="1575218005860538249">"Որոնել Play Store-ում"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Տպիչներ չեն գտնվել"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Տպվում է՝ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ը չեղարկվում է"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Տպիչի սխալ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-in/strings.xml b/packages/PrintSpooler/res/values-in/strings.xml index d4878cd..790b645 100644 --- a/packages/PrintSpooler/res/values-in/strings.xml +++ b/packages/PrintSpooler/res/values-in/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Semua printer…"</string> <string name="search" msgid="5421724265322228497">"Cari"</string> <string name="all_printers_label" msgid="3178848870161526399">"Semua printer"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan layanan"</string> <string name="choose_print_service" msgid="3740309762324459694">"Pilih layanan cetak"</string> - <string name="search_play_store" msgid="1575218005860538249">"Cari di Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Tidak ditemukan printer"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Mencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Membatalkan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Ada kesalahan printer <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-it/strings.xml b/packages/PrintSpooler/res/values-it/strings.xml index a623bb6..d8f8eab 100644 --- a/packages/PrintSpooler/res/values-it/strings.xml +++ b/packages/PrintSpooler/res/values-it/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Tutte le stampanti…"</string> <string name="search" msgid="5421724265322228497">"Cerca"</string> <string name="all_printers_label" msgid="3178848870161526399">"Tutte le stampanti"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Aggiungi servizio"</string> <string name="choose_print_service" msgid="3740309762324459694">"Scegli servizio di stampa"</string> - <string name="search_play_store" msgid="1575218005860538249">"Cerca nel Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nessuna stampante trovata"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Stampa di <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annullamento di <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Errore della stampante: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-iw/strings.xml b/packages/PrintSpooler/res/values-iw/strings.xml index 15b097c..44a001a 100644 --- a/packages/PrintSpooler/res/values-iw/strings.xml +++ b/packages/PrintSpooler/res/values-iw/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"כל המדפסות…"</string> <string name="search" msgid="5421724265322228497">"חפש"</string> <string name="all_printers_label" msgid="3178848870161526399">"כל המדפסות"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"הוסף שירות"</string> <string name="choose_print_service" msgid="3740309762324459694">"בחר שירות הדפסה"</string> - <string name="search_play_store" msgid="1575218005860538249">"חפש בחנות Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"לא נמצאו מדפסות"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"מדפיס את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"מבטל את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"שגיאת מדפסת ב-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ja/strings.xml b/packages/PrintSpooler/res/values-ja/strings.xml index 116c7fe..0a8a458 100644 --- a/packages/PrintSpooler/res/values-ja/strings.xml +++ b/packages/PrintSpooler/res/values-ja/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"すべてのプリンタ…"</string> <string name="search" msgid="5421724265322228497">"検索"</string> <string name="all_printers_label" msgid="3178848870161526399">"すべてのプリンタ"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"サービスを追加"</string> <string name="choose_print_service" msgid="3740309762324459694">"印刷サービスの選択"</string> - <string name="search_play_store" msgid="1575218005860538249">"Playストアで検索"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"プリンタが見つかりません"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>を印刷しています"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>をキャンセルしています"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"プリンタエラー: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ka-rGE/strings.xml b/packages/PrintSpooler/res/values-ka-rGE/strings.xml index 320d57c..4a99c60 100644 --- a/packages/PrintSpooler/res/values-ka-rGE/strings.xml +++ b/packages/PrintSpooler/res/values-ka-rGE/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"ყველა პრინტერი…"</string> <string name="search" msgid="5421724265322228497">"ძიება"</string> <string name="all_printers_label" msgid="3178848870161526399">"ყველა პრინტერი"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"სერვისის დამატება"</string> <string name="choose_print_service" msgid="3740309762324459694">"აირჩიეთ ბეჭდვის სერვისი"</string> - <string name="search_play_store" msgid="1575218005860538249">"Play Store-ში ძიება"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"პრინტერები ვერ მოიძებნა"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"იბეჭდება <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"მიმდინარეობს <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ის გაუქმება"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"ბეჭდვის შეცდომა <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-km-rKH/strings.xml b/packages/PrintSpooler/res/values-km-rKH/strings.xml index b9a52f1..1d682e3 100644 --- a/packages/PrintSpooler/res/values-km-rKH/strings.xml +++ b/packages/PrintSpooler/res/values-km-rKH/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"ម៉ាស៊ីនបោះពុម្ពទាំងអស់ ..."</string> <string name="search" msgid="5421724265322228497">"ស្វែងរក"</string> <string name="all_printers_label" msgid="3178848870161526399">"ម៉ាស៊ីនបោះពុម្ពទាំងអស់"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"បន្ថែមសេវាកម្ម"</string> <string name="choose_print_service" msgid="3740309762324459694">"ជ្រើសសេវាបោះពុម្ព"</string> - <string name="search_play_store" msgid="1575218005860538249">"ស្វែងរកក្នុងឃ្លាំងកម្មវិធី"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"រកមិនឃើញម៉ាស៊ីនបោះពុម្ព"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"កំពុងបោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"ការបោះបង់ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"កំហុសម៉ាស៊ីនបោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ko/strings.xml b/packages/PrintSpooler/res/values-ko/strings.xml index c09b5c3..d7cd175 100644 --- a/packages/PrintSpooler/res/values-ko/strings.xml +++ b/packages/PrintSpooler/res/values-ko/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"모든 프린터…"</string> <string name="search" msgid="5421724265322228497">"검색"</string> <string name="all_printers_label" msgid="3178848870161526399">"모든 프린터"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"서비스 추가"</string> <string name="choose_print_service" msgid="3740309762324459694">"인쇄 서비스 선택"</string> - <string name="search_play_store" msgid="1575218005860538249">"Play 스토어에서 검색"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"프린터 없음"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> 인쇄 중"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> 취소 중"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"프린터 오류: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-lo-rLA/strings.xml b/packages/PrintSpooler/res/values-lo-rLA/strings.xml index f6d5fcd..ced114b 100644 --- a/packages/PrintSpooler/res/values-lo-rLA/strings.xml +++ b/packages/PrintSpooler/res/values-lo-rLA/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"ທຸກເຄື່ອງພິມ..."</string> <string name="search" msgid="5421724265322228497">"ຊອກຫາ"</string> <string name="all_printers_label" msgid="3178848870161526399">"ທຸກເຄື່ອງພິມ"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"ເພີ່ມບໍລິການ"</string> <string name="choose_print_service" msgid="3740309762324459694">"ເລືອກບໍລິການການພິມ"</string> - <string name="search_play_store" msgid="1575218005860538249">"ຊອກຫາໃນ play store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"ບໍ່ພົບເຄື່ອງພິມ"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"ກຳລັງພິມ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"ກຳລັງຍົກເລີກ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"ເຄື່ອງພິມເກີດຂໍ້ຜິດພາດ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-lt/strings.xml b/packages/PrintSpooler/res/values-lt/strings.xml index 6778b75..69c8675 100644 --- a/packages/PrintSpooler/res/values-lt/strings.xml +++ b/packages/PrintSpooler/res/values-lt/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Visi spausdintuvai…"</string> <string name="search" msgid="5421724265322228497">"Ieškoti"</string> <string name="all_printers_label" msgid="3178848870161526399">"Visi spausdintuvai"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Pridėti paslaugą"</string> <string name="choose_print_service" msgid="3740309762324459694">"Pasirinkite spausdinimo paslaugą"</string> - <string name="search_play_store" msgid="1575218005860538249">"Ieškoti „Google Play“ parduotuvėje"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nerasta jokių spausdintuvų"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Spausdinama: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Atšaukiama: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Spausdintuvo klaida: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-lv/strings.xml b/packages/PrintSpooler/res/values-lv/strings.xml index a255001..aae7b97 100644 --- a/packages/PrintSpooler/res/values-lv/strings.xml +++ b/packages/PrintSpooler/res/values-lv/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Visi printeri…"</string> <string name="search" msgid="5421724265322228497">"Meklēt"</string> <string name="all_printers_label" msgid="3178848870161526399">"Visi printeri"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Pievienot pakalpojumu"</string> <string name="choose_print_service" msgid="3740309762324459694">"Izvēlieties drukāšanas pakalpojumu"</string> - <string name="search_play_store" msgid="1575218005860538249">"Meklēt Play veikalā"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Netika atrasts neviens printeris."</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Notiek darba <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> drukāšana…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Pārtrauc drukas darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printera kļūda ar darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-mn-rMN/strings.xml b/packages/PrintSpooler/res/values-mn-rMN/strings.xml index 3ab1baa..af5f066 100644 --- a/packages/PrintSpooler/res/values-mn-rMN/strings.xml +++ b/packages/PrintSpooler/res/values-mn-rMN/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Бүх принтерүүд…"</string> <string name="search" msgid="5421724265322228497">"Хайх"</string> <string name="all_printers_label" msgid="3178848870161526399">"Бүх принтерүүд"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Үйлчилгээ нэмэх"</string> <string name="choose_print_service" msgid="3740309762324459694">"Хэвлэх үйлчилгээг сонгох"</string> - <string name="search_play_store" msgid="1575218005860538249">"Play Store-с хайх"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Принтер олдсонгүй"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Хэвлэж байна <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Цуцлаж байна <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Принтерийн алдаа <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ms-rMY/strings.xml b/packages/PrintSpooler/res/values-ms-rMY/strings.xml index bfbe51e..753728a 100644 --- a/packages/PrintSpooler/res/values-ms-rMY/strings.xml +++ b/packages/PrintSpooler/res/values-ms-rMY/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Semua pencetak..."</string> <string name="search" msgid="5421724265322228497">"Cari"</string> <string name="all_printers_label" msgid="3178848870161526399">"Semua pencetak"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan perkhidmatan"</string> <string name="choose_print_service" msgid="3740309762324459694">"Pilih perkhidmatan cetak"</string> - <string name="search_play_store" msgid="1575218005860538249">"Cari di gedung play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Tiada pencetak ditemui"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Mencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Membatalkan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Ralat pencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-nb/strings.xml b/packages/PrintSpooler/res/values-nb/strings.xml index d5dc300..57d33ec 100644 --- a/packages/PrintSpooler/res/values-nb/strings.xml +++ b/packages/PrintSpooler/res/values-nb/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Alle skrivere"</string> <string name="search" msgid="5421724265322228497">"Søk"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle skrivere"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Legg til tjeneste"</string> <string name="choose_print_service" msgid="3740309762324459694">"Velg utskriftstjeneste"</string> - <string name="search_play_store" msgid="1575218005860538249">"Søk i Play-butikken"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Fant ingen skrivere"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Skriver ut <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Avbryter <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Skriverfeil <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-nl/strings.xml b/packages/PrintSpooler/res/values-nl/strings.xml index 2d27eed..2548edd 100644 --- a/packages/PrintSpooler/res/values-nl/strings.xml +++ b/packages/PrintSpooler/res/values-nl/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Alle printers…"</string> <string name="search" msgid="5421724265322228497">"Zoeken"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle printers"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Service toevoegen"</string> <string name="choose_print_service" msgid="3740309762324459694">"Afdrukservice kiezen"</string> - <string name="search_play_store" msgid="1575218005860538249">"Zoeken in de Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Geen printers gevonden"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> afdrukken"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> annuleren"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printerfout <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-pl/strings.xml b/packages/PrintSpooler/res/values-pl/strings.xml index 6f8aab2..76c4aba 100644 --- a/packages/PrintSpooler/res/values-pl/strings.xml +++ b/packages/PrintSpooler/res/values-pl/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Wszystkie drukarki…"</string> <string name="search" msgid="5421724265322228497">"Szukaj"</string> <string name="all_printers_label" msgid="3178848870161526399">"Wszystkie drukarki"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj usługę"</string> <string name="choose_print_service" msgid="3740309762324459694">"Wybierz usługę drukowania"</string> - <string name="search_play_store" msgid="1575218005860538249">"Szukaj w Sklepie Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nie znaleziono drukarek"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Drukowanie: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Anulowanie: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Błąd drukarki: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-pt-rPT/strings.xml b/packages/PrintSpooler/res/values-pt-rPT/strings.xml index db37f90..ad7845e 100644 --- a/packages/PrintSpooler/res/values-pt-rPT/strings.xml +++ b/packages/PrintSpooler/res/values-pt-rPT/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Todas as impressoras..."</string> <string name="search" msgid="5421724265322228497">"Pesquisar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string> <string name="choose_print_service" msgid="3740309762324459694">"Escolher o serviço de impressão"</string> - <string name="search_play_store" msgid="1575218005860538249">"Pesquisar na Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nenhuma impressora encontrada"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"A imprimir <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"A cancelar <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Erro da impressora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> @@ -47,7 +48,7 @@ <string name="reason_unknown" msgid="5507940196503246139">"desconhecido"</string> <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – indisponível"</string> <string-array name="color_mode_labels"> - <item msgid="7602948745415174937">"Preto e branco:"</item> + <item msgid="7602948745415174937">"Preto e branco"</item> <item msgid="2762241247228983754">"Cor"</item> </string-array> <string-array name="orientation_labels"> diff --git a/packages/PrintSpooler/res/values-pt/strings.xml b/packages/PrintSpooler/res/values-pt/strings.xml index 1a7a737..9eb5a5a 100644 --- a/packages/PrintSpooler/res/values-pt/strings.xml +++ b/packages/PrintSpooler/res/values-pt/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Todas as impressoras…"</string> <string name="search" msgid="5421724265322228497">"Pesquisar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string> <string name="choose_print_service" msgid="3740309762324459694">"Selecione o serviço de impressão"</string> - <string name="search_play_store" msgid="1575218005860538249">"Pesquisar na Play Store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nenhuma impressora encontrada"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimindo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Erro ao imprimir <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ro/strings.xml b/packages/PrintSpooler/res/values-ro/strings.xml index 588717d..f95203c 100644 --- a/packages/PrintSpooler/res/values-ro/strings.xml +++ b/packages/PrintSpooler/res/values-ro/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Toate imprimantele..."</string> <string name="search" msgid="5421724265322228497">"Căutați"</string> <string name="all_printers_label" msgid="3178848870161526399">"Toate imprimantele"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Adăugați un serviciu"</string> <string name="choose_print_service" msgid="3740309762324459694">"Alegeți serviciul de printare"</string> - <string name="search_play_store" msgid="1575218005860538249">"Căutați în Magazin Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nu au fost găsite imprimante"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Se printează <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Se anulează <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Eroare de printare: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ru/strings.xml b/packages/PrintSpooler/res/values-ru/strings.xml index cbb5f1b..a96cd8c 100644 --- a/packages/PrintSpooler/res/values-ru/strings.xml +++ b/packages/PrintSpooler/res/values-ru/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Все принтеры"</string> <string name="search" msgid="5421724265322228497">"Поиск"</string> <string name="all_printers_label" msgid="3178848870161526399">"Все принтеры"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Добавить службу печати"</string> <string name="choose_print_service" msgid="3740309762324459694">"Выберите службу печати"</string> - <string name="search_play_store" msgid="1575218005860538249">"Поиск в Google Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Ничего не найдено"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Печать задания \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\"…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Отмена задания <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Ошибка задания \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string> diff --git a/packages/PrintSpooler/res/values-sk/strings.xml b/packages/PrintSpooler/res/values-sk/strings.xml index 993ee53..8c41e26 100644 --- a/packages/PrintSpooler/res/values-sk/strings.xml +++ b/packages/PrintSpooler/res/values-sk/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Všetky tlačiarne..."</string> <string name="search" msgid="5421724265322228497">"VYHĽADÁVANIE"</string> <string name="all_printers_label" msgid="3178848870161526399">"Všetky tlačiarne"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Pridať službu"</string> <string name="choose_print_service" msgid="3740309762324459694">"Výber tlačovej služby"</string> - <string name="search_play_store" msgid="1575218005860538249">"Vyhľadať v Obchode Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Nenašli sa žiadne tlačiarne"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Prebieha tlač úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Prebieha zrušenie úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Chyba tlačiarne – úloha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sl/strings.xml b/packages/PrintSpooler/res/values-sl/strings.xml index a6dd0e2..398268a 100644 --- a/packages/PrintSpooler/res/values-sl/strings.xml +++ b/packages/PrintSpooler/res/values-sl/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Vsi tiskalniki …"</string> <string name="search" msgid="5421724265322228497">"Iskanje"</string> <string name="all_printers_label" msgid="3178848870161526399">"Vsi tiskalniki"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj storitev"</string> <string name="choose_print_service" msgid="3740309762324459694">"Izberite tiskalno storitev"</string> - <string name="search_play_store" msgid="1575218005860538249">"Iskanje v Trgovini Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Tiskalnikov ni mogoče najti"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Tiskanje: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Preklic: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Napaka tiskalnika: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sr/strings.xml b/packages/PrintSpooler/res/values-sr/strings.xml index 3b03e10..6c15ede 100644 --- a/packages/PrintSpooler/res/values-sr/strings.xml +++ b/packages/PrintSpooler/res/values-sr/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Сви штампачи…"</string> <string name="search" msgid="5421724265322228497">"Претражи"</string> <string name="all_printers_label" msgid="3178848870161526399">"Сви штампачи"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Додај услугу"</string> <string name="choose_print_service" msgid="3740309762324459694">"Изаберите услугу штампања"</string> - <string name="search_play_store" msgid="1575218005860538249">"Претражи у Play продавници"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Није пронађен ниједан штампач"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Штампа се <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Отказује се <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Грешка штампача <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sv/strings.xml b/packages/PrintSpooler/res/values-sv/strings.xml index 0faa851..3ceefe8 100644 --- a/packages/PrintSpooler/res/values-sv/strings.xml +++ b/packages/PrintSpooler/res/values-sv/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Alla skrivare ..."</string> <string name="search" msgid="5421724265322228497">"Sök"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alla skrivare"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Lägg till tjänst"</string> <string name="choose_print_service" msgid="3740309762324459694">"Välj utskriftstjänst"</string> - <string name="search_play_store" msgid="1575218005860538249">"Sök i Play Butik"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Det gick inte att hitta några skrivare"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Skriver ut <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Avbryter <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Skrivarfel för <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sw/strings.xml b/packages/PrintSpooler/res/values-sw/strings.xml index b97c6a3..99cf501 100644 --- a/packages/PrintSpooler/res/values-sw/strings.xml +++ b/packages/PrintSpooler/res/values-sw/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Printa zote..."</string> <string name="search" msgid="5421724265322228497">"Tafuta"</string> <string name="all_printers_label" msgid="3178848870161526399">"Printa zote"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Ongeza huduma"</string> <string name="choose_print_service" msgid="3740309762324459694">"Chagua huduma ya printa"</string> - <string name="search_play_store" msgid="1575218005860538249">"Tafuta katika duka la Google Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Hakuna printa zilizopatikana"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Inachapisha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Inaghairi <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Hitilafu ya kuchapisha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-th/strings.xml b/packages/PrintSpooler/res/values-th/strings.xml index ba20aaf..9f5de68 100644 --- a/packages/PrintSpooler/res/values-th/strings.xml +++ b/packages/PrintSpooler/res/values-th/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"เครื่องพิมพ์ทั้งหมด…"</string> <string name="search" msgid="5421724265322228497">"ค้นหา"</string> <string name="all_printers_label" msgid="3178848870161526399">"เครื่องพิมพ์ทั้งหมด"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"เพิ่มบริการ"</string> <string name="choose_print_service" msgid="3740309762324459694">"เลือกบริการพิมพ์"</string> - <string name="search_play_store" msgid="1575218005860538249">"ค้นหาใน Play สโตร์"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"ไม่พบเครื่องพิมพ์"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"กำลังพิมพ์ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"กำลังยกเลิก <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"ข้อผิดพลาดเครื่องพิมพ์ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-tl/strings.xml b/packages/PrintSpooler/res/values-tl/strings.xml index a0fd8ad..1a89dac 100644 --- a/packages/PrintSpooler/res/values-tl/strings.xml +++ b/packages/PrintSpooler/res/values-tl/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Lahat ng printer…"</string> <string name="search" msgid="5421724265322228497">"Hanapin"</string> <string name="all_printers_label" msgid="3178848870161526399">"Lahat ng printer"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Magdagdag ng serbisyo"</string> <string name="choose_print_service" msgid="3740309762324459694">"Pumili ng serbisyo ng pag-print"</string> - <string name="search_play_store" msgid="1575218005860538249">"Hanapin sa play store"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Walang mga printer na nakita"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Pini-print ang <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kinakansela ang <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Error sa printer <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-tr/strings.xml b/packages/PrintSpooler/res/values-tr/strings.xml index 4b45829..088e407 100644 --- a/packages/PrintSpooler/res/values-tr/strings.xml +++ b/packages/PrintSpooler/res/values-tr/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Tüm yazıcılar…"</string> <string name="search" msgid="5421724265322228497">"Ara"</string> <string name="all_printers_label" msgid="3178848870161526399">"Tüm yazıcılar"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Hizmet ekle"</string> <string name="choose_print_service" msgid="3740309762324459694">"Yazdırma hizmetini seçin"</string> - <string name="search_play_store" msgid="1575218005860538249">"Google Play Store\'da ara"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Yazıcı bulunamadı"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> yazdırılıyor"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> iptal ediliyor"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Yazıcı hatası: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-uk/strings.xml b/packages/PrintSpooler/res/values-uk/strings.xml index 0aa514f..f88da45 100644 --- a/packages/PrintSpooler/res/values-uk/strings.xml +++ b/packages/PrintSpooler/res/values-uk/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Усі принтери…"</string> <string name="search" msgid="5421724265322228497">"Пошук"</string> <string name="all_printers_label" msgid="3178848870161526399">"Усі принтери"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Додати службу"</string> <string name="choose_print_service" msgid="3740309762324459694">"Вибрати службу друку"</string> - <string name="search_play_store" msgid="1575218005860538249">"Шукати в магазині Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Принтери не знайдено"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" друкується"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" скасовується"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Помилка завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string> diff --git a/packages/PrintSpooler/res/values-vi/strings.xml b/packages/PrintSpooler/res/values-vi/strings.xml index bb06d8b..2938522 100644 --- a/packages/PrintSpooler/res/values-vi/strings.xml +++ b/packages/PrintSpooler/res/values-vi/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Tất cả máy in…"</string> <string name="search" msgid="5421724265322228497">"Tìm kiếm"</string> <string name="all_printers_label" msgid="3178848870161526399">"Tất cả máy in"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Thêm dịch vụ"</string> <string name="choose_print_service" msgid="3740309762324459694">"Chọn dịch vụ in"</string> - <string name="search_play_store" msgid="1575218005860538249">"Tìm kiếm trong Cửa hàng Play"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Không tìm thấy máy in"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"In <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Hủy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Lỗi máy in <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-zh-rCN/strings.xml b/packages/PrintSpooler/res/values-zh-rCN/strings.xml index 564b47e..068d05c 100644 --- a/packages/PrintSpooler/res/values-zh-rCN/strings.xml +++ b/packages/PrintSpooler/res/values-zh-rCN/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"所有打印机…"</string> <string name="search" msgid="5421724265322228497">"搜索"</string> <string name="all_printers_label" msgid="3178848870161526399">"所有打印机"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"添加服务"</string> <string name="choose_print_service" msgid="3740309762324459694">"选择打印服务"</string> - <string name="search_play_store" msgid="1575218005860538249">"在 Play 商店中搜索"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"找不到打印机"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"正在打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"打印机在打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”时出错"</string> diff --git a/packages/PrintSpooler/res/values-zh-rHK/strings.xml b/packages/PrintSpooler/res/values-zh-rHK/strings.xml index 99eb30a..dbf3d36 100644 --- a/packages/PrintSpooler/res/values-zh-rHK/strings.xml +++ b/packages/PrintSpooler/res/values-zh-rHK/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"所有打印機…"</string> <string name="search" msgid="5421724265322228497">"搜尋"</string> <string name="all_printers_label" msgid="3178848870161526399">"所有打印機"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string> <string name="choose_print_service" msgid="3740309762324459694">"選擇列印服務"</string> - <string name="search_play_store" msgid="1575218005860538249">"前往「Play 商店」搜尋"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"找不到打印機"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"正在列印 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"打印機錯誤:<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-zh-rTW/strings.xml b/packages/PrintSpooler/res/values-zh-rTW/strings.xml index 4f20161..26b1554 100644 --- a/packages/PrintSpooler/res/values-zh-rTW/strings.xml +++ b/packages/PrintSpooler/res/values-zh-rTW/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"所有印表機…"</string> <string name="search" msgid="5421724265322228497">"搜尋"</string> <string name="all_printers_label" msgid="3178848870161526399">"所有印表機"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string> <string name="choose_print_service" msgid="3740309762324459694">"選擇列印服務"</string> - <string name="search_play_store" msgid="1575218005860538249">"前往 Play 商店搜尋"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"找不到印表機"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"正在列印 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"印表機發生錯誤:<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-zu/strings.xml b/packages/PrintSpooler/res/values-zu/strings.xml index 7ad8ce2..e93fb1a 100644 --- a/packages/PrintSpooler/res/values-zu/strings.xml +++ b/packages/PrintSpooler/res/values-zu/strings.xml @@ -35,8 +35,9 @@ <string name="all_printers" msgid="5018829726861876202">"Wonke amaphrinta…"</string> <string name="search" msgid="5421724265322228497">"Sesha"</string> <string name="all_printers_label" msgid="3178848870161526399">"Wonke amaphrinta"</string> + <string name="add_print_service_label" msgid="5356702546188981940">"Engeza isevisi"</string> <string name="choose_print_service" msgid="3740309762324459694">"Khetha isevisi yephrinta"</string> - <string name="search_play_store" msgid="1575218005860538249">"Sesha ku-Google Play Isitolo"</string> + <string name="print_no_printers_found" msgid="5932593791392441303">"Awekho amaphrinta atholiwe"</string> <string name="printing_notification_title_template" msgid="295903957762447362">"Iphrinta i-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Ikhansela i-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Iphutha lephrinta ye-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values/strings.xml b/packages/PrintSpooler/res/values/strings.xml index 41775a1..5b947ba 100644 --- a/packages/PrintSpooler/res/values/strings.xml +++ b/packages/PrintSpooler/res/values/strings.xml @@ -84,7 +84,7 @@ <string name="choose_print_service">Choose print service</string> <!-- Title for the prompt shown as a placeholder if no printers are found while searching. [CHAR LIMIT=50] --> - <string name="print_no_printers_found">No printers found</string> + <string name="print_searching_for_printers">Searching for printers</string> <!-- Notifications --> diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java index 8474115..0c593ef 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java @@ -1613,7 +1613,6 @@ public class PrintJobConfigActivity extends Activity { mCopiesEditText = (EditText) findViewById(R.id.copies_edittext); mCopiesEditText.setText(MIN_COPIES_STRING); mCopiesEditText.addTextChangedListener(mCopiesTextWatcher); - mCopiesEditText.selectAll(); if (!TextUtils.equals(mCopiesEditText.getText(), MIN_COPIES_STRING)) { mIgnoreNextCopiesChange = true; } @@ -1622,6 +1621,7 @@ public class PrintJobConfigActivity extends Activity { // Destination. mDestinationSpinner = (Spinner) findViewById(R.id.destination_spinner); + mDestinationSpinner.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); mDestinationSpinner.setAdapter(mDestinationSpinnerAdapter); mDestinationSpinner.setOnItemSelectedListener(mOnItemSelectedListener); if (mDestinationSpinnerAdapter.getCount() > 0 && mController.hasStarted()) { @@ -1954,7 +1954,6 @@ public class PrintJobConfigActivity extends Activity { && TextUtils.isEmpty(mCopiesEditText.getText())) { mIgnoreNextCopiesChange = true; mCopiesEditText.setText(String.valueOf(MIN_COPIES)); - mCopiesEditText.selectAll(); mCopiesEditText.requestFocus(); } @@ -2151,6 +2150,8 @@ public class PrintJobConfigActivity extends Activity { R.layout.printer_dropdown_item, parent, false); } + convertView.getLayoutParams().width = mDestinationSpinner.getWidth(); + CharSequence title = null; CharSequence subtitle = null; Drawable icon = null; diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintSpoolerService.java b/packages/PrintSpooler/src/com/android/printspooler/PrintSpoolerService.java index d1d71cd..d1b42bc 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/PrintSpoolerService.java +++ b/packages/PrintSpooler/src/com/android/printspooler/PrintSpoolerService.java @@ -440,8 +440,9 @@ public final class PrintSpoolerService extends Service { if (fileForJobMap == null) { fileForJobMap = new ArrayMap<PrintJobId, File>(); } - String printJobIdString = file.getName().substring(0, - PRINT_JOB_FILE_PREFIX.length()); + String printJobIdString = file.getName().substring( + PRINT_JOB_FILE_PREFIX.length(), + file.getName().indexOf('.')); PrintJobId printJobId = PrintJobId.unflattenFromString( printJobIdString); fileForJobMap.put(printJobId, file); diff --git a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java index c888e2c..114c151 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java +++ b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java @@ -36,6 +36,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.print.PrintManager; @@ -53,6 +54,7 @@ import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Filter; import android.widget.Filterable; +import android.widget.ImageView; import android.widget.ListView; import android.widget.SearchView; import android.widget.TextView; @@ -357,11 +359,12 @@ public final class SelectPrinterFragment extends ListFragment { public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = getActivity().getLayoutInflater().inflate( - R.layout.spinner_dropdown_item, parent, false); + R.layout.printer_dropdown_item, parent, false); } CharSequence title = null; CharSequence subtitle = null; + Drawable icon = null; PrinterInfo printer = (PrinterInfo) getItem(position); title = printer.getName(); @@ -370,6 +373,7 @@ public final class SelectPrinterFragment extends ListFragment { PackageInfo packageInfo = pm.getPackageInfo(printer.getId() .getServiceName().getPackageName(), 0); subtitle = packageInfo.applicationInfo.loadLabel(pm); + icon = packageInfo.applicationInfo.loadIcon(pm); } catch (NameNotFoundException nnfe) { /* ignore */ } @@ -386,6 +390,15 @@ public final class SelectPrinterFragment extends ListFragment { subtitleView.setVisibility(View.GONE); } + + ImageView iconView = (ImageView) convertView.findViewById(R.id.icon); + if (icon != null) { + iconView.setImageDrawable(icon); + iconView.setVisibility(View.VISIBLE); + } else { + iconView.setVisibility(View.GONE); + } + return convertView; } diff --git a/packages/Shell/res/values-da/strings.xml b/packages/Shell/res/values-da/strings.xml index 01ea42b..a8a3605 100644 --- a/packages/Shell/res/values-da/strings.xml +++ b/packages/Shell/res/values-da/strings.xml @@ -19,6 +19,6 @@ <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Fejlrapporten er registreret"</string> <string name="bugreport_finished_text" msgid="3559904746859400732">"Tryk for at dele din fejlrapport"</string> - <string name="bugreport_confirm" msgid="5130698467795669780">"Fejlrapporter indeholder data fra systemets forskellige logfiler, herunder personlige og private oplysninger. Del kun fejlrapporter med apps og personer, du har tillid til."</string> + <string name="bugreport_confirm" msgid="5130698467795669780">"Fejlrapporter indeholder data fra systemets forskellige logfiler, f.eks. personlige og private oplysninger. Del kun fejlrapporter med apps og personer, du har tillid til."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Vis denne meddelelse næste gang"</string> </resources> diff --git a/packages/SystemUI/res/drawable-hdpi/search_light.png b/packages/SystemUI/res/drawable-hdpi/search_light.png Binary files differindex 9a8f771..c8b5a2e 100644 --- a/packages/SystemUI/res/drawable-hdpi/search_light.png +++ b/packages/SystemUI/res/drawable-hdpi/search_light.png diff --git a/packages/SystemUI/res/drawable-mdpi/search_light.png b/packages/SystemUI/res/drawable-mdpi/search_light.png Binary files differindex c355b6a..4b5b2a4 100644 --- a/packages/SystemUI/res/drawable-mdpi/search_light.png +++ b/packages/SystemUI/res/drawable-mdpi/search_light.png diff --git a/packages/SystemUI/res/drawable-xhdpi/search_light.png b/packages/SystemUI/res/drawable-xhdpi/search_light.png Binary files differindex 68b70eb..3aa890f 100644 --- a/packages/SystemUI/res/drawable-xhdpi/search_light.png +++ b/packages/SystemUI/res/drawable-xhdpi/search_light.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/search_light.png b/packages/SystemUI/res/drawable-xxhdpi/search_light.png Binary files differindex faa97f8..74ad3c8 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/search_light.png +++ b/packages/SystemUI/res/drawable-xxhdpi/search_light.png diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 58865ab..73786f0 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -496,6 +496,12 @@ <string name="quick_settings_brightness_dialog_title">Brightness</string> <!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] --> <string name="quick_settings_brightness_dialog_auto_brightness_label">AUTO</string> + <!-- QuickSettings: Color inversion mode [CHAR LIMIT=NONE] --> + <string name="quick_settings_inversion_label">Color inversion mode</string> + <!-- QuickSettings: Enhanced contrast mode [CHAR LIMIT=NONE] --> + <string name="quick_settings_contrast_label">Enhanced contrast mode</string> + <!-- QuickSettings: Color correction mode [CHAR LIMIT=NONE] --> + <string name="quick_settings_color_space_label">Color correction mode</string> <!-- Glyph to be overlaid atop the battery when the level is extremely low. Do not translate. --> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java index 36ba4d9..6e24fd3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java @@ -25,6 +25,7 @@ import android.app.admin.DevicePolicyManager; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.ComponentName; +import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; @@ -84,6 +85,7 @@ class QuickSettings { static final boolean DEBUG_GONE_TILES = false; private static final String TAG = "QuickSettings"; public static final boolean SHOW_IME_TILE = false; + public static final boolean SHOW_ACCESSIBILITY_TILES = true; public static final boolean LONG_PRESS_TOGGLES = true; @@ -399,6 +401,35 @@ class QuickSettings { new QuickSettingsModel.BasicRefreshCallback(settingsTile)); parent.addView(settingsTile); mDynamicSpannedTiles.add(settingsTile); + + if (SHOW_ACCESSIBILITY_TILES) { + // Color inversion tile + final SystemSettingTile inversionTile = new SystemSettingTile(mContext); + inversionTile.setUri(Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, + SystemSettingTile.TYPE_SECURE); + inversionTile.setFragment("Settings$AccessibilityInversionSettingsActivity"); + mModel.addInversionTile(inversionTile, inversionTile.getRefreshCallback()); + parent.addView(inversionTile); + mDynamicSpannedTiles.add(inversionTile); + + // Contrast enhancement tile + final SystemSettingTile contrastTile = new SystemSettingTile(mContext); + contrastTile.setUri(Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST_ENABLED, + SystemSettingTile.TYPE_SECURE); + contrastTile.setFragment("Settings$AccessibilityContrastSettingsActivity"); + mModel.addContrastTile(contrastTile, contrastTile.getRefreshCallback()); + parent.addView(contrastTile); + mDynamicSpannedTiles.add(contrastTile); + + // Color space adjustment tile + final SystemSettingTile colorSpaceTile = new SystemSettingTile(mContext); + colorSpaceTile.setUri(Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, + SystemSettingTile.TYPE_SECURE); + colorSpaceTile.setFragment("Settings$AccessibilityDaltonizerSettingsActivity"); + mModel.addColorSpaceTile(colorSpaceTile, colorSpaceTile.getRefreshCallback()); + parent.addView(colorSpaceTile); + mDynamicSpannedTiles.add(colorSpaceTile); + } } private void addSystemTiles(ViewGroup parent, LayoutInflater inflater) { @@ -933,4 +964,108 @@ class QuickSettings { } } } + + /** + * Quick Setting tile that represents a secure setting. This type of tile + * can toggle a URI within Settings.Secure on click and launch a Settings + * fragment on long-click. + */ + public class SystemSettingTile extends QuickSettingsBasicTile { + private static final int TYPE_GLOBAL = 0; + private static final int TYPE_SECURE = 1; + private static final int TYPE_SYSTEM = 2; + + private final QuickSettingsModel.BasicRefreshCallback mRefreshCallback; + + private String mFragment; + private String mName; + private int mType; + + public SystemSettingTile(Context context) { + super(context); + + mRefreshCallback = new QuickSettingsModel.BasicRefreshCallback(this); + mRefreshCallback.setShowWhenEnabled(true); + } + + @Override + public boolean performLongClick() { + if (mFragment != null) { + collapsePanels(); + + final Intent intent = new Intent(); + intent.setComponent(new ComponentName( + "com.android.settings", "com.android.settings." + mFragment)); + startSettingsActivity(intent); + return true; + } + return false; + } + + @Override + public boolean performClick() { + if (mName != null) { + collapsePanels(); + + final ContentResolver cr = mContext.getContentResolver(); + switch (mType) { + case TYPE_GLOBAL: { + final boolean enable = Settings.Global.getInt(cr, mName, 0) == 0; + Settings.Global.putInt(cr, mName, enable ? 1 : 0); + } break; + case TYPE_SECURE: { + final boolean enable = Settings.Secure.getIntForUser( + cr, mName, 0, UserHandle.USER_CURRENT) == 0; + Settings.Secure.putIntForUser( + cr, mName, enable ? 1 : 0, UserHandle.USER_CURRENT); + } break; + case TYPE_SYSTEM: { + final boolean enable = Settings.System.getIntForUser( + cr, mName, 0, UserHandle.USER_CURRENT) == 0; + Settings.System.putIntForUser( + cr, mName, enable ? 1 : 0, UserHandle.USER_CURRENT); + } break; + } + return true; + } + return false; + } + + /** + * Specifies the fragment within the com.android.settings package to + * launch when this tile is long-clicked. + * + * @param fragment a fragment name within the com.android.settings + * package + */ + public void setFragment(String fragment) { + mFragment = fragment; + setLongClickable(fragment != null); + } + + /** + * Specifies the setting name and type to toggle when this tile is + * clicked. + * + * @param name a setting name + * @param type the type of setting, one of: + * <ul> + * <li>{@link #TYPE_GLOBAL} + * <li>{@link #TYPE_SECURE} + * <li>{@link #TYPE_SYSTEM} + * </ul> + */ + public void setUri(String name, int type) { + mName = name; + mType = type; + setClickable(mName != null); + } + + /** + * @return the refresh callback for this tile + */ + public QuickSettingsModel.BasicRefreshCallback getRefreshCallback() { + return mRefreshCallback; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java index 9d0418d..b6a81b8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java @@ -29,6 +29,7 @@ import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.hardware.display.WifiDisplayStatus; import android.net.ConnectivityManager; +import android.net.Uri; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; @@ -90,6 +91,19 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, static class BrightnessState extends State { boolean autoBrightness; } + static class InversionState extends State { + boolean toggled; + int type; + } + static class ContrastState extends State { + boolean toggled; + float contrast; + float brightness; + } + static class ColorSpaceState extends State { + boolean toggled; + int type; + } public static class BluetoothState extends State { boolean connected = false; String stateContentDescription; @@ -198,12 +212,96 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } } + /** ContentObserver to watch display inversion */ + private class DisplayInversionObserver extends ContentObserver { + public DisplayInversionObserver(Handler handler) { + super(handler); + } + + @Override + public void onChange(boolean selfChange) { + onInversionChanged(); + } + + public void startObserving() { + final ContentResolver cr = mContext.getContentResolver(); + cr.unregisterContentObserver(this); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_QUICK_SETTING_ENABLED), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION), + false, this, mUserTracker.getCurrentUserId()); + } + } + + /** ContentObserver to watch display contrast */ + private class DisplayContrastObserver extends ContentObserver { + public DisplayContrastObserver(Handler handler) { + super(handler); + } + + @Override + public void onChange(boolean selfChange) { + onContrastChanged(); + } + + public void startObserving() { + final ContentResolver cr = mContext.getContentResolver(); + cr.unregisterContentObserver(this); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST_ENABLED), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST_QUICK_SETTING_ENABLED), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_BRIGHTNESS), + false, this, mUserTracker.getCurrentUserId()); + } + } + + /** ContentObserver to watch display color space adjustment */ + private class DisplayColorSpaceObserver extends ContentObserver { + public DisplayColorSpaceObserver(Handler handler) { + super(handler); + } + + @Override + public void onChange(boolean selfChange) { + onColorSpaceChanged(); + } + + public void startObserving() { + final ContentResolver cr = mContext.getContentResolver(); + cr.unregisterContentObserver(this); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_QUICK_SETTING_ENABLED), + false, this, mUserTracker.getCurrentUserId()); + cr.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER), + false, this, mUserTracker.getCurrentUserId()); + } + } + private final Context mContext; private final Handler mHandler; private final CurrentUserTracker mUserTracker; private final NextAlarmObserver mNextAlarmObserver; private final BugreportObserver mBugreportObserver; private final BrightnessObserver mBrightnessObserver; + private final DisplayInversionObserver mInversionObserver; + private final DisplayContrastObserver mContrastObserver; + private final DisplayColorSpaceObserver mColorSpaceObserver; private final boolean mHasMobileData; @@ -259,6 +357,18 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, private RefreshCallback mBrightnessCallback; private BrightnessState mBrightnessState = new BrightnessState(); + private QuickSettingsTileView mInversionTile; + private RefreshCallback mInversionCallback; + private InversionState mInversionState = new InversionState(); + + private QuickSettingsTileView mContrastTile; + private RefreshCallback mContrastCallback; + private ContrastState mContrastState = new ContrastState(); + + private QuickSettingsTileView mColorSpaceTile; + private RefreshCallback mColorSpaceCallback; + private ColorSpaceState mColorSpaceState = new ColorSpaceState(); + private QuickSettingsTileView mBugreportTile; private RefreshCallback mBugreportCallback; private State mBugreportState = new State(); @@ -277,10 +387,17 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, mContext = context; mHandler = new Handler(); mUserTracker = new CurrentUserTracker(mContext) { + @Override public void onUserSwitched(int newUserId) { mBrightnessObserver.startObserving(); + mInversionObserver.startObserving(); + mContrastObserver.startObserving(); + mColorSpaceObserver.startObserving(); onRotationLockChanged(); onBrightnessLevelChanged(); + onInversionChanged(); + onContrastChanged(); + onColorSpaceChanged(); onNextAlarmChanged(); onBugreportChanged(); } @@ -292,6 +409,12 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, mBugreportObserver.startObserving(); mBrightnessObserver = new BrightnessObserver(mHandler); mBrightnessObserver.startObserving(); + mInversionObserver = new DisplayInversionObserver(mHandler); + mInversionObserver.startObserving(); + mContrastObserver = new DisplayContrastObserver(mHandler); + mContrastObserver.startObserving(); + mColorSpaceObserver = new DisplayColorSpaceObserver(mHandler); + mColorSpaceObserver.startObserving(); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); @@ -762,6 +885,90 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, onBrightnessLevelChanged(); } + // Color inversion + void addInversionTile(QuickSettingsTileView view, RefreshCallback cb) { + mInversionTile = view; + mInversionCallback = cb; + onInversionChanged(); + } + public void onInversionChanged() { + final Resources res = mContext.getResources(); + final ContentResolver cr = mContext.getContentResolver(); + final int currentUserId = mUserTracker.getCurrentUserId(); + final boolean quickSettingEnabled = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_QUICK_SETTING_ENABLED, 0, + currentUserId) == 1; + final boolean enabled = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, currentUserId) == 1; + final int type = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION, 0, currentUserId); + mInversionState.enabled = quickSettingEnabled; + mInversionState.toggled = enabled; + mInversionState.type = type; + // TODO: Add real icon assets. + mInversionState.iconId = enabled ? R.drawable.ic_qs_bluetooth_on + : R.drawable.ic_qs_bluetooth_off; + mInversionState.label = res.getString(R.string.quick_settings_inversion_label); + mInversionCallback.refreshView(mInversionTile, mInversionState); + } + + // Contrast enhancement + void addContrastTile(QuickSettingsTileView view, RefreshCallback cb) { + mContrastTile = view; + mContrastCallback = cb; + onContrastChanged(); + } + public void onContrastChanged() { + final Resources res = mContext.getResources(); + final ContentResolver cr = mContext.getContentResolver(); + final int currentUserId = mUserTracker.getCurrentUserId(); + final boolean quickSettingEnabled = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST_QUICK_SETTING_ENABLED, 0, + currentUserId) == 1; + final boolean enabled = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST_ENABLED, 0, currentUserId) == 1; + final float contrast = Settings.Secure.getFloatForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_CONTRAST, 1, currentUserId); + final float brightness = Settings.Secure.getFloatForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_BRIGHTNESS, 0, currentUserId); + mContrastState.enabled = quickSettingEnabled; + mContrastState.toggled = enabled; + mContrastState.contrast = contrast; + mContrastState.brightness = brightness; + // TODO: Add real icon assets. + mContrastState.iconId = enabled ? R.drawable.ic_qs_bluetooth_on + : R.drawable.ic_qs_bluetooth_off; + mContrastState.label = res.getString(R.string.quick_settings_contrast_label); + mContrastCallback.refreshView(mContrastTile, mContrastState); + } + + // Color space adjustment + void addColorSpaceTile(QuickSettingsTileView view, RefreshCallback cb) { + mColorSpaceTile = view; + mColorSpaceCallback = cb; + onColorSpaceChanged(); + } + public void onColorSpaceChanged() { + final Resources res = mContext.getResources(); + final ContentResolver cr = mContext.getContentResolver(); + final int currentUserId = mUserTracker.getCurrentUserId(); + final boolean quickSettingEnabled = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_QUICK_SETTING_ENABLED, 0, + currentUserId) == 1; + final boolean enabled = Settings.Secure.getIntForUser(cr, + Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, currentUserId) == 1; + final int type = Settings.Secure.getIntForUser( + cr, Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, 0, currentUserId); + mColorSpaceState.enabled = quickSettingEnabled; + mColorSpaceState.toggled = enabled; + mColorSpaceState.type = type; + // TODO: Add real icon assets. + mColorSpaceState.iconId = enabled ? R.drawable.ic_qs_bluetooth_on + : R.drawable.ic_qs_bluetooth_off; + mColorSpaceState.label = res.getString(R.string.quick_settings_color_space_label); + mColorSpaceCallback.refreshView(mColorSpaceTile, mColorSpaceState); + } + // SSL CA Cert warning. public void addSslCaCertWarningTile(QuickSettingsTileView view, RefreshCallback cb) { mSslCaCertWarningTile = view; |