From e612775922ec9f8cc4e5cb976bc62b3312a3de0e Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Tue, 21 Jul 2015 17:01:26 -0700 Subject: resolved conflicts for merge of 13ef17a3 to mnc-dr-dev b/22609402 Change-Id: I140cf972d57e14737a6f91c0b4a8ec6c7ff1af2b --- .gitignore | 9 + Android.mk | 15 +- AndroidManifest.xml | 51 +- WallpaperPicker/AndroidManifest.xml | 4 +- WallpaperPicker/res/drawable-hdpi/ic_images.png | Bin 1935 -> 354 bytes WallpaperPicker/res/drawable-mdpi/ic_images.png | Bin 1332 -> 249 bytes WallpaperPicker/res/drawable-xhdpi/ic_images.png | Bin 2480 -> 431 bytes WallpaperPicker/res/drawable-xxhdpi/ic_images.png | Bin 2097 -> 621 bytes WallpaperPicker/res/drawable-xxxhdpi/ic_images.png | Bin 0 -> 845 bytes WallpaperPicker/res/layout/wallpaper_cropper.xml | 3 +- WallpaperPicker/res/layout/wallpaper_picker.xml | 42 +- .../layout/wallpaper_picker_image_picker_item.xml | 1 - .../res/layout/wallpaper_picker_item.xml | 1 - .../wallpaper_picker_live_wallpaper_item.xml | 1 - .../layout/wallpaper_picker_third_party_item.xml | 1 - WallpaperPicker/res/values-af/strings.xml | 2 +- WallpaperPicker/res/values-am/strings.xml | 2 +- WallpaperPicker/res/values-ar/strings.xml | 2 +- WallpaperPicker/res/values-az-rAZ/strings.xml | 2 +- WallpaperPicker/res/values-bg/strings.xml | 2 +- WallpaperPicker/res/values-bn-rBD/strings.xml | 2 +- WallpaperPicker/res/values-ca/strings.xml | 2 +- WallpaperPicker/res/values-cs/strings.xml | 2 +- WallpaperPicker/res/values-da/strings.xml | 2 +- WallpaperPicker/res/values-de/strings.xml | 2 +- WallpaperPicker/res/values-el/strings.xml | 2 +- WallpaperPicker/res/values-en-rAU/strings.xml | 2 +- WallpaperPicker/res/values-en-rGB/strings.xml | 2 +- WallpaperPicker/res/values-en-rIN/strings.xml | 2 +- WallpaperPicker/res/values-es-rUS/strings.xml | 2 +- WallpaperPicker/res/values-es/strings.xml | 2 +- WallpaperPicker/res/values-et-rEE/strings.xml | 2 +- WallpaperPicker/res/values-eu-rES/strings.xml | 2 +- WallpaperPicker/res/values-fa/strings.xml | 2 +- WallpaperPicker/res/values-fi/strings.xml | 2 +- WallpaperPicker/res/values-fr-rCA/strings.xml | 2 +- WallpaperPicker/res/values-fr/strings.xml | 2 +- WallpaperPicker/res/values-gl-rES/strings.xml | 2 +- WallpaperPicker/res/values-gu-rIN/strings.xml | 2 +- WallpaperPicker/res/values-hi/strings.xml | 2 +- WallpaperPicker/res/values-hr/strings.xml | 2 +- WallpaperPicker/res/values-hu/strings.xml | 2 +- WallpaperPicker/res/values-hy-rAM/strings.xml | 2 +- WallpaperPicker/res/values-in/strings.xml | 2 +- WallpaperPicker/res/values-is-rIS/strings.xml | 2 +- WallpaperPicker/res/values-it/strings.xml | 2 +- WallpaperPicker/res/values-iw/strings.xml | 2 +- WallpaperPicker/res/values-ja/strings.xml | 2 +- WallpaperPicker/res/values-ka-rGE/strings.xml | 2 +- WallpaperPicker/res/values-kk-rKZ/strings.xml | 2 +- WallpaperPicker/res/values-km-rKH/strings.xml | 2 +- WallpaperPicker/res/values-kn-rIN/strings.xml | 2 +- WallpaperPicker/res/values-ko/strings.xml | 2 +- WallpaperPicker/res/values-ky-rKG/strings.xml | 2 +- WallpaperPicker/res/values-lo-rLA/strings.xml | 2 +- WallpaperPicker/res/values-lt/strings.xml | 2 +- WallpaperPicker/res/values-lv/strings.xml | 2 +- WallpaperPicker/res/values-mk-rMK/strings.xml | 2 +- WallpaperPicker/res/values-ml-rIN/strings.xml | 2 +- WallpaperPicker/res/values-mn-rMN/strings.xml | 2 +- WallpaperPicker/res/values-mr-rIN/strings.xml | 2 +- WallpaperPicker/res/values-ms-rMY/strings.xml | 2 +- WallpaperPicker/res/values-my-rMM/strings.xml | 2 +- WallpaperPicker/res/values-nb/strings.xml | 2 +- WallpaperPicker/res/values-ne-rNP/strings.xml | 2 +- WallpaperPicker/res/values-nl/strings.xml | 2 +- WallpaperPicker/res/values-pa-rIN/strings.xml | 2 +- WallpaperPicker/res/values-pl/strings.xml | 2 +- WallpaperPicker/res/values-pt-rPT/strings.xml | 2 +- WallpaperPicker/res/values-pt/strings.xml | 2 +- WallpaperPicker/res/values-ro/strings.xml | 2 +- WallpaperPicker/res/values-ru/strings.xml | 2 +- WallpaperPicker/res/values-si-rLK/strings.xml | 2 +- WallpaperPicker/res/values-sk/strings.xml | 2 +- WallpaperPicker/res/values-sl/strings.xml | 2 +- WallpaperPicker/res/values-sq-rAL/strings.xml | 2 +- WallpaperPicker/res/values-sr/strings.xml | 2 +- WallpaperPicker/res/values-sv/strings.xml | 2 +- WallpaperPicker/res/values-sw/strings.xml | 2 +- WallpaperPicker/res/values-sw600dp/config.xml | 18 - WallpaperPicker/res/values-sw720dp-v19/styles.xml | 2 +- WallpaperPicker/res/values-sw720dp/dimens.xml | 28 - WallpaperPicker/res/values-sw720dp/styles.xml | 2 +- WallpaperPicker/res/values-ta-rIN/strings.xml | 2 +- WallpaperPicker/res/values-te-rIN/strings.xml | 2 +- WallpaperPicker/res/values-th/strings.xml | 2 +- WallpaperPicker/res/values-tl/strings.xml | 2 +- WallpaperPicker/res/values-tr/strings.xml | 2 +- WallpaperPicker/res/values-uk/strings.xml | 2 +- WallpaperPicker/res/values-ur-rPK/strings.xml | 2 +- WallpaperPicker/res/values-uz-rUZ/strings.xml | 2 +- WallpaperPicker/res/values-v21/styles.xml | 36 + WallpaperPicker/res/values-vi/strings.xml | 2 +- WallpaperPicker/res/values-zh-rCN/strings.xml | 2 +- WallpaperPicker/res/values-zh-rHK/strings.xml | 2 +- WallpaperPicker/res/values-zh-rTW/strings.xml | 2 +- WallpaperPicker/res/values-zu/strings.xml | 2 +- WallpaperPicker/res/values/config.xml | 1 - WallpaperPicker/res/values/strings.xml | 2 +- WallpaperPicker/res/values/styles.xml | 3 +- WallpaperPicker/src/android/util/Pools.java | 165 -- .../android/gallery3d/common/BitmapCropTask.java | 405 ++++ .../com/android/gallery3d/common/BitmapUtils.java | 253 +-- .../src/com/android/gallery3d/common/Utils.java | 271 +-- .../com/android/gallery3d/exif/ExifInterface.java | 6 +- .../android/gallery3d/glrenderer/BasicTexture.java | 1 - .../gallery3d/glrenderer/BitmapTexture.java | 4 +- .../android/gallery3d/glrenderer/GLES20Canvas.java | 3 +- .../com/android/gallery3d/glrenderer/GLPaint.java | 4 +- .../com/android/gallery3d/glrenderer/IntArray.java | 60 + .../gallery3d/glrenderer/UploadedTexture.java | 9 +- .../src/com/android/gallery3d/util/IntArray.java | 60 - .../src/com/android/launcher3/CropView.java | 5 +- .../launcher3/LauncherWallpaperPickerActivity.java | 21 + .../launcher3/LiveWallpaperListAdapter.java | 15 +- .../android/launcher3/SavedWallpaperImages.java | 5 +- .../ThirdPartyWallpaperPickerListAdapter.java | 11 +- .../android/launcher3/WallpaperCropActivity.java | 793 ++------ .../android/launcher3/WallpaperPickerActivity.java | 391 ++-- .../com/android/launcher3/WallpaperRootView.java | 39 - .../com/android/launcher3/base/BaseActivity.java | 21 + .../com/android/photos/BitmapRegionTileSource.java | 182 +- .../photos/views/BlockingGLTextureView.java | 438 ---- .../android/photos/views/TiledImageRenderer.java | 27 +- .../com/android/photos/views/TiledImageView.java | 124 +- proguard.flags | 54 +- protos/backup.proto | 28 +- res/anim/fade_in_fast.xml | 23 - res/anim/fade_out_fast.xml | 23 - res/drawable-hdpi/apps_customize_bg.png | Bin 69 -> 0 bytes res/drawable-hdpi/bg_appwidget_error.9.png | Bin 1285 -> 0 bytes res/drawable-hdpi/home_press.9.png | Bin 153 -> 0 bytes res/drawable-hdpi/ic_arrow_back_grey.png | Bin 0 -> 190 bytes res/drawable-hdpi/ic_home_all_apps_holo_dark.png | Bin 1292 -> 0 bytes res/drawable-hdpi/ic_info_launcher.png | Bin 0 -> 2727 bytes .../ic_launcher_clear_active_holo.png | Bin 1181 -> 0 bytes .../ic_launcher_clear_normal_holo.png | Bin 1003 -> 0 bytes res/drawable-hdpi/ic_launcher_info_active_holo.png | Bin 4714 -> 0 bytes res/drawable-hdpi/ic_launcher_info_normal_holo.png | Bin 2692 -> 0 bytes res/drawable-hdpi/ic_launcher_market_holo.png | Bin 1644 -> 0 bytes .../ic_launcher_trashcan_active_holo.png | Bin 2657 -> 0 bytes .../ic_launcher_trashcan_normal_holo.png | Bin 1750 -> 0 bytes res/drawable-hdpi/ic_pageindicator_current.png | Bin 1038 -> 1038 bytes .../ic_pageindicator_current_folder.png | Bin 0 -> 610 bytes res/drawable-hdpi/ic_pageindicator_default.png | Bin 895 -> 895 bytes .../ic_pageindicator_default_folder.png | Bin 0 -> 529 bytes res/drawable-hdpi/ic_remove_launcher.png | Bin 0 -> 1610 bytes res/drawable-hdpi/ic_search_grey.png | Bin 0 -> 743 bytes res/drawable-hdpi/ic_uninstall_launcher.png | Bin 0 -> 1194 bytes res/drawable-hdpi/ic_widget_resize_handle.png | Bin 0 -> 1492 bytes res/drawable-hdpi/on_boarding_welcome.png | Bin 22423 -> 0 bytes res/drawable-hdpi/overscroll_glow_left.9.png | Bin 858 -> 0 bytes res/drawable-hdpi/overscroll_glow_right.9.png | Bin 856 -> 0 bytes res/drawable-hdpi/paged_view_indicator.9.png | Bin 637 -> 0 bytes res/drawable-hdpi/portal_container_holo.9.png | Bin 1384 -> 0 bytes res/drawable-hdpi/portal_ring_inner.png | Bin 0 -> 4386 bytes res/drawable-hdpi/portal_ring_inner_holo.png | Bin 4429 -> 0 bytes res/drawable-hdpi/portal_ring_inner_nolip.png | Bin 0 -> 4107 bytes res/drawable-hdpi/portal_ring_inner_nolip_holo.png | Bin 4118 -> 0 bytes res/drawable-hdpi/portal_ring_outer.png | Bin 0 -> 7887 bytes res/drawable-hdpi/portal_ring_outer_holo.png | Bin 7658 -> 0 bytes res/drawable-hdpi/portal_ring_rest.png | Bin 2646 -> 2794 bytes res/drawable-hdpi/quantum_panel.9.png | Bin 744 -> 0 bytes res/drawable-hdpi/quantum_panel_bitmap.9.png | Bin 0 -> 608 bytes res/drawable-hdpi/quantum_panel_dark.9.png | Bin 646 -> 0 bytes res/drawable-hdpi/quantum_panel_dark_bitmap.9.png | Bin 0 -> 629 bytes res/drawable-hdpi/widget_resize_frame.9.png | Bin 0 -> 405 bytes res/drawable-hdpi/widget_resize_frame_holo.9.png | Bin 880 -> 0 bytes res/drawable-hdpi/widget_resize_handle_bottom.png | Bin 1080 -> 0 bytes res/drawable-hdpi/widget_resize_handle_left.png | Bin 1097 -> 0 bytes res/drawable-hdpi/widget_resize_handle_right.png | Bin 1085 -> 0 bytes res/drawable-hdpi/widget_resize_handle_top.png | Bin 1085 -> 0 bytes res/drawable-hdpi/widget_resize_shadow.9.png | Bin 0 -> 527 bytes .../container_fastscroll_popup_bg.xml | 27 + res/drawable-mdpi/apps_customize_bg.png | Bin 69 -> 0 bytes res/drawable-mdpi/bg_appwidget_error.9.png | Bin 794 -> 0 bytes res/drawable-mdpi/home_press.9.png | Bin 129 -> 0 bytes res/drawable-mdpi/ic_arrow_back_grey.png | Bin 0 -> 151 bytes res/drawable-mdpi/ic_home_all_apps_holo_dark.png | Bin 889 -> 0 bytes res/drawable-mdpi/ic_info_launcher.png | Bin 0 -> 1603 bytes .../ic_launcher_clear_active_holo.png | Bin 949 -> 0 bytes .../ic_launcher_clear_normal_holo.png | Bin 802 -> 0 bytes res/drawable-mdpi/ic_launcher_info_active_holo.png | Bin 2736 -> 0 bytes res/drawable-mdpi/ic_launcher_info_normal_holo.png | Bin 1518 -> 0 bytes res/drawable-mdpi/ic_launcher_market_holo.png | Bin 1124 -> 0 bytes .../ic_launcher_trashcan_active_holo.png | Bin 1783 -> 0 bytes .../ic_launcher_trashcan_normal_holo.png | Bin 1109 -> 0 bytes res/drawable-mdpi/ic_pageindicator_current.png | Bin 704 -> 704 bytes .../ic_pageindicator_current_folder.png | Bin 0 -> 484 bytes res/drawable-mdpi/ic_pageindicator_default.png | Bin 694 -> 694 bytes .../ic_pageindicator_default_folder.png | Bin 0 -> 482 bytes res/drawable-mdpi/ic_remove_launcher.png | Bin 0 -> 1087 bytes res/drawable-mdpi/ic_search_grey.png | Bin 0 -> 497 bytes res/drawable-mdpi/ic_setting_icn.png | Bin 1718 -> 0 bytes res/drawable-mdpi/ic_uninstall_launcher.png | Bin 0 -> 932 bytes res/drawable-mdpi/ic_widget_resize_handle.png | Bin 0 -> 896 bytes res/drawable-mdpi/on_boarding_welcome.png | Bin 15325 -> 0 bytes res/drawable-mdpi/overscroll_glow_left.9.png | Bin 552 -> 0 bytes res/drawable-mdpi/overscroll_glow_right.9.png | Bin 525 -> 0 bytes res/drawable-mdpi/paged_view_indicator.9.png | Bin 264 -> 0 bytes res/drawable-mdpi/portal_container_holo.9.png | Bin 843 -> 0 bytes res/drawable-mdpi/portal_ring_inner.png | Bin 0 -> 2641 bytes res/drawable-mdpi/portal_ring_inner_holo.png | Bin 2779 -> 0 bytes res/drawable-mdpi/portal_ring_inner_nolip.png | Bin 0 -> 2545 bytes res/drawable-mdpi/portal_ring_inner_nolip_holo.png | Bin 2632 -> 0 bytes res/drawable-mdpi/portal_ring_outer.png | Bin 0 -> 4704 bytes res/drawable-mdpi/portal_ring_outer_holo.png | Bin 4798 -> 0 bytes res/drawable-mdpi/portal_ring_rest.png | Bin 1633 -> 1675 bytes res/drawable-mdpi/quantum_panel.9.png | Bin 476 -> 0 bytes res/drawable-mdpi/quantum_panel_bitmap.9.png | Bin 0 -> 436 bytes res/drawable-mdpi/quantum_panel_dark.9.png | Bin 449 -> 0 bytes res/drawable-mdpi/quantum_panel_dark_bitmap.9.png | Bin 0 -> 445 bytes res/drawable-mdpi/widget_resize_frame.9.png | Bin 0 -> 304 bytes res/drawable-mdpi/widget_resize_frame_holo.9.png | Bin 619 -> 0 bytes res/drawable-mdpi/widget_resize_handle_bottom.png | Bin 745 -> 0 bytes res/drawable-mdpi/widget_resize_handle_left.png | Bin 762 -> 0 bytes res/drawable-mdpi/widget_resize_handle_right.png | Bin 772 -> 0 bytes res/drawable-mdpi/widget_resize_handle_top.png | Bin 750 -> 0 bytes res/drawable-mdpi/widget_resize_shadow.9.png | Bin 0 -> 367 bytes res/drawable-v21/quantum_panel.xml | 22 + res/drawable-v21/quantum_panel_dark.xml | 22 + res/drawable-xhdpi/apps_customize_bg.png | Bin 244 -> 0 bytes res/drawable-xhdpi/bg_appwidget_error.9.png | Bin 2387 -> 0 bytes res/drawable-xhdpi/home_press.9.png | Bin 206 -> 0 bytes res/drawable-xhdpi/ic_arrow_back_grey.png | Bin 0 -> 234 bytes res/drawable-xhdpi/ic_home_all_apps_holo_dark.png | Bin 1569 -> 0 bytes res/drawable-xhdpi/ic_info_launcher.png | Bin 0 -> 3777 bytes .../ic_launcher_clear_active_holo.png | Bin 1595 -> 0 bytes .../ic_launcher_clear_normal_holo.png | Bin 1392 -> 0 bytes .../ic_launcher_info_active_holo.png | Bin 6841 -> 0 bytes .../ic_launcher_info_normal_holo.png | Bin 3837 -> 0 bytes res/drawable-xhdpi/ic_launcher_market_holo.png | Bin 2187 -> 0 bytes .../ic_launcher_trashcan_active_holo.png | Bin 3431 -> 0 bytes .../ic_launcher_trashcan_normal_holo.png | Bin 2240 -> 0 bytes res/drawable-xhdpi/ic_pageindicator_current.png | Bin 1414 -> 1414 bytes .../ic_pageindicator_current_folder.png | Bin 0 -> 782 bytes res/drawable-xhdpi/ic_pageindicator_default.png | Bin 1168 -> 1168 bytes .../ic_pageindicator_default_folder.png | Bin 0 -> 644 bytes res/drawable-xhdpi/ic_remove_launcher.png | Bin 0 -> 1724 bytes res/drawable-xhdpi/ic_search_grey.png | Bin 0 -> 972 bytes res/drawable-xhdpi/ic_uninstall_launcher.png | Bin 0 -> 1456 bytes res/drawable-xhdpi/ic_widget_resize_handle.png | Bin 0 -> 2144 bytes res/drawable-xhdpi/on_boarding_welcome.png | Bin 34253 -> 0 bytes res/drawable-xhdpi/overscroll_glow_left.9.png | Bin 1249 -> 0 bytes res/drawable-xhdpi/overscroll_glow_right.9.png | Bin 1248 -> 0 bytes res/drawable-xhdpi/paged_view_indicator.9.png | Bin 897 -> 0 bytes res/drawable-xhdpi/portal_container_holo.9.png | Bin 2130 -> 0 bytes res/drawable-xhdpi/portal_ring_inner.png | Bin 0 -> 5983 bytes res/drawable-xhdpi/portal_ring_inner_holo.png | Bin 6711 -> 0 bytes res/drawable-xhdpi/portal_ring_inner_nolip.png | Bin 0 -> 5569 bytes .../portal_ring_inner_nolip_holo.png | Bin 6191 -> 0 bytes res/drawable-xhdpi/portal_ring_outer.png | Bin 0 -> 10394 bytes res/drawable-xhdpi/portal_ring_outer_holo.png | Bin 11037 -> 0 bytes res/drawable-xhdpi/portal_ring_rest.png | Bin 3939 -> 3754 bytes res/drawable-xhdpi/quantum_panel.9.png | Bin 928 -> 0 bytes res/drawable-xhdpi/quantum_panel_bitmap.9.png | Bin 0 -> 843 bytes res/drawable-xhdpi/quantum_panel_dark.9.png | Bin 894 -> 0 bytes res/drawable-xhdpi/quantum_panel_dark_bitmap.9.png | Bin 0 -> 842 bytes res/drawable-xhdpi/widget_resize_frame.9.png | Bin 0 -> 494 bytes res/drawable-xhdpi/widget_resize_frame_holo.9.png | Bin 1323 -> 0 bytes res/drawable-xhdpi/widget_resize_handle_bottom.png | Bin 1434 -> 0 bytes res/drawable-xhdpi/widget_resize_handle_left.png | Bin 1467 -> 0 bytes res/drawable-xhdpi/widget_resize_handle_right.png | Bin 1483 -> 0 bytes res/drawable-xhdpi/widget_resize_handle_top.png | Bin 1463 -> 0 bytes res/drawable-xhdpi/widget_resize_shadow.9.png | Bin 0 -> 669 bytes res/drawable-xxhdpi/apps_customize_bg.png | Bin 244 -> 0 bytes res/drawable-xxhdpi/arrow_dashed.png | Bin 25263 -> 0 bytes .../default_widget_preview_holo.9.png | Bin 1342 -> 0 bytes res/drawable-xxhdpi/hotseat_bg_panel.9.png | Bin 1126 -> 0 bytes res/drawable-xxhdpi/hotseat_scrubber_holo.9.png | Bin 1088 -> 0 bytes res/drawable-xxhdpi/hotseat_track_holo.9.png | Bin 1213 -> 0 bytes res/drawable-xxhdpi/ic_arrow_back_grey.png | Bin 0 -> 308 bytes res/drawable-xxhdpi/ic_home_all_apps_holo_dark.png | Bin 3300 -> 0 bytes .../ic_home_google_logo_normal_holo.png | Bin 13630 -> 0 bytes .../ic_home_google_logo_pressed_holo.png | Bin 20843 -> 0 bytes .../ic_home_search_pressed_holo.png | Bin 7909 -> 0 bytes .../ic_home_voice_search_pressed_holo.png | Bin 5445 -> 0 bytes res/drawable-xxhdpi/ic_info_launcher.png | Bin 0 -> 6343 bytes .../ic_launcher_clear_active_holo.png | Bin 2357 -> 0 bytes .../ic_launcher_clear_normal_holo.png | Bin 2738 -> 0 bytes .../ic_launcher_info_active_holo.png | Bin 8022 -> 0 bytes .../ic_launcher_info_normal_holo.png | Bin 7833 -> 0 bytes .../ic_launcher_trashcan_active_holo.png | Bin 4493 -> 0 bytes .../ic_launcher_trashcan_normal_holo.png | Bin 4522 -> 0 bytes res/drawable-xxhdpi/ic_pageindicator_current.png | Bin 2105 -> 2105 bytes .../ic_pageindicator_current_folder.png | Bin 0 -> 1023 bytes res/drawable-xxhdpi/ic_pageindicator_default.png | Bin 1634 -> 1634 bytes .../ic_pageindicator_default_folder.png | Bin 0 -> 832 bytes res/drawable-xxhdpi/ic_qs_remote_display.png | Bin 1715 -> 0 bytes .../ic_qs_remote_display_connected.png | Bin 1718 -> 0 bytes res/drawable-xxhdpi/ic_remove_launcher.png | Bin 0 -> 2892 bytes res/drawable-xxhdpi/ic_search_grey.png | Bin 0 -> 1473 bytes res/drawable-xxhdpi/ic_uninstall_launcher.png | Bin 0 -> 2045 bytes res/drawable-xxhdpi/ic_widget_resize_handle.png | Bin 0 -> 2928 bytes res/drawable-xxhdpi/overscroll_glow_left.9.png | Bin 4562 -> 0 bytes res/drawable-xxhdpi/overscroll_glow_right.9.png | Bin 2738 -> 0 bytes res/drawable-xxhdpi/portal_container_holo.9.png | Bin 4096 -> 0 bytes res/drawable-xxhdpi/portal_ring_inner.png | Bin 0 -> 9918 bytes res/drawable-xxhdpi/portal_ring_inner_holo.png | Bin 10046 -> 0 bytes res/drawable-xxhdpi/portal_ring_inner_nolip.png | Bin 0 -> 9127 bytes .../portal_ring_inner_nolip_holo.png | Bin 9127 -> 0 bytes res/drawable-xxhdpi/portal_ring_outer.png | Bin 0 -> 19200 bytes res/drawable-xxhdpi/portal_ring_outer_holo.png | Bin 16576 -> 0 bytes res/drawable-xxhdpi/quantum_panel.9.png | Bin 1439 -> 0 bytes res/drawable-xxhdpi/quantum_panel_bitmap.9.png | Bin 0 -> 1323 bytes res/drawable-xxhdpi/quantum_panel_dark.9.png | Bin 1366 -> 0 bytes .../quantum_panel_dark_bitmap.9.png | Bin 0 -> 1332 bytes res/drawable-xxhdpi/widget_resize_frame.9.png | Bin 0 -> 626 bytes res/drawable-xxhdpi/widget_resize_frame_holo.9.png | Bin 4396 -> 0 bytes .../widget_resize_handle_bottom.png | Bin 4470 -> 0 bytes res/drawable-xxhdpi/widget_resize_handle_left.png | Bin 4428 -> 0 bytes res/drawable-xxhdpi/widget_resize_handle_right.png | Bin 4438 -> 0 bytes res/drawable-xxhdpi/widget_resize_handle_top.png | Bin 4473 -> 0 bytes res/drawable-xxhdpi/widget_resize_shadow.9.png | Bin 0 -> 975 bytes res/drawable-xxxhdpi/ic_arrow_back_grey.png | Bin 0 -> 359 bytes res/drawable-xxxhdpi/ic_info_launcher.png | Bin 0 -> 5724 bytes res/drawable-xxxhdpi/ic_remove_launcher.png | Bin 0 -> 3210 bytes res/drawable-xxxhdpi/ic_search_grey.png | Bin 0 -> 1996 bytes res/drawable-xxxhdpi/ic_uninstall_launcher.png | Bin 0 -> 2445 bytes res/drawable-xxxhdpi/ic_widget_resize_handle.png | Bin 0 -> 2930 bytes res/drawable-xxxhdpi/portal_ring_inner.png | Bin 0 -> 13024 bytes res/drawable-xxxhdpi/portal_ring_inner_nolip.png | Bin 0 -> 12202 bytes res/drawable-xxxhdpi/portal_ring_outer.png | Bin 0 -> 23360 bytes res/drawable-xxxhdpi/portal_ring_rest.png | Bin 0 -> 8628 bytes res/drawable-xxxhdpi/quantum_panel_bitmap.9.png | Bin 0 -> 2546 bytes .../quantum_panel_dark_bitmap.9.png | Bin 0 -> 2531 bytes res/drawable-xxxhdpi/widget_resize_frame.9.png | Bin 0 -> 1569 bytes res/drawable-xxxhdpi/widget_resize_shadow.9.png | Bin 0 -> 2058 bytes res/drawable/all_apps_search_bg.xml | 20 + res/drawable/bg_screenpanel.xml | 26 + res/drawable/container_fastscroll_popup_bg.xml | 27 + res/drawable/info_target_selector.xml | 24 - res/drawable/quantum_panel.xml | 18 + res/drawable/quantum_panel_dark.xml | 18 + res/drawable/quantum_panel_shape.xml | 22 + res/drawable/quantum_panel_shape_dark.xml | 22 + res/drawable/remove_target_selector.xml | 24 - res/drawable/uninstall_target_selector.xml | 24 - res/drawable/widgets_row_divider.xml | 19 + res/layout-land/launcher.xml | 16 +- res/layout-land/migration_cling.xml | 1 + res/layout-port/launcher.xml | 13 +- res/layout-port/migration_cling.xml | 1 + res/layout-sw720dp/launcher.xml | 17 +- res/layout/add_list_item.xml | 25 - res/layout/all_apps.xml | 57 + res/layout/all_apps_button.xml | 2 +- res/layout/all_apps_container.xml | 38 + res/layout/all_apps_empty_search.xml | 28 + res/layout/all_apps_icon.xml | 29 + res/layout/all_apps_prediction_bar_icon.xml | 29 + res/layout/all_apps_search_bar.xml | 72 + res/layout/app_icon.xml | 19 + res/layout/application.xml | 19 - res/layout/apps_customize_application.xml | 21 - res/layout/apps_customize_pane.xml | 62 - res/layout/apps_customize_progressbar.xml | 22 - res/layout/apps_customize_widget.xml | 105 - res/layout/appwidget_error.xml | 13 +- res/layout/dummy_widget.xml | 35 + res/layout/folder_application.xml | 2 +- res/layout/folder_icon.xml | 4 +- res/layout/page_indicator_marker.xml | 4 +- res/layout/rename_folder.xml | 42 - res/layout/search_drop_target_bar.xml | 19 +- res/layout/user_folder.xml | 98 +- res/layout/widget_cell.xml | 74 + res/layout/widgets_list_row_view.xml | 67 + res/layout/widgets_view.xml | 51 + res/mipmap-xxhdpi/on_boarding_welcome.png | Bin 50862 -> 0 bytes res/values-af/strings.xml | 81 +- res/values-am/strings.xml | 81 +- res/values-ar/strings.xml | 81 +- res/values-az-rAZ/strings.xml | 81 +- res/values-be/strings.xml | 6 - res/values-bg/strings.xml | 81 +- res/values-bn-rBD/strings.xml | 81 +- res/values-ca/strings.xml | 81 +- res/values-cs/strings.xml | 81 +- res/values-da/strings.xml | 81 +- res/values-de/strings.xml | 81 +- res/values-el/strings.xml | 81 +- res/values-en-rAU/strings.xml | 81 +- res/values-en-rGB/strings.xml | 81 +- res/values-en-rIN/strings.xml | 81 +- res/values-es-rUS/strings.xml | 81 +- res/values-es/strings.xml | 81 +- res/values-et-rEE/strings.xml | 81 +- res/values-et/strings.xml | 61 - res/values-eu-rES/strings.xml | 81 +- res/values-fa/strings.xml | 81 +- res/values-fi/strings.xml | 81 +- res/values-fr-rCA/strings.xml | 81 +- res/values-fr/strings.xml | 81 +- res/values-gl-rES/strings.xml | 81 +- res/values-gu-rIN/strings.xml | 85 +- res/values-hi/strings.xml | 81 +- res/values-hr/strings.xml | 81 +- res/values-hu/strings.xml | 81 +- res/values-hy-rAM/strings.xml | 81 +- res/values-in/strings.xml | 81 +- res/values-is-rIS/strings.xml | 81 +- res/values-it/strings.xml | 81 +- res/values-iw/strings.xml | 81 +- res/values-ja/strings.xml | 81 +- res/values-ka-rGE/strings.xml | 81 +- res/values-kk-rKZ/strings.xml | 81 +- res/values-km-rKH/strings.xml | 81 +- res/values-kn-rIN/strings.xml | 81 +- res/values-ko/strings.xml | 81 +- res/values-ky-rKG/strings.xml | 81 +- res/values-land/config.xml | 21 - res/values-land/dimens.xml | 5 - res/values-land/styles.xml | 2 +- res/values-lo-rLA/strings.xml | 81 +- res/values-lt/strings.xml | 81 +- res/values-lv/strings.xml | 81 +- res/values-mk-rMK/strings.xml | 81 +- res/values-ml-rIN/strings.xml | 81 +- res/values-mn-rMN/strings.xml | 81 +- res/values-mr-rIN/strings.xml | 81 +- res/values-ms-rMY/strings.xml | 81 +- res/values-ms/strings.xml | 61 - res/values-my-rMM/strings.xml | 81 +- res/values-nb/strings.xml | 81 +- res/values-ne-rNP/strings.xml | 83 +- res/values-nl/strings.xml | 81 +- res/values-pa-rIN/strings.xml | 81 +- res/values-pl/strings.xml | 81 +- res/values-port/dimens.xml | 21 - res/values-pt-rPT/strings.xml | 81 +- res/values-pt/strings.xml | 81 +- res/values-rm/strings.xml | 2 - res/values-ro/strings.xml | 81 +- res/values-ru/strings.xml | 81 +- res/values-si-rLK/strings.xml | 81 +- res/values-sk/strings.xml | 81 +- res/values-sl/strings.xml | 81 +- res/values-sq-rAL/strings.xml | 81 +- res/values-sr/strings.xml | 81 +- res/values-sv/strings.xml | 81 +- res/values-sw/strings.xml | 81 +- res/values-sw340dp-port/config.xml | 18 - res/values-sw600dp/config.xml | 4 - res/values-sw600dp/dimens.xml | 12 +- res/values-sw600dp/styles.xml | 21 - res/values-sw720dp-land/dimens.xml | 4 - res/values-sw720dp/config.xml | 9 +- res/values-sw720dp/dimens.xml | 9 +- res/values-sw720dp/styles.xml | 2 +- res/values-ta-rIN/strings.xml | 83 +- res/values-te-rIN/strings.xml | 81 +- res/values-th/strings.xml | 81 +- res/values-tl/strings.xml | 81 +- res/values-tr/strings.xml | 81 +- res/values-uk/strings.xml | 81 +- res/values-ur-rPK/strings.xml | 81 +- res/values-uz-rUZ/strings.xml | 81 +- res/values-v17/styles.xml | 6 - res/values-vi/strings.xml | 81 +- res/values-zh-rCN/strings.xml | 81 +- res/values-zh-rHK/strings.xml | 81 +- res/values-zh-rTW/strings.xml | 81 +- res/values-zu/strings.xml | 81 +- res/values/attrs.xml | 45 +- res/values/colors.xml | 28 +- res/values/config.xml | 56 +- res/values/dimens.xml | 99 +- res/values/strings.xml | 227 +-- res/values/styles.xml | 26 +- res/xml/app_target_browser.xml | 23 + res/xml/app_target_camera.xml | 23 + res/xml/app_target_email.xml | 23 + res/xml/app_target_gallery.xml | 23 + res/xml/app_target_messenger.xml | 26 + res/xml/app_target_phone.xml | 24 + res/xml/launcher_preferences.xml | 26 + res/xml/update_workspace.xml | 49 - src/com/android/launcher3/AllAppsList.java | 22 +- src/com/android/launcher3/AppInfo.java | 39 +- .../android/launcher3/AppWidgetResizeFrame.java | 133 +- .../launcher3/AppWidgetsRestoredReceiver.java | 5 + .../android/launcher3/AppsCustomizeCellLayout.java | 71 - .../android/launcher3/AppsCustomizePagedView.java | 1567 --------------- .../android/launcher3/AppsCustomizeTabHost.java | 220 --- src/com/android/launcher3/AutoInstallsLayout.java | 81 +- src/com/android/launcher3/BaseContainerView.java | 137 ++ src/com/android/launcher3/BaseRecyclerView.java | 285 +++ .../launcher3/BaseRecyclerViewFastScrollBar.java | 235 +++ .../launcher3/BaseRecyclerViewFastScrollPopup.java | 160 ++ src/com/android/launcher3/BubbleTextView.java | 346 +++- src/com/android/launcher3/ButtonDropTarget.java | 225 ++- src/com/android/launcher3/CellLayout.java | 733 +++---- .../android/launcher3/CheckLongPressHelper.java | 32 +- src/com/android/launcher3/ClickShadowView.java | 112 ++ src/com/android/launcher3/CommonAppTypeParser.java | 153 ++ src/com/android/launcher3/CustomAppWidget.java | 14 + src/com/android/launcher3/DefaultLayoutParser.java | 46 +- src/com/android/launcher3/DeferredHandler.java | 51 +- src/com/android/launcher3/DeleteDropTarget.java | 506 +---- src/com/android/launcher3/DeviceProfile.java | 704 ++----- src/com/android/launcher3/DragController.java | 117 +- src/com/android/launcher3/DragLayer.java | 151 +- src/com/android/launcher3/DragSource.java | 2 +- src/com/android/launcher3/DragView.java | 88 +- src/com/android/launcher3/DropTarget.java | 65 +- src/com/android/launcher3/DummyWidget.java | 50 + src/com/android/launcher3/DynamicGrid.java | 109 - src/com/android/launcher3/FastBitmapDrawable.java | 4 +- src/com/android/launcher3/FastBitmapView.java | 58 - .../launcher3/FirstFrameAnimatorHelper.java | 4 +- src/com/android/launcher3/FocusHelper.java | 927 ++++----- src/com/android/launcher3/FocusIndicatorView.java | 52 +- src/com/android/launcher3/FocusOnlyTabWidget.java | 86 - src/com/android/launcher3/Folder.java | 1018 +++++----- .../android/launcher3/FolderAutoScrollHelper.java | 59 - src/com/android/launcher3/FolderIcon.java | 53 +- src/com/android/launcher3/FolderInfo.java | 46 +- src/com/android/launcher3/FolderPagedView.java | 678 +++++++ .../launcher3/HolographicOutlineHelper.java | 110 +- src/com/android/launcher3/Hotseat.java | 189 +- src/com/android/launcher3/IconCache.java | 798 +++++--- src/com/android/launcher3/InfoDropTarget.java | 99 +- src/com/android/launcher3/Insettable.java | 4 + .../android/launcher3/InstallShortcutReceiver.java | 108 +- .../launcher3/InterruptibleInOutAnimator.java | 4 +- .../android/launcher3/InvariantDeviceProfile.java | 303 +++ src/com/android/launcher3/ItemInfo.java | 47 +- src/com/android/launcher3/Launcher.java | 2082 ++++++++------------ src/com/android/launcher3/LauncherAnimUtils.java | 13 +- .../launcher3/LauncherAnimatorUpdateListener.java | 30 - src/com/android/launcher3/LauncherAppState.java | 193 +- .../android/launcher3/LauncherAppWidgetHost.java | 55 +- .../launcher3/LauncherAppWidgetHostView.java | 36 +- .../android/launcher3/LauncherAppWidgetInfo.java | 16 +- .../launcher3/LauncherAppWidgetProviderInfo.java | 113 ++ src/com/android/launcher3/LauncherApplication.java | 34 - .../launcher3/LauncherBackupAgentHelper.java | 10 +- .../android/launcher3/LauncherBackupHelper.java | 379 ++-- src/com/android/launcher3/LauncherCallbacks.java | 19 + src/com/android/launcher3/LauncherClings.java | 14 +- src/com/android/launcher3/LauncherExtension.java | 354 ---- src/com/android/launcher3/LauncherFiles.java | 22 +- src/com/android/launcher3/LauncherModel.java | 1922 +++++++++--------- src/com/android/launcher3/LauncherProvider.java | 1133 ++++------- .../launcher3/LauncherProviderChangeListener.java | 4 + src/com/android/launcher3/LauncherScroller.java | 5 +- src/com/android/launcher3/LauncherSettings.java | 133 +- .../LauncherStateTransitionAnimation.java | 762 +++++++ .../android/launcher3/LauncherTransitionable.java | 27 + .../launcher3/LauncherWallpaperPickerActivity.java | 30 - src/com/android/launcher3/MemoryTracker.java | 2 +- .../android/launcher3/PackageChangedReceiver.java | 21 - src/com/android/launcher3/PagedView.java | 1137 +++-------- src/com/android/launcher3/PagedViewCellLayout.java | 492 ----- .../launcher3/PagedViewCellLayoutChildren.java | 161 -- src/com/android/launcher3/PagedViewGridLayout.java | 121 -- src/com/android/launcher3/PagedViewWidget.java | 262 --- .../launcher3/PagedViewWidgetImageView.java | 49 - .../launcher3/PagedViewWithDraggableItems.java | 174 -- src/com/android/launcher3/Partner.java | 50 +- src/com/android/launcher3/PendingAddItemInfo.java | 87 +- .../launcher3/PendingAppWidgetHostView.java | 18 +- src/com/android/launcher3/PreloadIconDrawable.java | 5 +- src/com/android/launcher3/SearchDropTargetBar.java | 143 +- src/com/android/launcher3/SettingsActivity.java | 76 + .../launcher3/ShortcutAndWidgetContainer.java | 21 +- src/com/android/launcher3/ShortcutInfo.java | 62 +- src/com/android/launcher3/SmoothPagedView.java | 185 -- src/com/android/launcher3/Stats.java | 216 +- src/com/android/launcher3/StylusEventHelper.java | 84 + src/com/android/launcher3/UninstallDropTarget.java | 132 ++ .../launcher3/UninstallShortcutReceiver.java | 131 -- .../android/launcher3/UserInitializeReceiver.java | 32 - src/com/android/launcher3/Utilities.java | 273 ++- src/com/android/launcher3/WeightWatcher.java | 6 +- src/com/android/launcher3/WidgetPreviewLoader.java | 1112 +++++------ src/com/android/launcher3/Workspace.java | 1463 ++++---------- .../WorkspaceStateTransitionAnimation.java | 587 ++++++ .../DragAndDropAccessibilityDelegate.java | 136 ++ .../accessibility/FolderAccessibilityHelper.java | 56 + .../LauncherAccessibilityDelegate.java | 434 ++++ .../OverviewScreenAccessibilityDelegate.java | 95 + .../WorkspaceAccessibilityHelper.java | 166 ++ .../launcher3/allapps/AllAppsContainerView.java | 638 ++++++ .../launcher3/allapps/AllAppsGridAdapter.java | 453 +++++ .../launcher3/allapps/AllAppsRecyclerView.java | 327 +++ .../allapps/AllAppsRecyclerViewContainerView.java | 72 + .../allapps/AllAppsSearchBarController.java | 100 + .../launcher3/allapps/AllAppsSearchEditView.java | 65 + .../launcher3/allapps/AlphabeticalAppsList.java | 590 ++++++ .../allapps/DefaultAppSearchAlgorithm.java | 94 + .../allapps/DefaultAppSearchController.java | 269 +++ .../launcher3/compat/AlphabeticIndexCompat.java | 170 ++ .../launcher3/compat/AppWidgetManagerCompat.java | 10 +- .../compat/AppWidgetManagerCompatV16.java | 14 +- .../launcher3/compat/AppWidgetManagerCompatVL.java | 27 +- .../compat/LauncherActivityInfoCompat.java | 9 + .../compat/LauncherActivityInfoCompatV16.java | 45 +- .../compat/LauncherActivityInfoCompatVL.java | 4 +- .../launcher3/compat/LauncherAppsCompatV16.java | 6 +- .../launcher3/compat/LauncherAppsCompatVL.java | 4 +- .../launcher3/compat/PackageInstallerCompat.java | 17 +- .../compat/PackageInstallerCompatV16.java | 151 +- .../launcher3/compat/PackageInstallerCompatVL.java | 152 +- .../android/launcher3/compat/UserHandleCompat.java | 5 +- .../launcher3/compat/UserManagerCompat.java | 1 + .../launcher3/compat/UserManagerCompatV16.java | 5 + .../launcher3/compat/UserManagerCompatV17.java | 8 +- .../launcher3/compat/UserManagerCompatVL.java | 25 +- .../android/launcher3/config/ProviderConfig.java | 2 +- .../launcher3/model/AbstractUserComparator.java | 67 + .../android/launcher3/model/AppNameComparator.java | 101 + .../android/launcher3/model/PackageItemInfo.java | 65 + .../model/WidgetsAndShortcutNameComparator.java | 68 + src/com/android/launcher3/model/WidgetsModel.java | 170 ++ .../launcher3/testing/LauncherExtension.java | 387 ++++ src/com/android/launcher3/util/ComponentKey.java | 81 + src/com/android/launcher3/util/CursorIconInfo.java | 70 + src/com/android/launcher3/util/FlingAnimation.java | 104 + src/com/android/launcher3/util/FocusLogic.java | 507 +++++ .../android/launcher3/util/LauncherEdgeEffect.java | 365 ++++ src/com/android/launcher3/util/LongArrayMap.java | 65 + .../launcher3/util/ManagedProfileHeuristic.java | 350 ++++ .../launcher3/util/RevealOutlineProvider.java | 49 + src/com/android/launcher3/util/Thunk.java | 43 + .../launcher3/util/UiThreadCircularReveal.java | 57 + src/com/android/launcher3/util/WallpaperUtils.java | 123 ++ .../launcher3/widget/PendingAddShortcutInfo.java | 44 + .../launcher3/widget/PendingAddWidgetInfo.java | 75 + src/com/android/launcher3/widget/WidgetCell.java | 230 +++ .../launcher3/widget/WidgetHostViewLoader.java | 155 ++ .../android/launcher3/widget/WidgetImageView.java | 97 + .../launcher3/widget/WidgetsContainerView.java | 370 ++++ .../launcher3/widget/WidgetsListAdapter.java | 215 ++ .../launcher3/widget/WidgetsRecyclerView.java | 158 ++ .../launcher3/widget/WidgetsRowViewHolder.java | 36 + tests/Android.mk | 27 +- tests/AndroidManifest.xml | 29 + tests/res/values/string.xml | 21 + .../launcher3/InvariantDeviceProfileTest.java | 123 ++ .../com/android/launcher3/util/FocusLogicTest.java | 60 + tests/stress/Android.mk | 31 - tests/stress/AndroidManifest.xml | 29 - .../stress/LauncherRotationStressTest.java | 63 - util/com/android/launcher3/DecoderRing.java | 3 - 646 files changed, 24309 insertions(+), 22195 deletions(-) create mode 100644 WallpaperPicker/res/drawable-xxxhdpi/ic_images.png delete mode 100644 WallpaperPicker/res/values-sw600dp/config.xml delete mode 100644 WallpaperPicker/res/values-sw720dp/dimens.xml create mode 100644 WallpaperPicker/res/values-v21/styles.xml delete mode 100644 WallpaperPicker/src/android/util/Pools.java create mode 100644 WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java create mode 100644 WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java delete mode 100644 WallpaperPicker/src/com/android/gallery3d/util/IntArray.java create mode 100644 WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java delete mode 100644 WallpaperPicker/src/com/android/launcher3/WallpaperRootView.java create mode 100644 WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java delete mode 100644 WallpaperPicker/src/com/android/photos/views/BlockingGLTextureView.java delete mode 100644 res/anim/fade_in_fast.xml delete mode 100644 res/anim/fade_out_fast.xml delete mode 100644 res/drawable-hdpi/apps_customize_bg.png delete mode 100644 res/drawable-hdpi/bg_appwidget_error.9.png delete mode 100644 res/drawable-hdpi/home_press.9.png create mode 100755 res/drawable-hdpi/ic_arrow_back_grey.png delete mode 100644 res/drawable-hdpi/ic_home_all_apps_holo_dark.png create mode 100644 res/drawable-hdpi/ic_info_launcher.png delete mode 100644 res/drawable-hdpi/ic_launcher_clear_active_holo.png delete mode 100644 res/drawable-hdpi/ic_launcher_clear_normal_holo.png delete mode 100644 res/drawable-hdpi/ic_launcher_info_active_holo.png delete mode 100644 res/drawable-hdpi/ic_launcher_info_normal_holo.png delete mode 100644 res/drawable-hdpi/ic_launcher_market_holo.png delete mode 100644 res/drawable-hdpi/ic_launcher_trashcan_active_holo.png delete mode 100644 res/drawable-hdpi/ic_launcher_trashcan_normal_holo.png create mode 100644 res/drawable-hdpi/ic_pageindicator_current_folder.png create mode 100644 res/drawable-hdpi/ic_pageindicator_default_folder.png create mode 100644 res/drawable-hdpi/ic_remove_launcher.png create mode 100755 res/drawable-hdpi/ic_search_grey.png create mode 100644 res/drawable-hdpi/ic_uninstall_launcher.png create mode 100644 res/drawable-hdpi/ic_widget_resize_handle.png delete mode 100644 res/drawable-hdpi/on_boarding_welcome.png delete mode 100644 res/drawable-hdpi/overscroll_glow_left.9.png delete mode 100644 res/drawable-hdpi/overscroll_glow_right.9.png delete mode 100644 res/drawable-hdpi/paged_view_indicator.9.png delete mode 100644 res/drawable-hdpi/portal_container_holo.9.png create mode 100644 res/drawable-hdpi/portal_ring_inner.png delete mode 100644 res/drawable-hdpi/portal_ring_inner_holo.png create mode 100644 res/drawable-hdpi/portal_ring_inner_nolip.png delete mode 100644 res/drawable-hdpi/portal_ring_inner_nolip_holo.png create mode 100644 res/drawable-hdpi/portal_ring_outer.png delete mode 100644 res/drawable-hdpi/portal_ring_outer_holo.png delete mode 100644 res/drawable-hdpi/quantum_panel.9.png create mode 100644 res/drawable-hdpi/quantum_panel_bitmap.9.png delete mode 100644 res/drawable-hdpi/quantum_panel_dark.9.png create mode 100644 res/drawable-hdpi/quantum_panel_dark_bitmap.9.png create mode 100644 res/drawable-hdpi/widget_resize_frame.9.png delete mode 100644 res/drawable-hdpi/widget_resize_frame_holo.9.png delete mode 100644 res/drawable-hdpi/widget_resize_handle_bottom.png delete mode 100644 res/drawable-hdpi/widget_resize_handle_left.png delete mode 100644 res/drawable-hdpi/widget_resize_handle_right.png delete mode 100644 res/drawable-hdpi/widget_resize_handle_top.png create mode 100644 res/drawable-hdpi/widget_resize_shadow.9.png create mode 100644 res/drawable-ldrtl/container_fastscroll_popup_bg.xml delete mode 100644 res/drawable-mdpi/apps_customize_bg.png delete mode 100644 res/drawable-mdpi/bg_appwidget_error.9.png delete mode 100644 res/drawable-mdpi/home_press.9.png create mode 100755 res/drawable-mdpi/ic_arrow_back_grey.png delete mode 100644 res/drawable-mdpi/ic_home_all_apps_holo_dark.png create mode 100644 res/drawable-mdpi/ic_info_launcher.png delete mode 100644 res/drawable-mdpi/ic_launcher_clear_active_holo.png delete mode 100644 res/drawable-mdpi/ic_launcher_clear_normal_holo.png delete mode 100644 res/drawable-mdpi/ic_launcher_info_active_holo.png delete mode 100644 res/drawable-mdpi/ic_launcher_info_normal_holo.png delete mode 100644 res/drawable-mdpi/ic_launcher_market_holo.png delete mode 100644 res/drawable-mdpi/ic_launcher_trashcan_active_holo.png delete mode 100644 res/drawable-mdpi/ic_launcher_trashcan_normal_holo.png create mode 100644 res/drawable-mdpi/ic_pageindicator_current_folder.png create mode 100644 res/drawable-mdpi/ic_pageindicator_default_folder.png create mode 100644 res/drawable-mdpi/ic_remove_launcher.png create mode 100755 res/drawable-mdpi/ic_search_grey.png delete mode 100644 res/drawable-mdpi/ic_setting_icn.png create mode 100644 res/drawable-mdpi/ic_uninstall_launcher.png create mode 100644 res/drawable-mdpi/ic_widget_resize_handle.png delete mode 100644 res/drawable-mdpi/on_boarding_welcome.png delete mode 100644 res/drawable-mdpi/overscroll_glow_left.9.png delete mode 100644 res/drawable-mdpi/overscroll_glow_right.9.png delete mode 100644 res/drawable-mdpi/paged_view_indicator.9.png delete mode 100644 res/drawable-mdpi/portal_container_holo.9.png create mode 100644 res/drawable-mdpi/portal_ring_inner.png delete mode 100644 res/drawable-mdpi/portal_ring_inner_holo.png create mode 100644 res/drawable-mdpi/portal_ring_inner_nolip.png delete mode 100644 res/drawable-mdpi/portal_ring_inner_nolip_holo.png create mode 100644 res/drawable-mdpi/portal_ring_outer.png delete mode 100644 res/drawable-mdpi/portal_ring_outer_holo.png delete mode 100644 res/drawable-mdpi/quantum_panel.9.png create mode 100644 res/drawable-mdpi/quantum_panel_bitmap.9.png delete mode 100644 res/drawable-mdpi/quantum_panel_dark.9.png create mode 100644 res/drawable-mdpi/quantum_panel_dark_bitmap.9.png create mode 100644 res/drawable-mdpi/widget_resize_frame.9.png delete mode 100644 res/drawable-mdpi/widget_resize_frame_holo.9.png delete mode 100644 res/drawable-mdpi/widget_resize_handle_bottom.png delete mode 100644 res/drawable-mdpi/widget_resize_handle_left.png delete mode 100644 res/drawable-mdpi/widget_resize_handle_right.png delete mode 100644 res/drawable-mdpi/widget_resize_handle_top.png create mode 100644 res/drawable-mdpi/widget_resize_shadow.9.png create mode 100644 res/drawable-v21/quantum_panel.xml create mode 100644 res/drawable-v21/quantum_panel_dark.xml delete mode 100644 res/drawable-xhdpi/apps_customize_bg.png delete mode 100644 res/drawable-xhdpi/bg_appwidget_error.9.png delete mode 100644 res/drawable-xhdpi/home_press.9.png create mode 100755 res/drawable-xhdpi/ic_arrow_back_grey.png delete mode 100644 res/drawable-xhdpi/ic_home_all_apps_holo_dark.png create mode 100644 res/drawable-xhdpi/ic_info_launcher.png delete mode 100644 res/drawable-xhdpi/ic_launcher_clear_active_holo.png delete mode 100644 res/drawable-xhdpi/ic_launcher_clear_normal_holo.png delete mode 100644 res/drawable-xhdpi/ic_launcher_info_active_holo.png delete mode 100644 res/drawable-xhdpi/ic_launcher_info_normal_holo.png delete mode 100644 res/drawable-xhdpi/ic_launcher_market_holo.png delete mode 100644 res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png delete mode 100644 res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png create mode 100644 res/drawable-xhdpi/ic_pageindicator_current_folder.png create mode 100644 res/drawable-xhdpi/ic_pageindicator_default_folder.png create mode 100644 res/drawable-xhdpi/ic_remove_launcher.png create mode 100755 res/drawable-xhdpi/ic_search_grey.png create mode 100644 res/drawable-xhdpi/ic_uninstall_launcher.png create mode 100644 res/drawable-xhdpi/ic_widget_resize_handle.png delete mode 100644 res/drawable-xhdpi/on_boarding_welcome.png delete mode 100644 res/drawable-xhdpi/overscroll_glow_left.9.png delete mode 100644 res/drawable-xhdpi/overscroll_glow_right.9.png delete mode 100644 res/drawable-xhdpi/paged_view_indicator.9.png delete mode 100644 res/drawable-xhdpi/portal_container_holo.9.png create mode 100644 res/drawable-xhdpi/portal_ring_inner.png delete mode 100644 res/drawable-xhdpi/portal_ring_inner_holo.png create mode 100644 res/drawable-xhdpi/portal_ring_inner_nolip.png delete mode 100644 res/drawable-xhdpi/portal_ring_inner_nolip_holo.png create mode 100644 res/drawable-xhdpi/portal_ring_outer.png delete mode 100644 res/drawable-xhdpi/portal_ring_outer_holo.png delete mode 100644 res/drawable-xhdpi/quantum_panel.9.png create mode 100644 res/drawable-xhdpi/quantum_panel_bitmap.9.png delete mode 100644 res/drawable-xhdpi/quantum_panel_dark.9.png create mode 100644 res/drawable-xhdpi/quantum_panel_dark_bitmap.9.png create mode 100644 res/drawable-xhdpi/widget_resize_frame.9.png delete mode 100644 res/drawable-xhdpi/widget_resize_frame_holo.9.png delete mode 100644 res/drawable-xhdpi/widget_resize_handle_bottom.png delete mode 100644 res/drawable-xhdpi/widget_resize_handle_left.png delete mode 100644 res/drawable-xhdpi/widget_resize_handle_right.png delete mode 100644 res/drawable-xhdpi/widget_resize_handle_top.png create mode 100644 res/drawable-xhdpi/widget_resize_shadow.9.png delete mode 100644 res/drawable-xxhdpi/apps_customize_bg.png delete mode 100644 res/drawable-xxhdpi/arrow_dashed.png delete mode 100644 res/drawable-xxhdpi/default_widget_preview_holo.9.png delete mode 100644 res/drawable-xxhdpi/hotseat_bg_panel.9.png delete mode 100644 res/drawable-xxhdpi/hotseat_scrubber_holo.9.png delete mode 100644 res/drawable-xxhdpi/hotseat_track_holo.9.png create mode 100755 res/drawable-xxhdpi/ic_arrow_back_grey.png delete mode 100644 res/drawable-xxhdpi/ic_home_all_apps_holo_dark.png delete mode 100644 res/drawable-xxhdpi/ic_home_google_logo_normal_holo.png delete mode 100644 res/drawable-xxhdpi/ic_home_google_logo_pressed_holo.png delete mode 100644 res/drawable-xxhdpi/ic_home_search_pressed_holo.png delete mode 100644 res/drawable-xxhdpi/ic_home_voice_search_pressed_holo.png create mode 100644 res/drawable-xxhdpi/ic_info_launcher.png delete mode 100644 res/drawable-xxhdpi/ic_launcher_clear_active_holo.png delete mode 100644 res/drawable-xxhdpi/ic_launcher_clear_normal_holo.png delete mode 100644 res/drawable-xxhdpi/ic_launcher_info_active_holo.png delete mode 100644 res/drawable-xxhdpi/ic_launcher_info_normal_holo.png delete mode 100644 res/drawable-xxhdpi/ic_launcher_trashcan_active_holo.png delete mode 100644 res/drawable-xxhdpi/ic_launcher_trashcan_normal_holo.png create mode 100644 res/drawable-xxhdpi/ic_pageindicator_current_folder.png create mode 100644 res/drawable-xxhdpi/ic_pageindicator_default_folder.png delete mode 100644 res/drawable-xxhdpi/ic_qs_remote_display.png delete mode 100644 res/drawable-xxhdpi/ic_qs_remote_display_connected.png create mode 100644 res/drawable-xxhdpi/ic_remove_launcher.png create mode 100755 res/drawable-xxhdpi/ic_search_grey.png create mode 100644 res/drawable-xxhdpi/ic_uninstall_launcher.png create mode 100644 res/drawable-xxhdpi/ic_widget_resize_handle.png delete mode 100644 res/drawable-xxhdpi/overscroll_glow_left.9.png delete mode 100644 res/drawable-xxhdpi/overscroll_glow_right.9.png delete mode 100644 res/drawable-xxhdpi/portal_container_holo.9.png create mode 100644 res/drawable-xxhdpi/portal_ring_inner.png delete mode 100644 res/drawable-xxhdpi/portal_ring_inner_holo.png create mode 100644 res/drawable-xxhdpi/portal_ring_inner_nolip.png delete mode 100644 res/drawable-xxhdpi/portal_ring_inner_nolip_holo.png create mode 100644 res/drawable-xxhdpi/portal_ring_outer.png delete mode 100644 res/drawable-xxhdpi/portal_ring_outer_holo.png delete mode 100644 res/drawable-xxhdpi/quantum_panel.9.png create mode 100644 res/drawable-xxhdpi/quantum_panel_bitmap.9.png delete mode 100644 res/drawable-xxhdpi/quantum_panel_dark.9.png create mode 100644 res/drawable-xxhdpi/quantum_panel_dark_bitmap.9.png create mode 100644 res/drawable-xxhdpi/widget_resize_frame.9.png delete mode 100644 res/drawable-xxhdpi/widget_resize_frame_holo.9.png delete mode 100644 res/drawable-xxhdpi/widget_resize_handle_bottom.png delete mode 100644 res/drawable-xxhdpi/widget_resize_handle_left.png delete mode 100644 res/drawable-xxhdpi/widget_resize_handle_right.png delete mode 100644 res/drawable-xxhdpi/widget_resize_handle_top.png create mode 100644 res/drawable-xxhdpi/widget_resize_shadow.9.png create mode 100755 res/drawable-xxxhdpi/ic_arrow_back_grey.png create mode 100644 res/drawable-xxxhdpi/ic_info_launcher.png create mode 100644 res/drawable-xxxhdpi/ic_remove_launcher.png create mode 100755 res/drawable-xxxhdpi/ic_search_grey.png create mode 100644 res/drawable-xxxhdpi/ic_uninstall_launcher.png create mode 100644 res/drawable-xxxhdpi/ic_widget_resize_handle.png create mode 100644 res/drawable-xxxhdpi/portal_ring_inner.png create mode 100644 res/drawable-xxxhdpi/portal_ring_inner_nolip.png create mode 100644 res/drawable-xxxhdpi/portal_ring_outer.png create mode 100644 res/drawable-xxxhdpi/portal_ring_rest.png create mode 100644 res/drawable-xxxhdpi/quantum_panel_bitmap.9.png create mode 100644 res/drawable-xxxhdpi/quantum_panel_dark_bitmap.9.png create mode 100644 res/drawable-xxxhdpi/widget_resize_frame.9.png create mode 100644 res/drawable-xxxhdpi/widget_resize_shadow.9.png create mode 100644 res/drawable/all_apps_search_bg.xml create mode 100644 res/drawable/bg_screenpanel.xml create mode 100644 res/drawable/container_fastscroll_popup_bg.xml delete mode 100644 res/drawable/info_target_selector.xml create mode 100644 res/drawable/quantum_panel.xml create mode 100644 res/drawable/quantum_panel_dark.xml create mode 100644 res/drawable/quantum_panel_shape.xml create mode 100644 res/drawable/quantum_panel_shape_dark.xml delete mode 100644 res/drawable/remove_target_selector.xml delete mode 100644 res/drawable/uninstall_target_selector.xml create mode 100644 res/drawable/widgets_row_divider.xml delete mode 100644 res/layout/add_list_item.xml create mode 100644 res/layout/all_apps.xml create mode 100644 res/layout/all_apps_container.xml create mode 100644 res/layout/all_apps_empty_search.xml create mode 100644 res/layout/all_apps_icon.xml create mode 100644 res/layout/all_apps_prediction_bar_icon.xml create mode 100644 res/layout/all_apps_search_bar.xml create mode 100644 res/layout/app_icon.xml delete mode 100644 res/layout/application.xml delete mode 100644 res/layout/apps_customize_application.xml delete mode 100644 res/layout/apps_customize_pane.xml delete mode 100644 res/layout/apps_customize_progressbar.xml delete mode 100644 res/layout/apps_customize_widget.xml create mode 100644 res/layout/dummy_widget.xml delete mode 100644 res/layout/rename_folder.xml create mode 100644 res/layout/widget_cell.xml create mode 100644 res/layout/widgets_list_row_view.xml create mode 100644 res/layout/widgets_view.xml delete mode 100644 res/mipmap-xxhdpi/on_boarding_welcome.png delete mode 100644 res/values-land/config.xml delete mode 100644 res/values-port/dimens.xml delete mode 100644 res/values-sw340dp-port/config.xml delete mode 100644 res/values-sw600dp/styles.xml delete mode 100644 res/values-v17/styles.xml create mode 100644 res/xml/app_target_browser.xml create mode 100644 res/xml/app_target_camera.xml create mode 100644 res/xml/app_target_email.xml create mode 100644 res/xml/app_target_gallery.xml create mode 100644 res/xml/app_target_messenger.xml create mode 100644 res/xml/app_target_phone.xml create mode 100644 res/xml/launcher_preferences.xml delete mode 100644 res/xml/update_workspace.xml delete mode 100644 src/com/android/launcher3/AppsCustomizeCellLayout.java delete mode 100644 src/com/android/launcher3/AppsCustomizePagedView.java delete mode 100644 src/com/android/launcher3/AppsCustomizeTabHost.java create mode 100644 src/com/android/launcher3/BaseContainerView.java create mode 100644 src/com/android/launcher3/BaseRecyclerView.java create mode 100644 src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java create mode 100644 src/com/android/launcher3/BaseRecyclerViewFastScrollPopup.java create mode 100644 src/com/android/launcher3/ClickShadowView.java create mode 100644 src/com/android/launcher3/CommonAppTypeParser.java create mode 100644 src/com/android/launcher3/CustomAppWidget.java create mode 100644 src/com/android/launcher3/DummyWidget.java delete mode 100644 src/com/android/launcher3/DynamicGrid.java delete mode 100644 src/com/android/launcher3/FastBitmapView.java delete mode 100644 src/com/android/launcher3/FocusOnlyTabWidget.java delete mode 100644 src/com/android/launcher3/FolderAutoScrollHelper.java create mode 100644 src/com/android/launcher3/FolderPagedView.java create mode 100644 src/com/android/launcher3/InvariantDeviceProfile.java delete mode 100644 src/com/android/launcher3/LauncherAnimatorUpdateListener.java create mode 100644 src/com/android/launcher3/LauncherAppWidgetProviderInfo.java delete mode 100644 src/com/android/launcher3/LauncherApplication.java delete mode 100644 src/com/android/launcher3/LauncherExtension.java create mode 100644 src/com/android/launcher3/LauncherStateTransitionAnimation.java create mode 100644 src/com/android/launcher3/LauncherTransitionable.java delete mode 100644 src/com/android/launcher3/LauncherWallpaperPickerActivity.java delete mode 100644 src/com/android/launcher3/PackageChangedReceiver.java delete mode 100644 src/com/android/launcher3/PagedViewCellLayout.java delete mode 100644 src/com/android/launcher3/PagedViewCellLayoutChildren.java delete mode 100644 src/com/android/launcher3/PagedViewGridLayout.java delete mode 100644 src/com/android/launcher3/PagedViewWidget.java delete mode 100644 src/com/android/launcher3/PagedViewWidgetImageView.java delete mode 100644 src/com/android/launcher3/PagedViewWithDraggableItems.java create mode 100644 src/com/android/launcher3/SettingsActivity.java delete mode 100644 src/com/android/launcher3/SmoothPagedView.java create mode 100644 src/com/android/launcher3/StylusEventHelper.java create mode 100644 src/com/android/launcher3/UninstallDropTarget.java delete mode 100644 src/com/android/launcher3/UninstallShortcutReceiver.java delete mode 100644 src/com/android/launcher3/UserInitializeReceiver.java create mode 100644 src/com/android/launcher3/WorkspaceStateTransitionAnimation.java create mode 100644 src/com/android/launcher3/accessibility/DragAndDropAccessibilityDelegate.java create mode 100644 src/com/android/launcher3/accessibility/FolderAccessibilityHelper.java create mode 100644 src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java create mode 100644 src/com/android/launcher3/accessibility/OverviewScreenAccessibilityDelegate.java create mode 100644 src/com/android/launcher3/accessibility/WorkspaceAccessibilityHelper.java create mode 100644 src/com/android/launcher3/allapps/AllAppsContainerView.java create mode 100644 src/com/android/launcher3/allapps/AllAppsGridAdapter.java create mode 100644 src/com/android/launcher3/allapps/AllAppsRecyclerView.java create mode 100644 src/com/android/launcher3/allapps/AllAppsRecyclerViewContainerView.java create mode 100644 src/com/android/launcher3/allapps/AllAppsSearchBarController.java create mode 100644 src/com/android/launcher3/allapps/AllAppsSearchEditView.java create mode 100644 src/com/android/launcher3/allapps/AlphabeticalAppsList.java create mode 100644 src/com/android/launcher3/allapps/DefaultAppSearchAlgorithm.java create mode 100644 src/com/android/launcher3/allapps/DefaultAppSearchController.java create mode 100644 src/com/android/launcher3/compat/AlphabeticIndexCompat.java create mode 100644 src/com/android/launcher3/model/AbstractUserComparator.java create mode 100644 src/com/android/launcher3/model/AppNameComparator.java create mode 100644 src/com/android/launcher3/model/PackageItemInfo.java create mode 100644 src/com/android/launcher3/model/WidgetsAndShortcutNameComparator.java create mode 100644 src/com/android/launcher3/model/WidgetsModel.java create mode 100644 src/com/android/launcher3/testing/LauncherExtension.java create mode 100644 src/com/android/launcher3/util/ComponentKey.java create mode 100644 src/com/android/launcher3/util/CursorIconInfo.java create mode 100644 src/com/android/launcher3/util/FlingAnimation.java create mode 100644 src/com/android/launcher3/util/FocusLogic.java create mode 100644 src/com/android/launcher3/util/LauncherEdgeEffect.java create mode 100644 src/com/android/launcher3/util/LongArrayMap.java create mode 100644 src/com/android/launcher3/util/ManagedProfileHeuristic.java create mode 100644 src/com/android/launcher3/util/RevealOutlineProvider.java create mode 100644 src/com/android/launcher3/util/Thunk.java create mode 100644 src/com/android/launcher3/util/UiThreadCircularReveal.java create mode 100644 src/com/android/launcher3/util/WallpaperUtils.java create mode 100644 src/com/android/launcher3/widget/PendingAddShortcutInfo.java create mode 100644 src/com/android/launcher3/widget/PendingAddWidgetInfo.java create mode 100644 src/com/android/launcher3/widget/WidgetCell.java create mode 100644 src/com/android/launcher3/widget/WidgetHostViewLoader.java create mode 100644 src/com/android/launcher3/widget/WidgetImageView.java create mode 100644 src/com/android/launcher3/widget/WidgetsContainerView.java create mode 100644 src/com/android/launcher3/widget/WidgetsListAdapter.java create mode 100644 src/com/android/launcher3/widget/WidgetsRecyclerView.java create mode 100644 src/com/android/launcher3/widget/WidgetsRowViewHolder.java create mode 100644 tests/AndroidManifest.xml create mode 100644 tests/res/values/string.xml create mode 100644 tests/src/com/android/launcher3/InvariantDeviceProfileTest.java create mode 100644 tests/src/com/android/launcher3/util/FocusLogicTest.java delete mode 100644 tests/stress/Android.mk delete mode 100644 tests/stress/AndroidManifest.xml delete mode 100644 tests/stress/src/com/android/launcher3/stress/LauncherRotationStressTest.java diff --git a/.gitignore b/.gitignore index f830c66eb..aea5d6102 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,10 @@ db_files +*.iml +.project +.classpath +.project.properties +gen/ +tests/stress/gen/ +WallpaperPicker/gen/ +WallpaperPicker/.project.properties +bin/ diff --git a/Android.mk b/Android.mk index 2a406e76d..134cfb5b0 100644 --- a/Android.mk +++ b/Android.mk @@ -23,28 +23,23 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional -LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 - LOCAL_SRC_FILES := $(call all-java-files-under, src) \ $(call all-java-files-under, WallpaperPicker/src) \ - $(call all-renderscript-files-under, src) \ $(call all-proto-files-under, protos) LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/WallpaperPicker/res $(LOCAL_PATH)/res - -LOCAL_AAPT_FLAGS := --auto-add-overlay +LOCAL_PROGUARD_FLAG_FILES := proguard.flags +LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v7-recyclerview LOCAL_PROTOC_OPTIMIZE_TYPE := nano LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ +LOCAL_AAPT_FLAGS := --auto-add-overlay -LOCAL_SDK_VERSION := 21 - +LOCAL_SDK_VERSION := current LOCAL_PACKAGE_NAME := Launcher3 #LOCAL_CERTIFICATE := shared LOCAL_OVERRIDES_PACKAGES := Home Launcher2 -LOCAL_PROGUARD_FLAG_FILES := proguard.flags - include $(BUILD_PACKAGE) @@ -83,4 +78,6 @@ $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/util/etc/launcher_protoutil | $(ACP) $(copy-file-to-new-target) $(hide) chmod 755 $@ +INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE) + include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index fb7ac3fab..1fb8e8d01 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -28,12 +28,6 @@ android:protectionLevel="dangerous" android:label="@string/permlab_install_shortcut" android:description="@string/permdesc_install_shortcut" /> - @@ -98,8 +93,10 @@ + + + + + - - - - - - - @@ -207,24 +204,6 @@ - - - - - - - - - - - - - - - - diff --git a/WallpaperPicker/AndroidManifest.xml b/WallpaperPicker/AndroidManifest.xml index 86a94d078..cb1457bdc 100644 --- a/WallpaperPicker/AndroidManifest.xml +++ b/WallpaperPicker/AndroidManifest.xml @@ -5,6 +5,6 @@ android:versionName="1.0" > - - + + diff --git a/WallpaperPicker/res/drawable-hdpi/ic_images.png b/WallpaperPicker/res/drawable-hdpi/ic_images.png index 0003c6c65..15e511c89 100644 Binary files a/WallpaperPicker/res/drawable-hdpi/ic_images.png and b/WallpaperPicker/res/drawable-hdpi/ic_images.png differ diff --git a/WallpaperPicker/res/drawable-mdpi/ic_images.png b/WallpaperPicker/res/drawable-mdpi/ic_images.png index aabc1237a..c4a2229e9 100644 Binary files a/WallpaperPicker/res/drawable-mdpi/ic_images.png and b/WallpaperPicker/res/drawable-mdpi/ic_images.png differ diff --git a/WallpaperPicker/res/drawable-xhdpi/ic_images.png b/WallpaperPicker/res/drawable-xhdpi/ic_images.png index 3f21faf8f..497479291 100644 Binary files a/WallpaperPicker/res/drawable-xhdpi/ic_images.png and b/WallpaperPicker/res/drawable-xhdpi/ic_images.png differ diff --git a/WallpaperPicker/res/drawable-xxhdpi/ic_images.png b/WallpaperPicker/res/drawable-xxhdpi/ic_images.png index d00db9a00..c8b9f757a 100644 Binary files a/WallpaperPicker/res/drawable-xxhdpi/ic_images.png and b/WallpaperPicker/res/drawable-xxhdpi/ic_images.png differ diff --git a/WallpaperPicker/res/drawable-xxxhdpi/ic_images.png b/WallpaperPicker/res/drawable-xxxhdpi/ic_images.png new file mode 100644 index 000000000..a19002e47 Binary files /dev/null and b/WallpaperPicker/res/drawable-xxxhdpi/ic_images.png differ diff --git a/WallpaperPicker/res/layout/wallpaper_cropper.xml b/WallpaperPicker/res/layout/wallpaper_cropper.xml index abb860898..ffe8df0fb 100644 --- a/WallpaperPicker/res/layout/wallpaper_cropper.xml +++ b/WallpaperPicker/res/layout/wallpaper_cropper.xml @@ -19,7 +19,6 @@ --> - + android:layout_height="match_parent" > + + + android:visibility="invisible" /> + + + - - - - + - + + \ No newline at end of file diff --git a/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml b/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml index ae3c43d8e..dc6524486 100644 --- a/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml +++ b/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml @@ -20,7 +20,6 @@ android:layout_height="@dimen/wallpaperThumbnailHeight" android:focusable="true" android:clickable="true" - android:background="@drawable/wallpaper_tile_fg" android:foreground="@drawable/wallpaper_tile_fg"> "Muurpapier %1$d van %2$d" "Het %1$s gekies" "Vee uit" - "Kies prent" + "My foto\'s" "Muurpapiere" "Snoei muurpapier" diff --git a/WallpaperPicker/res/values-am/strings.xml b/WallpaperPicker/res/values-am/strings.xml index 59c3bf733..7e793856e 100644 --- a/WallpaperPicker/res/values-am/strings.xml +++ b/WallpaperPicker/res/values-am/strings.xml @@ -30,7 +30,7 @@ "ልጣፍ %1$d የ%2$d" "%1$s ተመርጧል" "ሰርዝ" - "ምስል ይምረጡ" + "የእኔ ፎቶዎች" "የግድግዳ ወረቀቶች" "ልጣፍ ይከርክሙ" diff --git a/WallpaperPicker/res/values-ar/strings.xml b/WallpaperPicker/res/values-ar/strings.xml index 2075cc875..84fa104db 100644 --- a/WallpaperPicker/res/values-ar/strings.xml +++ b/WallpaperPicker/res/values-ar/strings.xml @@ -30,7 +30,7 @@ "‏الخلفية %1$d من %2$d" "تم تحديد %1$s" "حذف" - "اختيار صورة" + "صوري" "الخلفيات" "اقتصاص الخلفية" diff --git a/WallpaperPicker/res/values-az-rAZ/strings.xml b/WallpaperPicker/res/values-az-rAZ/strings.xml index f9d1fcced..883673dd6 100644 --- a/WallpaperPicker/res/values-az-rAZ/strings.xml +++ b/WallpaperPicker/res/values-az-rAZ/strings.xml @@ -30,7 +30,7 @@ "Divar kağızı %1$d of %2$d" "%1$s seçilib" "Sil" - "Şəkil seçin" + "Fotolarım" "Divar kağızları" "Divar kağızını kəsin" diff --git a/WallpaperPicker/res/values-bg/strings.xml b/WallpaperPicker/res/values-bg/strings.xml index ce4fc651b..60ae3022f 100644 --- a/WallpaperPicker/res/values-bg/strings.xml +++ b/WallpaperPicker/res/values-bg/strings.xml @@ -30,7 +30,7 @@ "Тапет %1$d от %2$d" "Избрахте %1$s" "Изтриване" - "Избиране на изображение" + "Моите снимки" "Тапети" "Подрязване на тапета" diff --git a/WallpaperPicker/res/values-bn-rBD/strings.xml b/WallpaperPicker/res/values-bn-rBD/strings.xml index a4fccb208..74d7e57bd 100644 --- a/WallpaperPicker/res/values-bn-rBD/strings.xml +++ b/WallpaperPicker/res/values-bn-rBD/strings.xml @@ -30,7 +30,7 @@ "%2$dটির মধ্যে %1$dটি ওয়ালপেপার" "%1$s নির্বাচন করা হয়েছে" "মুছুন" - "চিত্র বাছুন" + "আমার ফটো" "ওয়ালপেপারগুলি" "ওয়ালপেপার কাটছাঁট করুন" diff --git a/WallpaperPicker/res/values-ca/strings.xml b/WallpaperPicker/res/values-ca/strings.xml index 89de81c30..cbec76250 100644 --- a/WallpaperPicker/res/values-ca/strings.xml +++ b/WallpaperPicker/res/values-ca/strings.xml @@ -30,7 +30,7 @@ "Fons de pantalla %1$d de %2$d" "S\'ha seleccionat %1$s." "Suprimeix" - "Tria una imatge" + "Les meves fotos" "Fons de pantalla" "Retallar fons de pantalla" diff --git a/WallpaperPicker/res/values-cs/strings.xml b/WallpaperPicker/res/values-cs/strings.xml index a07b9eda2..da0758e0a 100644 --- a/WallpaperPicker/res/values-cs/strings.xml +++ b/WallpaperPicker/res/values-cs/strings.xml @@ -30,7 +30,7 @@ "Tapeta %1$d z %2$d" "Vybrána položka %1$s" "Smazat" - "Vybrat obrázek" + "Moje fotografie" "Tapety" "Oříznutí tapety" diff --git a/WallpaperPicker/res/values-da/strings.xml b/WallpaperPicker/res/values-da/strings.xml index 5b233e1d0..12c0fe87e 100644 --- a/WallpaperPicker/res/values-da/strings.xml +++ b/WallpaperPicker/res/values-da/strings.xml @@ -30,7 +30,7 @@ "Baggrund %1$d af %2$d" "%1$s blev valgt" "Slet" - "Vælg et billede" + "Mine billeder" "Baggrunde" "Beskær baggrunden" diff --git a/WallpaperPicker/res/values-de/strings.xml b/WallpaperPicker/res/values-de/strings.xml index 11c1cac6a..3171b3f3a 100644 --- a/WallpaperPicker/res/values-de/strings.xml +++ b/WallpaperPicker/res/values-de/strings.xml @@ -30,7 +30,7 @@ "Hintergrund %1$d von %2$d" "%1$s ausgewählt" "Löschen" - "Bild auswählen" + "Meine Fotos" "Hintergründe" "Hintergrund zuschneiden" diff --git a/WallpaperPicker/res/values-el/strings.xml b/WallpaperPicker/res/values-el/strings.xml index 8e1e78fb9..2988beced 100644 --- a/WallpaperPicker/res/values-el/strings.xml +++ b/WallpaperPicker/res/values-el/strings.xml @@ -30,7 +30,7 @@ "Ταπετσαρία %1$d από %2$d" "Επιλέχθηκε το %1$s" "Διαγραφή" - "Επιλογή εικόνας" + "Οι φωτογραφίες μου" "Ταπετσαρίες" "Περικοπή ταπετσαρίας" diff --git a/WallpaperPicker/res/values-en-rAU/strings.xml b/WallpaperPicker/res/values-en-rAU/strings.xml index c057c0cb3..30450ee81 100644 --- a/WallpaperPicker/res/values-en-rAU/strings.xml +++ b/WallpaperPicker/res/values-en-rAU/strings.xml @@ -30,7 +30,7 @@ "Wallpaper %1$d of %2$d" "Selected %1$s" "Delete" - "Pick image" + "My photos" "Wallpapers" "Crop wallpaper" diff --git a/WallpaperPicker/res/values-en-rGB/strings.xml b/WallpaperPicker/res/values-en-rGB/strings.xml index c057c0cb3..30450ee81 100644 --- a/WallpaperPicker/res/values-en-rGB/strings.xml +++ b/WallpaperPicker/res/values-en-rGB/strings.xml @@ -30,7 +30,7 @@ "Wallpaper %1$d of %2$d" "Selected %1$s" "Delete" - "Pick image" + "My photos" "Wallpapers" "Crop wallpaper" diff --git a/WallpaperPicker/res/values-en-rIN/strings.xml b/WallpaperPicker/res/values-en-rIN/strings.xml index c057c0cb3..30450ee81 100644 --- a/WallpaperPicker/res/values-en-rIN/strings.xml +++ b/WallpaperPicker/res/values-en-rIN/strings.xml @@ -30,7 +30,7 @@ "Wallpaper %1$d of %2$d" "Selected %1$s" "Delete" - "Pick image" + "My photos" "Wallpapers" "Crop wallpaper" diff --git a/WallpaperPicker/res/values-es-rUS/strings.xml b/WallpaperPicker/res/values-es-rUS/strings.xml index 768385b9e..c18ecb233 100644 --- a/WallpaperPicker/res/values-es-rUS/strings.xml +++ b/WallpaperPicker/res/values-es-rUS/strings.xml @@ -30,7 +30,7 @@ "Fondo de pantalla %1$d de %2$d" "%1$s seleccionado" "Eliminar" - "Elegir imagen" + "Mis fotos" "Fondos de pantalla" "Recortar fondo de pantalla" diff --git a/WallpaperPicker/res/values-es/strings.xml b/WallpaperPicker/res/values-es/strings.xml index 702b6d413..b7221af2a 100644 --- a/WallpaperPicker/res/values-es/strings.xml +++ b/WallpaperPicker/res/values-es/strings.xml @@ -30,7 +30,7 @@ "Fondo de pantalla %1$d de %2$d" "%1$s seleccionado" "Eliminar" - "Seleccionar imagen" + "Mis fotos" "Fondos de pantalla" "Recortar fondo de pantalla" diff --git a/WallpaperPicker/res/values-et-rEE/strings.xml b/WallpaperPicker/res/values-et-rEE/strings.xml index c09e223d9..571a0ffbd 100644 --- a/WallpaperPicker/res/values-et-rEE/strings.xml +++ b/WallpaperPicker/res/values-et-rEE/strings.xml @@ -30,7 +30,7 @@ "%1$d/%2$d taustapildist" "Valitud on %1$s" "Kustuta" - "Vali kujutis" + "Minu fotod" "Taustapildid" "Taustapildi kärpimine" diff --git a/WallpaperPicker/res/values-eu-rES/strings.xml b/WallpaperPicker/res/values-eu-rES/strings.xml index 327550d52..45bf7a106 100644 --- a/WallpaperPicker/res/values-eu-rES/strings.xml +++ b/WallpaperPicker/res/values-eu-rES/strings.xml @@ -30,7 +30,7 @@ "%1$d/%2$d horma-papera" "%1$s hautatu da" "Ezabatu" - "Hautatu irudia" + "Nire argazkiak" "Horma-paperak" "Ebaki horma-papera" diff --git a/WallpaperPicker/res/values-fa/strings.xml b/WallpaperPicker/res/values-fa/strings.xml index e1d26a868..469ec1263 100644 --- a/WallpaperPicker/res/values-fa/strings.xml +++ b/WallpaperPicker/res/values-fa/strings.xml @@ -30,7 +30,7 @@ "‏کاغذدیواری %1$d از %2$d" "%1$s انتخاب شد" "حذف" - "انتخاب تصویر" + "عکس‌های من" "کاغذدیواری‌ها" "برش کاغذدیواری" diff --git a/WallpaperPicker/res/values-fi/strings.xml b/WallpaperPicker/res/values-fi/strings.xml index 0fa4b7bcf..c82d3e0ed 100644 --- a/WallpaperPicker/res/values-fi/strings.xml +++ b/WallpaperPicker/res/values-fi/strings.xml @@ -30,7 +30,7 @@ "Taustakuva %1$d/%2$d" "Valittu: %1$s" "Poista" - "Valitse kuva" + "Omat valokuvat" "Taustakuvat" "Rajaa taustakuva" diff --git a/WallpaperPicker/res/values-fr-rCA/strings.xml b/WallpaperPicker/res/values-fr-rCA/strings.xml index e95670678..92568966e 100644 --- a/WallpaperPicker/res/values-fr-rCA/strings.xml +++ b/WallpaperPicker/res/values-fr-rCA/strings.xml @@ -30,7 +30,7 @@ "Fond d\'écran %1$d de %2$d" "Sélection : %1$s" "Supprimer" - "Choisir une image" + "Mes photos" "Fonds d\'écran" "Rogner le fond d\'écran" diff --git a/WallpaperPicker/res/values-fr/strings.xml b/WallpaperPicker/res/values-fr/strings.xml index 37846e0f5..479a7e430 100644 --- a/WallpaperPicker/res/values-fr/strings.xml +++ b/WallpaperPicker/res/values-fr/strings.xml @@ -30,7 +30,7 @@ "Fond d\'écran %1$d sur %2$d" "%1$s sélectionné" "Supprimer" - "Sélectionner une image" + "Mes photos" "Fonds d\'écran" "Recadrer le fond d\'écran" diff --git a/WallpaperPicker/res/values-gl-rES/strings.xml b/WallpaperPicker/res/values-gl-rES/strings.xml index 9f1fd5014..0396b2f62 100644 --- a/WallpaperPicker/res/values-gl-rES/strings.xml +++ b/WallpaperPicker/res/values-gl-rES/strings.xml @@ -30,7 +30,7 @@ "Fondo de pantalla %1$d de %2$d" "Seleccionaches %1$s" "Eliminar" - "Escoller imaxe" + "As miñas fotos" "Fondos de pantalla" "Recortar fondo de pantalla" diff --git a/WallpaperPicker/res/values-gu-rIN/strings.xml b/WallpaperPicker/res/values-gu-rIN/strings.xml index acee01cfc..e201d523f 100644 --- a/WallpaperPicker/res/values-gu-rIN/strings.xml +++ b/WallpaperPicker/res/values-gu-rIN/strings.xml @@ -30,7 +30,7 @@ "%2$d માંથી %1$d વૉલપેપર" "%1$s પસંદ કર્યો" "કાઢી નાખો" - "છબી ચૂંટો" + "મારા ફોટા" "વૉલપેપર્સ" "વૉલપેપર કાપો" diff --git a/WallpaperPicker/res/values-hi/strings.xml b/WallpaperPicker/res/values-hi/strings.xml index fcb252eb5..60834e103 100644 --- a/WallpaperPicker/res/values-hi/strings.xml +++ b/WallpaperPicker/res/values-hi/strings.xml @@ -30,7 +30,7 @@ "वॉलपेपर %2$d में से %1$d" "चयनित %1$s" "हटाएं" - "चित्र चुनें" + "मेरी फ़ोटो" "वॉलपेपर" "वॉलपेपर काटें" diff --git a/WallpaperPicker/res/values-hr/strings.xml b/WallpaperPicker/res/values-hr/strings.xml index 3d79e8f0c..9ed702c5a 100644 --- a/WallpaperPicker/res/values-hr/strings.xml +++ b/WallpaperPicker/res/values-hr/strings.xml @@ -30,7 +30,7 @@ "%1$d. pozadinska slika od %2$d" "Odabrana je %1$s" "Izbriši" - "Odaberi sliku" + "Moje fotografije" "Pozadine" "Obrezivanje pozadinske slike" diff --git a/WallpaperPicker/res/values-hu/strings.xml b/WallpaperPicker/res/values-hu/strings.xml index 703aa12eb..d8b08fdfd 100644 --- a/WallpaperPicker/res/values-hu/strings.xml +++ b/WallpaperPicker/res/values-hu/strings.xml @@ -30,7 +30,7 @@ "%1$d/%2$d. háttérkép" "%1$s kiválasztva" "Törlés" - "Kép kiválasztása" + "Saját fotók" "Háttérképek" "Háttérkép körbevágása" diff --git a/WallpaperPicker/res/values-hy-rAM/strings.xml b/WallpaperPicker/res/values-hy-rAM/strings.xml index f3891dd35..027b841a7 100644 --- a/WallpaperPicker/res/values-hy-rAM/strings.xml +++ b/WallpaperPicker/res/values-hy-rAM/strings.xml @@ -30,7 +30,7 @@ "%1$d պաստառ՝ %2$d-ից" "Ընտրված է %1$s" "Ջնջել" - "Ընտրել պատկեր" + "Իմ լուսանկարները" "Պաստառներ" "Եզրատել պաստառը" diff --git a/WallpaperPicker/res/values-in/strings.xml b/WallpaperPicker/res/values-in/strings.xml index f216cf343..91554522f 100644 --- a/WallpaperPicker/res/values-in/strings.xml +++ b/WallpaperPicker/res/values-in/strings.xml @@ -30,7 +30,7 @@ "Wallpaper %1$d dari %2$d" "%1$s terpilih" "Hapus" - "Pilih gambar" + "Foto saya" "Wallpaper" "Pangkas wallpaper" diff --git a/WallpaperPicker/res/values-is-rIS/strings.xml b/WallpaperPicker/res/values-is-rIS/strings.xml index 6d5d680cf..69e6cd498 100644 --- a/WallpaperPicker/res/values-is-rIS/strings.xml +++ b/WallpaperPicker/res/values-is-rIS/strings.xml @@ -30,7 +30,7 @@ "Veggfóður %1$d af %2$d" "%1$s valið" "Eyða" - "Velja mynd" + "Myndirnar mínar" "Veggfóður" "Skera veggfóður" diff --git a/WallpaperPicker/res/values-it/strings.xml b/WallpaperPicker/res/values-it/strings.xml index c29946f85..f4d38d14e 100644 --- a/WallpaperPicker/res/values-it/strings.xml +++ b/WallpaperPicker/res/values-it/strings.xml @@ -30,7 +30,7 @@ "Sfondo %1$d di %2$d" "Elemento selezionato: %1$s" "Elimina" - "Scegli l\'immagine" + "Le mie foto" "Sfondi" "Ritaglia sfondo" diff --git a/WallpaperPicker/res/values-iw/strings.xml b/WallpaperPicker/res/values-iw/strings.xml index ddc96e92c..e29f2372f 100644 --- a/WallpaperPicker/res/values-iw/strings.xml +++ b/WallpaperPicker/res/values-iw/strings.xml @@ -30,7 +30,7 @@ "‏טפט %1$d מתוך %2$d" "בחרת %1$s" "מחק" - "בחר תמונה" + "התמונות שלי" "טפטים" "חתוך את הטפט" diff --git a/WallpaperPicker/res/values-ja/strings.xml b/WallpaperPicker/res/values-ja/strings.xml index 80b094453..e86026bf9 100644 --- a/WallpaperPicker/res/values-ja/strings.xml +++ b/WallpaperPicker/res/values-ja/strings.xml @@ -30,7 +30,7 @@ "壁紙: %1$d/%2$d" "選択: %1$s" "削除" - "画像を選択" + "マイフォト" "壁紙" "壁紙のトリミング" diff --git a/WallpaperPicker/res/values-ka-rGE/strings.xml b/WallpaperPicker/res/values-ka-rGE/strings.xml index 2f59712d8..1ae10214a 100644 --- a/WallpaperPicker/res/values-ka-rGE/strings.xml +++ b/WallpaperPicker/res/values-ka-rGE/strings.xml @@ -30,7 +30,7 @@ "ფონი %1$d %2$d-დან" "არჩეული %1$s" "წაშლა" - "სურათის ამორჩევა" + "ჩემი ფოტოები" "ფონები" "ფონის ჩამოჭრა" diff --git a/WallpaperPicker/res/values-kk-rKZ/strings.xml b/WallpaperPicker/res/values-kk-rKZ/strings.xml index dcf372cf5..a10e27318 100644 --- a/WallpaperPicker/res/values-kk-rKZ/strings.xml +++ b/WallpaperPicker/res/values-kk-rKZ/strings.xml @@ -30,7 +30,7 @@ "%1$d артқы фон, барлығы %2$d" "%1$s таңдалған" "Жою" - "Суретті таңдау" + "Менің фотосуреттерім" "Артқы фондар" "Артқы фонды кесу" diff --git a/WallpaperPicker/res/values-km-rKH/strings.xml b/WallpaperPicker/res/values-km-rKH/strings.xml index 41722355f..2a605e86a 100644 --- a/WallpaperPicker/res/values-km-rKH/strings.xml +++ b/WallpaperPicker/res/values-km-rKH/strings.xml @@ -30,7 +30,7 @@ "ផ្ទាំង​រូបភាព %1$d នៃ %2$d" "បាន​ជ្រើស %1$s" "លុប" - "ជ្រើស​យក​រូបភាព" + "រូបថតរបស់ខ្ញុំ" "ផ្ទាំង​រូបភាព" "ច្រឹប​ផ្ទាំង​រូបភាព" diff --git a/WallpaperPicker/res/values-kn-rIN/strings.xml b/WallpaperPicker/res/values-kn-rIN/strings.xml index 89203bf1c..b69bda529 100644 --- a/WallpaperPicker/res/values-kn-rIN/strings.xml +++ b/WallpaperPicker/res/values-kn-rIN/strings.xml @@ -30,7 +30,7 @@ "%2$d ರಲ್ಲಿ %1$d ವಾಲ್‌ಪೇಪರ್‌" "%1$s ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ" "ಅಳಿಸು" - "ಚಿತ್ರವನ್ನು ಆರಿಸಿ" + "ನನ್ನ ಫೋಟೋಗಳು" "ವಾಲ್‌ಪೇಪರ್‌ಗಳು" "ವಾಲ್‌ಪೇಪರ್‌ ಕತ್ತರಿಸಿ" diff --git a/WallpaperPicker/res/values-ko/strings.xml b/WallpaperPicker/res/values-ko/strings.xml index a5a85b773..30e7cfa23 100644 --- a/WallpaperPicker/res/values-ko/strings.xml +++ b/WallpaperPicker/res/values-ko/strings.xml @@ -30,7 +30,7 @@ "배경화면 %1$d/%2$d" "%1$s 선택함" "삭제" - "이미지 선택" + "내 사진" "배경화면" "배경화면 잘라내기" diff --git a/WallpaperPicker/res/values-ky-rKG/strings.xml b/WallpaperPicker/res/values-ky-rKG/strings.xml index 696b3ee17..f1ebf095d 100644 --- a/WallpaperPicker/res/values-ky-rKG/strings.xml +++ b/WallpaperPicker/res/values-ky-rKG/strings.xml @@ -30,7 +30,7 @@ "%2$d ичинен %1$d тушкагаз" "%1$s тандалды" "Жок кылуу" - "Сүрөт тандоо" + "Менин сүрөттөрүм" "Тушкагаздар" "Тушкагазды тегиздөө" diff --git a/WallpaperPicker/res/values-lo-rLA/strings.xml b/WallpaperPicker/res/values-lo-rLA/strings.xml index e46859111..e32cafb7d 100644 --- a/WallpaperPicker/res/values-lo-rLA/strings.xml +++ b/WallpaperPicker/res/values-lo-rLA/strings.xml @@ -30,7 +30,7 @@ "ພາບພື້ນຫຼັງ %1$d ໃນ %2$d" "ເລືອກ %1$s" "ລຶບ" - "ເລືອກ​ຮູບ​ພາບ" + "ຮູບຂອງຂ້ອຍ" "ພາບພື້ນຫຼັງ" "ຕັດພາບພື້ນຫຼັງ" diff --git a/WallpaperPicker/res/values-lt/strings.xml b/WallpaperPicker/res/values-lt/strings.xml index 86035b883..c442e3a5a 100644 --- a/WallpaperPicker/res/values-lt/strings.xml +++ b/WallpaperPicker/res/values-lt/strings.xml @@ -30,7 +30,7 @@ "%1$d ekrano fonas iš %2$d" "Pasirinkta: %1$s" "Ištrinti" - "Pasirinkti vaizdą" + "Mano nuotraukos" "Ekrano fonai" "Apkirpti ekrano foną" diff --git a/WallpaperPicker/res/values-lv/strings.xml b/WallpaperPicker/res/values-lv/strings.xml index 02e5cfb22..d05a17547 100644 --- a/WallpaperPicker/res/values-lv/strings.xml +++ b/WallpaperPicker/res/values-lv/strings.xml @@ -30,7 +30,7 @@ "%1$d. fona tapete no %2$d" "Atlasīta: %1$s" "Dzēst" - "Izvēlēties attēlu" + "Mani fotoattēli" "Fona tapetes" "Apgriezt fona tapeti" diff --git a/WallpaperPicker/res/values-mk-rMK/strings.xml b/WallpaperPicker/res/values-mk-rMK/strings.xml index b1919ccd4..f9e0963ed 100644 --- a/WallpaperPicker/res/values-mk-rMK/strings.xml +++ b/WallpaperPicker/res/values-mk-rMK/strings.xml @@ -30,7 +30,7 @@ "Тапет %1$d од %2$d" "Избран %1$s" "Избриши" - "Избери слика" + "Моите фотографии" "Тапети" "Исечи тапет" diff --git a/WallpaperPicker/res/values-ml-rIN/strings.xml b/WallpaperPicker/res/values-ml-rIN/strings.xml index 0b6a4c108..6be771c0e 100644 --- a/WallpaperPicker/res/values-ml-rIN/strings.xml +++ b/WallpaperPicker/res/values-ml-rIN/strings.xml @@ -30,7 +30,7 @@ "%1$d / %2$d വാൾപേപ്പർ" "%1$s തിരഞ്ഞെടുത്തു" "ഇല്ലാതാക്കുക" - "ചിത്രം തിരഞ്ഞെടുക്കുക" + "എന്റെ ഫോട്ടോകൾ" "വാൾപേപ്പറുകൾ" "വാൾപേപ്പറിന്റെ വലുപ്പം മാറ്റൽ" diff --git a/WallpaperPicker/res/values-mn-rMN/strings.xml b/WallpaperPicker/res/values-mn-rMN/strings.xml index 71ff9e0f7..b88da5a96 100644 --- a/WallpaperPicker/res/values-mn-rMN/strings.xml +++ b/WallpaperPicker/res/values-mn-rMN/strings.xml @@ -30,7 +30,7 @@ "%2$d ханын цаасны %1$d нь" "%1$s сонгогдсон" "Устгах" - "Зураг сонгох" + "Миний зураг" "Ханын зураг" "Ханын зургийг тайрах" diff --git a/WallpaperPicker/res/values-mr-rIN/strings.xml b/WallpaperPicker/res/values-mr-rIN/strings.xml index 33cfaa148..128b21c1c 100644 --- a/WallpaperPicker/res/values-mr-rIN/strings.xml +++ b/WallpaperPicker/res/values-mr-rIN/strings.xml @@ -30,7 +30,7 @@ "%2$d पैकी %1$d वॉलपेपर" "%1$s निवडले" "हटवा" - "प्रतिमा निवडा" + "माझे फोटो" "वॉलपेपर" "वॉलपेपर कापा" diff --git a/WallpaperPicker/res/values-ms-rMY/strings.xml b/WallpaperPicker/res/values-ms-rMY/strings.xml index 950f4d0e1..9d824e4fa 100644 --- a/WallpaperPicker/res/values-ms-rMY/strings.xml +++ b/WallpaperPicker/res/values-ms-rMY/strings.xml @@ -30,7 +30,7 @@ "Kertas dinding %1$d daripada %2$d" "Memilih %1$s" "Padam" - "Pilih imej" + "Foto saya" "Kertas dinding" "Pangkas kertas dinding" diff --git a/WallpaperPicker/res/values-my-rMM/strings.xml b/WallpaperPicker/res/values-my-rMM/strings.xml index 4d5ac47df..233611431 100644 --- a/WallpaperPicker/res/values-my-rMM/strings.xml +++ b/WallpaperPicker/res/values-my-rMM/strings.xml @@ -30,7 +30,7 @@ "နောက်ခံ %1$d မှ %2$d" "ရွေးချယ်ထားသော %1$s" "ဖျက်ပါ" - "ပုံ ရွေးပါ" + "ကျွန်ုပ်၏ ဓာတ်ပုံများ" "နောက်ခံများ" "နောက်ခံအား ဖြတ်ခြင်း" diff --git a/WallpaperPicker/res/values-nb/strings.xml b/WallpaperPicker/res/values-nb/strings.xml index 3589e4bc8..9ae0b989a 100644 --- a/WallpaperPicker/res/values-nb/strings.xml +++ b/WallpaperPicker/res/values-nb/strings.xml @@ -30,7 +30,7 @@ "Bakgrunn %1$d av %2$d" "Valgt %1$s" "Slett" - "Velg bilde" + "Mine bilder" "Bakgrunner" "Beskjær bakgrunnen" diff --git a/WallpaperPicker/res/values-ne-rNP/strings.xml b/WallpaperPicker/res/values-ne-rNP/strings.xml index 221fa9438..5bca8d809 100644 --- a/WallpaperPicker/res/values-ne-rNP/strings.xml +++ b/WallpaperPicker/res/values-ne-rNP/strings.xml @@ -30,7 +30,7 @@ "%2$d को %1$d वालपेपर" "चयन गरिएको %1$s" "मेट्नुहोस्" - "तस्बिर छान्नुहोस्" + "मेरा तस्बिरहरू" "वालपेपरहरु" "वालपेपर काँटछाट गर्नुहोस्" diff --git a/WallpaperPicker/res/values-nl/strings.xml b/WallpaperPicker/res/values-nl/strings.xml index 7dd4f22b0..a86f0f651 100644 --- a/WallpaperPicker/res/values-nl/strings.xml +++ b/WallpaperPicker/res/values-nl/strings.xml @@ -30,7 +30,7 @@ "Achtergrond %1$d van %2$d" "%1$s is geselecteerd" "Verwijderen" - "Afbeelding kiezen" + "Mijn foto\'s" "Achtergronden" "Achtergrond bijsnijden" diff --git a/WallpaperPicker/res/values-pa-rIN/strings.xml b/WallpaperPicker/res/values-pa-rIN/strings.xml index 3be7bf802..e4225e02d 100644 --- a/WallpaperPicker/res/values-pa-rIN/strings.xml +++ b/WallpaperPicker/res/values-pa-rIN/strings.xml @@ -30,7 +30,7 @@ "ਵਾਲਪੇਪਰ %2$d ਦਾ %1$d" "%1$s ਚੁਣਿਆ ਗਿਆ" "ਮਿਟਾਓ" - "ਚਿੱਤਰ ਚੁਣੋ" + "ਮੇਰੀਆਂ ਫੋਟੋਆਂ" "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਕੱਟੋ" diff --git a/WallpaperPicker/res/values-pl/strings.xml b/WallpaperPicker/res/values-pl/strings.xml index bcdbb3dc7..cd52082d6 100644 --- a/WallpaperPicker/res/values-pl/strings.xml +++ b/WallpaperPicker/res/values-pl/strings.xml @@ -30,7 +30,7 @@ "Tapeta %1$d z %2$d" "Wybrano %1$s" "Usuń" - "Wybierz obraz" + "Moje zdjęcia" "Tapety" "Przytnij tapetę" diff --git a/WallpaperPicker/res/values-pt-rPT/strings.xml b/WallpaperPicker/res/values-pt-rPT/strings.xml index 83492327f..82aa4694a 100644 --- a/WallpaperPicker/res/values-pt-rPT/strings.xml +++ b/WallpaperPicker/res/values-pt-rPT/strings.xml @@ -30,7 +30,7 @@ "Imagem de fundo %1$d de %2$d" "%1$s selecionada" "Eliminar" - "Escolher imagem" + "As minhas fotos" "Imagens de fundo" "Recortar imagem de fundo" diff --git a/WallpaperPicker/res/values-pt/strings.xml b/WallpaperPicker/res/values-pt/strings.xml index 2332fcbd1..74ff3106c 100644 --- a/WallpaperPicker/res/values-pt/strings.xml +++ b/WallpaperPicker/res/values-pt/strings.xml @@ -30,7 +30,7 @@ "Plano de fundo %1$d de %2$d" "%1$s selecionado" "Excluir" - "Escolher imagem" + "Minhas fotos" "Planos de fundo" "Cortar plano de fundo" diff --git a/WallpaperPicker/res/values-ro/strings.xml b/WallpaperPicker/res/values-ro/strings.xml index 8ee1a5a39..6281b80fc 100644 --- a/WallpaperPicker/res/values-ro/strings.xml +++ b/WallpaperPicker/res/values-ro/strings.xml @@ -30,7 +30,7 @@ "Imaginea de fundal %1$d din %2$d" "S-a selectat %1$s" "Ștergeți" - "Alegeți imaginea" + "Fotografiile mele" "Imagini de fundal" "Decupați imaginea de fundal" diff --git a/WallpaperPicker/res/values-ru/strings.xml b/WallpaperPicker/res/values-ru/strings.xml index ff43ce8f6..959205a33 100644 --- a/WallpaperPicker/res/values-ru/strings.xml +++ b/WallpaperPicker/res/values-ru/strings.xml @@ -30,7 +30,7 @@ "Обои %1$d из %2$d" "Выбран элемент \"%1$s\"" "Удалить" - "Выбрать обои" + "Мои фото" "Обои" "Кадрировать обои" diff --git a/WallpaperPicker/res/values-si-rLK/strings.xml b/WallpaperPicker/res/values-si-rLK/strings.xml index d175724fd..37ce1fc52 100644 --- a/WallpaperPicker/res/values-si-rLK/strings.xml +++ b/WallpaperPicker/res/values-si-rLK/strings.xml @@ -32,7 +32,7 @@ "තෝරාගත්තේ %1$s" "මකන්න" - "පින්තූරයක් තෝරන්න" + "මගේ ඡායාරූප" "වෝල්පේපර" "වෝල්පේපරය කප්පාදු කිරීම" diff --git a/WallpaperPicker/res/values-sk/strings.xml b/WallpaperPicker/res/values-sk/strings.xml index 33477a124..9d38de437 100644 --- a/WallpaperPicker/res/values-sk/strings.xml +++ b/WallpaperPicker/res/values-sk/strings.xml @@ -30,7 +30,7 @@ "Tapeta %1$d z %2$d" "Vybratá položka %1$s" "Odstrániť" - "Vybrať obrázok" + "Moje fotky" "Tapety" "Orezanie tapety" diff --git a/WallpaperPicker/res/values-sl/strings.xml b/WallpaperPicker/res/values-sl/strings.xml index 06a508a8c..e776cc7d5 100644 --- a/WallpaperPicker/res/values-sl/strings.xml +++ b/WallpaperPicker/res/values-sl/strings.xml @@ -30,7 +30,7 @@ "%1$d. ozadje od %2$d" "Izbrano: %1$s" "Izbriši" - "Izberi sliko" + "Moje fotografije" "Ozadja" "Obrezovanje ozadja" diff --git a/WallpaperPicker/res/values-sq-rAL/strings.xml b/WallpaperPicker/res/values-sq-rAL/strings.xml index f21b7ef83..8a9983b4b 100644 --- a/WallpaperPicker/res/values-sq-rAL/strings.xml +++ b/WallpaperPicker/res/values-sq-rAL/strings.xml @@ -30,7 +30,7 @@ "Imazhi i sfondit: %1$d nga gjithsej %2$d" "%1$s u përzgjodh" "Fshi" - "Zgjidh imazhin" + "Fotografitë e mia" "Imazhet e sfondit" "Prit imazhin e sfondit" diff --git a/WallpaperPicker/res/values-sr/strings.xml b/WallpaperPicker/res/values-sr/strings.xml index fdfaaf60f..c37bc060f 100644 --- a/WallpaperPicker/res/values-sr/strings.xml +++ b/WallpaperPicker/res/values-sr/strings.xml @@ -30,7 +30,7 @@ "Позадина %1$d од %2$d" "Изабрана је %1$s" "Избриши" - "Изабери слику" + "Моје фотографије" "Позадине" "Опсеци позадину" diff --git a/WallpaperPicker/res/values-sv/strings.xml b/WallpaperPicker/res/values-sv/strings.xml index 57db3a64d..044508b4d 100644 --- a/WallpaperPicker/res/values-sv/strings.xml +++ b/WallpaperPicker/res/values-sv/strings.xml @@ -30,7 +30,7 @@ "Bakgrund %1$d av %2$d" "%1$s har valts" "Ta bort" - "Välj bild" + "Mina foton" "Bakgrunder" "Beskär bakgrund" diff --git a/WallpaperPicker/res/values-sw/strings.xml b/WallpaperPicker/res/values-sw/strings.xml index edea3de5b..367912aab 100644 --- a/WallpaperPicker/res/values-sw/strings.xml +++ b/WallpaperPicker/res/values-sw/strings.xml @@ -30,7 +30,7 @@ "Mandhari %1$d ya %2$d" "%1$s iliyochaguliwa" "Futa" - "Chagua picha" + "Picha zangu" "Mandhari" "Punguza mandhari" diff --git a/WallpaperPicker/res/values-sw600dp/config.xml b/WallpaperPicker/res/values-sw600dp/config.xml deleted file mode 100644 index 62342dcc2..000000000 --- a/WallpaperPicker/res/values-sw600dp/config.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - true - diff --git a/WallpaperPicker/res/values-sw720dp-v19/styles.xml b/WallpaperPicker/res/values-sw720dp-v19/styles.xml index 91078517d..d8dab223a 100644 --- a/WallpaperPicker/res/values-sw720dp-v19/styles.xml +++ b/WallpaperPicker/res/values-sw720dp-v19/styles.xml @@ -18,7 +18,7 @@ --> - diff --git a/WallpaperPicker/res/values-ta-rIN/strings.xml b/WallpaperPicker/res/values-ta-rIN/strings.xml index 2b984271a..7284da8ae 100644 --- a/WallpaperPicker/res/values-ta-rIN/strings.xml +++ b/WallpaperPicker/res/values-ta-rIN/strings.xml @@ -30,7 +30,7 @@ "வால்பேப்பர் %1$d / %2$d" "%1$s தேர்ந்தெடுக்கப்பட்டது" "நீக்கு" - "படத்தைத் தேர்வுசெய்க" + "எனது படங்கள்" "வால்பேப்பர்கள்" "வால்பேப்பரைச் செதுக்கு" diff --git a/WallpaperPicker/res/values-te-rIN/strings.xml b/WallpaperPicker/res/values-te-rIN/strings.xml index c26f84e28..4c5ad2f08 100644 --- a/WallpaperPicker/res/values-te-rIN/strings.xml +++ b/WallpaperPicker/res/values-te-rIN/strings.xml @@ -30,7 +30,7 @@ "%2$dలో %1$dవ వాల్‌పేపర్" "%1$s ఎంచుకోబడింది" "తొలగించు" - "చిత్రాన్ని ఎంచుకోండి" + "నా ఫోటోలు" "వాల్‌పేపర్‌లు" "వాల్‌పేపర్‌ను కత్తిరించండి" diff --git a/WallpaperPicker/res/values-th/strings.xml b/WallpaperPicker/res/values-th/strings.xml index 6b4c23536..b3d7a8bc7 100644 --- a/WallpaperPicker/res/values-th/strings.xml +++ b/WallpaperPicker/res/values-th/strings.xml @@ -30,7 +30,7 @@ "วอลเปเปอร์ %1$d จาก %2$d" "เลือก %1$s แล้ว" "ลบ" - "เลือกรูปภาพ" + "รูปภาพของฉัน" "วอลเปเปอร์" "ครอบตัดวอลเปเปอร์" diff --git a/WallpaperPicker/res/values-tl/strings.xml b/WallpaperPicker/res/values-tl/strings.xml index c9fe338d4..db8f4d542 100644 --- a/WallpaperPicker/res/values-tl/strings.xml +++ b/WallpaperPicker/res/values-tl/strings.xml @@ -30,7 +30,7 @@ "Wallpaper %1$d ng %2$d" "Napili ang %1$s" "Tanggalin" - "Pumili ng larawan" + "Aking mga larawan" "Mga Wallpaper" "I-crop ang wallpaper" diff --git a/WallpaperPicker/res/values-tr/strings.xml b/WallpaperPicker/res/values-tr/strings.xml index 3d03c6be8..d1e57edbb 100644 --- a/WallpaperPicker/res/values-tr/strings.xml +++ b/WallpaperPicker/res/values-tr/strings.xml @@ -30,7 +30,7 @@ "%2$d duvar kağıdı arasından duvar kağıdı %1$d" "%1$s seçildi" "Sil" - "Resim seç" + "Fotoğraflarım" "Duvar kağıtları" "Duvar kağıdını kırp" diff --git a/WallpaperPicker/res/values-uk/strings.xml b/WallpaperPicker/res/values-uk/strings.xml index 076c88238..756e7cf09 100644 --- a/WallpaperPicker/res/values-uk/strings.xml +++ b/WallpaperPicker/res/values-uk/strings.xml @@ -30,7 +30,7 @@ "Фоновий малюнок %1$d з %2$d" "Вибрано %1$s" "Видалити" - "Вибрати зображення" + "Мої фото" "Фонові малюнки" "Обрізати фоновий малюнок" diff --git a/WallpaperPicker/res/values-ur-rPK/strings.xml b/WallpaperPicker/res/values-ur-rPK/strings.xml index 7b12d4239..86d8163d9 100644 --- a/WallpaperPicker/res/values-ur-rPK/strings.xml +++ b/WallpaperPicker/res/values-ur-rPK/strings.xml @@ -30,7 +30,7 @@ "‏وال پیپر ‎%1$d از ‎%2$d" "%1$s کو منتخب کیا گیا" "حذف کریں" - "تصویر منتخب کریں" + "میری تصاویر" "وال پیپرز" "وال پیپر کو تراشیں" diff --git a/WallpaperPicker/res/values-uz-rUZ/strings.xml b/WallpaperPicker/res/values-uz-rUZ/strings.xml index 807d6b4ae..97d3938ae 100644 --- a/WallpaperPicker/res/values-uz-rUZ/strings.xml +++ b/WallpaperPicker/res/values-uz-rUZ/strings.xml @@ -30,7 +30,7 @@ "Fon rasmi %2$ddan %1$d" "%1$s tanlandi" "O‘chirish" - "Rasm tanlang" + "Mening rasmlarim" "Fon rasmlari" "Fon rasmini kesish" diff --git a/WallpaperPicker/res/values-v21/styles.xml b/WallpaperPicker/res/values-v21/styles.xml new file mode 100644 index 000000000..582ab8fed --- /dev/null +++ b/WallpaperPicker/res/values-v21/styles.xml @@ -0,0 +1,36 @@ + + + + + + + + + + \ No newline at end of file diff --git a/WallpaperPicker/res/values-vi/strings.xml b/WallpaperPicker/res/values-vi/strings.xml index d1efbe989..ae00d585c 100644 --- a/WallpaperPicker/res/values-vi/strings.xml +++ b/WallpaperPicker/res/values-vi/strings.xml @@ -30,7 +30,7 @@ "Hình nền %1$d / %2$d" "%1$s được chọn" "Xóa" - "Chọn hình ảnh" + "Ảnh của tôi" "Hình nền" "Cắt hình nền" diff --git a/WallpaperPicker/res/values-zh-rCN/strings.xml b/WallpaperPicker/res/values-zh-rCN/strings.xml index 1def9ed41..8bd5342eb 100644 --- a/WallpaperPicker/res/values-zh-rCN/strings.xml +++ b/WallpaperPicker/res/values-zh-rCN/strings.xml @@ -30,7 +30,7 @@ "第%1$d张壁纸,共%2$d张" "已选择%1$s" "删除" - "选择图片" + "我的照片" "壁纸" "剪裁壁纸" diff --git a/WallpaperPicker/res/values-zh-rHK/strings.xml b/WallpaperPicker/res/values-zh-rHK/strings.xml index 66ba0af18..e51d60afa 100644 --- a/WallpaperPicker/res/values-zh-rHK/strings.xml +++ b/WallpaperPicker/res/values-zh-rHK/strings.xml @@ -30,7 +30,7 @@ "第 %1$d 張桌布,共 %2$d 張" "已選取%1$s" "刪除" - "選擇圖片" + "我的相片" "桌布" "裁剪桌布" diff --git a/WallpaperPicker/res/values-zh-rTW/strings.xml b/WallpaperPicker/res/values-zh-rTW/strings.xml index 418497608..c12350af0 100644 --- a/WallpaperPicker/res/values-zh-rTW/strings.xml +++ b/WallpaperPicker/res/values-zh-rTW/strings.xml @@ -30,7 +30,7 @@ "第 %1$d 張桌布,共 %2$d 張" "已選取%1$s" "刪除" - "選擇圖片" + "我的相片" "桌布" "裁剪桌布" diff --git a/WallpaperPicker/res/values-zu/strings.xml b/WallpaperPicker/res/values-zu/strings.xml index c7d3f33d1..537b2f3ca 100644 --- a/WallpaperPicker/res/values-zu/strings.xml +++ b/WallpaperPicker/res/values-zu/strings.xml @@ -30,7 +30,7 @@ "Isithombe sangemuva esingu-%1$d kwezingu-%2$d" "I-%1$s ekhethiwe" "Susa" - "Khetha isithombe" + "Izithombe zami" "Izithombe zangemuva" "Nqampuna isithombe sangemuva" diff --git a/WallpaperPicker/res/values/config.xml b/WallpaperPicker/res/values/config.xml index 71580b5b0..2f5174ce6 100644 --- a/WallpaperPicker/res/values/config.xml +++ b/WallpaperPicker/res/values/config.xml @@ -14,7 +14,6 @@ limitations under the License. --> - false false diff --git a/WallpaperPicker/res/values/strings.xml b/WallpaperPicker/res/values/strings.xml index 1ee3513f9..72b1e15df 100644 --- a/WallpaperPicker/res/values/strings.xml +++ b/WallpaperPicker/res/values/strings.xml @@ -45,7 +45,7 @@ Delete - Pick image + My photos Wallpapers diff --git a/WallpaperPicker/res/values/styles.xml b/WallpaperPicker/res/values/styles.xml index f4008f159..74aeab903 100644 --- a/WallpaperPicker/res/values/styles.xml +++ b/WallpaperPicker/res/values/styles.xml @@ -17,7 +17,7 @@ */ --> - + diff --git a/WallpaperPicker/src/android/util/Pools.java b/WallpaperPicker/src/android/util/Pools.java deleted file mode 100644 index 40bab1eae..000000000 --- a/WallpaperPicker/src/android/util/Pools.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (C) 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. - */ - -package android.util; - -/** - * Helper class for crating pools of objects. An example use looks like this: - *
- * public class MyPooledClass {
- *
- *     private static final SynchronizedPool sPool =
- *             new SynchronizedPool(10);
- *
- *     public static MyPooledClass obtain() {
- *         MyPooledClass instance = sPool.acquire();
- *         return (instance != null) ? instance : new MyPooledClass();
- *     }
- *
- *     public void recycle() {
- *          // Clear state if needed.
- *          sPool.release(this);
- *     }
- *
- *     . . .
- * }
- * 
- * - * @hide - */ -public final class Pools { - - /** - * Interface for managing a pool of objects. - * - * @param The pooled type. - */ - public static interface Pool { - - /** - * @return An instance from the pool if such, null otherwise. - */ - public T acquire(); - - /** - * Release an instance to the pool. - * - * @param instance The instance to release. - * @return Whether the instance was put in the pool. - * - * @throws IllegalStateException If the instance is already in the pool. - */ - public boolean release(T instance); - } - - private Pools() { - /* do nothing - hiding constructor */ - } - - /** - * Simple (non-synchronized) pool of objects. - * - * @param The pooled type. - */ - public static class SimplePool implements Pool { - private final Object[] mPool; - - private int mPoolSize; - - /** - * Creates a new instance. - * - * @param maxPoolSize The max pool size. - * - * @throws IllegalArgumentException If the max pool size is less than zero. - */ - public SimplePool(int maxPoolSize) { - if (maxPoolSize <= 0) { - throw new IllegalArgumentException("The max pool size must be > 0"); - } - mPool = new Object[maxPoolSize]; - } - - @Override - @SuppressWarnings("unchecked") - public T acquire() { - if (mPoolSize > 0) { - final int lastPooledIndex = mPoolSize - 1; - T instance = (T) mPool[lastPooledIndex]; - mPool[lastPooledIndex] = null; - mPoolSize--; - return instance; - } - return null; - } - - @Override - public boolean release(T instance) { - if (isInPool(instance)) { - throw new IllegalStateException("Already in the pool!"); - } - if (mPoolSize < mPool.length) { - mPool[mPoolSize] = instance; - mPoolSize++; - return true; - } - return false; - } - - private boolean isInPool(T instance) { - for (int i = 0; i < mPoolSize; i++) { - if (mPool[i] == instance) { - return true; - } - } - return false; - } - } - - /** - * Synchronized) pool of objects. - * - * @param The pooled type. - */ - public static class SynchronizedPool extends SimplePool { - private final Object mLock = new Object(); - - /** - * Creates a new instance. - * - * @param maxPoolSize The max pool size. - * - * @throws IllegalArgumentException If the max pool size is less than zero. - */ - public SynchronizedPool(int maxPoolSize) { - super(maxPoolSize); - } - - @Override - public T acquire() { - synchronized (mLock) { - return super.acquire(); - } - } - - @Override - public boolean release(T element) { - synchronized (mLock) { - return super.release(element); - } - } - } -} \ No newline at end of file diff --git a/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java b/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java new file mode 100644 index 000000000..45118bf45 --- /dev/null +++ b/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java @@ -0,0 +1,405 @@ +/** + * Copyright (C) 2015 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.gallery3d.common; + +import android.app.WallpaperManager; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Bitmap.CompressFormat; +import android.graphics.BitmapFactory; +import android.graphics.BitmapRegionDecoder; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Point; +import android.graphics.Rect; +import android.graphics.RectF; +import android.net.Uri; +import android.os.AsyncTask; +import android.util.Log; + +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +public class BitmapCropTask extends AsyncTask { + + public interface OnBitmapCroppedHandler { + public void onBitmapCropped(byte[] imageBytes); + } + + private static final int DEFAULT_COMPRESS_QUALITY = 90; + private static final String LOGTAG = "BitmapCropTask"; + + Uri mInUri = null; + Context mContext; + String mInFilePath; + byte[] mInImageBytes; + int mInResId = 0; + RectF mCropBounds = null; + int mOutWidth, mOutHeight; + int mRotation; + boolean mSetWallpaper; + boolean mSaveCroppedBitmap; + Bitmap mCroppedBitmap; + Runnable mOnEndRunnable; + Resources mResources; + BitmapCropTask.OnBitmapCroppedHandler mOnBitmapCroppedHandler; + boolean mNoCrop; + + public BitmapCropTask(Context c, String filePath, + RectF cropBounds, int rotation, int outWidth, int outHeight, + boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mContext = c; + mInFilePath = filePath; + init(cropBounds, rotation, + outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); + } + + public BitmapCropTask(byte[] imageBytes, + RectF cropBounds, int rotation, int outWidth, int outHeight, + boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mInImageBytes = imageBytes; + init(cropBounds, rotation, + outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); + } + + public BitmapCropTask(Context c, Uri inUri, + RectF cropBounds, int rotation, int outWidth, int outHeight, + boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mContext = c; + mInUri = inUri; + init(cropBounds, rotation, + outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); + } + + public BitmapCropTask(Context c, Resources res, int inResId, + RectF cropBounds, int rotation, int outWidth, int outHeight, + boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mContext = c; + mInResId = inResId; + mResources = res; + init(cropBounds, rotation, + outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); + } + + private void init(RectF cropBounds, int rotation, int outWidth, int outHeight, + boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mCropBounds = cropBounds; + mRotation = rotation; + mOutWidth = outWidth; + mOutHeight = outHeight; + mSetWallpaper = setWallpaper; + mSaveCroppedBitmap = saveCroppedBitmap; + mOnEndRunnable = onEndRunnable; + } + + public void setOnBitmapCropped(BitmapCropTask.OnBitmapCroppedHandler handler) { + mOnBitmapCroppedHandler = handler; + } + + public void setNoCrop(boolean value) { + mNoCrop = value; + } + + public void setOnEndRunnable(Runnable onEndRunnable) { + mOnEndRunnable = onEndRunnable; + } + + // Helper to setup input stream + private InputStream regenerateInputStream() { + if (mInUri == null && mInResId == 0 && mInFilePath == null && mInImageBytes == null) { + Log.w(LOGTAG, "cannot read original file, no input URI, resource ID, or " + + "image byte array given"); + } else { + try { + if (mInUri != null) { + return new BufferedInputStream( + mContext.getContentResolver().openInputStream(mInUri)); + } else if (mInFilePath != null) { + return mContext.openFileInput(mInFilePath); + } else if (mInImageBytes != null) { + return new BufferedInputStream(new ByteArrayInputStream(mInImageBytes)); + } else { + return new BufferedInputStream(mResources.openRawResource(mInResId)); + } + } catch (FileNotFoundException e) { + Log.w(LOGTAG, "cannot read file: " + mInUri.toString(), e); + } + } + return null; + } + + public Point getImageBounds() { + InputStream is = regenerateInputStream(); + if (is != null) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeStream(is, null, options); + Utils.closeSilently(is); + if (options.outWidth != 0 && options.outHeight != 0) { + return new Point(options.outWidth, options.outHeight); + } + } + return null; + } + + public void setCropBounds(RectF cropBounds) { + mCropBounds = cropBounds; + } + + public Bitmap getCroppedBitmap() { + return mCroppedBitmap; + } + public boolean cropBitmap() { + boolean failure = false; + + + WallpaperManager wallpaperManager = null; + if (mSetWallpaper) { + wallpaperManager = WallpaperManager.getInstance(mContext.getApplicationContext()); + } + + + if (mSetWallpaper && mNoCrop) { + try { + InputStream is = regenerateInputStream(); + if (is != null) { + wallpaperManager.setStream(is); + Utils.closeSilently(is); + } + } catch (IOException e) { + Log.w(LOGTAG, "cannot write stream to wallpaper", e); + failure = true; + } + return !failure; + } else { + // Find crop bounds (scaled to original image size) + Rect roundedTrueCrop = new Rect(); + Matrix rotateMatrix = new Matrix(); + Matrix inverseRotateMatrix = new Matrix(); + + Point bounds = getImageBounds(); + if (mRotation > 0) { + rotateMatrix.setRotate(mRotation); + inverseRotateMatrix.setRotate(-mRotation); + + mCropBounds.roundOut(roundedTrueCrop); + mCropBounds = new RectF(roundedTrueCrop); + + if (bounds == null) { + Log.w(LOGTAG, "cannot get bounds for image"); + failure = true; + return false; + } + + float[] rotatedBounds = new float[] { bounds.x, bounds.y }; + rotateMatrix.mapPoints(rotatedBounds); + rotatedBounds[0] = Math.abs(rotatedBounds[0]); + rotatedBounds[1] = Math.abs(rotatedBounds[1]); + + mCropBounds.offset(-rotatedBounds[0]/2, -rotatedBounds[1]/2); + inverseRotateMatrix.mapRect(mCropBounds); + mCropBounds.offset(bounds.x/2, bounds.y/2); + + } + + mCropBounds.roundOut(roundedTrueCrop); + + if (roundedTrueCrop.width() <= 0 || roundedTrueCrop.height() <= 0) { + Log.w(LOGTAG, "crop has bad values for full size image"); + failure = true; + return false; + } + + // See how much we're reducing the size of the image + int scaleDownSampleSize = Math.max(1, Math.min(roundedTrueCrop.width() / mOutWidth, + roundedTrueCrop.height() / mOutHeight)); + // Attempt to open a region decoder + BitmapRegionDecoder decoder = null; + InputStream is = null; + try { + is = regenerateInputStream(); + if (is == null) { + Log.w(LOGTAG, "cannot get input stream for uri=" + mInUri.toString()); + failure = true; + return false; + } + decoder = BitmapRegionDecoder.newInstance(is, false); + Utils.closeSilently(is); + } catch (IOException e) { + Log.w(LOGTAG, "cannot open region decoder for file: " + mInUri.toString(), e); + } finally { + Utils.closeSilently(is); + is = null; + } + + Bitmap crop = null; + if (decoder != null) { + // Do region decoding to get crop bitmap + BitmapFactory.Options options = new BitmapFactory.Options(); + if (scaleDownSampleSize > 1) { + options.inSampleSize = scaleDownSampleSize; + } + crop = decoder.decodeRegion(roundedTrueCrop, options); + decoder.recycle(); + } + + if (crop == null) { + // BitmapRegionDecoder has failed, try to crop in-memory + is = regenerateInputStream(); + Bitmap fullSize = null; + if (is != null) { + BitmapFactory.Options options = new BitmapFactory.Options(); + if (scaleDownSampleSize > 1) { + options.inSampleSize = scaleDownSampleSize; + } + fullSize = BitmapFactory.decodeStream(is, null, options); + Utils.closeSilently(is); + } + if (fullSize != null) { + // Find out the true sample size that was used by the decoder + scaleDownSampleSize = bounds.x / fullSize.getWidth(); + mCropBounds.left /= scaleDownSampleSize; + mCropBounds.top /= scaleDownSampleSize; + mCropBounds.bottom /= scaleDownSampleSize; + mCropBounds.right /= scaleDownSampleSize; + mCropBounds.roundOut(roundedTrueCrop); + + // Adjust values to account for issues related to rounding + if (roundedTrueCrop.width() > fullSize.getWidth()) { + // Adjust the width + roundedTrueCrop.right = roundedTrueCrop.left + fullSize.getWidth(); + } + if (roundedTrueCrop.right > fullSize.getWidth()) { + // Adjust the left value + int adjustment = roundedTrueCrop.left - + Math.max(0, roundedTrueCrop.right - roundedTrueCrop.width()); + roundedTrueCrop.left -= adjustment; + roundedTrueCrop.right -= adjustment; + } + if (roundedTrueCrop.height() > fullSize.getHeight()) { + // Adjust the height + roundedTrueCrop.bottom = roundedTrueCrop.top + fullSize.getHeight(); + } + if (roundedTrueCrop.bottom > fullSize.getHeight()) { + // Adjust the top value + int adjustment = roundedTrueCrop.top - + Math.max(0, roundedTrueCrop.bottom - roundedTrueCrop.height()); + roundedTrueCrop.top -= adjustment; + roundedTrueCrop.bottom -= adjustment; + } + + crop = Bitmap.createBitmap(fullSize, roundedTrueCrop.left, + roundedTrueCrop.top, roundedTrueCrop.width(), + roundedTrueCrop.height()); + } + } + + if (crop == null) { + Log.w(LOGTAG, "cannot decode file: " + mInUri.toString()); + failure = true; + return false; + } + if (mOutWidth > 0 && mOutHeight > 0 || mRotation > 0) { + float[] dimsAfter = new float[] { crop.getWidth(), crop.getHeight() }; + rotateMatrix.mapPoints(dimsAfter); + dimsAfter[0] = Math.abs(dimsAfter[0]); + dimsAfter[1] = Math.abs(dimsAfter[1]); + + if (!(mOutWidth > 0 && mOutHeight > 0)) { + mOutWidth = Math.round(dimsAfter[0]); + mOutHeight = Math.round(dimsAfter[1]); + } + + RectF cropRect = new RectF(0, 0, dimsAfter[0], dimsAfter[1]); + RectF returnRect = new RectF(0, 0, mOutWidth, mOutHeight); + + Matrix m = new Matrix(); + if (mRotation == 0) { + m.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL); + } else { + Matrix m1 = new Matrix(); + m1.setTranslate(-crop.getWidth() / 2f, -crop.getHeight() / 2f); + Matrix m2 = new Matrix(); + m2.setRotate(mRotation); + Matrix m3 = new Matrix(); + m3.setTranslate(dimsAfter[0] / 2f, dimsAfter[1] / 2f); + Matrix m4 = new Matrix(); + m4.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL); + + Matrix c1 = new Matrix(); + c1.setConcat(m2, m1); + Matrix c2 = new Matrix(); + c2.setConcat(m4, m3); + m.setConcat(c2, c1); + } + + Bitmap tmp = Bitmap.createBitmap((int) returnRect.width(), + (int) returnRect.height(), Bitmap.Config.ARGB_8888); + if (tmp != null) { + Canvas c = new Canvas(tmp); + Paint p = new Paint(); + p.setFilterBitmap(true); + c.drawBitmap(crop, m, p); + crop = tmp; + } + } + + if (mSaveCroppedBitmap) { + mCroppedBitmap = crop; + } + + // Compress to byte array + ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048); + if (crop.compress(CompressFormat.JPEG, DEFAULT_COMPRESS_QUALITY, tmpOut)) { + // If we need to set to the wallpaper, set it + if (mSetWallpaper && wallpaperManager != null) { + try { + byte[] outByteArray = tmpOut.toByteArray(); + wallpaperManager.setStream(new ByteArrayInputStream(outByteArray)); + if (mOnBitmapCroppedHandler != null) { + mOnBitmapCroppedHandler.onBitmapCropped(outByteArray); + } + } catch (IOException e) { + Log.w(LOGTAG, "cannot write stream to wallpaper", e); + failure = true; + } + } + } else { + Log.w(LOGTAG, "cannot compress bitmap"); + failure = true; + } + } + return !failure; // True if any of the operations failed + } + + @Override + protected Boolean doInBackground(Void... params) { + return cropBitmap(); + } + + @Override + protected void onPostExecute(Boolean result) { + if (mOnEndRunnable != null) { + mOnEndRunnable.run(); + } + } +} \ No newline at end of file diff --git a/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java b/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java index a671ed2b9..9ac5c1bf7 100644 --- a/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java +++ b/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java @@ -16,87 +16,24 @@ package com.android.gallery3d.common; -import android.graphics.Bitmap; -import android.graphics.Bitmap.CompressFormat; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.os.Build; -import android.util.FloatMath; +import android.content.Context; +import android.content.res.Resources; +import android.net.Uri; import android.util.Log; -import java.io.ByteArrayOutputStream; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; +import com.android.gallery3d.exif.ExifInterface; -public class BitmapUtils { - private static final String TAG = "BitmapUtils"; - private static final int DEFAULT_JPEG_QUALITY = 90; - public static final int UNCONSTRAINED = -1; - - private BitmapUtils(){} - - /* - * Compute the sample size as a function of minSideLength - * and maxNumOfPixels. - * minSideLength is used to specify that minimal width or height of a - * bitmap. - * maxNumOfPixels is used to specify the maximal size in pixels that is - * tolerable in terms of memory usage. - * - * The function returns a sample size based on the constraints. - * Both size and minSideLength can be passed in as UNCONSTRAINED, - * which indicates no care of the corresponding constraint. - * The functions prefers returning a sample size that - * generates a smaller bitmap, unless minSideLength = UNCONSTRAINED. - * - * Also, the function rounds up the sample size to a power of 2 or multiple - * of 8 because BitmapFactory only honors sample size this way. - * For example, BitmapFactory downsamples an image by 2 even though the - * request is 3. So we round up the sample size to avoid OOM. - */ - public static int computeSampleSize(int width, int height, - int minSideLength, int maxNumOfPixels) { - int initialSize = computeInitialSampleSize( - width, height, minSideLength, maxNumOfPixels); - - return initialSize <= 8 - ? Utils.nextPowerOf2(initialSize) - : (initialSize + 7) / 8 * 8; - } - - private static int computeInitialSampleSize(int w, int h, - int minSideLength, int maxNumOfPixels) { - if (maxNumOfPixels == UNCONSTRAINED - && minSideLength == UNCONSTRAINED) return 1; - - int lowerBound = (maxNumOfPixels == UNCONSTRAINED) ? 1 : - (int) FloatMath.ceil(FloatMath.sqrt((float) (w * h) / maxNumOfPixels)); - - if (minSideLength == UNCONSTRAINED) { - return lowerBound; - } else { - int sampleSize = Math.min(w / minSideLength, h / minSideLength); - return Math.max(sampleSize, lowerBound); - } - } +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; - // This computes a sample size which makes the longer side at least - // minSideLength long. If that's not possible, return 1. - public static int computeSampleSizeLarger(int w, int h, - int minSideLength) { - int initialSize = Math.max(w / minSideLength, h / minSideLength); - if (initialSize <= 1) return 1; +public class BitmapUtils { - return initialSize <= 8 - ? Utils.prevPowerOf2(initialSize) - : initialSize / 8 * 8; - } + private static final String TAG = "BitmapUtils"; // Find the min x that 1 / x >= scale public static int computeSampleSizeLarger(float scale) { - int initialSize = (int) FloatMath.floor(1f / scale); + int initialSize = (int) Math.floor(1f / scale); if (initialSize <= 1) return 1; return initialSize <= 8 @@ -104,157 +41,41 @@ public class BitmapUtils { : initialSize / 8 * 8; } - // Find the max x that 1 / x <= scale. - public static int computeSampleSize(float scale) { - Utils.assertTrue(scale > 0); - int initialSize = Math.max(1, (int) FloatMath.ceil(1 / scale)); - return initialSize <= 8 - ? Utils.nextPowerOf2(initialSize) - : (initialSize + 7) / 8 * 8; - } - - public static Bitmap resizeBitmapByScale( - Bitmap bitmap, float scale, boolean recycle) { - int width = Math.round(bitmap.getWidth() * scale); - int height = Math.round(bitmap.getHeight() * scale); - if (width == bitmap.getWidth() - && height == bitmap.getHeight()) return bitmap; - Bitmap target = Bitmap.createBitmap(width, height, getConfig(bitmap)); - Canvas canvas = new Canvas(target); - canvas.scale(scale, scale); - Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG); - canvas.drawBitmap(bitmap, 0, 0, paint); - if (recycle) bitmap.recycle(); - return target; + public static int getRotationFromExif(Context context, Uri uri) { + return BitmapUtils.getRotationFromExifHelper(null, 0, context, uri); } - private static Bitmap.Config getConfig(Bitmap bitmap) { - Bitmap.Config config = bitmap.getConfig(); - if (config == null) { - config = Bitmap.Config.ARGB_8888; - } - return config; + public static int getRotationFromExif(Resources res, int resId) { + return BitmapUtils.getRotationFromExifHelper(res, resId, null, null); } - public static Bitmap resizeDownBySideLength( - Bitmap bitmap, int maxLength, boolean recycle) { - int srcWidth = bitmap.getWidth(); - int srcHeight = bitmap.getHeight(); - float scale = Math.min( - (float) maxLength / srcWidth, (float) maxLength / srcHeight); - if (scale >= 1.0f) return bitmap; - return resizeBitmapByScale(bitmap, scale, recycle); - } - - public static Bitmap resizeAndCropCenter(Bitmap bitmap, int size, boolean recycle) { - int w = bitmap.getWidth(); - int h = bitmap.getHeight(); - if (w == size && h == size) return bitmap; - - // scale the image so that the shorter side equals to the target; - // the longer side will be center-cropped. - float scale = (float) size / Math.min(w, h); - - Bitmap target = Bitmap.createBitmap(size, size, getConfig(bitmap)); - int width = Math.round(scale * bitmap.getWidth()); - int height = Math.round(scale * bitmap.getHeight()); - Canvas canvas = new Canvas(target); - canvas.translate((size - width) / 2f, (size - height) / 2f); - canvas.scale(scale, scale); - Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG); - canvas.drawBitmap(bitmap, 0, 0, paint); - if (recycle) bitmap.recycle(); - return target; - } - - public static void recycleSilently(Bitmap bitmap) { - if (bitmap == null) return; - try { - bitmap.recycle(); - } catch (Throwable t) { - Log.w(TAG, "unable recycle bitmap", t); - } - } - - public static Bitmap rotateBitmap(Bitmap source, int rotation, boolean recycle) { - if (rotation == 0) return source; - int w = source.getWidth(); - int h = source.getHeight(); - Matrix m = new Matrix(); - m.postRotate(rotation); - Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, w, h, m, true); - if (recycle) source.recycle(); - return bitmap; - } - - public static Bitmap createVideoThumbnail(String filePath) { - // MediaMetadataRetriever is available on API Level 8 - // but is hidden until API Level 10 - Class clazz = null; - Object instance = null; + private static int getRotationFromExifHelper(Resources res, int resId, Context context, Uri uri) { + ExifInterface ei = new ExifInterface(); + InputStream is = null; + BufferedInputStream bis = null; try { - clazz = Class.forName("android.media.MediaMetadataRetriever"); - instance = clazz.newInstance(); - - Method method = clazz.getMethod("setDataSource", String.class); - method.invoke(instance, filePath); - - // The method name changes between API Level 9 and 10. - if (Build.VERSION.SDK_INT <= 9) { - return (Bitmap) clazz.getMethod("captureFrame").invoke(instance); + if (uri != null) { + is = context.getContentResolver().openInputStream(uri); + bis = new BufferedInputStream(is); + ei.readExif(bis); } else { - byte[] data = (byte[]) clazz.getMethod("getEmbeddedPicture").invoke(instance); - if (data != null) { - Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); - if (bitmap != null) return bitmap; - } - return (Bitmap) clazz.getMethod("getFrameAtTime").invoke(instance); + is = res.openRawResource(resId); + bis = new BufferedInputStream(is); + ei.readExif(bis); } - } catch (IllegalArgumentException ex) { - // Assume this is a corrupt video file - } catch (RuntimeException ex) { - // Assume this is a corrupt video file. - } catch (InstantiationException e) { - Log.e(TAG, "createVideoThumbnail", e); - } catch (InvocationTargetException e) { - Log.e(TAG, "createVideoThumbnail", e); - } catch (ClassNotFoundException e) { - Log.e(TAG, "createVideoThumbnail", e); - } catch (NoSuchMethodException e) { - Log.e(TAG, "createVideoThumbnail", e); - } catch (IllegalAccessException e) { - Log.e(TAG, "createVideoThumbnail", e); - } finally { - try { - if (instance != null) { - clazz.getMethod("release").invoke(instance); - } - } catch (Exception ignored) { + Integer ori = ei.getTagIntValue(ExifInterface.TAG_ORIENTATION); + if (ori != null) { + return ExifInterface.getRotationForOrientationValue(ori.shortValue()); } + } catch (IOException e) { + Log.w(TAG, "Getting exif data failed", e); + } catch (NullPointerException e) { + // Sometimes the ExifInterface has an internal NPE if Exif data isn't valid + Log.w(TAG, "Getting exif data failed", e); + } finally { + Utils.closeSilently(bis); + Utils.closeSilently(is); } - return null; - } - - public static byte[] compressToBytes(Bitmap bitmap) { - return compressToBytes(bitmap, DEFAULT_JPEG_QUALITY); - } - - public static byte[] compressToBytes(Bitmap bitmap, int quality) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(65536); - bitmap.compress(CompressFormat.JPEG, quality, baos); - return baos.toByteArray(); - } - - public static boolean isSupportedByRegionDecoder(String mimeType) { - if (mimeType == null) return false; - mimeType = mimeType.toLowerCase(); - return mimeType.startsWith("image/") && - (!mimeType.equals("image/gif") && !mimeType.endsWith("bmp")); - } - - public static boolean isRotationSupported(String mimeType) { - if (mimeType == null) return false; - mimeType = mimeType.toLowerCase(); - return mimeType.equals("image/jpeg"); + return 0; } } diff --git a/WallpaperPicker/src/com/android/gallery3d/common/Utils.java b/WallpaperPicker/src/com/android/gallery3d/common/Utils.java index 614a081c8..8466c22cb 100644 --- a/WallpaperPicker/src/com/android/gallery3d/common/Utils.java +++ b/WallpaperPicker/src/com/android/gallery3d/common/Utils.java @@ -16,32 +16,16 @@ package com.android.gallery3d.common; -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager.NameNotFoundException; import android.database.Cursor; -import android.os.Build; +import android.graphics.RectF; import android.os.ParcelFileDescriptor; -import android.text.TextUtils; import android.util.Log; import java.io.Closeable; import java.io.IOException; -import java.io.InterruptedIOException; public class Utils { private static final String TAG = "Utils"; - private static final String DEBUG_TAG = "GalleryDebug"; - - private static final long POLY64REV = 0x95AC9329AC4BC9B5L; - private static final long INITIALCRC = 0xFFFFFFFFFFFFFFFFL; - - private static long[] sCrcTable = new long[256]; - - private static final boolean IS_DEBUG_BUILD = - Build.TYPE.equals("eng") || Build.TYPE.equals("userdebug"); - - private static final String MASK_STRING = "********************************"; // Throws AssertionError if the input is false. public static void assertTrue(boolean cond) { @@ -50,28 +34,6 @@ public class Utils { } } - // Throws AssertionError with the message. We had a method having the form - // assertTrue(boolean cond, String message, Object ... args); - // However a call to that method will cause memory allocation even if the - // condition is false (due to autoboxing generated by "Object ... args"), - // so we don't use that anymore. - public static void fail(String message, Object ... args) { - throw new AssertionError( - args.length == 0 ? message : String.format(message, args)); - } - - // Throws NullPointerException if the input is null. - public static T checkNotNull(T object) { - if (object == null) throw new NullPointerException(); - return object; - } - - // Returns true if two input Object are both null or equal - // to each other. - public static boolean equals(Object a, Object b) { - return (a == b) || (a == null ? false : a.equals(b)); - } - // Returns the next power of two. // Returns the input if it is already power of 2. // Throws IllegalArgumentException if the input is <= 0 or @@ -102,87 +64,6 @@ public class Utils { return x; } - // Returns the input value x clamped to the range [min, max]. - public static float clamp(float x, float min, float max) { - if (x > max) return max; - if (x < min) return min; - return x; - } - - // Returns the input value x clamped to the range [min, max]. - public static long clamp(long x, long min, long max) { - if (x > max) return max; - if (x < min) return min; - return x; - } - - public static boolean isOpaque(int color) { - return color >>> 24 == 0xFF; - } - - public static void swap(int[] array, int i, int j) { - int temp = array[i]; - array[i] = array[j]; - array[j] = temp; - } - - /** - * A function thats returns a 64-bit crc for string - * - * @param in input string - * @return a 64-bit crc value - */ - public static final long crc64Long(String in) { - if (in == null || in.length() == 0) { - return 0; - } - return crc64Long(getBytes(in)); - } - - static { - // http://bioinf.cs.ucl.ac.uk/downloads/crc64/crc64.c - long part; - for (int i = 0; i < 256; i++) { - part = i; - for (int j = 0; j < 8; j++) { - long x = ((int) part & 1) != 0 ? POLY64REV : 0; - part = (part >> 1) ^ x; - } - sCrcTable[i] = part; - } - } - - public static final long crc64Long(byte[] buffer) { - long crc = INITIALCRC; - for (int k = 0, n = buffer.length; k < n; ++k) { - crc = sCrcTable[(((int) crc) ^ buffer[k]) & 0xff] ^ (crc >> 8); - } - return crc; - } - - public static byte[] getBytes(String in) { - byte[] result = new byte[in.length() * 2]; - int output = 0; - for (char ch : in.toCharArray()) { - result[output++] = (byte) (ch & 0xFF); - result[output++] = (byte) (ch >> 8); - } - return result; - } - - public static void closeSilently(Closeable c) { - if (c == null) return; - try { - c.close(); - } catch (IOException t) { - Log.w(TAG, "close fail ", t); - } - } - - public static int compare(long a, long b) { - return a < b ? -1 : a == b ? 0 : 1; - } - public static int ceilLog2(float value) { int i; for (i = 0; i < 31; i++) { @@ -199,6 +80,15 @@ public class Utils { return i - 1; } + public static void closeSilently(Closeable c) { + if (c == null) return; + try { + c.close(); + } catch (IOException t) { + Log.w(TAG, "close fail ", t); + } + } + public static void closeSilently(ParcelFileDescriptor fd) { try { if (fd != null) fd.close(); @@ -215,126 +105,25 @@ public class Utils { } } - public static float interpolateAngle( - float source, float target, float progress) { - // interpolate the angle from source to target - // We make the difference in the range of [-179, 180], this is the - // shortest path to change source to target. - float diff = target - source; - if (diff < 0) diff += 360f; - if (diff > 180) diff -= 360f; - - float result = source + diff * progress; - return result < 0 ? result + 360f : result; - } - - public static float interpolateScale( - float source, float target, float progress) { - return source + progress * (target - source); - } - - public static String ensureNotNull(String value) { - return value == null ? "" : value; - } - - public static float parseFloatSafely(String content, float defaultValue) { - if (content == null) return defaultValue; - try { - return Float.parseFloat(content); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - public static int parseIntSafely(String content, int defaultValue) { - if (content == null) return defaultValue; - try { - return Integer.parseInt(content); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - public static boolean isNullOrEmpty(String exifMake) { - return TextUtils.isEmpty(exifMake); - } - - public static void waitWithoutInterrupt(Object object) { - try { - object.wait(); - } catch (InterruptedException e) { - Log.w(TAG, "unexpected interrupt: " + object); - } - } - - public static boolean handleInterrruptedException(Throwable e) { - // A helper to deal with the interrupt exception - // If an interrupt detected, we will setup the bit again. - if (e instanceof InterruptedIOException - || e instanceof InterruptedException) { - Thread.currentThread().interrupt(); - return true; - } - return false; - } - - /** - * @return String with special XML characters escaped. - */ - public static String escapeXml(String s) { - StringBuilder sb = new StringBuilder(); - for (int i = 0, len = s.length(); i < len; ++i) { - char c = s.charAt(i); - switch (c) { - case '<': sb.append("<"); break; - case '>': sb.append(">"); break; - case '\"': sb.append("""); break; - case '\'': sb.append("'"); break; - case '&': sb.append("&"); break; - default: sb.append(c); - } - } - return sb.toString(); - } - - public static String getUserAgent(Context context) { - PackageInfo packageInfo; - try { - packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); - } catch (NameNotFoundException e) { - throw new IllegalStateException("getPackageInfo failed"); - } - return String.format("%s/%s; %s/%s/%s/%s; %s/%s/%s", - packageInfo.packageName, - packageInfo.versionName, - Build.BRAND, - Build.DEVICE, - Build.MODEL, - Build.ID, - Build.VERSION.SDK_INT, - Build.VERSION.RELEASE, - Build.VERSION.INCREMENTAL); - } - - public static String[] copyOf(String[] source, int newSize) { - String[] result = new String[newSize]; - newSize = Math.min(source.length, newSize); - System.arraycopy(source, 0, result, 0, newSize); - return result; - } - - // Mask information for debugging only. It returns info.toString() directly - // for debugging build (i.e., 'eng' and 'userdebug') and returns a mask ("****") - // in release build to protect the information (e.g. for privacy issue). - public static String maskDebugInfo(Object info) { - if (info == null) return null; - String s = info.toString(); - int length = Math.min(s.length(), MASK_STRING.length()); - return IS_DEBUG_BUILD ? s : MASK_STRING.substring(0, length); - } - - // This method should be ONLY used for debugging. - public static void debug(String message, Object ... args) { - Log.v(DEBUG_TAG, String.format(message, args)); + public static RectF getMaxCropRect( + int inWidth, int inHeight, int outWidth, int outHeight, boolean leftAligned) { + RectF cropRect = new RectF(); + // Get a crop rect that will fit this + if (inWidth / (float) inHeight > outWidth / (float) outHeight) { + cropRect.top = 0; + cropRect.bottom = inHeight; + cropRect.left = (inWidth - (outWidth / (float) outHeight) * inHeight) / 2; + cropRect.right = inWidth - cropRect.left; + if (leftAligned) { + cropRect.right -= cropRect.left; + cropRect.left = 0; + } + } else { + cropRect.left = 0; + cropRect.right = inWidth; + cropRect.top = (inHeight - (outHeight / (float) outWidth) * inWidth) / 2; + cropRect.bottom = inHeight - cropRect.top; + } + return cropRect; } } diff --git a/WallpaperPicker/src/com/android/gallery3d/exif/ExifInterface.java b/WallpaperPicker/src/com/android/gallery3d/exif/ExifInterface.java index a1cf0fc85..9247e879f 100644 --- a/WallpaperPicker/src/com/android/gallery3d/exif/ExifInterface.java +++ b/WallpaperPicker/src/com/android/gallery3d/exif/ExifInterface.java @@ -1247,7 +1247,7 @@ public class ExifInterface { if (l == null || l.length <= 0) { return null; } - return new Long(l[0]); + return Long.valueOf(l[0]); } /** @@ -1266,7 +1266,7 @@ public class ExifInterface { if (l == null || l.length <= 0) { return null; } - return new Integer(l[0]); + return Integer.valueOf(l[0]); } /** @@ -1285,7 +1285,7 @@ public class ExifInterface { if (l == null || l.length <= 0) { return null; } - return new Byte(l[0]); + return Byte.valueOf(l[0]); } /** diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java index 2e77b903f..0f3efb727 100644 --- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java +++ b/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java @@ -27,7 +27,6 @@ import java.util.WeakHashMap; // If a BasicTexture is loaded into GL memory, it has a GL texture id. public abstract class BasicTexture implements Texture { - @SuppressWarnings("unused") private static final String TAG = "BasicTexture"; protected static final int UNSPECIFIED = -1; diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java index 100b0b3b9..f8b01cb42 100644 --- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java +++ b/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java @@ -18,7 +18,7 @@ package com.android.gallery3d.glrenderer; import android.graphics.Bitmap; -import junit.framework.Assert; +import com.android.gallery3d.common.Utils; // BitmapTexture is a texture whose content is specified by a fixed Bitmap. // @@ -34,7 +34,7 @@ public class BitmapTexture extends UploadedTexture { public BitmapTexture(Bitmap bitmap, boolean hasBorder) { super(hasBorder); - Assert.assertTrue(bitmap != null && !bitmap.isRecycled()); + Utils.assertTrue(bitmap != null && !bitmap.isRecycled()); mContentBitmap = bitmap; } diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java index 4ead1315e..933260b48 100644 --- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java +++ b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java @@ -23,8 +23,6 @@ import android.opengl.GLUtils; import android.opengl.Matrix; import android.util.Log; -import com.android.gallery3d.util.IntArray; - import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -698,6 +696,7 @@ public class GLES20Canvas implements GLCanvas { } private void prepareTexture(BasicTexture texture, int program, ShaderParameter[] params) { + deleteRecycledResources(); GLES20.glUseProgram(program); checkError(); enableBlending(!texture.isOpaque() || getAlpha() < OPAQUE_ALPHA); diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLPaint.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLPaint.java index 16b220690..b26e9ab29 100644 --- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLPaint.java +++ b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLPaint.java @@ -16,7 +16,7 @@ package com.android.gallery3d.glrenderer; -import junit.framework.Assert; +import com.android.gallery3d.common.Utils; public class GLPaint { private float mLineWidth = 1f; @@ -31,7 +31,7 @@ public class GLPaint { } public void setLineWidth(float width) { - Assert.assertTrue(width >= 0); + Utils.assertTrue(width >= 0); mLineWidth = width; } diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java new file mode 100644 index 000000000..f123624d6 --- /dev/null +++ b/WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2010 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.gallery3d.glrenderer; + +public class IntArray { + private static final int INIT_CAPACITY = 8; + + private int mData[] = new int[INIT_CAPACITY]; + private int mSize = 0; + + public void add(int value) { + if (mData.length == mSize) { + int temp[] = new int[mSize + mSize]; + System.arraycopy(mData, 0, temp, 0, mSize); + mData = temp; + } + mData[mSize++] = value; + } + + public int removeLast() { + mSize--; + return mData[mSize]; + } + + public int size() { + return mSize; + } + + // For testing only + public int[] toArray(int[] result) { + if (result == null || result.length < mSize) { + result = new int[mSize]; + } + System.arraycopy(mData, 0, result, 0, mSize); + return result; + } + + public int[] getInternalArray() { + return mData; + } + + public void clear() { + mSize = 0; + if (mData.length != INIT_CAPACITY) mData = new int[INIT_CAPACITY]; + } +} diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java index f41a979b7..8075bf868 100644 --- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java +++ b/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java @@ -20,7 +20,8 @@ import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.opengl.GLUtils; -import junit.framework.Assert; +import com.android.gallery3d.common.Utils; +import com.android.launcher3.util.Thunk; import java.util.HashMap; @@ -82,7 +83,7 @@ public abstract class UploadedTexture extends BasicTexture { return mIsUploading; } - private static class BorderKey implements Cloneable { + @Thunk static class BorderKey implements Cloneable { public boolean vertical; public Config config; public int length; @@ -144,7 +145,7 @@ public abstract class UploadedTexture extends BasicTexture { } private void freeBitmap() { - Assert.assertTrue(mBitmap != null); + Utils.assertTrue(mBitmap != null); onFreeBitmap(mBitmap); mBitmap = null; } @@ -219,7 +220,7 @@ public abstract class UploadedTexture extends BasicTexture { int texWidth = getTextureWidth(); int texHeight = getTextureHeight(); - Assert.assertTrue(bWidth <= texWidth && bHeight <= texHeight); + Utils.assertTrue(bWidth <= texWidth && bHeight <= texHeight); // Upload the bitmap to a new texture. mId = canvas.getGLId().generateTexture(); diff --git a/WallpaperPicker/src/com/android/gallery3d/util/IntArray.java b/WallpaperPicker/src/com/android/gallery3d/util/IntArray.java deleted file mode 100644 index 2c4dc2c83..000000000 --- a/WallpaperPicker/src/com/android/gallery3d/util/IntArray.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2010 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.gallery3d.util; - -public class IntArray { - private static final int INIT_CAPACITY = 8; - - private int mData[] = new int[INIT_CAPACITY]; - private int mSize = 0; - - public void add(int value) { - if (mData.length == mSize) { - int temp[] = new int[mSize + mSize]; - System.arraycopy(mData, 0, temp, 0, mSize); - mData = temp; - } - mData[mSize++] = value; - } - - public int removeLast() { - mSize--; - return mData[mSize]; - } - - public int size() { - return mSize; - } - - // For testing only - public int[] toArray(int[] result) { - if (result == null || result.length < mSize) { - result = new int[mSize]; - } - System.arraycopy(mData, 0, result, 0, mSize); - return result; - } - - public int[] getInternalArray() { - return mData; - } - - public void clear() { - mSize = 0; - if (mData.length != INIT_CAPACITY) mData = new int[INIT_CAPACITY]; - } -} diff --git a/WallpaperPicker/src/com/android/launcher3/CropView.java b/WallpaperPicker/src/com/android/launcher3/CropView.java index 578b8eafd..50f779add 100644 --- a/WallpaperPicker/src/com/android/launcher3/CropView.java +++ b/WallpaperPicker/src/com/android/launcher3/CropView.java @@ -21,7 +21,6 @@ import android.graphics.Matrix; import android.graphics.Point; import android.graphics.RectF; import android.util.AttributeSet; -import android.util.FloatMath; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.view.ScaleGestureDetector.OnScaleGestureListener; @@ -300,12 +299,12 @@ public class CropView extends TiledImageView implements OnScaleGestureListener { adjustment[0] = (edges.right - getWidth()) / scale; } if (edges.top > 0) { - adjustment[1] = FloatMath.ceil(edges.top / scale); + adjustment[1] = (float) Math.ceil(edges.top / scale); } else if (edges.bottom < getHeight()) { adjustment[1] = (edges.bottom - getHeight()) / scale; } for (int dim = 0; dim <= 1; dim++) { - if (coef[dim] > 0) adjustment[dim] = FloatMath.ceil(adjustment[dim]); + if (coef[dim] > 0) adjustment[dim] = (float) Math.ceil(adjustment[dim]); } mInverseRotateMatrix.mapPoints(adjustment); diff --git a/WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java new file mode 100644 index 000000000..091c05462 --- /dev/null +++ b/WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java @@ -0,0 +1,21 @@ +/* + * 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. + */ + +package com.android.launcher3; + +// TODO: Remove this class +public class LauncherWallpaperPickerActivity extends WallpaperPickerActivity { +} \ No newline at end of file diff --git a/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java b/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java index 88f4461bf..b53fce119 100644 --- a/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java +++ b/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java @@ -30,11 +30,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; +import com.android.launcher3.util.Thunk; + import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; @@ -50,7 +51,7 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter private final LayoutInflater mInflater; private final PackageManager mPackageManager; - private List mWallpapers; + @Thunk List mWallpapers; @SuppressWarnings("unchecked") public LiveWallpaperListAdapter(Context context) { @@ -90,8 +91,6 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter view = convertView; } - WallpaperPickerActivity.setWallpaperItemPaddingToZero((FrameLayout) view); - LiveWallpaperTile wallpaperInfo = mWallpapers.get(position); wallpaperInfo.setView(view); ImageView image = (ImageView) view.findViewById(R.id.wallpaper_image); @@ -111,8 +110,8 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter } public static class LiveWallpaperTile extends WallpaperPickerActivity.WallpaperTileInfo { - private Drawable mThumbnail; - private WallpaperInfo mInfo; + @Thunk Drawable mThumbnail; + @Thunk WallpaperInfo mInfo; public LiveWallpaperTile(Drawable thumbnail, WallpaperInfo info, Intent intent) { mThumbnail = thumbnail; mInfo = info; @@ -122,8 +121,8 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter Intent preview = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); preview.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, mInfo.getComponent()); - a.onLiveWallpaperPickerLaunch(mInfo); - a.startActivityForResultSafely(preview, WallpaperPickerActivity.PICK_LIVE_WALLPAPER); + a.startActivityForResultSafely(preview, + WallpaperPickerActivity.PICK_WALLPAPER_THIRD_PARTY_ACTIVITY); } } diff --git a/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java b/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java index 9f92bc105..64b0ac466 100644 --- a/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java +++ b/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java @@ -16,7 +16,6 @@ package com.android.launcher3; -import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; @@ -60,13 +59,13 @@ public class SavedWallpaperImages extends BaseAdapter implements ListAdapter { } } - public SavedWallpaperImages(Activity context) { + public SavedWallpaperImages(Context context) { // We used to store the saved images in the cache directory, but that meant they'd get // deleted sometimes-- move them to the data directory ImageDb.moveFromCacheDirectoryIfNecessary(context); mDb = new ImageDb(context); mContext = context; - mLayoutInflater = context.getLayoutInflater(); + mLayoutInflater = LayoutInflater.from(context); } public void loadThumbnailsAndImageIdList() { diff --git a/WallpaperPicker/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java b/WallpaperPicker/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java index 7a4d48ca9..f46da53ec 100644 --- a/WallpaperPicker/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java +++ b/WallpaperPicker/src/com/android/launcher3/ThirdPartyWallpaperPickerListAdapter.java @@ -28,16 +28,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.FrameLayout; import android.widget.ListAdapter; import android.widget.TextView; +import com.android.launcher3.util.Thunk; + import java.util.ArrayList; import java.util.List; public class ThirdPartyWallpaperPickerListAdapter extends BaseAdapter implements ListAdapter { - private static final String LOG_TAG = "LiveWallpaperListAdapter"; - private final LayoutInflater mInflater; private final PackageManager mPackageManager; private final int mIconSize; @@ -46,7 +45,7 @@ public class ThirdPartyWallpaperPickerListAdapter extends BaseAdapter implements new ArrayList(); public static class ThirdPartyWallpaperTile extends WallpaperPickerActivity.WallpaperTileInfo { - private ResolveInfo mResolveInfo; + @Thunk ResolveInfo mResolveInfo; public ThirdPartyWallpaperTile(ResolveInfo resolveInfo) { mResolveInfo = resolveInfo; } @@ -62,7 +61,7 @@ public class ThirdPartyWallpaperPickerListAdapter extends BaseAdapter implements } public ThirdPartyWallpaperPickerListAdapter(Context context) { - mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mInflater = LayoutInflater.from(context); mPackageManager = context.getPackageManager(); mIconSize = context.getResources().getDimensionPixelSize(R.dimen.wallpaperItemIconSize); final PackageManager pm = mPackageManager; @@ -126,8 +125,6 @@ public class ThirdPartyWallpaperPickerListAdapter extends BaseAdapter implements view = convertView; } - WallpaperPickerActivity.setWallpaperItemPaddingToZero((FrameLayout) view); - ResolveInfo info = mThirdPartyWallpaperPickers.get(position).mResolveInfo; TextView label = (TextView) view.findViewById(R.id.wallpaper_item_label); label.setText(info.loadLabel(mPackageManager)); diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java index fa8ec64c2..f2bb50944 100644 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java @@ -16,6 +16,7 @@ package com.android.launcher3; +import android.annotation.TargetApi; import android.app.ActionBar; import android.app.Activity; import android.app.WallpaperManager; @@ -25,42 +26,41 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; -import android.graphics.Bitmap.CompressFormat; -import android.graphics.BitmapFactory; -import android.graphics.BitmapRegionDecoder; -import android.graphics.Canvas; import android.graphics.Matrix; -import android.graphics.Paint; import android.graphics.Point; -import android.graphics.Rect; import android.graphics.RectF; import android.net.Uri; -import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Message; import android.util.Log; import android.view.Display; import android.view.View; -import android.view.WindowManager; import android.widget.Toast; +import com.android.gallery3d.common.BitmapCropTask; +import com.android.gallery3d.common.BitmapUtils; import com.android.gallery3d.common.Utils; -import com.android.gallery3d.exif.ExifInterface; +import com.android.launcher3.base.BaseActivity; +import com.android.launcher3.util.Thunk; +import com.android.launcher3.util.WallpaperUtils; import com.android.photos.BitmapRegionTileSource; import com.android.photos.BitmapRegionTileSource.BitmapSource; +import com.android.photos.BitmapRegionTileSource.BitmapSource.InBitmapProvider; +import com.android.photos.views.TiledImageRenderer.TileSource; -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; +import java.util.Collections; +import java.util.Set; +import java.util.WeakHashMap; -public class WallpaperCropActivity extends Activity { +public class WallpaperCropActivity extends BaseActivity implements Handler.Callback { private static final String LOGTAG = "Launcher3.CropActivity"; - protected static final String WALLPAPER_WIDTH_KEY = "wallpaper.width"; - protected static final String WALLPAPER_HEIGHT_KEY = "wallpaper.height"; - private static final int DEFAULT_COMPRESS_QUALITY = 90; + protected static final String WALLPAPER_WIDTH_KEY = WallpaperUtils.WALLPAPER_WIDTH_KEY; + protected static final String WALLPAPER_HEIGHT_KEY = WallpaperUtils.WALLPAPER_HEIGHT_KEY; + /** * The maximum bitmap size we allow to be returned through the intent. * Intents have a maximum of 1MB in total size. However, the Bitmap seems to @@ -69,17 +69,31 @@ public class WallpaperCropActivity extends Activity { * array instead of a Bitmap instance to avoid overhead. */ public static final int MAX_BMAP_IN_INTENT = 750000; - private static final float WALLPAPER_SCREENS_SPAN = 2f; + public static final float WALLPAPER_SCREENS_SPAN = WallpaperUtils.WALLPAPER_SCREENS_SPAN; - protected static Point sDefaultWallpaperSize; + private static final int MSG_LOAD_IMAGE = 1; protected CropView mCropView; + protected View mProgressView; protected Uri mUri; protected View mSetWallpaperButton; + private HandlerThread mLoaderThread; + private Handler mLoaderHandler; + @Thunk LoadRequest mCurrentLoadRequest; + private byte[] mTempStorageForDecoding = new byte[16 * 1024]; + // A weak-set of reusable bitmaps + @Thunk Set mReusableBitmaps = + Collections.newSetFromMap(new WeakHashMap()); + @Override - protected void onCreate(Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + mLoaderThread = new HandlerThread("wallpaper_loader"); + mLoaderThread.start(); + mLoaderHandler = new Handler(mLoaderThread.getLooper(), this); + init(); if (!enableRotation()) { setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT); @@ -90,6 +104,7 @@ public class WallpaperCropActivity extends Activity { setContentView(R.layout.wallpaper_cropper); mCropView = (CropView) findViewById(R.id.cropView); + mProgressView = findViewById(R.id.loading); Intent cropIntent = getIntent(); final Uri imageUri = cropIntent.getData(); @@ -116,13 +131,12 @@ public class WallpaperCropActivity extends Activity { // Load image in background final BitmapRegionTileSource.UriBitmapSource bitmapSource = - new BitmapRegionTileSource.UriBitmapSource(this, imageUri, 1024); + new BitmapRegionTileSource.UriBitmapSource(getContext(), imageUri); mSetWallpaperButton.setEnabled(false); Runnable onLoad = new Runnable() { public void run() { if (bitmapSource.getLoadingState() != BitmapSource.State.LOADED) { - Toast.makeText(WallpaperCropActivity.this, - getString(R.string.wallpaper_load_fail), + Toast.makeText(getContext(), R.string.wallpaper_load_fail, Toast.LENGTH_LONG).show(); finish(); } else { @@ -130,188 +144,163 @@ public class WallpaperCropActivity extends Activity { } } }; - setCropViewTileSource(bitmapSource, true, false, onLoad); + setCropViewTileSource(bitmapSource, true, false, null, onLoad); } @Override - protected void onDestroy() { + public void onDestroy() { if (mCropView != null) { mCropView.destroy(); } + if (mLoaderThread != null) { + mLoaderThread.quit(); + } super.onDestroy(); } - public void setCropViewTileSource( - final BitmapRegionTileSource.BitmapSource bitmapSource, final boolean touchEnabled, - final boolean moveToLeft, final Runnable postExecute) { - final Context context = WallpaperCropActivity.this; - final View progressView = findViewById(R.id.loading); - final AsyncTask loadBitmapTask = new AsyncTask() { - protected Void doInBackground(Void...args) { - if (!isCancelled()) { - try { - bitmapSource.loadInBackground(); - } catch (SecurityException securityException) { - if (isDestroyed()) { - // Temporarily granted permissions are revoked when the activity - // finishes, potentially resulting in a SecurityException here. - // Even though {@link #isDestroyed} might also return true in different - // situations where the configuration changes, we are fine with - // catching these cases here as well. - cancel(false); - } else { - // otherwise it had a different cause and we throw it further - throw securityException; + /** + * This is called on {@link #mLoaderThread} + */ + @Override + public boolean handleMessage(Message msg) { + if (msg.what == MSG_LOAD_IMAGE) { + final LoadRequest req = (LoadRequest) msg.obj; + try { + req.src.loadInBackground(new InBitmapProvider() { + + @Override + public Bitmap forPixelCount(int count) { + Bitmap bitmapToReuse = null; + // Find the smallest bitmap that satisfies the pixel count limit + synchronized (mReusableBitmaps) { + int currentBitmapSize = Integer.MAX_VALUE; + for (Bitmap b : mReusableBitmaps) { + int bitmapSize = b.getWidth() * b.getHeight(); + if ((bitmapSize >= count) && (bitmapSize < currentBitmapSize)) { + bitmapToReuse = b; + currentBitmapSize = bitmapSize; + } + } + + if (bitmapToReuse != null) { + mReusableBitmaps.remove(bitmapToReuse); + } } + return bitmapToReuse; } + }); + } catch (SecurityException securityException) { + if (isActivityDestroyed()) { + // Temporarily granted permissions are revoked when the activity + // finishes, potentially resulting in a SecurityException here. + // Even though {@link #isDestroyed} might also return true in different + // situations where the configuration changes, we are fine with + // catching these cases here as well. + return true; + } else { + // otherwise it had a different cause and we throw it further + throw securityException; } - return null; } - protected void onPostExecute(Void arg) { - if (!isCancelled()) { - progressView.setVisibility(View.INVISIBLE); - if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) { - mCropView.setTileSource( - new BitmapRegionTileSource(context, bitmapSource), null); - mCropView.setTouchEnabled(touchEnabled); - if (moveToLeft) { - mCropView.moveToLeft(); - } + + req.result = new BitmapRegionTileSource(getContext(), req.src, mTempStorageForDecoding); + runOnUiThread(new Runnable() { + + @Override + public void run() { + if (req == mCurrentLoadRequest) { + onLoadRequestComplete(req, + req.src.getLoadingState() == BitmapSource.State.LOADED); + } else { + addReusableBitmap(req.result); } } - if (postExecute != null) { - postExecute.run(); - } - } - }; - // We don't want to show the spinner every time we load an image, because that would be - // annoying; instead, only start showing the spinner if loading the image has taken - // longer than 1 sec (ie 1000 ms) - progressView.postDelayed(new Runnable() { - public void run() { - if (loadBitmapTask.getStatus() != AsyncTask.Status.FINISHED) { - progressView.setVisibility(View.VISIBLE); - } - } - }, 1000); - loadBitmapTask.execute(); - } - - public boolean enableRotation() { - return getResources().getBoolean(R.bool.allow_rotation); + }); + return true; + } + return false; } - public static String getSharedPreferencesKey() { - return LauncherFiles.WALLPAPER_CROP_PREFERENCES_KEY; + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) + protected boolean isActivityDestroyed() { + return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) + && isDestroyed(); } - // As a ratio of screen height, the total distance we want the parallax effect to span - // horizontally - private static float wallpaperTravelToScreenWidthRatio(int width, int height) { - float aspectRatio = width / (float) height; - - // At an aspect ratio of 16/10, the wallpaper parallax effect should span 1.5 * screen width - // At an aspect ratio of 10/16, the wallpaper parallax effect should span 1.2 * screen width - // We will use these two data points to extrapolate how much the wallpaper parallax effect - // to span (ie travel) at any aspect ratio: - - final float ASPECT_RATIO_LANDSCAPE = 16/10f; - final float ASPECT_RATIO_PORTRAIT = 10/16f; - final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE = 1.5f; - final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT = 1.2f; - - // To find out the desired width at different aspect ratios, we use the following two - // formulas, where the coefficient on x is the aspect ratio (width/height): - // (16/10)x + y = 1.5 - // (10/16)x + y = 1.2 - // We solve for x and y and end up with a final formula: - final float x = - (WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE - WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT) / - (ASPECT_RATIO_LANDSCAPE - ASPECT_RATIO_PORTRAIT); - final float y = WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT - x * ASPECT_RATIO_PORTRAIT; - return x * aspectRatio + y; + @Thunk void addReusableBitmap(TileSource src) { + synchronized (mReusableBitmaps) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT + && src instanceof BitmapRegionTileSource) { + Bitmap preview = ((BitmapRegionTileSource) src).getBitmap(); + if (preview != null && preview.isMutable()) { + mReusableBitmaps.add(preview); + } + } + } } - static protected Point getDefaultWallpaperSize(Resources res, WindowManager windowManager) { - if (sDefaultWallpaperSize == null) { - Point minDims = new Point(); - Point maxDims = new Point(); - windowManager.getDefaultDisplay().getCurrentSizeRange(minDims, maxDims); - - int maxDim = Math.max(maxDims.x, maxDims.y); - int minDim = Math.max(minDims.x, minDims.y); - - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { - Point realSize = new Point(); - windowManager.getDefaultDisplay().getRealSize(realSize); - maxDim = Math.max(realSize.x, realSize.y); - minDim = Math.min(realSize.x, realSize.y); + protected void onLoadRequestComplete(LoadRequest req, boolean success) { + mCurrentLoadRequest = null; + if (success) { + TileSource oldSrc = mCropView.getTileSource(); + mCropView.setTileSource(req.result, null); + mCropView.setTouchEnabled(req.touchEnabled); + if (req.moveToLeft) { + mCropView.moveToLeft(); + } + if (req.scaleProvider != null) { + mCropView.setScale(req.scaleProvider.getScale(req.result)); } - // We need to ensure that there is enough extra space in the wallpaper - // for the intended parallax effects - final int defaultWidth, defaultHeight; - if (isScreenLarge(res)) { - defaultWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim)); - defaultHeight = maxDim; - } else { - defaultWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim); - defaultHeight = maxDim; + // Free last image + if (oldSrc != null) { + // Call yield instead of recycle, as we only want to free GL resource. + // We can still reuse the bitmap for decoding any other image. + oldSrc.getPreview().yield(); } - sDefaultWallpaperSize = new Point(defaultWidth, defaultHeight); + addReusableBitmap(oldSrc); } - return sDefaultWallpaperSize; + if (req.postExecute != null) { + req.postExecute.run(); + } + mProgressView.setVisibility(View.GONE); } - public static int getRotationFromExif(String path) { - return getRotationFromExifHelper(path, null, 0, null, null); - } + public final void setCropViewTileSource(BitmapSource bitmapSource, boolean touchEnabled, + boolean moveToLeft, CropViewScaleProvider scaleProvider, Runnable postExecute) { + final LoadRequest req = new LoadRequest(); + req.moveToLeft = moveToLeft; + req.src = bitmapSource; + req.touchEnabled = touchEnabled; + req.postExecute = postExecute; + req.scaleProvider = scaleProvider; + mCurrentLoadRequest = req; - public static int getRotationFromExif(Context context, Uri uri) { - return getRotationFromExifHelper(null, null, 0, context, uri); - } + // Remove any pending requests + mLoaderHandler.removeMessages(MSG_LOAD_IMAGE); + Message.obtain(mLoaderHandler, MSG_LOAD_IMAGE, req).sendToTarget(); - public static int getRotationFromExif(Resources res, int resId) { - return getRotationFromExifHelper(null, res, resId, null, null); + // We don't want to show the spinner every time we load an image, because that would be + // annoying; instead, only start showing the spinner if loading the image has taken + // longer than 1 sec (ie 1000 ms) + mProgressView.postDelayed(new Runnable() { + public void run() { + if (mCurrentLoadRequest == req) { + mProgressView.setVisibility(View.VISIBLE); + } + } + }, 1000); } - private static int getRotationFromExifHelper( - String path, Resources res, int resId, Context context, Uri uri) { - ExifInterface ei = new ExifInterface(); - InputStream is = null; - BufferedInputStream bis = null; - try { - if (path != null) { - ei.readExif(path); - } else if (uri != null) { - is = context.getContentResolver().openInputStream(uri); - bis = new BufferedInputStream(is); - ei.readExif(bis); - } else { - is = res.openRawResource(resId); - bis = new BufferedInputStream(is); - ei.readExif(bis); - } - Integer ori = ei.getTagIntValue(ExifInterface.TAG_ORIENTATION); - if (ori != null) { - return ExifInterface.getRotationForOrientationValue(ori.shortValue()); - } - } catch (IOException e) { - Log.w(LOGTAG, "Getting exif data failed", e); - } catch (NullPointerException e) { - // Sometimes the ExifInterface has an internal NPE if Exif data isn't valid - Log.w(LOGTAG, "Getting exif data failed", e); - } finally { - Utils.closeSilently(bis); - Utils.closeSilently(is); - } - return 0; + + public boolean enableRotation() { + return getResources().getBoolean(R.bool.allow_rotation); } protected void setWallpaper(Uri uri, final boolean finishActivityWhenDone) { - int rotation = getRotationFromExif(this, uri); + int rotation = BitmapUtils.getRotationFromExif(getContext(), uri); BitmapCropTask cropTask = new BitmapCropTask( - this, uri, null, rotation, 0, 0, true, false, null); + getContext(), uri, null, rotation, 0, 0, true, false, null); final Point bounds = cropTask.getImageBounds(); Runnable onEndCrop = new Runnable() { public void run() { @@ -331,11 +320,11 @@ public class WallpaperCropActivity extends Activity { Resources res, int resId, final boolean finishActivityWhenDone) { // crop this image and scale it down to the default wallpaper size for // this device - int rotation = getRotationFromExif(res, resId); + int rotation = BitmapUtils.getRotationFromExif(res, resId); Point inSize = mCropView.getSourceDimensions(); - Point outSize = getDefaultWallpaperSize(getResources(), + Point outSize = WallpaperUtils.getDefaultWallpaperSize(getResources(), getWindowManager()); - RectF crop = getMaxCropRect( + RectF crop = Utils.getMaxCropRect( inSize.x, inSize.y, outSize.x, outSize.y, false); Runnable onEndCrop = new Runnable() { public void run() { @@ -348,18 +337,14 @@ public class WallpaperCropActivity extends Activity { } } }; - BitmapCropTask cropTask = new BitmapCropTask(this, res, resId, + BitmapCropTask cropTask = new BitmapCropTask(getContext(), res, resId, crop, rotation, outSize.x, outSize.y, true, false, onEndCrop); cropTask.execute(); } - private static boolean isScreenLarge(Resources res) { - Configuration config = res.getConfiguration(); - return config.smallestScreenWidthDp >= 720; - } - + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) protected void cropImageAndSetWallpaper(Uri uri, - OnBitmapCroppedHandler onBitmapCroppedHandler, final boolean finishActivityWhenDone) { + BitmapCropTask.OnBitmapCroppedHandler onBitmapCroppedHandler, final boolean finishActivityWhenDone) { boolean centerCrop = getResources().getBoolean(R.bool.center_crop); // Get the crop boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR; @@ -370,7 +355,7 @@ public class WallpaperCropActivity extends Activity { d.getSize(displaySize); boolean isPortrait = displaySize.x < displaySize.y; - Point defaultWallpaperSize = getDefaultWallpaperSize(getResources(), + Point defaultWallpaperSize = WallpaperUtils.getDefaultWallpaperSize(getResources(), getWindowManager()); // Get the crop RectF cropRect = mCropView.getCrop(); @@ -444,7 +429,7 @@ public class WallpaperCropActivity extends Activity { } } }; - BitmapCropTask cropTask = new BitmapCropTask(this, uri, + BitmapCropTask cropTask = new BitmapCropTask(getContext(), uri, cropRect, cropRotation, outWidth, outHeight, true, false, onEndCrop); if (onBitmapCroppedHandler != null) { cropTask.setOnBitmapCropped(onBitmapCroppedHandler); @@ -452,375 +437,9 @@ public class WallpaperCropActivity extends Activity { cropTask.execute(); } - public interface OnBitmapCroppedHandler { - public void onBitmapCropped(byte[] imageBytes); - } - - protected static class BitmapCropTask extends AsyncTask { - Uri mInUri = null; - Context mContext; - String mInFilePath; - byte[] mInImageBytes; - int mInResId = 0; - RectF mCropBounds = null; - int mOutWidth, mOutHeight; - int mRotation; - String mOutputFormat = "jpg"; // for now - boolean mSetWallpaper; - boolean mSaveCroppedBitmap; - Bitmap mCroppedBitmap; - Runnable mOnEndRunnable; - Resources mResources; - OnBitmapCroppedHandler mOnBitmapCroppedHandler; - boolean mNoCrop; - - public BitmapCropTask(Context c, String filePath, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mInFilePath = filePath; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(byte[] imageBytes, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mInImageBytes = imageBytes; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(Context c, Uri inUri, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mInUri = inUri; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - public BitmapCropTask(Context c, Resources res, int inResId, - RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mContext = c; - mInResId = inResId; - mResources = res; - init(cropBounds, rotation, - outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); - } - - private void init(RectF cropBounds, int rotation, int outWidth, int outHeight, - boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { - mCropBounds = cropBounds; - mRotation = rotation; - mOutWidth = outWidth; - mOutHeight = outHeight; - mSetWallpaper = setWallpaper; - mSaveCroppedBitmap = saveCroppedBitmap; - mOnEndRunnable = onEndRunnable; - } - - public void setOnBitmapCropped(OnBitmapCroppedHandler handler) { - mOnBitmapCroppedHandler = handler; - } - - public void setNoCrop(boolean value) { - mNoCrop = value; - } - - public void setOnEndRunnable(Runnable onEndRunnable) { - mOnEndRunnable = onEndRunnable; - } - - // Helper to setup input stream - private InputStream regenerateInputStream() { - if (mInUri == null && mInResId == 0 && mInFilePath == null && mInImageBytes == null) { - Log.w(LOGTAG, "cannot read original file, no input URI, resource ID, or " + - "image byte array given"); - } else { - try { - if (mInUri != null) { - return new BufferedInputStream( - mContext.getContentResolver().openInputStream(mInUri)); - } else if (mInFilePath != null) { - return mContext.openFileInput(mInFilePath); - } else if (mInImageBytes != null) { - return new BufferedInputStream(new ByteArrayInputStream(mInImageBytes)); - } else { - return new BufferedInputStream(mResources.openRawResource(mInResId)); - } - } catch (FileNotFoundException e) { - Log.w(LOGTAG, "cannot read file: " + mInUri.toString(), e); - } - } - return null; - } - - public Point getImageBounds() { - InputStream is = regenerateInputStream(); - if (is != null) { - BitmapFactory.Options options = new BitmapFactory.Options(); - options.inJustDecodeBounds = true; - BitmapFactory.decodeStream(is, null, options); - Utils.closeSilently(is); - if (options.outWidth != 0 && options.outHeight != 0) { - return new Point(options.outWidth, options.outHeight); - } - } - return null; - } - - public void setCropBounds(RectF cropBounds) { - mCropBounds = cropBounds; - } - - public Bitmap getCroppedBitmap() { - return mCroppedBitmap; - } - public boolean cropBitmap() { - boolean failure = false; - - - WallpaperManager wallpaperManager = null; - if (mSetWallpaper) { - wallpaperManager = WallpaperManager.getInstance(mContext.getApplicationContext()); - } - - - if (mSetWallpaper && mNoCrop) { - try { - InputStream is = regenerateInputStream(); - if (is != null) { - wallpaperManager.setStream(is); - Utils.closeSilently(is); - } - } catch (IOException e) { - Log.w(LOGTAG, "cannot write stream to wallpaper", e); - failure = true; - } - return !failure; - } else { - // Find crop bounds (scaled to original image size) - Rect roundedTrueCrop = new Rect(); - Matrix rotateMatrix = new Matrix(); - Matrix inverseRotateMatrix = new Matrix(); - - Point bounds = getImageBounds(); - if (mRotation > 0) { - rotateMatrix.setRotate(mRotation); - inverseRotateMatrix.setRotate(-mRotation); - - mCropBounds.roundOut(roundedTrueCrop); - mCropBounds = new RectF(roundedTrueCrop); - - if (bounds == null) { - Log.w(LOGTAG, "cannot get bounds for image"); - failure = true; - return false; - } - - float[] rotatedBounds = new float[] { bounds.x, bounds.y }; - rotateMatrix.mapPoints(rotatedBounds); - rotatedBounds[0] = Math.abs(rotatedBounds[0]); - rotatedBounds[1] = Math.abs(rotatedBounds[1]); - - mCropBounds.offset(-rotatedBounds[0]/2, -rotatedBounds[1]/2); - inverseRotateMatrix.mapRect(mCropBounds); - mCropBounds.offset(bounds.x/2, bounds.y/2); - - } - - mCropBounds.roundOut(roundedTrueCrop); - - if (roundedTrueCrop.width() <= 0 || roundedTrueCrop.height() <= 0) { - Log.w(LOGTAG, "crop has bad values for full size image"); - failure = true; - return false; - } - - // See how much we're reducing the size of the image - int scaleDownSampleSize = Math.max(1, Math.min(roundedTrueCrop.width() / mOutWidth, - roundedTrueCrop.height() / mOutHeight)); - // Attempt to open a region decoder - BitmapRegionDecoder decoder = null; - InputStream is = null; - try { - is = regenerateInputStream(); - if (is == null) { - Log.w(LOGTAG, "cannot get input stream for uri=" + mInUri.toString()); - failure = true; - return false; - } - decoder = BitmapRegionDecoder.newInstance(is, false); - Utils.closeSilently(is); - } catch (IOException e) { - Log.w(LOGTAG, "cannot open region decoder for file: " + mInUri.toString(), e); - } finally { - Utils.closeSilently(is); - is = null; - } - - Bitmap crop = null; - if (decoder != null) { - // Do region decoding to get crop bitmap - BitmapFactory.Options options = new BitmapFactory.Options(); - if (scaleDownSampleSize > 1) { - options.inSampleSize = scaleDownSampleSize; - } - crop = decoder.decodeRegion(roundedTrueCrop, options); - decoder.recycle(); - } - - if (crop == null) { - // BitmapRegionDecoder has failed, try to crop in-memory - is = regenerateInputStream(); - Bitmap fullSize = null; - if (is != null) { - BitmapFactory.Options options = new BitmapFactory.Options(); - if (scaleDownSampleSize > 1) { - options.inSampleSize = scaleDownSampleSize; - } - fullSize = BitmapFactory.decodeStream(is, null, options); - Utils.closeSilently(is); - } - if (fullSize != null) { - // Find out the true sample size that was used by the decoder - scaleDownSampleSize = bounds.x / fullSize.getWidth(); - mCropBounds.left /= scaleDownSampleSize; - mCropBounds.top /= scaleDownSampleSize; - mCropBounds.bottom /= scaleDownSampleSize; - mCropBounds.right /= scaleDownSampleSize; - mCropBounds.roundOut(roundedTrueCrop); - - // Adjust values to account for issues related to rounding - if (roundedTrueCrop.width() > fullSize.getWidth()) { - // Adjust the width - roundedTrueCrop.right = roundedTrueCrop.left + fullSize.getWidth(); - } - if (roundedTrueCrop.right > fullSize.getWidth()) { - // Adjust the left value - int adjustment = roundedTrueCrop.left - - Math.max(0, roundedTrueCrop.right - roundedTrueCrop.width()); - roundedTrueCrop.left -= adjustment; - roundedTrueCrop.right -= adjustment; - } - if (roundedTrueCrop.height() > fullSize.getHeight()) { - // Adjust the height - roundedTrueCrop.bottom = roundedTrueCrop.top + fullSize.getHeight(); - } - if (roundedTrueCrop.bottom > fullSize.getHeight()) { - // Adjust the top value - int adjustment = roundedTrueCrop.top - - Math.max(0, roundedTrueCrop.bottom - roundedTrueCrop.height()); - roundedTrueCrop.top -= adjustment; - roundedTrueCrop.bottom -= adjustment; - } - - crop = Bitmap.createBitmap(fullSize, roundedTrueCrop.left, - roundedTrueCrop.top, roundedTrueCrop.width(), - roundedTrueCrop.height()); - } - } - - if (crop == null) { - Log.w(LOGTAG, "cannot decode file: " + mInUri.toString()); - failure = true; - return false; - } - if (mOutWidth > 0 && mOutHeight > 0 || mRotation > 0) { - float[] dimsAfter = new float[] { crop.getWidth(), crop.getHeight() }; - rotateMatrix.mapPoints(dimsAfter); - dimsAfter[0] = Math.abs(dimsAfter[0]); - dimsAfter[1] = Math.abs(dimsAfter[1]); - - if (!(mOutWidth > 0 && mOutHeight > 0)) { - mOutWidth = Math.round(dimsAfter[0]); - mOutHeight = Math.round(dimsAfter[1]); - } - - RectF cropRect = new RectF(0, 0, dimsAfter[0], dimsAfter[1]); - RectF returnRect = new RectF(0, 0, mOutWidth, mOutHeight); - - Matrix m = new Matrix(); - if (mRotation == 0) { - m.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL); - } else { - Matrix m1 = new Matrix(); - m1.setTranslate(-crop.getWidth() / 2f, -crop.getHeight() / 2f); - Matrix m2 = new Matrix(); - m2.setRotate(mRotation); - Matrix m3 = new Matrix(); - m3.setTranslate(dimsAfter[0] / 2f, dimsAfter[1] / 2f); - Matrix m4 = new Matrix(); - m4.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL); - - Matrix c1 = new Matrix(); - c1.setConcat(m2, m1); - Matrix c2 = new Matrix(); - c2.setConcat(m4, m3); - m.setConcat(c2, c1); - } - - Bitmap tmp = Bitmap.createBitmap((int) returnRect.width(), - (int) returnRect.height(), Bitmap.Config.ARGB_8888); - if (tmp != null) { - Canvas c = new Canvas(tmp); - Paint p = new Paint(); - p.setFilterBitmap(true); - c.drawBitmap(crop, m, p); - crop = tmp; - } - } - - if (mSaveCroppedBitmap) { - mCroppedBitmap = crop; - } - - // Get output compression format - CompressFormat cf = - convertExtensionToCompressFormat(getFileExtension(mOutputFormat)); - - // Compress to byte array - ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048); - if (crop.compress(cf, DEFAULT_COMPRESS_QUALITY, tmpOut)) { - // If we need to set to the wallpaper, set it - if (mSetWallpaper && wallpaperManager != null) { - try { - byte[] outByteArray = tmpOut.toByteArray(); - wallpaperManager.setStream(new ByteArrayInputStream(outByteArray)); - if (mOnBitmapCroppedHandler != null) { - mOnBitmapCroppedHandler.onBitmapCropped(outByteArray); - } - } catch (IOException e) { - Log.w(LOGTAG, "cannot write stream to wallpaper", e); - failure = true; - } - } - } else { - Log.w(LOGTAG, "cannot compress bitmap"); - failure = true; - } - } - return !failure; // True if any of the operations failed - } - - @Override - protected Boolean doInBackground(Void... params) { - return cropBitmap(); - } - - @Override - protected void onPostExecute(Boolean result) { - if (mOnEndRunnable != null) { - mOnEndRunnable.run(); - } - } - } - protected void updateWallpaperDimensions(int width, int height) { - String spKey = getSharedPreferencesKey(); - SharedPreferences sp = getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS); + String spKey = LauncherFiles.WALLPAPER_CROP_PREFERENCES_KEY; + SharedPreferences sp = getContext().getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS); SharedPreferences.Editor editor = sp.edit(); if (width != 0 && height != 0) { editor.putInt(WALLPAPER_WIDTH_KEY, width); @@ -830,69 +449,21 @@ public class WallpaperCropActivity extends Activity { editor.remove(WALLPAPER_HEIGHT_KEY); } editor.commit(); - - suggestWallpaperDimension(getResources(), - sp, getWindowManager(), WallpaperManager.getInstance(this), true); - } - - static public void suggestWallpaperDimension(Resources res, - final SharedPreferences sharedPrefs, - WindowManager windowManager, - final WallpaperManager wallpaperManager, boolean fallBackToDefaults) { - final Point defaultWallpaperSize = getDefaultWallpaperSize(res, windowManager); - // If we have saved a wallpaper width/height, use that instead - - int savedWidth = sharedPrefs.getInt(WALLPAPER_WIDTH_KEY, -1); - int savedHeight = sharedPrefs.getInt(WALLPAPER_HEIGHT_KEY, -1); - - if (savedWidth == -1 || savedHeight == -1) { - if (!fallBackToDefaults) { - return; - } else { - savedWidth = defaultWallpaperSize.x; - savedHeight = defaultWallpaperSize.y; - } - } - - if (savedWidth != wallpaperManager.getDesiredMinimumWidth() || - savedHeight != wallpaperManager.getDesiredMinimumHeight()) { - wallpaperManager.suggestDesiredDimensions(savedWidth, savedHeight); - } + WallpaperUtils.suggestWallpaperDimension(getResources(), + sp, getWindowManager(), WallpaperManager.getInstance(getContext()), true); } - protected static RectF getMaxCropRect( - int inWidth, int inHeight, int outWidth, int outHeight, boolean leftAligned) { - RectF cropRect = new RectF(); - // Get a crop rect that will fit this - if (inWidth / (float) inHeight > outWidth / (float) outHeight) { - cropRect.top = 0; - cropRect.bottom = inHeight; - cropRect.left = (inWidth - (outWidth / (float) outHeight) * inHeight) / 2; - cropRect.right = inWidth - cropRect.left; - if (leftAligned) { - cropRect.right -= cropRect.left; - cropRect.left = 0; - } - } else { - cropRect.left = 0; - cropRect.right = inWidth; - cropRect.top = (inHeight - (outHeight / (float) outWidth) * inWidth) / 2; - cropRect.bottom = inHeight - cropRect.top; - } - return cropRect; - } + static class LoadRequest { + BitmapSource src; + boolean touchEnabled; + boolean moveToLeft; + Runnable postExecute; + CropViewScaleProvider scaleProvider; - protected static CompressFormat convertExtensionToCompressFormat(String extension) { - return extension.equals("png") ? CompressFormat.PNG : CompressFormat.JPEG; + TileSource result; } - protected static String getFileExtension(String requestFormat) { - String outputFormat = (requestFormat == null) - ? "jpg" - : requestFormat; - outputFormat = outputFormat.toLowerCase(); - return (outputFormat.equals("png") || outputFormat.equals("gif")) - ? "png" // We don't support gif compression. - : "jpg"; + interface CropViewScaleProvider { + float getScale(TileSource src); } } diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java index 09e096396..88dc3e22b 100644 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java @@ -16,11 +16,11 @@ package com.android.launcher3; +import android.Manifest.permission; import android.animation.LayoutTransition; import android.annotation.TargetApi; import android.app.ActionBar; import android.app.Activity; -import android.app.WallpaperInfo; import android.app.WallpaperManager; import android.content.Context; import android.content.Intent; @@ -35,15 +35,15 @@ import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Point; import android.graphics.PorterDuff; -import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.graphics.drawable.LevelListDrawable; +import android.Manifest; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.os.Process; import android.provider.MediaStore; import android.util.Log; import android.util.Pair; @@ -52,6 +52,7 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLayoutChangeListener; @@ -70,8 +71,14 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; +import com.android.gallery3d.common.BitmapCropTask; +import com.android.gallery3d.common.BitmapUtils; +import com.android.gallery3d.common.Utils; +import com.android.launcher3.util.Thunk; +import com.android.launcher3.util.WallpaperUtils; import com.android.photos.BitmapRegionTileSource; import com.android.photos.BitmapRegionTileSource.BitmapSource; +import com.android.photos.views.TiledImageRenderer.TileSource; import java.io.File; import java.io.FileOutputStream; @@ -83,28 +90,25 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { public static final int IMAGE_PICK = 5; public static final int PICK_WALLPAPER_THIRD_PARTY_ACTIVITY = 6; - public static final int PICK_LIVE_WALLPAPER = 7; private static final String TEMP_WALLPAPER_TILES = "TEMP_WALLPAPER_TILES"; private static final String SELECTED_INDEX = "SELECTED_INDEX"; private static final int FLAG_POST_DELAY_MILLIS = 200; - private View mSelectedTile; - private boolean mIgnoreNextTap; - private OnClickListener mThumbnailOnClickListener; + @Thunk View mSelectedTile; + @Thunk boolean mIgnoreNextTap; + @Thunk OnClickListener mThumbnailOnClickListener; - private LinearLayout mWallpapersView; - private View mWallpaperStrip; + @Thunk LinearLayout mWallpapersView; + @Thunk HorizontalScrollView mWallpaperScrollContainer; - private ActionMode.Callback mActionModeCallback; - private ActionMode mActionMode; + @Thunk ActionMode.Callback mActionModeCallback; + @Thunk ActionMode mActionMode; - private View.OnLongClickListener mLongClickListener; + @Thunk View.OnLongClickListener mLongClickListener; ArrayList mTempWallpaperTiles = new ArrayList(); private SavedWallpaperImages mSavedImages; - private WallpaperInfo mLiveWallpaperInfoOnPickerLaunch; - private int mSelectedIndex = -1; - private WallpaperInfo mLastClickedLiveWallpaperInfo; + @Thunk int mSelectedIndex = -1; public static abstract class WallpaperTileInfo { protected View mView; @@ -136,45 +140,36 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { public static class UriWallpaperInfo extends WallpaperTileInfo { private Uri mUri; - private boolean mFirstClick = true; - private BitmapRegionTileSource.UriBitmapSource mBitmapSource; public UriWallpaperInfo(Uri uri) { mUri = uri; } @Override public void onClick(final WallpaperPickerActivity a) { - final Runnable onLoad; - if (!mFirstClick) { - onLoad = null; - } else { - mFirstClick = false; - a.mSetWallpaperButton.setEnabled(false); - onLoad = new Runnable() { - public void run() { - if (mBitmapSource != null && - mBitmapSource.getLoadingState() == BitmapSource.State.LOADED) { - a.selectTile(mView); - a.mSetWallpaperButton.setEnabled(true); - } else { - ViewGroup parent = (ViewGroup) mView.getParent(); - if (parent != null) { - parent.removeView(mView); - Toast.makeText(a, - a.getString(R.string.image_load_fail), - Toast.LENGTH_SHORT).show(); - } + a.setWallpaperButtonEnabled(false); + final BitmapRegionTileSource.UriBitmapSource bitmapSource = + new BitmapRegionTileSource.UriBitmapSource(a.getContext(), mUri); + a.setCropViewTileSource(bitmapSource, true, false, null, new Runnable() { + + @Override + public void run() { + if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) { + a.selectTile(mView); + a.setWallpaperButtonEnabled(true); + } else { + ViewGroup parent = (ViewGroup) mView.getParent(); + if (parent != null) { + parent.removeView(mView); + Toast.makeText(a.getContext(), R.string.image_load_fail, + Toast.LENGTH_SHORT).show(); } } - }; - } - mBitmapSource = new BitmapRegionTileSource.UriBitmapSource( - a, mUri, BitmapRegionTileSource.MAX_PREVIEW_SIZE); - a.setCropViewTileSource(mBitmapSource, true, false, onLoad); + } + }); } @Override public void onSave(final WallpaperPickerActivity a) { boolean finishActivityWhenDone = true; - OnBitmapCroppedHandler h = new OnBitmapCroppedHandler() { + BitmapCropTask.OnBitmapCroppedHandler h = new BitmapCropTask.OnBitmapCroppedHandler() { public void onBitmapCropped(byte[] imageBytes) { Point thumbSize = getDefaultThumbnailSize(a.getResources()); // rotation is set to 0 since imageBytes has already been correctly rotated @@ -203,10 +198,19 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { mThumb = thumb; } @Override - public void onClick(WallpaperPickerActivity a) { - BitmapRegionTileSource.UriBitmapSource bitmapSource = - new BitmapRegionTileSource.UriBitmapSource(a, Uri.fromFile(mFile), 1024); - a.setCropViewTileSource(bitmapSource, false, true, null); + public void onClick(final WallpaperPickerActivity a) { + a.setWallpaperButtonEnabled(false); + final BitmapRegionTileSource.UriBitmapSource bitmapSource = + new BitmapRegionTileSource.UriBitmapSource(a.getContext(), Uri.fromFile(mFile)); + a.setCropViewTileSource(bitmapSource, false, true, null, new Runnable() { + + @Override + public void run() { + if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) { + a.setWallpaperButtonEnabled(true); + } + } + }); } @Override public void onSave(WallpaperPickerActivity a) { @@ -232,22 +236,30 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { mThumb = thumb; } @Override - public void onClick(WallpaperPickerActivity a) { - BitmapRegionTileSource.ResourceBitmapSource bitmapSource = - new BitmapRegionTileSource.ResourceBitmapSource( - mResources, mResId, BitmapRegionTileSource.MAX_PREVIEW_SIZE); - bitmapSource.loadInBackground(); - BitmapRegionTileSource source = new BitmapRegionTileSource(a, bitmapSource); - CropView v = a.getCropView(); - v.setTileSource(source, null); - Point wallpaperSize = WallpaperCropActivity.getDefaultWallpaperSize( - a.getResources(), a.getWindowManager()); - RectF crop = WallpaperCropActivity.getMaxCropRect( - source.getImageWidth(), source.getImageHeight(), - wallpaperSize.x, wallpaperSize.y, false); - v.setScale(wallpaperSize.x / crop.width()); - v.setTouchEnabled(false); - a.setSystemWallpaperVisiblity(false); + public void onClick(final WallpaperPickerActivity a) { + a.setWallpaperButtonEnabled(false); + final BitmapRegionTileSource.ResourceBitmapSource bitmapSource = + new BitmapRegionTileSource.ResourceBitmapSource(mResources, mResId); + a.setCropViewTileSource(bitmapSource, false, false, new CropViewScaleProvider() { + + @Override + public float getScale(TileSource src) { + Point wallpaperSize = WallpaperUtils.getDefaultWallpaperSize( + a.getResources(), a.getWindowManager()); + RectF crop = Utils.getMaxCropRect( + src.getImageWidth(), src.getImageHeight(), + wallpaperSize.x, wallpaperSize.y, false); + return wallpaperSize.x / crop.width(); + } + }, new Runnable() { + + @Override + public void run() { + if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) { + a.setWallpaperButtonEnabled(true); + } + } + }); } @Override public void onSave(WallpaperPickerActivity a) { @@ -272,27 +284,33 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { @Override public void onClick(WallpaperPickerActivity a) { CropView c = a.getCropView(); - - Drawable defaultWallpaper = WallpaperManager.getInstance(a).getBuiltInDrawable( - c.getWidth(), c.getHeight(), false, 0.5f, 0.5f); - + Drawable defaultWallpaper = WallpaperManager.getInstance(a.getContext()) + .getBuiltInDrawable(c.getWidth(), c.getHeight(), false, 0.5f, 0.5f); if (defaultWallpaper == null) { Log.w(TAG, "Null default wallpaper encountered."); c.setTileSource(null, null); return; } - c.setTileSource( - new DrawableTileSource(a, defaultWallpaper, DrawableTileSource.MAX_PREVIEW_SIZE), null); - c.setScale(1f); - c.setTouchEnabled(false); - a.setSystemWallpaperVisiblity(false); + LoadRequest req = new LoadRequest(); + req.moveToLeft = false; + req.touchEnabled = false; + req.scaleProvider = new CropViewScaleProvider() { + + @Override + public float getScale(TileSource src) { + return 1f; + } + }; + req.result = new DrawableTileSource(a.getContext(), + defaultWallpaper, DrawableTileSource.MAX_PREVIEW_SIZE); + a.onLoadRequestComplete(req, true); } @Override public void onSave(WallpaperPickerActivity a) { try { - WallpaperManager.getInstance(a).clear(); - a.setResult(RESULT_OK); + WallpaperManager.getInstance(a.getContext()).clear(); + a.setResult(Activity.RESULT_OK); } catch (IOException e) { Log.w("Setting wallpaper to default threw exception", e); } @@ -308,10 +326,6 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } } - public void setWallpaperStripYOffset(float offset) { - mWallpaperStrip.setPadding(0, 0, 0, (int) offset); - } - /** * shows the system wallpaper behind the window and hides the {@link * #mCropView} if visible @@ -338,7 +352,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { }, FLAG_POST_DELAY_MILLIS); } - private void changeWallpaperFlags(boolean visible) { + @Thunk void changeWallpaperFlags(boolean visible) { int desiredWallpaperFlag = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0; int currentWallpaperFlag = getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; @@ -349,24 +363,11 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } @Override - public void setCropViewTileSource(BitmapSource bitmapSource, - boolean touchEnabled, - boolean moveToLeft, - final Runnable postExecute) { - // we also want to show our own wallpaper instead of the one in the background - Runnable showPostExecuteRunnable = new Runnable() { - @Override - public void run() { - if(postExecute != null) { - postExecute.run(); - } - setSystemWallpaperVisiblity(false); - } - }; - super.setCropViewTileSource(bitmapSource, - touchEnabled, - moveToLeft, - showPostExecuteRunnable); + protected void onLoadRequestComplete(LoadRequest req, boolean success) { + super.onLoadRequestComplete(req, success); + if (success) { + setSystemWallpaperVisiblity(false); + } } // called by onCreate; this is subclassed to overwrite WallpaperCropActivity @@ -376,7 +377,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { mCropView = (CropView) findViewById(R.id.cropView); mCropView.setVisibility(View.INVISIBLE); - mWallpaperStrip = findViewById(R.id.wallpaper_strip); + mProgressView = findViewById(R.id.loading); + mWallpaperScrollContainer = (HorizontalScrollView) findViewById(R.id.wallpaper_scroll_container); mCropView.setTouchCallback(new CropView.TouchCallback() { ViewPropertyAnimator mAnim; @Override @@ -384,15 +386,15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { if (mAnim != null) { mAnim.cancel(); } - if (mWallpaperStrip.getAlpha() == 1f) { + if (mWallpaperScrollContainer.getAlpha() == 1f) { mIgnoreNextTap = true; } - mAnim = mWallpaperStrip.animate(); + mAnim = mWallpaperScrollContainer.animate(); mAnim.alpha(0f) .setDuration(150) .withEndAction(new Runnable() { public void run() { - mWallpaperStrip.setVisibility(View.INVISIBLE); + mWallpaperScrollContainer.setVisibility(View.INVISIBLE); } }); mAnim.setInterpolator(new AccelerateInterpolator(0.75f)); @@ -410,8 +412,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { if (mAnim != null) { mAnim.cancel(); } - mWallpaperStrip.setVisibility(View.VISIBLE); - mAnim = mWallpaperStrip.animate(); + mWallpaperScrollContainer.setVisibility(View.VISIBLE); + mAnim = mWallpaperScrollContainer.animate(); mAnim.alpha(1f) .setDuration(150) .setInterpolator(new DecelerateInterpolator(0.75f)); @@ -429,7 +431,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } return; } - mSetWallpaperButton.setEnabled(true); + setWallpaperButtonEnabled(true); WallpaperTileInfo info = (WallpaperTileInfo) v.getTag(); if (info.isSelectable() && v.getVisibility() == View.VISIBLE) { selectTile(v); @@ -460,18 +462,18 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { // Populate the built-in wallpapers ArrayList wallpapers = findBundledWallpapers(); mWallpapersView = (LinearLayout) findViewById(R.id.wallpaper_list); - SimpleWallpapersAdapter ia = new SimpleWallpapersAdapter(this, wallpapers); + SimpleWallpapersAdapter ia = new SimpleWallpapersAdapter(getContext(), wallpapers); populateWallpapersFromAdapter(mWallpapersView, ia, false); // Populate the saved wallpapers - mSavedImages = new SavedWallpaperImages(this); + mSavedImages = new SavedWallpaperImages(getContext()); mSavedImages.loadThumbnailsAndImageIdList(); populateWallpapersFromAdapter(mWallpapersView, mSavedImages, true); // Populate the live wallpapers final LinearLayout liveWallpapersView = (LinearLayout) findViewById(R.id.live_wallpaper_list); - final LiveWallpaperListAdapter a = new LiveWallpaperListAdapter(this); + final LiveWallpaperListAdapter a = new LiveWallpaperListAdapter(getContext()); a.registerDataSetObserver(new DataSetObserver() { public void onChanged() { liveWallpapersView.removeAllViews(); @@ -485,14 +487,13 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { final LinearLayout thirdPartyWallpapersView = (LinearLayout) findViewById(R.id.third_party_wallpaper_list); final ThirdPartyWallpaperPickerListAdapter ta = - new ThirdPartyWallpaperPickerListAdapter(this); + new ThirdPartyWallpaperPickerListAdapter(getContext()); populateWallpapersFromAdapter(thirdPartyWallpapersView, ta, false); // Add a tile for the Gallery LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); FrameLayout pickImageTile = (FrameLayout) getLayoutInflater(). inflate(R.layout.wallpaper_picker_image_picker_item, masterWallpaperList, false); - setWallpaperItemPaddingToZero(pickImageTile); masterWallpaperList.addView(pickImageTile, 0); // Make its background the last photo taken on external storage @@ -500,10 +501,9 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { if (lastPhoto != null) { ImageView galleryThumbnailBg = (ImageView) pickImageTile.findViewById(R.id.wallpaper_image); - galleryThumbnailBg.setImageBitmap(getThumbnailOfLastPhoto()); + galleryThumbnailBg.setImageBitmap(lastPhoto); int colorOverlay = getResources().getColor(R.color.wallpaper_picker_translucent_gray); galleryThumbnailBg.setColorFilter(colorOverlay, PorterDuff.Mode.SRC_ATOP); - } PickImageInfo pickImageInfo = new PickImageInfo(); @@ -650,7 +650,11 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { }; } - private void selectTile(View v) { + public void setWallpaperButtonEnabled(boolean enabled) { + mSetWallpaperButton.setEnabled(enabled); + } + + @Thunk void selectTile(View v) { if (mSelectedTile != null) { mSelectedTile.setSelected(false); mSelectedTile = null; @@ -661,28 +665,35 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { // TODO: Remove this once the accessibility framework and // services have better support for selection state. v.announceForAccessibility( - getString(R.string.announce_selection, v.getContentDescription())); + getContext().getString(R.string.announce_selection, v.getContentDescription())); } - private void initializeScrollForRtl() { - final HorizontalScrollView scroll = - (HorizontalScrollView) findViewById(R.id.wallpaper_scroll_container); - - if (scroll.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) { - final ViewTreeObserver observer = scroll.getViewTreeObserver(); + @Thunk void initializeScrollForRtl() { + if (Utilities.isRtl(getResources())) { + final ViewTreeObserver observer = mWallpaperScrollContainer.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { public void onGlobalLayout() { LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); - scroll.scrollTo(masterWallpaperList.getWidth(), 0); - scroll.getViewTreeObserver().removeOnGlobalLayoutListener(this); + mWallpaperScrollContainer.scrollTo(masterWallpaperList.getWidth(), 0); + mWallpaperScrollContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); } } protected Bitmap getThumbnailOfLastPhoto() { - Cursor cursor = MediaStore.Images.Media.query(getContentResolver(), + boolean canReadExternalStorage = getActivity().checkPermission( + Manifest.permission.READ_EXTERNAL_STORAGE, Process.myPid(), Process.myUid()) == + PackageManager.PERMISSION_GRANTED; + + if (!canReadExternalStorage) { + // MediaStore.Images.Media.EXTERNAL_CONTENT_URI requires + // the READ_EXTERNAL_STORAGE permission + return null; + } + + Cursor cursor = MediaStore.Images.Media.query(getContext().getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_TAKEN}, @@ -692,7 +703,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { if (cursor != null) { if (cursor.moveToNext()) { int id = cursor.getInt(0); - thumb = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), + thumb = MediaStore.Images.Thumbnails.getThumbnail(getContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null); } cursor.close(); @@ -700,16 +711,16 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { return thumb; } - protected void onStop() { + public void onStop() { super.onStop(); - mWallpaperStrip = findViewById(R.id.wallpaper_strip); - if (mWallpaperStrip.getAlpha() < 1f) { - mWallpaperStrip.setAlpha(1f); - mWallpaperStrip.setVisibility(View.VISIBLE); + mWallpaperScrollContainer = (HorizontalScrollView) findViewById(R.id.wallpaper_scroll_container); + if (mWallpaperScrollContainer.getAlpha() < 1f) { + mWallpaperScrollContainer.setAlpha(1f); + mWallpaperScrollContainer.setVisibility(View.VISIBLE); } } - protected void onSaveInstanceState(Bundle outState) { + public void onSaveInstanceState(Bundle outState) { outState.putParcelableArrayList(TEMP_WALLPAPER_TILES, mTempWallpaperTiles); outState.putInt(SELECTED_INDEX, mSelectedIndex); } @@ -722,7 +733,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { mSelectedIndex = savedInstanceState.getInt(SELECTED_INDEX, -1); } - private void populateWallpapersFromAdapter(ViewGroup parent, BaseAdapter adapter, + @Thunk void populateWallpapersFromAdapter(ViewGroup parent, BaseAdapter adapter, boolean addLongPressHandler) { for (int i = 0; i < adapter.getCount(); i++) { FrameLayout thumbnail = (FrameLayout) adapter.getView(i, null, parent); @@ -737,7 +748,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } } - private void updateTileIndices() { + @Thunk void updateTileIndices() { LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); final int childCount = masterWallpaperList.getChildCount(); final Resources res = getResources(); @@ -778,13 +789,13 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } } - private static Point getDefaultThumbnailSize(Resources res) { + @Thunk static Point getDefaultThumbnailSize(Resources res) { return new Point(res.getDimensionPixelSize(R.dimen.wallpaperThumbnailWidth), res.getDimensionPixelSize(R.dimen.wallpaperThumbnailHeight)); } - private static Bitmap createThumbnail(Point size, Context context, Uri uri, byte[] imageBytes, + @Thunk static Bitmap createThumbnail(Point size, Context context, Uri uri, byte[] imageBytes, Resources res, int resId, int rotation, boolean leftAligned) { int width = size.x; int height = size.y; @@ -812,7 +823,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { rotatedBounds[0] = Math.abs(rotatedBounds[0]); rotatedBounds[1] = Math.abs(rotatedBounds[1]); - RectF cropRect = WallpaperCropActivity.getMaxCropRect( + RectF cropRect = Utils.getMaxCropRect( (int) rotatedBounds[0], (int) rotatedBounds[1], width, height, leftAligned); cropTask.setCropBounds(cropRect); @@ -829,20 +840,19 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { final FrameLayout pickedImageThumbnail = (FrameLayout) getLayoutInflater(). inflate(R.layout.wallpaper_picker_item, mWallpapersView, false); pickedImageThumbnail.setVisibility(View.GONE); - setWallpaperItemPaddingToZero(pickedImageThumbnail); mWallpapersView.addView(pickedImageThumbnail, 0); // Load the thumbnail final ImageView image = (ImageView) pickedImageThumbnail.findViewById(R.id.wallpaper_image); final Point defaultSize = getDefaultThumbnailSize(this.getResources()); - final Context context = this; + final Context context = getContext(); new AsyncTask() { protected Bitmap doInBackground(Void...args) { try { - int rotation = WallpaperCropActivity.getRotationFromExif(context, uri); + int rotation = BitmapUtils.getRotationFromExif(context, uri); return createThumbnail(defaultSize, context, uri, null, null, 0, rotation, false); } catch (SecurityException securityException) { - if (isDestroyed()) { + if (isActivityDestroyed()) { // Temporarily granted permissions are revoked when the activity // finishes, potentially resulting in a SecurityException here. // Even though {@link #isDestroyed} might also return true in different @@ -879,45 +889,35 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } } - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == IMAGE_PICK && resultCode == RESULT_OK) { + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == IMAGE_PICK && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { Uri uri = data.getData(); addTemporaryWallpaperTile(uri, false); } - } else if (requestCode == PICK_WALLPAPER_THIRD_PARTY_ACTIVITY) { - setResult(RESULT_OK); + } else if (requestCode == PICK_WALLPAPER_THIRD_PARTY_ACTIVITY + && resultCode == Activity.RESULT_OK) { + // Something was set on the third-party activity. + setResult(Activity.RESULT_OK); finish(); - } else if (requestCode == PICK_LIVE_WALLPAPER) { - WallpaperManager wm = WallpaperManager.getInstance(this); - final WallpaperInfo oldLiveWallpaper = mLiveWallpaperInfoOnPickerLaunch; - final WallpaperInfo clickedWallpaper = mLastClickedLiveWallpaperInfo; - WallpaperInfo newLiveWallpaper = wm.getWallpaperInfo(); - // Try to figure out if a live wallpaper was set; - if (newLiveWallpaper != null && - (oldLiveWallpaper == null - || !oldLiveWallpaper.getComponent() - .equals(newLiveWallpaper.getComponent()) - || clickedWallpaper.getComponent() - .equals(oldLiveWallpaper.getComponent()))) { - // Return if a live wallpaper was set - setResult(RESULT_OK); - finish(); - } } } - static void setWallpaperItemPaddingToZero(FrameLayout frameLayout) { - frameLayout.setPadding(0, 0, 0, 0); - frameLayout.setForeground(new ZeroPaddingDrawable(frameLayout.getForeground())); - } - private void addLongPressHandler(View v) { v.setOnLongClickListener(mLongClickListener); + + // Enable stylus button to also trigger long click. + final StylusEventHelper stylusEventHelper = new StylusEventHelper(v); + v.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View view, MotionEvent event) { + return stylusEventHelper.checkAndPerformStylusEvent(event); + } + }); } private ArrayList findBundledWallpapers() { - final PackageManager pm = getPackageManager(); + final PackageManager pm = getContext().getPackageManager(); final ArrayList bundled = new ArrayList(24); Partner partner = Partner.get(pm); @@ -961,7 +961,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { Pair r = getWallpaperArrayResourceId(); if (r != null) { try { - Resources wallpaperRes = getPackageManager().getResourcesForApplication(r.first); + Resources wallpaperRes = getContext().getPackageManager() + .getResourcesForApplication(r.first); addWallpapers(bundled, wallpaperRes, r.first.packageName, r.second); } catch (PackageManager.NameNotFoundException e) { } @@ -984,7 +985,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { try { f.createNewFile(); FileOutputStream thumbFileStream = - openFileOutput(f.getName(), Context.MODE_PRIVATE); + getContext().openFileOutput(f.getName(), Context.MODE_PRIVATE); b.compress(Bitmap.CompressFormat.JPEG, 95, thumbFileStream); thumbFileStream.close(); return true; @@ -996,17 +997,18 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } private File getDefaultThumbFile() { - return new File(getFilesDir(), Build.VERSION.SDK_INT + return new File(getContext().getFilesDir(), Build.VERSION.SDK_INT + "_" + LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL); } private boolean saveDefaultWallpaperThumb(Bitmap b) { // Delete old thumbnails. - new File(getFilesDir(), LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL_OLD).delete(); - new File(getFilesDir(), LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL).delete(); + new File(getContext().getFilesDir(), LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL_OLD).delete(); + new File(getContext().getFilesDir(), LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL).delete(); for (int i = Build.VERSION_CODES.JELLY_BEAN; i < Build.VERSION.SDK_INT; i++) { - new File(getFilesDir(), i + "_" + LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL).delete(); + new File(getContext().getFilesDir(), i + "_" + + LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL).delete(); } return writeImageToFileAsJpeg(getDefaultThumbFile(), b); } @@ -1024,9 +1026,9 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } else { Resources res = getResources(); Point defaultThumbSize = getDefaultThumbnailSize(res); - int rotation = WallpaperCropActivity.getRotationFromExif(res, resId); + int rotation = BitmapUtils.getRotationFromExif(res, resId); thumb = createThumbnail( - defaultThumbSize, this, null, null, sysRes, resId, rotation, false); + defaultThumbSize, getContext(), null, null, sysRes, resId, rotation, false); if (thumb != null) { defaultWallpaperExists = saveDefaultWallpaperThumb(thumb); } @@ -1048,7 +1050,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } else { Resources res = getResources(); Point defaultThumbSize = getDefaultThumbnailSize(res); - Drawable wallpaperDrawable = WallpaperManager.getInstance(this).getBuiltInDrawable( + Drawable wallpaperDrawable = WallpaperManager.getInstance(getContext()).getBuiltInDrawable( defaultThumbSize.x, defaultThumbSize.y, true, 0.5f, 0.5f); if (wallpaperDrawable != null) { thumb = Bitmap.createBitmap( @@ -1075,7 +1077,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { // package name should be. final String packageName = getResources().getResourcePackageName(R.array.wallpapers); try { - ApplicationInfo info = getPackageManager().getApplicationInfo(packageName, 0); + ApplicationInfo info = getContext().getPackageManager().getApplicationInfo(packageName, 0); return new Pair(info, R.array.wallpapers); } catch (PackageManager.NameNotFoundException e) { return null; @@ -1110,31 +1112,12 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { return mSavedImages; } - public void onLiveWallpaperPickerLaunch(WallpaperInfo info) { - mLastClickedLiveWallpaperInfo = info; - mLiveWallpaperInfoOnPickerLaunch = WallpaperManager.getInstance(this).getWallpaperInfo(); - } - - static class ZeroPaddingDrawable extends LevelListDrawable { - public ZeroPaddingDrawable(Drawable d) { - super(); - addLevel(0, 0, d); - setLevel(0); - } - - @Override - public boolean getPadding(Rect padding) { - padding.set(0, 0, 0, 0); - return true; - } - } - private static class SimpleWallpapersAdapter extends ArrayAdapter { private final LayoutInflater mLayoutInflater; - SimpleWallpapersAdapter(Activity activity, ArrayList wallpapers) { - super(activity, R.layout.wallpaper_picker_item, wallpapers); - mLayoutInflater = activity.getLayoutInflater(); + SimpleWallpapersAdapter(Context context, ArrayList wallpapers) { + super(context, R.layout.wallpaper_picker_item, wallpapers); + mLayoutInflater = LayoutInflater.from(context); } public View getView(int position, View convertView, ViewGroup parent) { @@ -1156,8 +1139,6 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { view = convertView; } - setWallpaperItemPaddingToZero((FrameLayout) view); - ImageView image = (ImageView) view.findViewById(R.id.wallpaper_image); if (thumb != null) { @@ -1168,9 +1149,17 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { return view; } - // In Launcher3, we override this with a method that catches exceptions - // from starting activities; didn't want to copy and paste code into here public void startActivityForResultSafely(Intent intent, int requestCode) { - startActivityForResult(intent, requestCode); + Utilities.startActivityForResultSafely(getActivity(), intent, requestCode); + } + + @Override + public boolean enableRotation() { + // Check if rotation is enabled for this device. + if (Utilities.isRotationAllowedForDevice(getContext())) + return true; + + // Check if the user has specifically enabled rotation via preferences. + return Utilities.isAllowRotationPrefEnabled(getApplicationContext(), true); } } diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperRootView.java b/WallpaperPicker/src/com/android/launcher3/WallpaperRootView.java deleted file mode 100644 index ceaa043a7..000000000 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperRootView.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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. - */ - -package com.android.launcher3; - -import android.content.Context; -import android.graphics.Rect; -import android.util.AttributeSet; -import android.widget.RelativeLayout; - -public class WallpaperRootView extends RelativeLayout { - private final WallpaperPickerActivity a; - public WallpaperRootView(Context context, AttributeSet attrs) { - super(context, attrs); - a = (WallpaperPickerActivity) context; - } - public WallpaperRootView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - a = (WallpaperPickerActivity) context; - } - - protected boolean fitSystemWindows(Rect insets) { - a.setWallpaperStripYOffset(insets.bottom); - return true; - } -} diff --git a/WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java b/WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java new file mode 100644 index 000000000..f8541188f --- /dev/null +++ b/WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java @@ -0,0 +1,21 @@ +package com.android.launcher3.base; + +import android.app.Activity; +import android.content.Context; + +/** + * A wrapper over {@link Activity} which allows to override some methods. + * The base implementation can change from an Activity to a Fragment (or any other custom + * implementation), Callers should not assume that the base class extends Context, instead use + * either {@link #getContext} or {@link #getActivity} + */ +public class BaseActivity extends Activity { + + public Context getContext() { + return this; + } + + public Activity getActivity() { + return this; + } +} diff --git a/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java b/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java index 66ece4ff6..2d496a5a6 100644 --- a/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java +++ b/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java @@ -20,15 +20,14 @@ import android.annotation.TargetApi; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; -import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.BitmapRegionDecoder; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.net.Uri; +import android.opengl.GLUtils; import android.os.Build; -import android.os.Build.VERSION_CODES; import android.util.Log; import com.android.gallery3d.common.BitmapUtils; @@ -148,24 +147,19 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { private static final String TAG = "BitmapRegionTileSource"; - private static final boolean REUSE_BITMAP = - Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; private static final int GL_SIZE_LIMIT = 2048; // This must be no larger than half the size of the GL_SIZE_LIMIT // due to decodePreview being allowed to be up to 2x the size of the target - public static final int MAX_PREVIEW_SIZE = GL_SIZE_LIMIT / 2; + private static final int MAX_PREVIEW_SIZE = GL_SIZE_LIMIT / 2; public static abstract class BitmapSource { private SimpleBitmapRegionDecoder mDecoder; private Bitmap mPreview; - private int mPreviewSize; private int mRotation; public enum State { NOT_LOADED, LOADED, ERROR_LOADING }; private State mState = State.NOT_LOADED; - public BitmapSource(int previewSize) { - mPreviewSize = previewSize; - } - public boolean loadInBackground() { + + public boolean loadInBackground(InBitmapProvider bitmapProvider) { ExifInterface ei = new ExifInterface(); if (readExif(ei)) { Integer ori = ei.getTagIntValue(ExifInterface.TAG_ORIENTATION); @@ -180,18 +174,44 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { } else { int width = mDecoder.getWidth(); int height = mDecoder.getHeight(); - if (mPreviewSize != 0) { - int previewSize = Math.min(mPreviewSize, MAX_PREVIEW_SIZE); - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inPreferredConfig = Bitmap.Config.ARGB_8888; - opts.inPreferQualityOverSpeed = true; - - float scale = (float) previewSize / Math.max(width, height); - opts.inSampleSize = BitmapUtils.computeSampleSizeLarger(scale); - opts.inJustDecodeBounds = false; + + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inPreferredConfig = Bitmap.Config.ARGB_8888; + opts.inPreferQualityOverSpeed = true; + + float scale = (float) MAX_PREVIEW_SIZE / Math.max(width, height); + opts.inSampleSize = BitmapUtils.computeSampleSizeLarger(scale); + opts.inJustDecodeBounds = false; + opts.inMutable = true; + + if (bitmapProvider != null) { + int expectedPixles = (width / opts.inSampleSize) * (height / opts.inSampleSize); + Bitmap reusableBitmap = bitmapProvider.forPixelCount(expectedPixles); + if (reusableBitmap != null) { + // Try loading with reusable bitmap + opts.inBitmap = reusableBitmap; + try { + mPreview = loadPreviewBitmap(opts); + } catch (IllegalArgumentException e) { + Log.d(TAG, "Unable to reusage bitmap", e); + opts.inBitmap = null; + mPreview = null; + } + } + } + if (mPreview == null) { mPreview = loadPreviewBitmap(opts); } - mState = State.LOADED; + + // Verify that the bitmap can be used on GL surface + try { + GLUtils.getInternalFormat(mPreview); + GLUtils.getType(mPreview); + mState = State.LOADED; + } catch (IllegalArgumentException e) { + Log.d(TAG, "Image cannot be rendered on a GL surface", e); + mState = State.ERROR_LOADING; + } return true; } } @@ -208,10 +228,6 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { return mPreview; } - public int getPreviewSize() { - return mPreviewSize; - } - public int getRotation() { return mRotation; } @@ -219,12 +235,15 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { public abstract boolean readExif(ExifInterface ei); public abstract SimpleBitmapRegionDecoder loadBitmapRegionDecoder(); public abstract Bitmap loadPreviewBitmap(BitmapFactory.Options options); + + public interface InBitmapProvider { + Bitmap forPixelCount(int count); + } } public static class FilePathBitmapSource extends BitmapSource { private String mPath; - public FilePathBitmapSource(String path, int previewSize) { - super(previewSize); + public FilePathBitmapSource(String path) { mPath = path; } @Override @@ -258,8 +277,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { public static class UriBitmapSource extends BitmapSource { private Context mContext; private Uri mUri; - public UriBitmapSource(Context context, Uri uri, int previewSize) { - super(previewSize); + public UriBitmapSource(Context context, Uri uri) { mContext = context; mUri = uri; } @@ -306,13 +324,13 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { Utils.closeSilently(is); return true; } catch (FileNotFoundException e) { - Log.e("BitmapRegionTileSource", "Failed to load URI " + mUri, e); + Log.d("BitmapRegionTileSource", "Failed to load URI " + mUri, e); return false; } catch (IOException e) { - Log.e("BitmapRegionTileSource", "Failed to load URI " + mUri, e); + Log.d("BitmapRegionTileSource", "Failed to load URI " + mUri, e); return false; } catch (NullPointerException e) { - Log.e("BitmapRegionTileSource", "Failed to read EXIF for URI " + mUri, e); + Log.d("BitmapRegionTileSource", "Failed to read EXIF for URI " + mUri, e); return false; } finally { Utils.closeSilently(is); @@ -323,8 +341,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { public static class ResourceBitmapSource extends BitmapSource { private Resources mRes; private int mResId; - public ResourceBitmapSource(Resources res, int resId, int previewSize) { - super(previewSize); + public ResourceBitmapSource(Resources res, int resId) { mRes = res; mResId = resId; } @@ -372,11 +389,9 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { // For use only by getTile private Rect mWantRegion = new Rect(); - private Rect mOverlapRegion = new Rect(); private BitmapFactory.Options mOptions; - private Canvas mCanvas; - public BitmapRegionTileSource(Context context, BitmapSource source) { + public BitmapRegionTileSource(Context context, BitmapSource source, byte[] tempStorage) { mTileSize = TiledImageRenderer.suggestedTileSize(context); mRotation = source.getRotation(); mDecoder = source.getBitmapRegionDecoder(); @@ -386,27 +401,26 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { mOptions = new BitmapFactory.Options(); mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; mOptions.inPreferQualityOverSpeed = true; - mOptions.inTempStorage = new byte[16 * 1024]; - int previewSize = source.getPreviewSize(); - if (previewSize != 0) { - previewSize = Math.min(previewSize, MAX_PREVIEW_SIZE); - // Although this is the same size as the Bitmap that is likely already - // loaded, the lifecycle is different and interactions are on a different - // thread. Thus to simplify, this source will decode its own bitmap. - Bitmap preview = decodePreview(source, previewSize); - if (preview.getWidth() <= GL_SIZE_LIMIT && preview.getHeight() <= GL_SIZE_LIMIT) { + mOptions.inTempStorage = tempStorage; + + Bitmap preview = source.getPreviewBitmap(); + if (preview != null && + preview.getWidth() <= GL_SIZE_LIMIT && preview.getHeight() <= GL_SIZE_LIMIT) { mPreview = new BitmapTexture(preview); - } else { - Log.w(TAG, String.format( - "Failed to create preview of apropriate size! " - + " in: %dx%d, out: %dx%d", - mWidth, mHeight, - preview.getWidth(), preview.getHeight())); - } + } else { + Log.w(TAG, String.format( + "Failed to create preview of apropriate size! " + + " in: %dx%d, out: %dx%d", + mWidth, mHeight, + preview.getWidth(), preview.getHeight())); } } } + public Bitmap getBitmap() { + return mPreview instanceof BitmapTexture ? ((BitmapTexture) mPreview).getBitmap() : null; + } + @Override public int getTileSize() { return mTileSize; @@ -435,10 +449,6 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { @Override public Bitmap getTile(int level, int x, int y, Bitmap bitmap) { int tileSize = getTileSize(); - if (!REUSE_BITMAP) { - return getTileWithoutReusingBitmap(level, x, y, tileSize); - } - int t = tileSize << level; mWantRegion.set(x, y, x + t, y + t); @@ -462,64 +472,4 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource { } return bitmap; } - - private Bitmap getTileWithoutReusingBitmap( - int level, int x, int y, int tileSize) { - - int t = tileSize << level; - mWantRegion.set(x, y, x + t, y + t); - - mOverlapRegion.set(0, 0, mWidth, mHeight); - - mOptions.inSampleSize = (1 << level); - Bitmap bitmap = mDecoder.decodeRegion(mOverlapRegion, mOptions); - - if (bitmap == null) { - Log.w(TAG, "fail in decoding region"); - } - - if (mWantRegion.equals(mOverlapRegion)) { - return bitmap; - } - - Bitmap result = Bitmap.createBitmap(tileSize, tileSize, Config.ARGB_8888); - if (mCanvas == null) { - mCanvas = new Canvas(); - } - mCanvas.setBitmap(result); - mCanvas.drawBitmap(bitmap, - (mOverlapRegion.left - mWantRegion.left) >> level, - (mOverlapRegion.top - mWantRegion.top) >> level, null); - mCanvas.setBitmap(null); - return result; - } - - /** - * Note that the returned bitmap may have a long edge that's longer - * than the targetSize, but it will always be less than 2x the targetSize - */ - private Bitmap decodePreview(BitmapSource source, int targetSize) { - Bitmap result = source.getPreviewBitmap(); - if (result == null) { - return null; - } - - // We need to resize down if the decoder does not support inSampleSize - // or didn't support the specified inSampleSize (some decoders only do powers of 2) - float scale = (float) targetSize / (float) (Math.max(result.getWidth(), result.getHeight())); - - if (scale <= 0.5) { - result = BitmapUtils.resizeBitmapByScale(result, scale, true); - } - return ensureGLCompatibleBitmap(result); - } - - private static Bitmap ensureGLCompatibleBitmap(Bitmap bitmap) { - if (bitmap == null || bitmap.getConfig() != null) { - return bitmap; - } - Bitmap newBitmap = bitmap.copy(Config.ARGB_8888, false); - bitmap.recycle(); - return newBitmap; - } } diff --git a/WallpaperPicker/src/com/android/photos/views/BlockingGLTextureView.java b/WallpaperPicker/src/com/android/photos/views/BlockingGLTextureView.java deleted file mode 100644 index 8a0505185..000000000 --- a/WallpaperPicker/src/com/android/photos/views/BlockingGLTextureView.java +++ /dev/null @@ -1,438 +0,0 @@ -/* - * 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. - */ - -package com.android.photos.views; - -import android.content.Context; -import android.graphics.SurfaceTexture; -import android.opengl.GLSurfaceView.Renderer; -import android.opengl.GLUtils; -import android.util.Log; -import android.view.TextureView; -import android.view.TextureView.SurfaceTextureListener; - -import javax.microedition.khronos.egl.EGL10; -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.egl.EGLContext; -import javax.microedition.khronos.egl.EGLDisplay; -import javax.microedition.khronos.egl.EGLSurface; -import javax.microedition.khronos.opengles.GL10; - -/** - * A TextureView that supports blocking rendering for synchronous drawing - */ -public class BlockingGLTextureView extends TextureView - implements SurfaceTextureListener { - - private RenderThread mRenderThread; - - public BlockingGLTextureView(Context context) { - super(context); - setSurfaceTextureListener(this); - } - - public void setRenderer(Renderer renderer) { - if (mRenderThread != null) { - throw new IllegalArgumentException("Renderer already set"); - } - mRenderThread = new RenderThread(renderer); - } - - public void render() { - mRenderThread.render(); - } - - public void destroy() { - if (mRenderThread != null) { - mRenderThread.finish(); - mRenderThread = null; - } - } - - @Override - public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, - int height) { - mRenderThread.setSurface(surface); - mRenderThread.setSize(width, height); - } - - @Override - public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, - int height) { - mRenderThread.setSize(width, height); - } - - @Override - public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { - if (mRenderThread != null) { - mRenderThread.setSurface(null); - } - return false; - } - - @Override - public void onSurfaceTextureUpdated(SurfaceTexture surface) { - } - - @Override - protected void finalize() throws Throwable { - try { - destroy(); - } catch (Throwable t) { - // Ignore - } - super.finalize(); - } - - /** - * An EGL helper class. - */ - - private static class EglHelper { - private static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098; - private static final int EGL_OPENGL_ES2_BIT = 4; - - EGL10 mEgl; - EGLDisplay mEglDisplay; - EGLSurface mEglSurface; - EGLConfig mEglConfig; - EGLContext mEglContext; - - private EGLConfig chooseEglConfig() { - int[] configsCount = new int[1]; - EGLConfig[] configs = new EGLConfig[1]; - int[] configSpec = getConfig(); - if (!mEgl.eglChooseConfig(mEglDisplay, configSpec, configs, 1, configsCount)) { - throw new IllegalArgumentException("eglChooseConfig failed " + - GLUtils.getEGLErrorString(mEgl.eglGetError())); - } else if (configsCount[0] > 0) { - return configs[0]; - } - return null; - } - - private static int[] getConfig() { - return new int[] { - EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, - EGL10.EGL_RED_SIZE, 8, - EGL10.EGL_GREEN_SIZE, 8, - EGL10.EGL_BLUE_SIZE, 8, - EGL10.EGL_ALPHA_SIZE, 8, - EGL10.EGL_DEPTH_SIZE, 0, - EGL10.EGL_STENCIL_SIZE, 0, - EGL10.EGL_NONE - }; - } - - EGLContext createContext(EGL10 egl, EGLDisplay eglDisplay, EGLConfig eglConfig) { - int[] attribList = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE }; - return egl.eglCreateContext(eglDisplay, eglConfig, EGL10.EGL_NO_CONTEXT, attribList); - } - - /** - * Initialize EGL for a given configuration spec. - */ - public void start() { - /* - * Get an EGL instance - */ - mEgl = (EGL10) EGLContext.getEGL(); - - /* - * Get to the default display. - */ - mEglDisplay = mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); - - if (mEglDisplay == EGL10.EGL_NO_DISPLAY) { - throw new RuntimeException("eglGetDisplay failed"); - } - - /* - * We can now initialize EGL for that display - */ - int[] version = new int[2]; - if (!mEgl.eglInitialize(mEglDisplay, version)) { - throw new RuntimeException("eglInitialize failed"); - } - mEglConfig = chooseEglConfig(); - - /* - * Create an EGL context. We want to do this as rarely as we can, because an - * EGL context is a somewhat heavy object. - */ - mEglContext = createContext(mEgl, mEglDisplay, mEglConfig); - - if (mEglContext == null || mEglContext == EGL10.EGL_NO_CONTEXT) { - mEglContext = null; - throwEglException("createContext"); - } - - mEglSurface = null; - } - - /** - * Create an egl surface for the current SurfaceTexture surface. If a surface - * already exists, destroy it before creating the new surface. - * - * @return true if the surface was created successfully. - */ - public boolean createSurface(SurfaceTexture surface) { - /* - * Check preconditions. - */ - if (mEgl == null) { - throw new RuntimeException("egl not initialized"); - } - if (mEglDisplay == null) { - throw new RuntimeException("eglDisplay not initialized"); - } - if (mEglConfig == null) { - throw new RuntimeException("mEglConfig not initialized"); - } - - /* - * The window size has changed, so we need to create a new - * surface. - */ - destroySurfaceImp(); - - /* - * Create an EGL surface we can render into. - */ - if (surface != null) { - mEglSurface = mEgl.eglCreateWindowSurface(mEglDisplay, mEglConfig, surface, null); - } else { - mEglSurface = null; - } - - if (mEglSurface == null || mEglSurface == EGL10.EGL_NO_SURFACE) { - int error = mEgl.eglGetError(); - if (error == EGL10.EGL_BAD_NATIVE_WINDOW) { - Log.e("EglHelper", "createWindowSurface returned EGL_BAD_NATIVE_WINDOW."); - } - return false; - } - - /* - * Before we can issue GL commands, we need to make sure - * the context is current and bound to a surface. - */ - if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) { - /* - * Could not make the context current, probably because the underlying - * SurfaceView surface has been destroyed. - */ - logEglErrorAsWarning("EGLHelper", "eglMakeCurrent", mEgl.eglGetError()); - return false; - } - - return true; - } - - /** - * Create a GL object for the current EGL context. - */ - public GL10 createGL() { - return (GL10) mEglContext.getGL(); - } - - /** - * Display the current render surface. - * @return the EGL error code from eglSwapBuffers. - */ - public int swap() { - if (!mEgl.eglSwapBuffers(mEglDisplay, mEglSurface)) { - return mEgl.eglGetError(); - } - return EGL10.EGL_SUCCESS; - } - - public void destroySurface() { - destroySurfaceImp(); - } - - private void destroySurfaceImp() { - if (mEglSurface != null && mEglSurface != EGL10.EGL_NO_SURFACE) { - mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE, - EGL10.EGL_NO_SURFACE, - EGL10.EGL_NO_CONTEXT); - mEgl.eglDestroySurface(mEglDisplay, mEglSurface); - mEglSurface = null; - } - } - - public void finish() { - if (mEglContext != null) { - mEgl.eglDestroyContext(mEglDisplay, mEglContext); - mEglContext = null; - } - if (mEglDisplay != null) { - mEgl.eglTerminate(mEglDisplay); - mEglDisplay = null; - } - } - - private void throwEglException(String function) { - throwEglException(function, mEgl.eglGetError()); - } - - public static void throwEglException(String function, int error) { - String message = formatEglError(function, error); - throw new RuntimeException(message); - } - - public static void logEglErrorAsWarning(String tag, String function, int error) { - Log.w(tag, formatEglError(function, error)); - } - - public static String formatEglError(String function, int error) { - return function + " failed: " + error; - } - - } - - private static class RenderThread extends Thread { - private static final int INVALID = -1; - private static final int RENDER = 1; - private static final int CHANGE_SURFACE = 2; - private static final int RESIZE_SURFACE = 3; - private static final int FINISH = 4; - - private EglHelper mEglHelper = new EglHelper(); - - private Object mLock = new Object(); - private int mExecMsgId = INVALID; - private SurfaceTexture mSurface; - private Renderer mRenderer; - private int mWidth, mHeight; - - private boolean mFinished = false; - private GL10 mGL; - - public RenderThread(Renderer renderer) { - super("RenderThread"); - mRenderer = renderer; - start(); - } - - private void checkRenderer() { - if (mRenderer == null) { - throw new IllegalArgumentException("Renderer is null!"); - } - } - - private void checkSurface() { - if (mSurface == null) { - throw new IllegalArgumentException("surface is null!"); - } - } - - public void setSurface(SurfaceTexture surface) { - // If the surface is null we're being torn down, don't need a - // renderer then - if (surface != null) { - checkRenderer(); - } - mSurface = surface; - exec(CHANGE_SURFACE); - } - - public void setSize(int width, int height) { - checkRenderer(); - checkSurface(); - mWidth = width; - mHeight = height; - exec(RESIZE_SURFACE); - } - - public void render() { - checkRenderer(); - if (mSurface != null) { - exec(RENDER); - mSurface.updateTexImage(); - } - } - - public void finish() { - mSurface = null; - exec(FINISH); - try { - join(); - } catch (InterruptedException e) { - // Ignore - } - } - - private void exec(int msgid) { - synchronized (mLock) { - if (mExecMsgId != INVALID) { - throw new IllegalArgumentException( - "Message already set - multithreaded access?"); - } - mExecMsgId = msgid; - mLock.notify(); - try { - mLock.wait(); - } catch (InterruptedException e) { - // Ignore - } - } - } - - private void handleMessageLocked(int what) { - switch (what) { - case CHANGE_SURFACE: - if (mEglHelper.createSurface(mSurface)) { - mGL = mEglHelper.createGL(); - mRenderer.onSurfaceCreated(mGL, mEglHelper.mEglConfig); - } - break; - case RESIZE_SURFACE: - mRenderer.onSurfaceChanged(mGL, mWidth, mHeight); - break; - case RENDER: - mRenderer.onDrawFrame(mGL); - mEglHelper.swap(); - break; - case FINISH: - mEglHelper.destroySurface(); - mEglHelper.finish(); - mFinished = true; - break; - } - } - - @Override - public void run() { - synchronized (mLock) { - mEglHelper.start(); - while (!mFinished) { - while (mExecMsgId == INVALID) { - try { - mLock.wait(); - } catch (InterruptedException e) { - // Ignore - } - } - handleMessageLocked(mExecMsgId); - mExecMsgId = INVALID; - mLock.notify(); - } - mExecMsgId = FINISH; - } - } - } -} diff --git a/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java b/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java index c4e493b34..e57ce70b9 100644 --- a/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java +++ b/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java @@ -20,11 +20,11 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.RectF; -import android.support.v4.util.LongSparseArray; +import android.support.v4.util.Pools.Pool; +import android.support.v4.util.Pools.SynchronizedPool; import android.util.DisplayMetrics; import android.util.Log; -import android.util.Pools.Pool; -import android.util.Pools.SynchronizedPool; +import android.util.LongSparseArray; import android.view.View; import android.view.WindowManager; @@ -32,6 +32,7 @@ import com.android.gallery3d.common.Utils; import com.android.gallery3d.glrenderer.BasicTexture; import com.android.gallery3d.glrenderer.GLCanvas; import com.android.gallery3d.glrenderer.UploadedTexture; +import com.android.launcher3.util.Thunk; /** * Handles laying out, decoding, and drawing of tiles in GL @@ -67,12 +68,12 @@ public class TiledImageRenderer { private static final int STATE_RECYCLING = 0x20; private static final int STATE_RECYCLED = 0x40; - private static Pool sTilePool = new SynchronizedPool(64); + @Thunk static Pool sTilePool = new SynchronizedPool(64); // TILE_SIZE must be 2^N - private int mTileSize; + @Thunk int mTileSize; - private TileSource mModel; + @Thunk TileSource mModel; private BasicTexture mPreview; protected int mLevelCount; // cache the value of mScaledBitmaps.length @@ -82,7 +83,7 @@ public class TiledImageRenderer { // half size of the previous one). If the value is in [0, mLevelCount), we // use the bitmap in mScaledBitmaps[mLevel] for display, otherwise the value // is mLevelCount - private int mLevel = 0; + @Thunk int mLevel = 0; private int mOffsetX; private int mOffsetY; @@ -96,10 +97,10 @@ public class TiledImageRenderer { private final LongSparseArray mActiveTiles = new LongSparseArray(); // The following three queue are guarded by mQueueLock - private final Object mQueueLock = new Object(); + @Thunk final Object mQueueLock = new Object(); private final TileQueue mRecycledQueue = new TileQueue(); private final TileQueue mUploadQueue = new TileQueue(); - private final TileQueue mDecodeQueue = new TileQueue(); + @Thunk final TileQueue mDecodeQueue = new TileQueue(); // The width and height of the full-sized bitmap protected int mImageWidth = SIZE_UNKNOWN; @@ -489,7 +490,7 @@ public class TiledImageRenderer { } } - private void decodeTile(Tile tile) { + @Thunk void decodeTile(Tile tile) { synchronized (mQueueLock) { if (tile.mTileState != STATE_IN_QUEUE) { return; @@ -556,7 +557,7 @@ public class TiledImageRenderer { mActiveTiles.put(key, tile); } - private Tile getTile(int x, int y, int level) { + @Thunk Tile getTile(int x, int y, int level) { return mActiveTiles.get(makeTileKey(x, y, level)); } @@ -748,7 +749,7 @@ public class TiledImageRenderer { } } - private static class TileQueue { + @Thunk static class TileQueue { private Tile mHead; public Tile pop() { @@ -786,7 +787,7 @@ public class TiledImageRenderer { } } - private class TileDecoder extends Thread { + @Thunk class TileDecoder extends Thread { public void finishAndWait() { interrupt(); diff --git a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java index 94063b027..7e3e1a936 100644 --- a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java +++ b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java @@ -16,8 +16,6 @@ package com.android.photos.views; -import android.annotation.SuppressLint; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -28,35 +26,26 @@ import android.graphics.Paint.Align; import android.graphics.RectF; import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView.Renderer; -import android.os.Build; import android.util.AttributeSet; import android.view.Choreographer; import android.view.Choreographer.FrameCallback; -import android.view.View; import android.widget.FrameLayout; import com.android.gallery3d.glrenderer.BasicTexture; import com.android.gallery3d.glrenderer.GLES20Canvas; +import com.android.launcher3.util.Thunk; import com.android.photos.views.TiledImageRenderer.TileSource; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; /** - * Shows an image using {@link TiledImageRenderer} using either {@link GLSurfaceView} - * or {@link BlockingGLTextureView}. + * Shows an image using {@link TiledImageRenderer} using either {@link GLSurfaceView}. */ public class TiledImageView extends FrameLayout { - private static final boolean USE_TEXTURE_VIEW = false; - private static final boolean IS_SUPPORTED = - Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; - private static final boolean USE_CHOREOGRAPHER = - Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; - - private BlockingGLTextureView mTextureView; - private GLSurfaceView mGLSurfaceView; - private boolean mInvalPending = false; + @Thunk GLSurfaceView mGLSurfaceView; + @Thunk boolean mInvalPending = false; private FrameCallback mFrameCallback; protected static class ImageRendererWrapper { @@ -79,35 +68,19 @@ public class TiledImageView extends FrameLayout { protected Object mLock = new Object(); protected ImageRendererWrapper mRenderer; - public static boolean isTilingSupported() { - return IS_SUPPORTED; - } - public TiledImageView(Context context) { this(context, null); } public TiledImageView(Context context, AttributeSet attrs) { super(context, attrs); - if (!IS_SUPPORTED) { - return; - } - mRenderer = new ImageRendererWrapper(); mRenderer.image = new TiledImageRenderer(this); - View view; - if (USE_TEXTURE_VIEW) { - mTextureView = new BlockingGLTextureView(context); - mTextureView.setRenderer(new TileRenderer()); - view = mTextureView; - } else { - mGLSurfaceView = new GLSurfaceView(context); - mGLSurfaceView.setEGLContextClientVersion(2); - mGLSurfaceView.setRenderer(new TileRenderer()); - mGLSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); - view = mGLSurfaceView; - } - addView(view, new LayoutParams( + mGLSurfaceView = new GLSurfaceView(context); + mGLSurfaceView.setEGLContextClientVersion(2); + mGLSurfaceView.setRenderer(new TileRenderer()); + mGLSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + addView(mGLSurfaceView, new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); //setTileSource(new ColoredTiles()); } @@ -117,22 +90,11 @@ public class TiledImageView extends FrameLayout { super.setVisibility(visibility); // need to update inner view's visibility because it seems like we're causing it to draw // from {@link #dispatchDraw} or {@link #invalidate} even if we are invisible. - if (USE_TEXTURE_VIEW) { - mTextureView.setVisibility(visibility); - } else { - mGLSurfaceView.setVisibility(visibility); - } + mGLSurfaceView.setVisibility(visibility); } public void destroy() { - if (!IS_SUPPORTED) { - return; - } - if (USE_TEXTURE_VIEW) { - mTextureView.destroy(); - } else { - mGLSurfaceView.queueEvent(mFreeTextures); - } + mGLSurfaceView.queueEvent(mFreeTextures); } private Runnable mFreeTextures = new Runnable() { @@ -144,27 +106,14 @@ public class TiledImageView extends FrameLayout { }; public void onPause() { - if (!IS_SUPPORTED) { - return; - } - if (!USE_TEXTURE_VIEW) { - mGLSurfaceView.onPause(); - } + mGLSurfaceView.onPause(); } public void onResume() { - if (!IS_SUPPORTED) { - return; - } - if (!USE_TEXTURE_VIEW) { - mGLSurfaceView.onResume(); - } + mGLSurfaceView.onResume(); } public void setTileSource(TileSource source, Runnable isReadyCallback) { - if (!IS_SUPPORTED) { - return; - } synchronized (mLock) { mRenderer.source = source; mRenderer.isReadyCallback = isReadyCallback; @@ -177,13 +126,14 @@ public class TiledImageView extends FrameLayout { invalidate(); } + public TileSource getTileSource() { + return mRenderer.source; + } + @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); - if (!IS_SUPPORTED) { - return; - } synchronized (mLock) { updateScaleIfNecessaryLocked(mRenderer); } @@ -199,44 +149,11 @@ public class TiledImageView extends FrameLayout { (float) getHeight() / (float) renderer.source.getImageHeight()); } - @Override - protected void dispatchDraw(Canvas canvas) { - if (!IS_SUPPORTED) { - return; - } - if (USE_TEXTURE_VIEW) { - mTextureView.render(); - } - super.dispatchDraw(canvas); - } - - @SuppressLint("NewApi") - @Override - public void setTranslationX(float translationX) { - if (!IS_SUPPORTED) { - return; - } - super.setTranslationX(translationX); - } - @Override public void invalidate() { - if (!IS_SUPPORTED) { - return; - } - if (USE_TEXTURE_VIEW) { - super.invalidate(); - mTextureView.invalidate(); - } else { - if (USE_CHOREOGRAPHER) { - invalOnVsync(); - } else { - mGLSurfaceView.requestRender(); - } - } + invalOnVsync(); } - @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void invalOnVsync() { if (!mInvalPending) { mInvalPending = true; @@ -255,9 +172,6 @@ public class TiledImageView extends FrameLayout { private RectF mTempRectF = new RectF(); public void positionFromMatrix(Matrix matrix) { - if (!IS_SUPPORTED) { - return; - } if (mRenderer.source != null) { final int rotation = mRenderer.source.getRotation(); final boolean swap = !(rotation % 180 == 0); @@ -290,7 +204,7 @@ public class TiledImageView extends FrameLayout { } } - private class TileRenderer implements Renderer { + @Thunk class TileRenderer implements Renderer { private GLES20Canvas mCanvas; diff --git a/proguard.flags b/proguard.flags index 83a491dfd..6a9d6f345 100644 --- a/proguard.flags +++ b/proguard.flags @@ -1,18 +1,22 @@ --keep class com.android.launcher3.Launcher { - public void previousScreen(android.view.View); - public void nextScreen(android.view.View); - public void launchHotSeat(android.view.View); - public void onClickSearchButton(android.view.View); - public void onClickVoiceButton(android.view.View); - public void onClickConfigureButton(android.view.View); - public void onClickAllAppsButton(android.view.View); - public void onClickAppMarketButton(android.view.View); - public void dismissFirstRunCling(android.view.View); - public void dismissMigrationClingCopyApps(android.view.View); - public void dismissMigrationClingUseDefault(android.view.View); - public void dismissMigrationWorkspaceCling(android.view.View); - public void dismissWorkspaceCling(android.view.View); - public void dismissAllAppsCling(android.view.View); +-keep class com.android.launcher3.BaseRecyclerViewFastScrollBar { + public void setWidth(int); + public int getWidth(); + public void setTrackAlpha(int); + public int getTrackAlpha(); +} + +-keep class com.android.launcher3.BaseRecyclerViewFastScrollPopup { + public void setAlpha(float); + public float getAlpha(); +} + +-keep class com.android.launcher3.BubbleTextView { + public void setFastScrollFocus(float); + public float getFastScrollFocus(); +} + +-keep class com.android.launcher3.ButtonDropTarget { + public int getTextColor(); } -keep class com.android.launcher3.CellLayout { @@ -20,7 +24,7 @@ public void setBackgroundAlpha(float); } --keep class com.android.launcher3.DragLayer$LayoutParams { +-keep class com.android.launcher3.CellLayout$LayoutParams { public void setWidth(int); public int getWidth(); public void setHeight(int); @@ -31,7 +35,7 @@ public int getY(); } --keep class com.android.launcher3.CellLayout$LayoutParams { +-keep class com.android.launcher3.DragLayer$LayoutParams { public void setWidth(int); public int getWidth(); public void setHeight(int); @@ -42,11 +46,9 @@ public int getY(); } --keep class com.android.launcher3.Workspace { - public float getBackgroundAlpha(); - public void setBackgroundAlpha(float); - public float getChildrenOutlineAlpha(); - public void setChildrenOutlineAlpha(float); +-keep class com.android.launcher3.FastBitmapDrawable { + public int getBrightness(); + public void setBrightness(int); } -keep class com.android.launcher3.MemoryDumpActivity { @@ -58,7 +60,7 @@ public void setAnimationProgress(float); } --keep class com.android.launcher3.FastBitmapDrawable { - public int getBrightness(); - public void setBrightness(int); -} +-keep class com.android.launcher3.Workspace { + public float getBackgroundAlpha(); + public void setBackgroundAlpha(float); +} \ No newline at end of file diff --git a/protos/backup.proto b/protos/backup.proto index 8ae175234..d8d94e8cb 100644 --- a/protos/backup.proto +++ b/protos/backup.proto @@ -14,7 +14,9 @@ * limitations under the License. */ - package launcher_backup; +syntax = "proto2"; + +package launcher_backup; option java_package = "com.android.launcher3.backup"; option java_outer_classname = "BackupProtos"; @@ -70,6 +72,17 @@ message Journal { } message Favorite { + // Type of the app, this target represents + enum TargetType { + TARGET_NONE = 0; + TARGET_PHONE = 1; + TARGET_MESSENGER = 2; + TARGET_EMAIL = 3; + TARGET_BROWSER = 4; + TARGET_GALLERY = 5; + TARGET_CAMERA = 6; + } + required int64 id = 1; required int32 itemType = 2; optional string title = 3; @@ -88,17 +101,18 @@ message Favorite { optional string iconPackage = 16; optional string iconResource = 17; optional bytes icon = 18; - } + optional TargetType targetType = 19 [default = TARGET_NONE]; +} message Screen { required int64 id = 1; optional int32 rank = 2; - } +} message Resource { required int32 dpi = 1; required bytes data = 2; - } +} message Widget { required string provider = 1; @@ -106,4 +120,8 @@ message Widget { optional bool configure = 3; optional Resource icon = 4; optional Resource preview = 5; - } + + // Assume that a widget is resizable upto 2x2 if no data is available + optional int32 minSpanX = 6 [default = 2]; + optional int32 minSpanY = 7 [default = 2]; +} diff --git a/res/anim/fade_in_fast.xml b/res/anim/fade_in_fast.xml deleted file mode 100644 index 4fa9847aa..000000000 --- a/res/anim/fade_in_fast.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/res/anim/fade_out_fast.xml b/res/anim/fade_out_fast.xml deleted file mode 100644 index a061a6ca9..000000000 --- a/res/anim/fade_out_fast.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/res/drawable-hdpi/apps_customize_bg.png b/res/drawable-hdpi/apps_customize_bg.png deleted file mode 100644 index 284746796..000000000 Binary files a/res/drawable-hdpi/apps_customize_bg.png and /dev/null differ diff --git a/res/drawable-hdpi/bg_appwidget_error.9.png b/res/drawable-hdpi/bg_appwidget_error.9.png deleted file mode 100644 index 4da3195d4..000000000 Binary files a/res/drawable-hdpi/bg_appwidget_error.9.png and /dev/null differ diff --git a/res/drawable-hdpi/home_press.9.png b/res/drawable-hdpi/home_press.9.png deleted file mode 100644 index ef07011f8..000000000 Binary files a/res/drawable-hdpi/home_press.9.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_arrow_back_grey.png b/res/drawable-hdpi/ic_arrow_back_grey.png new file mode 100755 index 000000000..ccd3900dd Binary files /dev/null and b/res/drawable-hdpi/ic_arrow_back_grey.png differ diff --git a/res/drawable-hdpi/ic_home_all_apps_holo_dark.png b/res/drawable-hdpi/ic_home_all_apps_holo_dark.png deleted file mode 100644 index 1dc02d5e4..000000000 Binary files a/res/drawable-hdpi/ic_home_all_apps_holo_dark.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_info_launcher.png b/res/drawable-hdpi/ic_info_launcher.png new file mode 100644 index 000000000..ec0cdd18c Binary files /dev/null and b/res/drawable-hdpi/ic_info_launcher.png differ diff --git a/res/drawable-hdpi/ic_launcher_clear_active_holo.png b/res/drawable-hdpi/ic_launcher_clear_active_holo.png deleted file mode 100644 index cdd0052b3..000000000 Binary files a/res/drawable-hdpi/ic_launcher_clear_active_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_launcher_clear_normal_holo.png b/res/drawable-hdpi/ic_launcher_clear_normal_holo.png deleted file mode 100644 index 84549ff94..000000000 Binary files a/res/drawable-hdpi/ic_launcher_clear_normal_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_launcher_info_active_holo.png b/res/drawable-hdpi/ic_launcher_info_active_holo.png deleted file mode 100644 index c534e5670..000000000 Binary files a/res/drawable-hdpi/ic_launcher_info_active_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_launcher_info_normal_holo.png b/res/drawable-hdpi/ic_launcher_info_normal_holo.png deleted file mode 100644 index c9bcd7f37..000000000 Binary files a/res/drawable-hdpi/ic_launcher_info_normal_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_launcher_market_holo.png b/res/drawable-hdpi/ic_launcher_market_holo.png deleted file mode 100644 index dc7825114..000000000 Binary files a/res/drawable-hdpi/ic_launcher_market_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_launcher_trashcan_active_holo.png b/res/drawable-hdpi/ic_launcher_trashcan_active_holo.png deleted file mode 100644 index 82b1b5917..000000000 Binary files a/res/drawable-hdpi/ic_launcher_trashcan_active_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_launcher_trashcan_normal_holo.png b/res/drawable-hdpi/ic_launcher_trashcan_normal_holo.png deleted file mode 100644 index 3fc2e8347..000000000 Binary files a/res/drawable-hdpi/ic_launcher_trashcan_normal_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/ic_pageindicator_current.png b/res/drawable-hdpi/ic_pageindicator_current.png index 283f44d37..423ca2b45 100644 Binary files a/res/drawable-hdpi/ic_pageindicator_current.png and b/res/drawable-hdpi/ic_pageindicator_current.png differ diff --git a/res/drawable-hdpi/ic_pageindicator_current_folder.png b/res/drawable-hdpi/ic_pageindicator_current_folder.png new file mode 100644 index 000000000..43fbb0e79 Binary files /dev/null and b/res/drawable-hdpi/ic_pageindicator_current_folder.png differ diff --git a/res/drawable-hdpi/ic_pageindicator_default.png b/res/drawable-hdpi/ic_pageindicator_default.png index 47b998967..83fa73fc6 100644 Binary files a/res/drawable-hdpi/ic_pageindicator_default.png and b/res/drawable-hdpi/ic_pageindicator_default.png differ diff --git a/res/drawable-hdpi/ic_pageindicator_default_folder.png b/res/drawable-hdpi/ic_pageindicator_default_folder.png new file mode 100644 index 000000000..55cab1c65 Binary files /dev/null and b/res/drawable-hdpi/ic_pageindicator_default_folder.png differ diff --git a/res/drawable-hdpi/ic_remove_launcher.png b/res/drawable-hdpi/ic_remove_launcher.png new file mode 100644 index 000000000..c0814579a Binary files /dev/null and b/res/drawable-hdpi/ic_remove_launcher.png differ diff --git a/res/drawable-hdpi/ic_search_grey.png b/res/drawable-hdpi/ic_search_grey.png new file mode 100755 index 000000000..f4c5e27d2 Binary files /dev/null and b/res/drawable-hdpi/ic_search_grey.png differ diff --git a/res/drawable-hdpi/ic_uninstall_launcher.png b/res/drawable-hdpi/ic_uninstall_launcher.png new file mode 100644 index 000000000..3d8f72644 Binary files /dev/null and b/res/drawable-hdpi/ic_uninstall_launcher.png differ diff --git a/res/drawable-hdpi/ic_widget_resize_handle.png b/res/drawable-hdpi/ic_widget_resize_handle.png new file mode 100644 index 000000000..844f3cf09 Binary files /dev/null and b/res/drawable-hdpi/ic_widget_resize_handle.png differ diff --git a/res/drawable-hdpi/on_boarding_welcome.png b/res/drawable-hdpi/on_boarding_welcome.png deleted file mode 100644 index 852a0cb13..000000000 Binary files a/res/drawable-hdpi/on_boarding_welcome.png and /dev/null differ diff --git a/res/drawable-hdpi/overscroll_glow_left.9.png b/res/drawable-hdpi/overscroll_glow_left.9.png deleted file mode 100644 index aaf43c73a..000000000 Binary files a/res/drawable-hdpi/overscroll_glow_left.9.png and /dev/null differ diff --git a/res/drawable-hdpi/overscroll_glow_right.9.png b/res/drawable-hdpi/overscroll_glow_right.9.png deleted file mode 100644 index d03486441..000000000 Binary files a/res/drawable-hdpi/overscroll_glow_right.9.png and /dev/null differ diff --git a/res/drawable-hdpi/paged_view_indicator.9.png b/res/drawable-hdpi/paged_view_indicator.9.png deleted file mode 100644 index 5b47f4477..000000000 Binary files a/res/drawable-hdpi/paged_view_indicator.9.png and /dev/null differ diff --git a/res/drawable-hdpi/portal_container_holo.9.png b/res/drawable-hdpi/portal_container_holo.9.png deleted file mode 100644 index ba8a4a8cd..000000000 Binary files a/res/drawable-hdpi/portal_container_holo.9.png and /dev/null differ diff --git a/res/drawable-hdpi/portal_ring_inner.png b/res/drawable-hdpi/portal_ring_inner.png new file mode 100644 index 000000000..c29b4aa64 Binary files /dev/null and b/res/drawable-hdpi/portal_ring_inner.png differ diff --git a/res/drawable-hdpi/portal_ring_inner_holo.png b/res/drawable-hdpi/portal_ring_inner_holo.png deleted file mode 100644 index 857a01ec4..000000000 Binary files a/res/drawable-hdpi/portal_ring_inner_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/portal_ring_inner_nolip.png b/res/drawable-hdpi/portal_ring_inner_nolip.png new file mode 100644 index 000000000..e2f06fe9b Binary files /dev/null and b/res/drawable-hdpi/portal_ring_inner_nolip.png differ diff --git a/res/drawable-hdpi/portal_ring_inner_nolip_holo.png b/res/drawable-hdpi/portal_ring_inner_nolip_holo.png deleted file mode 100644 index 53df36a43..000000000 Binary files a/res/drawable-hdpi/portal_ring_inner_nolip_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/portal_ring_outer.png b/res/drawable-hdpi/portal_ring_outer.png new file mode 100644 index 000000000..e7b436b7b Binary files /dev/null and b/res/drawable-hdpi/portal_ring_outer.png differ diff --git a/res/drawable-hdpi/portal_ring_outer_holo.png b/res/drawable-hdpi/portal_ring_outer_holo.png deleted file mode 100644 index b711cf350..000000000 Binary files a/res/drawable-hdpi/portal_ring_outer_holo.png and /dev/null differ diff --git a/res/drawable-hdpi/portal_ring_rest.png b/res/drawable-hdpi/portal_ring_rest.png index 2979b736b..e3b13393e 100644 Binary files a/res/drawable-hdpi/portal_ring_rest.png and b/res/drawable-hdpi/portal_ring_rest.png differ diff --git a/res/drawable-hdpi/quantum_panel.9.png b/res/drawable-hdpi/quantum_panel.9.png deleted file mode 100644 index b4ac9c0a0..000000000 Binary files a/res/drawable-hdpi/quantum_panel.9.png and /dev/null differ diff --git a/res/drawable-hdpi/quantum_panel_bitmap.9.png b/res/drawable-hdpi/quantum_panel_bitmap.9.png new file mode 100644 index 000000000..c3319290f Binary files /dev/null and b/res/drawable-hdpi/quantum_panel_bitmap.9.png differ diff --git a/res/drawable-hdpi/quantum_panel_dark.9.png b/res/drawable-hdpi/quantum_panel_dark.9.png deleted file mode 100644 index abaf23026..000000000 Binary files a/res/drawable-hdpi/quantum_panel_dark.9.png and /dev/null differ diff --git a/res/drawable-hdpi/quantum_panel_dark_bitmap.9.png b/res/drawable-hdpi/quantum_panel_dark_bitmap.9.png new file mode 100644 index 000000000..0145d36b7 Binary files /dev/null and b/res/drawable-hdpi/quantum_panel_dark_bitmap.9.png differ diff --git a/res/drawable-hdpi/widget_resize_frame.9.png b/res/drawable-hdpi/widget_resize_frame.9.png new file mode 100644 index 000000000..b0a740384 Binary files /dev/null and b/res/drawable-hdpi/widget_resize_frame.9.png differ diff --git a/res/drawable-hdpi/widget_resize_frame_holo.9.png b/res/drawable-hdpi/widget_resize_frame_holo.9.png deleted file mode 100644 index 2d6fcf51f..000000000 Binary files a/res/drawable-hdpi/widget_resize_frame_holo.9.png and /dev/null differ diff --git a/res/drawable-hdpi/widget_resize_handle_bottom.png b/res/drawable-hdpi/widget_resize_handle_bottom.png deleted file mode 100644 index f0afd6172..000000000 Binary files a/res/drawable-hdpi/widget_resize_handle_bottom.png and /dev/null differ diff --git a/res/drawable-hdpi/widget_resize_handle_left.png b/res/drawable-hdpi/widget_resize_handle_left.png deleted file mode 100644 index 47613b29f..000000000 Binary files a/res/drawable-hdpi/widget_resize_handle_left.png and /dev/null differ diff --git a/res/drawable-hdpi/widget_resize_handle_right.png b/res/drawable-hdpi/widget_resize_handle_right.png deleted file mode 100644 index acc28be83..000000000 Binary files a/res/drawable-hdpi/widget_resize_handle_right.png and /dev/null differ diff --git a/res/drawable-hdpi/widget_resize_handle_top.png b/res/drawable-hdpi/widget_resize_handle_top.png deleted file mode 100644 index 2c60be00c..000000000 Binary files a/res/drawable-hdpi/widget_resize_handle_top.png and /dev/null differ diff --git a/res/drawable-hdpi/widget_resize_shadow.9.png b/res/drawable-hdpi/widget_resize_shadow.9.png new file mode 100644 index 000000000..6e2932dcd Binary files /dev/null and b/res/drawable-hdpi/widget_resize_shadow.9.png differ diff --git a/res/drawable-ldrtl/container_fastscroll_popup_bg.xml b/res/drawable-ldrtl/container_fastscroll_popup_bg.xml new file mode 100644 index 000000000..d79096807 --- /dev/null +++ b/res/drawable-ldrtl/container_fastscroll_popup_bg.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/res/drawable-mdpi/apps_customize_bg.png b/res/drawable-mdpi/apps_customize_bg.png deleted file mode 100644 index 284746796..000000000 Binary files a/res/drawable-mdpi/apps_customize_bg.png and /dev/null differ diff --git a/res/drawable-mdpi/bg_appwidget_error.9.png b/res/drawable-mdpi/bg_appwidget_error.9.png deleted file mode 100644 index 493c0d454..000000000 Binary files a/res/drawable-mdpi/bg_appwidget_error.9.png and /dev/null differ diff --git a/res/drawable-mdpi/home_press.9.png b/res/drawable-mdpi/home_press.9.png deleted file mode 100644 index 679a1f626..000000000 Binary files a/res/drawable-mdpi/home_press.9.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_arrow_back_grey.png b/res/drawable-mdpi/ic_arrow_back_grey.png new file mode 100755 index 000000000..11996efe3 Binary files /dev/null and b/res/drawable-mdpi/ic_arrow_back_grey.png differ diff --git a/res/drawable-mdpi/ic_home_all_apps_holo_dark.png b/res/drawable-mdpi/ic_home_all_apps_holo_dark.png deleted file mode 100644 index 84fa5947d..000000000 Binary files a/res/drawable-mdpi/ic_home_all_apps_holo_dark.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_info_launcher.png b/res/drawable-mdpi/ic_info_launcher.png new file mode 100644 index 000000000..c72d0c2a9 Binary files /dev/null and b/res/drawable-mdpi/ic_info_launcher.png differ diff --git a/res/drawable-mdpi/ic_launcher_clear_active_holo.png b/res/drawable-mdpi/ic_launcher_clear_active_holo.png deleted file mode 100644 index 2683beaa3..000000000 Binary files a/res/drawable-mdpi/ic_launcher_clear_active_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_launcher_clear_normal_holo.png b/res/drawable-mdpi/ic_launcher_clear_normal_holo.png deleted file mode 100644 index 219f3e5cf..000000000 Binary files a/res/drawable-mdpi/ic_launcher_clear_normal_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_launcher_info_active_holo.png b/res/drawable-mdpi/ic_launcher_info_active_holo.png deleted file mode 100644 index f84b4a6ba..000000000 Binary files a/res/drawable-mdpi/ic_launcher_info_active_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_launcher_info_normal_holo.png b/res/drawable-mdpi/ic_launcher_info_normal_holo.png deleted file mode 100644 index eac578f5c..000000000 Binary files a/res/drawable-mdpi/ic_launcher_info_normal_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_launcher_market_holo.png b/res/drawable-mdpi/ic_launcher_market_holo.png deleted file mode 100644 index cacb37484..000000000 Binary files a/res/drawable-mdpi/ic_launcher_market_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_launcher_trashcan_active_holo.png b/res/drawable-mdpi/ic_launcher_trashcan_active_holo.png deleted file mode 100644 index 0350e558d..000000000 Binary files a/res/drawable-mdpi/ic_launcher_trashcan_active_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_launcher_trashcan_normal_holo.png b/res/drawable-mdpi/ic_launcher_trashcan_normal_holo.png deleted file mode 100644 index 799b62f8b..000000000 Binary files a/res/drawable-mdpi/ic_launcher_trashcan_normal_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_pageindicator_current.png b/res/drawable-mdpi/ic_pageindicator_current.png index b41e1bb67..ca889c4d1 100644 Binary files a/res/drawable-mdpi/ic_pageindicator_current.png and b/res/drawable-mdpi/ic_pageindicator_current.png differ diff --git a/res/drawable-mdpi/ic_pageindicator_current_folder.png b/res/drawable-mdpi/ic_pageindicator_current_folder.png new file mode 100644 index 000000000..5bbba9140 Binary files /dev/null and b/res/drawable-mdpi/ic_pageindicator_current_folder.png differ diff --git a/res/drawable-mdpi/ic_pageindicator_default.png b/res/drawable-mdpi/ic_pageindicator_default.png index e36c25cf1..34493b155 100644 Binary files a/res/drawable-mdpi/ic_pageindicator_default.png and b/res/drawable-mdpi/ic_pageindicator_default.png differ diff --git a/res/drawable-mdpi/ic_pageindicator_default_folder.png b/res/drawable-mdpi/ic_pageindicator_default_folder.png new file mode 100644 index 000000000..0a987a4d0 Binary files /dev/null and b/res/drawable-mdpi/ic_pageindicator_default_folder.png differ diff --git a/res/drawable-mdpi/ic_remove_launcher.png b/res/drawable-mdpi/ic_remove_launcher.png new file mode 100644 index 000000000..4a2c3197e Binary files /dev/null and b/res/drawable-mdpi/ic_remove_launcher.png differ diff --git a/res/drawable-mdpi/ic_search_grey.png b/res/drawable-mdpi/ic_search_grey.png new file mode 100755 index 000000000..e83891c11 Binary files /dev/null and b/res/drawable-mdpi/ic_search_grey.png differ diff --git a/res/drawable-mdpi/ic_setting_icn.png b/res/drawable-mdpi/ic_setting_icn.png deleted file mode 100644 index 5c32c54da..000000000 Binary files a/res/drawable-mdpi/ic_setting_icn.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_uninstall_launcher.png b/res/drawable-mdpi/ic_uninstall_launcher.png new file mode 100644 index 000000000..af456690c Binary files /dev/null and b/res/drawable-mdpi/ic_uninstall_launcher.png differ diff --git a/res/drawable-mdpi/ic_widget_resize_handle.png b/res/drawable-mdpi/ic_widget_resize_handle.png new file mode 100644 index 000000000..c3b287ff0 Binary files /dev/null and b/res/drawable-mdpi/ic_widget_resize_handle.png differ diff --git a/res/drawable-mdpi/on_boarding_welcome.png b/res/drawable-mdpi/on_boarding_welcome.png deleted file mode 100644 index 1d12e8362..000000000 Binary files a/res/drawable-mdpi/on_boarding_welcome.png and /dev/null differ diff --git a/res/drawable-mdpi/overscroll_glow_left.9.png b/res/drawable-mdpi/overscroll_glow_left.9.png deleted file mode 100644 index b79cdcdc2..000000000 Binary files a/res/drawable-mdpi/overscroll_glow_left.9.png and /dev/null differ diff --git a/res/drawable-mdpi/overscroll_glow_right.9.png b/res/drawable-mdpi/overscroll_glow_right.9.png deleted file mode 100644 index 1321303e1..000000000 Binary files a/res/drawable-mdpi/overscroll_glow_right.9.png and /dev/null differ diff --git a/res/drawable-mdpi/paged_view_indicator.9.png b/res/drawable-mdpi/paged_view_indicator.9.png deleted file mode 100644 index 647b60f37..000000000 Binary files a/res/drawable-mdpi/paged_view_indicator.9.png and /dev/null differ diff --git a/res/drawable-mdpi/portal_container_holo.9.png b/res/drawable-mdpi/portal_container_holo.9.png deleted file mode 100644 index 1e4afae76..000000000 Binary files a/res/drawable-mdpi/portal_container_holo.9.png and /dev/null differ diff --git a/res/drawable-mdpi/portal_ring_inner.png b/res/drawable-mdpi/portal_ring_inner.png new file mode 100644 index 000000000..99aaa60a9 Binary files /dev/null and b/res/drawable-mdpi/portal_ring_inner.png differ diff --git a/res/drawable-mdpi/portal_ring_inner_holo.png b/res/drawable-mdpi/portal_ring_inner_holo.png deleted file mode 100644 index 72e0af8f8..000000000 Binary files a/res/drawable-mdpi/portal_ring_inner_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/portal_ring_inner_nolip.png b/res/drawable-mdpi/portal_ring_inner_nolip.png new file mode 100644 index 000000000..f981778f5 Binary files /dev/null and b/res/drawable-mdpi/portal_ring_inner_nolip.png differ diff --git a/res/drawable-mdpi/portal_ring_inner_nolip_holo.png b/res/drawable-mdpi/portal_ring_inner_nolip_holo.png deleted file mode 100644 index 483f0ebec..000000000 Binary files a/res/drawable-mdpi/portal_ring_inner_nolip_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/portal_ring_outer.png b/res/drawable-mdpi/portal_ring_outer.png new file mode 100644 index 000000000..c98f64b76 Binary files /dev/null and b/res/drawable-mdpi/portal_ring_outer.png differ diff --git a/res/drawable-mdpi/portal_ring_outer_holo.png b/res/drawable-mdpi/portal_ring_outer_holo.png deleted file mode 100644 index e9b35f3f3..000000000 Binary files a/res/drawable-mdpi/portal_ring_outer_holo.png and /dev/null differ diff --git a/res/drawable-mdpi/portal_ring_rest.png b/res/drawable-mdpi/portal_ring_rest.png index d0a976e55..5c33b424d 100644 Binary files a/res/drawable-mdpi/portal_ring_rest.png and b/res/drawable-mdpi/portal_ring_rest.png differ diff --git a/res/drawable-mdpi/quantum_panel.9.png b/res/drawable-mdpi/quantum_panel.9.png deleted file mode 100644 index c5a6eb735..000000000 Binary files a/res/drawable-mdpi/quantum_panel.9.png and /dev/null differ diff --git a/res/drawable-mdpi/quantum_panel_bitmap.9.png b/res/drawable-mdpi/quantum_panel_bitmap.9.png new file mode 100644 index 000000000..86be568fd Binary files /dev/null and b/res/drawable-mdpi/quantum_panel_bitmap.9.png differ diff --git a/res/drawable-mdpi/quantum_panel_dark.9.png b/res/drawable-mdpi/quantum_panel_dark.9.png deleted file mode 100644 index 7728a7268..000000000 Binary files a/res/drawable-mdpi/quantum_panel_dark.9.png and /dev/null differ diff --git a/res/drawable-mdpi/quantum_panel_dark_bitmap.9.png b/res/drawable-mdpi/quantum_panel_dark_bitmap.9.png new file mode 100644 index 000000000..70429b9fc Binary files /dev/null and b/res/drawable-mdpi/quantum_panel_dark_bitmap.9.png differ diff --git a/res/drawable-mdpi/widget_resize_frame.9.png b/res/drawable-mdpi/widget_resize_frame.9.png new file mode 100644 index 000000000..856cec619 Binary files /dev/null and b/res/drawable-mdpi/widget_resize_frame.9.png differ diff --git a/res/drawable-mdpi/widget_resize_frame_holo.9.png b/res/drawable-mdpi/widget_resize_frame_holo.9.png deleted file mode 100644 index 028bd6248..000000000 Binary files a/res/drawable-mdpi/widget_resize_frame_holo.9.png and /dev/null differ diff --git a/res/drawable-mdpi/widget_resize_handle_bottom.png b/res/drawable-mdpi/widget_resize_handle_bottom.png deleted file mode 100644 index c838bf405..000000000 Binary files a/res/drawable-mdpi/widget_resize_handle_bottom.png and /dev/null differ diff --git a/res/drawable-mdpi/widget_resize_handle_left.png b/res/drawable-mdpi/widget_resize_handle_left.png deleted file mode 100644 index ff0b0d357..000000000 Binary files a/res/drawable-mdpi/widget_resize_handle_left.png and /dev/null differ diff --git a/res/drawable-mdpi/widget_resize_handle_right.png b/res/drawable-mdpi/widget_resize_handle_right.png deleted file mode 100644 index fc4808e3a..000000000 Binary files a/res/drawable-mdpi/widget_resize_handle_right.png and /dev/null differ diff --git a/res/drawable-mdpi/widget_resize_handle_top.png b/res/drawable-mdpi/widget_resize_handle_top.png deleted file mode 100644 index 3b1df0170..000000000 Binary files a/res/drawable-mdpi/widget_resize_handle_top.png and /dev/null differ diff --git a/res/drawable-mdpi/widget_resize_shadow.9.png b/res/drawable-mdpi/widget_resize_shadow.9.png new file mode 100644 index 000000000..02522f344 Binary files /dev/null and b/res/drawable-mdpi/widget_resize_shadow.9.png differ diff --git a/res/drawable-v21/quantum_panel.xml b/res/drawable-v21/quantum_panel.xml new file mode 100644 index 000000000..d1c078335 --- /dev/null +++ b/res/drawable-v21/quantum_panel.xml @@ -0,0 +1,22 @@ + + + diff --git a/res/drawable-v21/quantum_panel_dark.xml b/res/drawable-v21/quantum_panel_dark.xml new file mode 100644 index 000000000..405ad5173 --- /dev/null +++ b/res/drawable-v21/quantum_panel_dark.xml @@ -0,0 +1,22 @@ + + + diff --git a/res/drawable-xhdpi/apps_customize_bg.png b/res/drawable-xhdpi/apps_customize_bg.png deleted file mode 100644 index a51cc112b..000000000 Binary files a/res/drawable-xhdpi/apps_customize_bg.png and /dev/null differ diff --git a/res/drawable-xhdpi/bg_appwidget_error.9.png b/res/drawable-xhdpi/bg_appwidget_error.9.png deleted file mode 100644 index b792cc847..000000000 Binary files a/res/drawable-xhdpi/bg_appwidget_error.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/home_press.9.png b/res/drawable-xhdpi/home_press.9.png deleted file mode 100644 index d9abfd358..000000000 Binary files a/res/drawable-xhdpi/home_press.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_arrow_back_grey.png b/res/drawable-xhdpi/ic_arrow_back_grey.png new file mode 100755 index 000000000..79b9b486c Binary files /dev/null and b/res/drawable-xhdpi/ic_arrow_back_grey.png differ diff --git a/res/drawable-xhdpi/ic_home_all_apps_holo_dark.png b/res/drawable-xhdpi/ic_home_all_apps_holo_dark.png deleted file mode 100644 index 81228d402..000000000 Binary files a/res/drawable-xhdpi/ic_home_all_apps_holo_dark.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_info_launcher.png b/res/drawable-xhdpi/ic_info_launcher.png new file mode 100644 index 000000000..076b59bf7 Binary files /dev/null and b/res/drawable-xhdpi/ic_info_launcher.png differ diff --git a/res/drawable-xhdpi/ic_launcher_clear_active_holo.png b/res/drawable-xhdpi/ic_launcher_clear_active_holo.png deleted file mode 100644 index 1a7e53ddb..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_clear_active_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_launcher_clear_normal_holo.png b/res/drawable-xhdpi/ic_launcher_clear_normal_holo.png deleted file mode 100644 index d4965d9f8..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_clear_normal_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_launcher_info_active_holo.png b/res/drawable-xhdpi/ic_launcher_info_active_holo.png deleted file mode 100644 index b8cdbc4f8..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_info_active_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_launcher_info_normal_holo.png b/res/drawable-xhdpi/ic_launcher_info_normal_holo.png deleted file mode 100644 index f503fb82d..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_info_normal_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_launcher_market_holo.png b/res/drawable-xhdpi/ic_launcher_market_holo.png deleted file mode 100644 index 958f0de3c..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_market_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png b/res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png deleted file mode 100644 index c155274bd..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png b/res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png deleted file mode 100644 index 2ec7ad9b4..000000000 Binary files a/res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_pageindicator_current.png b/res/drawable-xhdpi/ic_pageindicator_current.png index 8fa774dee..3054f2f4f 100644 Binary files a/res/drawable-xhdpi/ic_pageindicator_current.png and b/res/drawable-xhdpi/ic_pageindicator_current.png differ diff --git a/res/drawable-xhdpi/ic_pageindicator_current_folder.png b/res/drawable-xhdpi/ic_pageindicator_current_folder.png new file mode 100644 index 000000000..cd92e9f21 Binary files /dev/null and b/res/drawable-xhdpi/ic_pageindicator_current_folder.png differ diff --git a/res/drawable-xhdpi/ic_pageindicator_default.png b/res/drawable-xhdpi/ic_pageindicator_default.png index 8eb5eb08d..38538dcf0 100644 Binary files a/res/drawable-xhdpi/ic_pageindicator_default.png and b/res/drawable-xhdpi/ic_pageindicator_default.png differ diff --git a/res/drawable-xhdpi/ic_pageindicator_default_folder.png b/res/drawable-xhdpi/ic_pageindicator_default_folder.png new file mode 100644 index 000000000..e7c46e3a1 Binary files /dev/null and b/res/drawable-xhdpi/ic_pageindicator_default_folder.png differ diff --git a/res/drawable-xhdpi/ic_remove_launcher.png b/res/drawable-xhdpi/ic_remove_launcher.png new file mode 100644 index 000000000..de058893a Binary files /dev/null and b/res/drawable-xhdpi/ic_remove_launcher.png differ diff --git a/res/drawable-xhdpi/ic_search_grey.png b/res/drawable-xhdpi/ic_search_grey.png new file mode 100755 index 000000000..bd5fdf444 Binary files /dev/null and b/res/drawable-xhdpi/ic_search_grey.png differ diff --git a/res/drawable-xhdpi/ic_uninstall_launcher.png b/res/drawable-xhdpi/ic_uninstall_launcher.png new file mode 100644 index 000000000..dd50e88c6 Binary files /dev/null and b/res/drawable-xhdpi/ic_uninstall_launcher.png differ diff --git a/res/drawable-xhdpi/ic_widget_resize_handle.png b/res/drawable-xhdpi/ic_widget_resize_handle.png new file mode 100644 index 000000000..f445a1c08 Binary files /dev/null and b/res/drawable-xhdpi/ic_widget_resize_handle.png differ diff --git a/res/drawable-xhdpi/on_boarding_welcome.png b/res/drawable-xhdpi/on_boarding_welcome.png deleted file mode 100644 index 8c101e0db..000000000 Binary files a/res/drawable-xhdpi/on_boarding_welcome.png and /dev/null differ diff --git a/res/drawable-xhdpi/overscroll_glow_left.9.png b/res/drawable-xhdpi/overscroll_glow_left.9.png deleted file mode 100644 index 4f248f70b..000000000 Binary files a/res/drawable-xhdpi/overscroll_glow_left.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/overscroll_glow_right.9.png b/res/drawable-xhdpi/overscroll_glow_right.9.png deleted file mode 100644 index 818a70db8..000000000 Binary files a/res/drawable-xhdpi/overscroll_glow_right.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/paged_view_indicator.9.png b/res/drawable-xhdpi/paged_view_indicator.9.png deleted file mode 100644 index fb8a22820..000000000 Binary files a/res/drawable-xhdpi/paged_view_indicator.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/portal_container_holo.9.png b/res/drawable-xhdpi/portal_container_holo.9.png deleted file mode 100644 index cedbdc401..000000000 Binary files a/res/drawable-xhdpi/portal_container_holo.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/portal_ring_inner.png b/res/drawable-xhdpi/portal_ring_inner.png new file mode 100644 index 000000000..7b6a8a04e Binary files /dev/null and b/res/drawable-xhdpi/portal_ring_inner.png differ diff --git a/res/drawable-xhdpi/portal_ring_inner_holo.png b/res/drawable-xhdpi/portal_ring_inner_holo.png deleted file mode 100644 index f9acfa284..000000000 Binary files a/res/drawable-xhdpi/portal_ring_inner_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/portal_ring_inner_nolip.png b/res/drawable-xhdpi/portal_ring_inner_nolip.png new file mode 100644 index 000000000..4b84436ee Binary files /dev/null and b/res/drawable-xhdpi/portal_ring_inner_nolip.png differ diff --git a/res/drawable-xhdpi/portal_ring_inner_nolip_holo.png b/res/drawable-xhdpi/portal_ring_inner_nolip_holo.png deleted file mode 100644 index eb2cf5f8b..000000000 Binary files a/res/drawable-xhdpi/portal_ring_inner_nolip_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/portal_ring_outer.png b/res/drawable-xhdpi/portal_ring_outer.png new file mode 100644 index 000000000..79c188873 Binary files /dev/null and b/res/drawable-xhdpi/portal_ring_outer.png differ diff --git a/res/drawable-xhdpi/portal_ring_outer_holo.png b/res/drawable-xhdpi/portal_ring_outer_holo.png deleted file mode 100644 index f32051dcf..000000000 Binary files a/res/drawable-xhdpi/portal_ring_outer_holo.png and /dev/null differ diff --git a/res/drawable-xhdpi/portal_ring_rest.png b/res/drawable-xhdpi/portal_ring_rest.png index ff0369a26..544a74f9f 100644 Binary files a/res/drawable-xhdpi/portal_ring_rest.png and b/res/drawable-xhdpi/portal_ring_rest.png differ diff --git a/res/drawable-xhdpi/quantum_panel.9.png b/res/drawable-xhdpi/quantum_panel.9.png deleted file mode 100644 index 1797ad500..000000000 Binary files a/res/drawable-xhdpi/quantum_panel.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/quantum_panel_bitmap.9.png b/res/drawable-xhdpi/quantum_panel_bitmap.9.png new file mode 100644 index 000000000..13bdf09ec Binary files /dev/null and b/res/drawable-xhdpi/quantum_panel_bitmap.9.png differ diff --git a/res/drawable-xhdpi/quantum_panel_dark.9.png b/res/drawable-xhdpi/quantum_panel_dark.9.png deleted file mode 100644 index 4c1868b55..000000000 Binary files a/res/drawable-xhdpi/quantum_panel_dark.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/quantum_panel_dark_bitmap.9.png b/res/drawable-xhdpi/quantum_panel_dark_bitmap.9.png new file mode 100644 index 000000000..ac2e423f2 Binary files /dev/null and b/res/drawable-xhdpi/quantum_panel_dark_bitmap.9.png differ diff --git a/res/drawable-xhdpi/widget_resize_frame.9.png b/res/drawable-xhdpi/widget_resize_frame.9.png new file mode 100644 index 000000000..bf7cc6b82 Binary files /dev/null and b/res/drawable-xhdpi/widget_resize_frame.9.png differ diff --git a/res/drawable-xhdpi/widget_resize_frame_holo.9.png b/res/drawable-xhdpi/widget_resize_frame_holo.9.png deleted file mode 100644 index 76cec606d..000000000 Binary files a/res/drawable-xhdpi/widget_resize_frame_holo.9.png and /dev/null differ diff --git a/res/drawable-xhdpi/widget_resize_handle_bottom.png b/res/drawable-xhdpi/widget_resize_handle_bottom.png deleted file mode 100644 index 19437d7dc..000000000 Binary files a/res/drawable-xhdpi/widget_resize_handle_bottom.png and /dev/null differ diff --git a/res/drawable-xhdpi/widget_resize_handle_left.png b/res/drawable-xhdpi/widget_resize_handle_left.png deleted file mode 100644 index 28c5487ec..000000000 Binary files a/res/drawable-xhdpi/widget_resize_handle_left.png and /dev/null differ diff --git a/res/drawable-xhdpi/widget_resize_handle_right.png b/res/drawable-xhdpi/widget_resize_handle_right.png deleted file mode 100644 index 4f672a602..000000000 Binary files a/res/drawable-xhdpi/widget_resize_handle_right.png and /dev/null differ diff --git a/res/drawable-xhdpi/widget_resize_handle_top.png b/res/drawable-xhdpi/widget_resize_handle_top.png deleted file mode 100644 index e866c008c..000000000 Binary files a/res/drawable-xhdpi/widget_resize_handle_top.png and /dev/null differ diff --git a/res/drawable-xhdpi/widget_resize_shadow.9.png b/res/drawable-xhdpi/widget_resize_shadow.9.png new file mode 100644 index 000000000..96dee7f01 Binary files /dev/null and b/res/drawable-xhdpi/widget_resize_shadow.9.png differ diff --git a/res/drawable-xxhdpi/apps_customize_bg.png b/res/drawable-xxhdpi/apps_customize_bg.png deleted file mode 100644 index a51cc112b..000000000 Binary files a/res/drawable-xxhdpi/apps_customize_bg.png and /dev/null differ diff --git a/res/drawable-xxhdpi/arrow_dashed.png b/res/drawable-xxhdpi/arrow_dashed.png deleted file mode 100644 index b64f4d0fe..000000000 Binary files a/res/drawable-xxhdpi/arrow_dashed.png and /dev/null differ diff --git a/res/drawable-xxhdpi/default_widget_preview_holo.9.png b/res/drawable-xxhdpi/default_widget_preview_holo.9.png deleted file mode 100644 index 0f62097a8..000000000 Binary files a/res/drawable-xxhdpi/default_widget_preview_holo.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/hotseat_bg_panel.9.png b/res/drawable-xxhdpi/hotseat_bg_panel.9.png deleted file mode 100644 index 40fc076ff..000000000 Binary files a/res/drawable-xxhdpi/hotseat_bg_panel.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/hotseat_scrubber_holo.9.png b/res/drawable-xxhdpi/hotseat_scrubber_holo.9.png deleted file mode 100644 index 8a77536be..000000000 Binary files a/res/drawable-xxhdpi/hotseat_scrubber_holo.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/hotseat_track_holo.9.png b/res/drawable-xxhdpi/hotseat_track_holo.9.png deleted file mode 100644 index dd2216fb7..000000000 Binary files a/res/drawable-xxhdpi/hotseat_track_holo.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_arrow_back_grey.png b/res/drawable-xxhdpi/ic_arrow_back_grey.png new file mode 100755 index 000000000..8e42e091d Binary files /dev/null and b/res/drawable-xxhdpi/ic_arrow_back_grey.png differ diff --git a/res/drawable-xxhdpi/ic_home_all_apps_holo_dark.png b/res/drawable-xxhdpi/ic_home_all_apps_holo_dark.png deleted file mode 100644 index 0b8e88c16..000000000 Binary files a/res/drawable-xxhdpi/ic_home_all_apps_holo_dark.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_home_google_logo_normal_holo.png b/res/drawable-xxhdpi/ic_home_google_logo_normal_holo.png deleted file mode 100644 index a47b2ba99..000000000 Binary files a/res/drawable-xxhdpi/ic_home_google_logo_normal_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_home_google_logo_pressed_holo.png b/res/drawable-xxhdpi/ic_home_google_logo_pressed_holo.png deleted file mode 100644 index 75625d120..000000000 Binary files a/res/drawable-xxhdpi/ic_home_google_logo_pressed_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_home_search_pressed_holo.png b/res/drawable-xxhdpi/ic_home_search_pressed_holo.png deleted file mode 100644 index 800d99430..000000000 Binary files a/res/drawable-xxhdpi/ic_home_search_pressed_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_home_voice_search_pressed_holo.png b/res/drawable-xxhdpi/ic_home_voice_search_pressed_holo.png deleted file mode 100644 index 27a589782..000000000 Binary files a/res/drawable-xxhdpi/ic_home_voice_search_pressed_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_info_launcher.png b/res/drawable-xxhdpi/ic_info_launcher.png new file mode 100644 index 000000000..386d09147 Binary files /dev/null and b/res/drawable-xxhdpi/ic_info_launcher.png differ diff --git a/res/drawable-xxhdpi/ic_launcher_clear_active_holo.png b/res/drawable-xxhdpi/ic_launcher_clear_active_holo.png deleted file mode 100644 index 95cf84115..000000000 Binary files a/res/drawable-xxhdpi/ic_launcher_clear_active_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_launcher_clear_normal_holo.png b/res/drawable-xxhdpi/ic_launcher_clear_normal_holo.png deleted file mode 100644 index b0f5a2702..000000000 Binary files a/res/drawable-xxhdpi/ic_launcher_clear_normal_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_launcher_info_active_holo.png b/res/drawable-xxhdpi/ic_launcher_info_active_holo.png deleted file mode 100644 index 57f332a94..000000000 Binary files a/res/drawable-xxhdpi/ic_launcher_info_active_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_launcher_info_normal_holo.png b/res/drawable-xxhdpi/ic_launcher_info_normal_holo.png deleted file mode 100644 index 94f0955d6..000000000 Binary files a/res/drawable-xxhdpi/ic_launcher_info_normal_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_launcher_trashcan_active_holo.png b/res/drawable-xxhdpi/ic_launcher_trashcan_active_holo.png deleted file mode 100644 index 3bb098c2b..000000000 Binary files a/res/drawable-xxhdpi/ic_launcher_trashcan_active_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_launcher_trashcan_normal_holo.png b/res/drawable-xxhdpi/ic_launcher_trashcan_normal_holo.png deleted file mode 100644 index 550cc5bb8..000000000 Binary files a/res/drawable-xxhdpi/ic_launcher_trashcan_normal_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_pageindicator_current.png b/res/drawable-xxhdpi/ic_pageindicator_current.png index 22b290e69..5941c8e4f 100644 Binary files a/res/drawable-xxhdpi/ic_pageindicator_current.png and b/res/drawable-xxhdpi/ic_pageindicator_current.png differ diff --git a/res/drawable-xxhdpi/ic_pageindicator_current_folder.png b/res/drawable-xxhdpi/ic_pageindicator_current_folder.png new file mode 100644 index 000000000..602b89a40 Binary files /dev/null and b/res/drawable-xxhdpi/ic_pageindicator_current_folder.png differ diff --git a/res/drawable-xxhdpi/ic_pageindicator_default.png b/res/drawable-xxhdpi/ic_pageindicator_default.png index e608cae30..3fa9e5fd7 100644 Binary files a/res/drawable-xxhdpi/ic_pageindicator_default.png and b/res/drawable-xxhdpi/ic_pageindicator_default.png differ diff --git a/res/drawable-xxhdpi/ic_pageindicator_default_folder.png b/res/drawable-xxhdpi/ic_pageindicator_default_folder.png new file mode 100644 index 000000000..bbcd7f91e Binary files /dev/null and b/res/drawable-xxhdpi/ic_pageindicator_default_folder.png differ diff --git a/res/drawable-xxhdpi/ic_qs_remote_display.png b/res/drawable-xxhdpi/ic_qs_remote_display.png deleted file mode 100644 index 25ea9fab2..000000000 Binary files a/res/drawable-xxhdpi/ic_qs_remote_display.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_qs_remote_display_connected.png b/res/drawable-xxhdpi/ic_qs_remote_display_connected.png deleted file mode 100644 index 33a8d2d5a..000000000 Binary files a/res/drawable-xxhdpi/ic_qs_remote_display_connected.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_remove_launcher.png b/res/drawable-xxhdpi/ic_remove_launcher.png new file mode 100644 index 000000000..7c28bb0bb Binary files /dev/null and b/res/drawable-xxhdpi/ic_remove_launcher.png differ diff --git a/res/drawable-xxhdpi/ic_search_grey.png b/res/drawable-xxhdpi/ic_search_grey.png new file mode 100755 index 000000000..1d5c91361 Binary files /dev/null and b/res/drawable-xxhdpi/ic_search_grey.png differ diff --git a/res/drawable-xxhdpi/ic_uninstall_launcher.png b/res/drawable-xxhdpi/ic_uninstall_launcher.png new file mode 100644 index 000000000..872e82933 Binary files /dev/null and b/res/drawable-xxhdpi/ic_uninstall_launcher.png differ diff --git a/res/drawable-xxhdpi/ic_widget_resize_handle.png b/res/drawable-xxhdpi/ic_widget_resize_handle.png new file mode 100644 index 000000000..144cac996 Binary files /dev/null and b/res/drawable-xxhdpi/ic_widget_resize_handle.png differ diff --git a/res/drawable-xxhdpi/overscroll_glow_left.9.png b/res/drawable-xxhdpi/overscroll_glow_left.9.png deleted file mode 100644 index 1a895cdc8..000000000 Binary files a/res/drawable-xxhdpi/overscroll_glow_left.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/overscroll_glow_right.9.png b/res/drawable-xxhdpi/overscroll_glow_right.9.png deleted file mode 100644 index 576676145..000000000 Binary files a/res/drawable-xxhdpi/overscroll_glow_right.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/portal_container_holo.9.png b/res/drawable-xxhdpi/portal_container_holo.9.png deleted file mode 100644 index 599a076d8..000000000 Binary files a/res/drawable-xxhdpi/portal_container_holo.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/portal_ring_inner.png b/res/drawable-xxhdpi/portal_ring_inner.png new file mode 100644 index 000000000..d088a172d Binary files /dev/null and b/res/drawable-xxhdpi/portal_ring_inner.png differ diff --git a/res/drawable-xxhdpi/portal_ring_inner_holo.png b/res/drawable-xxhdpi/portal_ring_inner_holo.png deleted file mode 100644 index 8cd6a5930..000000000 Binary files a/res/drawable-xxhdpi/portal_ring_inner_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/portal_ring_inner_nolip.png b/res/drawable-xxhdpi/portal_ring_inner_nolip.png new file mode 100644 index 000000000..0fad65629 Binary files /dev/null and b/res/drawable-xxhdpi/portal_ring_inner_nolip.png differ diff --git a/res/drawable-xxhdpi/portal_ring_inner_nolip_holo.png b/res/drawable-xxhdpi/portal_ring_inner_nolip_holo.png deleted file mode 100644 index 0fad65629..000000000 Binary files a/res/drawable-xxhdpi/portal_ring_inner_nolip_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/portal_ring_outer.png b/res/drawable-xxhdpi/portal_ring_outer.png new file mode 100644 index 000000000..45ac0406c Binary files /dev/null and b/res/drawable-xxhdpi/portal_ring_outer.png differ diff --git a/res/drawable-xxhdpi/portal_ring_outer_holo.png b/res/drawable-xxhdpi/portal_ring_outer_holo.png deleted file mode 100644 index 0aee4f027..000000000 Binary files a/res/drawable-xxhdpi/portal_ring_outer_holo.png and /dev/null differ diff --git a/res/drawable-xxhdpi/quantum_panel.9.png b/res/drawable-xxhdpi/quantum_panel.9.png deleted file mode 100644 index d7ba87416..000000000 Binary files a/res/drawable-xxhdpi/quantum_panel.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/quantum_panel_bitmap.9.png b/res/drawable-xxhdpi/quantum_panel_bitmap.9.png new file mode 100644 index 000000000..b44269ea9 Binary files /dev/null and b/res/drawable-xxhdpi/quantum_panel_bitmap.9.png differ diff --git a/res/drawable-xxhdpi/quantum_panel_dark.9.png b/res/drawable-xxhdpi/quantum_panel_dark.9.png deleted file mode 100644 index 17ba0f116..000000000 Binary files a/res/drawable-xxhdpi/quantum_panel_dark.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/quantum_panel_dark_bitmap.9.png b/res/drawable-xxhdpi/quantum_panel_dark_bitmap.9.png new file mode 100644 index 000000000..7979cf747 Binary files /dev/null and b/res/drawable-xxhdpi/quantum_panel_dark_bitmap.9.png differ diff --git a/res/drawable-xxhdpi/widget_resize_frame.9.png b/res/drawable-xxhdpi/widget_resize_frame.9.png new file mode 100644 index 000000000..7e189d442 Binary files /dev/null and b/res/drawable-xxhdpi/widget_resize_frame.9.png differ diff --git a/res/drawable-xxhdpi/widget_resize_frame_holo.9.png b/res/drawable-xxhdpi/widget_resize_frame_holo.9.png deleted file mode 100644 index 1681387a1..000000000 Binary files a/res/drawable-xxhdpi/widget_resize_frame_holo.9.png and /dev/null differ diff --git a/res/drawable-xxhdpi/widget_resize_handle_bottom.png b/res/drawable-xxhdpi/widget_resize_handle_bottom.png deleted file mode 100644 index d549fcd91..000000000 Binary files a/res/drawable-xxhdpi/widget_resize_handle_bottom.png and /dev/null differ diff --git a/res/drawable-xxhdpi/widget_resize_handle_left.png b/res/drawable-xxhdpi/widget_resize_handle_left.png deleted file mode 100644 index dd56dad15..000000000 Binary files a/res/drawable-xxhdpi/widget_resize_handle_left.png and /dev/null differ diff --git a/res/drawable-xxhdpi/widget_resize_handle_right.png b/res/drawable-xxhdpi/widget_resize_handle_right.png deleted file mode 100644 index 296a1c166..000000000 Binary files a/res/drawable-xxhdpi/widget_resize_handle_right.png and /dev/null differ diff --git a/res/drawable-xxhdpi/widget_resize_handle_top.png b/res/drawable-xxhdpi/widget_resize_handle_top.png deleted file mode 100644 index e86270ad1..000000000 Binary files a/res/drawable-xxhdpi/widget_resize_handle_top.png and /dev/null differ diff --git a/res/drawable-xxhdpi/widget_resize_shadow.9.png b/res/drawable-xxhdpi/widget_resize_shadow.9.png new file mode 100644 index 000000000..41c448bbb Binary files /dev/null and b/res/drawable-xxhdpi/widget_resize_shadow.9.png differ diff --git a/res/drawable-xxxhdpi/ic_arrow_back_grey.png b/res/drawable-xxxhdpi/ic_arrow_back_grey.png new file mode 100755 index 000000000..854a9bd1a Binary files /dev/null and b/res/drawable-xxxhdpi/ic_arrow_back_grey.png differ diff --git a/res/drawable-xxxhdpi/ic_info_launcher.png b/res/drawable-xxxhdpi/ic_info_launcher.png new file mode 100644 index 000000000..bf39e5be2 Binary files /dev/null and b/res/drawable-xxxhdpi/ic_info_launcher.png differ diff --git a/res/drawable-xxxhdpi/ic_remove_launcher.png b/res/drawable-xxxhdpi/ic_remove_launcher.png new file mode 100644 index 000000000..7043be015 Binary files /dev/null and b/res/drawable-xxxhdpi/ic_remove_launcher.png differ diff --git a/res/drawable-xxxhdpi/ic_search_grey.png b/res/drawable-xxxhdpi/ic_search_grey.png new file mode 100755 index 000000000..28519fda6 Binary files /dev/null and b/res/drawable-xxxhdpi/ic_search_grey.png differ diff --git a/res/drawable-xxxhdpi/ic_uninstall_launcher.png b/res/drawable-xxxhdpi/ic_uninstall_launcher.png new file mode 100644 index 000000000..77a3302f6 Binary files /dev/null and b/res/drawable-xxxhdpi/ic_uninstall_launcher.png differ diff --git a/res/drawable-xxxhdpi/ic_widget_resize_handle.png b/res/drawable-xxxhdpi/ic_widget_resize_handle.png new file mode 100644 index 000000000..4bde6b9a6 Binary files /dev/null and b/res/drawable-xxxhdpi/ic_widget_resize_handle.png differ diff --git a/res/drawable-xxxhdpi/portal_ring_inner.png b/res/drawable-xxxhdpi/portal_ring_inner.png new file mode 100644 index 000000000..34a359997 Binary files /dev/null and b/res/drawable-xxxhdpi/portal_ring_inner.png differ diff --git a/res/drawable-xxxhdpi/portal_ring_inner_nolip.png b/res/drawable-xxxhdpi/portal_ring_inner_nolip.png new file mode 100644 index 000000000..8cebb3535 Binary files /dev/null and b/res/drawable-xxxhdpi/portal_ring_inner_nolip.png differ diff --git a/res/drawable-xxxhdpi/portal_ring_outer.png b/res/drawable-xxxhdpi/portal_ring_outer.png new file mode 100644 index 000000000..d2df32267 Binary files /dev/null and b/res/drawable-xxxhdpi/portal_ring_outer.png differ diff --git a/res/drawable-xxxhdpi/portal_ring_rest.png b/res/drawable-xxxhdpi/portal_ring_rest.png new file mode 100644 index 000000000..11e92eeb6 Binary files /dev/null and b/res/drawable-xxxhdpi/portal_ring_rest.png differ diff --git a/res/drawable-xxxhdpi/quantum_panel_bitmap.9.png b/res/drawable-xxxhdpi/quantum_panel_bitmap.9.png new file mode 100644 index 000000000..bc887fe91 Binary files /dev/null and b/res/drawable-xxxhdpi/quantum_panel_bitmap.9.png differ diff --git a/res/drawable-xxxhdpi/quantum_panel_dark_bitmap.9.png b/res/drawable-xxxhdpi/quantum_panel_dark_bitmap.9.png new file mode 100644 index 000000000..7cfd6e477 Binary files /dev/null and b/res/drawable-xxxhdpi/quantum_panel_dark_bitmap.9.png differ diff --git a/res/drawable-xxxhdpi/widget_resize_frame.9.png b/res/drawable-xxxhdpi/widget_resize_frame.9.png new file mode 100644 index 000000000..cb609cef9 Binary files /dev/null and b/res/drawable-xxxhdpi/widget_resize_frame.9.png differ diff --git a/res/drawable-xxxhdpi/widget_resize_shadow.9.png b/res/drawable-xxxhdpi/widget_resize_shadow.9.png new file mode 100644 index 000000000..82c8b9c7c Binary files /dev/null and b/res/drawable-xxxhdpi/widget_resize_shadow.9.png differ diff --git a/res/drawable/all_apps_search_bg.xml b/res/drawable/all_apps_search_bg.xml new file mode 100644 index 000000000..a09f88fd4 --- /dev/null +++ b/res/drawable/all_apps_search_bg.xml @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/res/drawable/bg_screenpanel.xml b/res/drawable/bg_screenpanel.xml new file mode 100644 index 000000000..cdb71dfa1 --- /dev/null +++ b/res/drawable/bg_screenpanel.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/res/drawable/container_fastscroll_popup_bg.xml b/res/drawable/container_fastscroll_popup_bg.xml new file mode 100644 index 000000000..2ef07ab96 --- /dev/null +++ b/res/drawable/container_fastscroll_popup_bg.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/res/drawable/info_target_selector.xml b/res/drawable/info_target_selector.xml deleted file mode 100644 index f3a7016c3..000000000 --- a/res/drawable/info_target_selector.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/res/drawable/quantum_panel.xml b/res/drawable/quantum_panel.xml new file mode 100644 index 000000000..1f4fb711b --- /dev/null +++ b/res/drawable/quantum_panel.xml @@ -0,0 +1,18 @@ + + + diff --git a/res/drawable/quantum_panel_dark.xml b/res/drawable/quantum_panel_dark.xml new file mode 100644 index 000000000..6642e78ac --- /dev/null +++ b/res/drawable/quantum_panel_dark.xml @@ -0,0 +1,18 @@ + + + diff --git a/res/drawable/quantum_panel_shape.xml b/res/drawable/quantum_panel_shape.xml new file mode 100644 index 000000000..108361576 --- /dev/null +++ b/res/drawable/quantum_panel_shape.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/res/drawable/quantum_panel_shape_dark.xml b/res/drawable/quantum_panel_shape_dark.xml new file mode 100644 index 000000000..c3821c416 --- /dev/null +++ b/res/drawable/quantum_panel_shape_dark.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/res/drawable/remove_target_selector.xml b/res/drawable/remove_target_selector.xml deleted file mode 100644 index 5e071fbfa..000000000 --- a/res/drawable/remove_target_selector.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/res/drawable/uninstall_target_selector.xml b/res/drawable/uninstall_target_selector.xml deleted file mode 100644 index 229942e3a..000000000 --- a/res/drawable/uninstall_target_selector.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/res/drawable/widgets_row_divider.xml b/res/drawable/widgets_row_divider.xml new file mode 100644 index 000000000..bb5b6b55b --- /dev/null +++ b/res/drawable/widgets_row_divider.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml index 6f95bd506..6500ebcd2 100644 --- a/res/layout-land/launcher.xml +++ b/res/layout-land/launcher.xml @@ -18,11 +18,9 @@ + + + android:layout_gravity="right" /> - + + diff --git a/res/layout-land/migration_cling.xml b/res/layout-land/migration_cling.xml index db93da87a..269c1aee6 100644 --- a/res/layout-land/migration_cling.xml +++ b/res/layout-land/migration_cling.xml @@ -46,6 +46,7 @@ android:layout_width="@dimen/cling_migration_content_width" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/cling_migration_content_margin" + android:layout_marginRight="@dimen/cling_migration_content_margin" android:orientation="vertical" android:paddingLeft="24dp" android:paddingRight="24dp" > diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml index af30a32e5..d0772ee70 100644 --- a/res/layout-port/launcher.xml +++ b/res/layout-port/launcher.xml @@ -22,7 +22,6 @@ android:id="@+id/launcher" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@drawable/workspace_bg" android:fitsSystemWindows="true"> + + - + + diff --git a/res/layout-port/migration_cling.xml b/res/layout-port/migration_cling.xml index 81689d38b..3f696a216 100644 --- a/res/layout-port/migration_cling.xml +++ b/res/layout-port/migration_cling.xml @@ -48,6 +48,7 @@ android:layout_height="wrap_content" android:layout_below="@+id/ic_cling_migration" android:layout_marginStart="@dimen/cling_migration_content_margin" + android:layout_marginLeft="@dimen/cling_migration_content_margin" android:orientation="vertical" android:paddingLeft="24dp" android:paddingRight="24dp" > diff --git a/res/layout-sw720dp/launcher.xml b/res/layout-sw720dp/launcher.xml index 960ccf330..802922ec1 100644 --- a/res/layout-sw720dp/launcher.xml +++ b/res/layout-sw720dp/launcher.xml @@ -18,11 +18,9 @@ + + - - + + diff --git a/res/layout/add_list_item.xml b/res/layout/add_list_item.xml deleted file mode 100644 index e937d7bc1..000000000 --- a/res/layout/add_list_item.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml new file mode 100644 index 000000000..1bf54eefb --- /dev/null +++ b/res/layout/all_apps.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/all_apps_button.xml b/res/layout/all_apps_button.xml index 9d6d82bb2..68cc10932 100644 --- a/res/layout/all_apps_button.xml +++ b/res/layout/all_apps_button.xml @@ -15,5 +15,5 @@ --> diff --git a/res/layout/all_apps_container.xml b/res/layout/all_apps_container.xml new file mode 100644 index 000000000..626edafab --- /dev/null +++ b/res/layout/all_apps_container.xml @@ -0,0 +1,38 @@ + + + + + + + + + \ No newline at end of file diff --git a/res/layout/all_apps_empty_search.xml b/res/layout/all_apps_empty_search.xml new file mode 100644 index 000000000..f60c4a09a --- /dev/null +++ b/res/layout/all_apps_empty_search.xml @@ -0,0 +1,28 @@ + + + + diff --git a/res/layout/all_apps_icon.xml b/res/layout/all_apps_icon.xml new file mode 100644 index 000000000..0985e95c0 --- /dev/null +++ b/res/layout/all_apps_icon.xml @@ -0,0 +1,29 @@ + + + + diff --git a/res/layout/all_apps_prediction_bar_icon.xml b/res/layout/all_apps_prediction_bar_icon.xml new file mode 100644 index 000000000..341d8ef4f --- /dev/null +++ b/res/layout/all_apps_prediction_bar_icon.xml @@ -0,0 +1,29 @@ + + + + diff --git a/res/layout/all_apps_search_bar.xml b/res/layout/all_apps_search_bar.xml new file mode 100644 index 000000000..cf30eac36 --- /dev/null +++ b/res/layout/all_apps_search_bar.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/app_icon.xml b/res/layout/app_icon.xml new file mode 100644 index 000000000..831cee5b0 --- /dev/null +++ b/res/layout/app_icon.xml @@ -0,0 +1,19 @@ + + + + diff --git a/res/layout/application.xml b/res/layout/application.xml deleted file mode 100644 index c21dea070..000000000 --- a/res/layout/application.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/res/layout/apps_customize_application.xml b/res/layout/apps_customize_application.xml deleted file mode 100644 index c56cdf3d2..000000000 --- a/res/layout/apps_customize_application.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - diff --git a/res/layout/apps_customize_pane.xml b/res/layout/apps_customize_pane.xml deleted file mode 100644 index e42576ffe..000000000 --- a/res/layout/apps_customize_pane.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/res/layout/apps_customize_progressbar.xml b/res/layout/apps_customize_progressbar.xml deleted file mode 100644 index 6aa90999c..000000000 --- a/res/layout/apps_customize_progressbar.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/res/layout/apps_customize_widget.xml b/res/layout/apps_customize_widget.xml deleted file mode 100644 index a8344e3ff..000000000 --- a/res/layout/apps_customize_widget.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/layout/appwidget_error.xml b/res/layout/appwidget_error.xml index 03d4ae424..708ece4e2 100644 --- a/res/layout/appwidget_error.xml +++ b/res/layout/appwidget_error.xml @@ -15,15 +15,12 @@ --> diff --git a/res/layout/dummy_widget.xml b/res/layout/dummy_widget.xml new file mode 100644 index 000000000..a0fa8fc3e --- /dev/null +++ b/res/layout/dummy_widget.xml @@ -0,0 +1,35 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/folder_application.xml b/res/layout/folder_application.xml index b48b61331..4d003313e 100644 --- a/res/layout/folder_application.xml +++ b/res/layout/folder_application.xml @@ -15,5 +15,5 @@ --> diff --git a/res/layout/folder_icon.xml b/res/layout/folder_icon.xml index fd45d7685..237af6890 100644 --- a/res/layout/folder_icon.xml +++ b/res/layout/folder_icon.xml @@ -26,9 +26,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:antialias="true" - android:src="@drawable/portal_ring_inner_holo"/> + android:src="@drawable/portal_ring_inner"/> - - - - - - - - - diff --git a/res/layout/search_drop_target_bar.xml b/res/layout/search_drop_target_bar.xml index af2d01634..4737ee1bc 100644 --- a/res/layout/search_drop_target_bar.xml +++ b/res/layout/search_drop_target_bar.xml @@ -17,8 +17,7 @@ + android:focusable="false" > @@ -37,8 +36,7 @@ + android:text="@string/delete_target_label" /> + + + + + + + \ No newline at end of file diff --git a/res/layout/user_folder.xml b/res/layout/user_folder.xml index ed8d43e46..ecf7def48 100644 --- a/res/layout/user_folder.xml +++ b/res/layout/user_folder.xml @@ -1,5 +1,6 @@ - - - + android:background="@drawable/quantum_panel" + android:elevation="5dp" + android:orientation="vertical" > - - - - - + + + + + + + + + - + android:clipChildren="false" + android:orientation="horizontal" + android:paddingLeft="8dp" + android:paddingRight="8dp" > + + + + + + + + \ No newline at end of file diff --git a/res/layout/widget_cell.xml b/res/layout/widget_cell.xml new file mode 100644 index 000000000..7fefebaec --- /dev/null +++ b/res/layout/widget_cell.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/widgets_list_row_view.xml b/res/layout/widgets_list_row_view.xml new file mode 100644 index 000000000..ced564801 --- /dev/null +++ b/res/layout/widgets_list_row_view.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + diff --git a/res/layout/widgets_view.xml b/res/layout/widgets_view.xml new file mode 100644 index 000000000..755634f82 --- /dev/null +++ b/res/layout/widgets_view.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/mipmap-xxhdpi/on_boarding_welcome.png b/res/mipmap-xxhdpi/on_boarding_welcome.png deleted file mode 100644 index 7b11dea0e..000000000 Binary files a/res/mipmap-xxhdpi/on_boarding_welcome.png and /dev/null differ diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index f37f08f3b..700452463 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Tuis" - "Android-kernprogramme" + "Werk" "Program is nie geïnstalleer nie." "Program is nie beskikbaar nie" "Afgelaaide program in veiligmodus gedeaktiveer" "Legstukke gedeaktiveer in Veiligmodus" - "Legstukke" - "Legstukke" "Wys Mem" "Raak en hou om \'n legstuk op te tel." "%1$d × %2$d" - "Kan nie item op hierdie Tuisskerm laat los nie." - "Kies legstuk om te skep" - "Vouernaam" - "Hernoem vouer" - "OK" - "Kanselleer" - "Voeg by Tuisskerm" - "Programme" - "Kortpaaie" - "Legstukke" - "Niks meer spasie op jou Tuisskerms nie." + "Deursoek programme" + "Laai tans programme …" + "Geen programme gevind wat met \"%1$s\" ooreenstem nie" "Niks meer spasie op die tuisskerm nie." "Geen plek meer in die Gunstelinge-laai nie" - "Hierdie legstuk is te groot vir die Gunstelinge-laai" - "Kortpad \"%s\" is geskep." - "Kortpad \"%s\" is verwyder." - "Kortpad \"%s\" bestaan reeds." - "Kies kortpad" - "Kies program" "Programme" "Tuis" - "Verwyder" - "Deïnstalleer" "Verwyder" "Deïnstalleer" "Programinligting" - "Programme" - "Verwyder" - "Deïnstalleer opdatering" - "Deïnstalleer program" - "Programbesonderhede" - "1 program gekies" - "1 legstuk gekies" - "1 vouer gekies" - "1 kortpad gekies" "installeer kortpaaie" "Laat \'n program toe om kortpaaie by te voeg sonder gebruikerinmenging." - "deïnstalleer kortpaaie" - "Laat die program toe om kortpaaie te verwyder sonder gebruikerinmenging." "lees Tuis-instellings en -kortpaaie" "Laat die program toe om die instellings en kortpaaie in Tuis te lees." "skryf Tuis-instellings en -kortpaaie" @@ -78,30 +48,17 @@ "Kon nie legstuk laai nie" "Stel op" "Dit is \'n stelselprogram en kan nie gedeïnstalleer word nie." - "Vuurpyllanseerder" "Naamlose vouer" - "Tuisskerm %1$d" "Bladsy %1$d van %2$d" "Tuisskerm %1$d van %2$d" - "Programme-bladsy %1$d van %2$d" - "Legstukke-bladsy %1$d van %2$d" "Welkom" - "Maak jouself tuis." - - - "Skep meer skerms vir programme en vouers" "Kopieer jou program-ikone" "Voer ikone en vouers vanaf jou ou tuisskerms in?" "KOPIEER IKONE" "BEGIN VAN NUUTS AF" - "Organiseer jou spasie" - "Raak en hou agtergrond om muurpapier, legstukke en instellings te bestuur." "Muurpapiere, legstukke en instellings" "Raak en hou agtergrond om te pasmaak" "HET DIT" - "Hier\'s \'n vouer" - "Om een soos dié te skep, raak en hou \'n program en skuif dit dan oor \'n ander een." - "OK" "Vouer oopgemaak, %1$d by %2$d" "Raak om vouer toe te maak" "Raak om hernoem te stoor" @@ -111,14 +68,34 @@ "Legstukke" "Muurpapiere" "Instellings" - "Wag tans…" - "Laai tans af…" - "Installeer tans…" + "Laat draai toe" "Onbekend" - "Nie teruggestel nie" - "Verwyder almal" "Verwyder" "Soek" "Hierdie program is nie geïnstalleer nie" "Die program vir hierdie ikoon is nie geïnstalleer nie. Jy kan dit verwyder of die program soek en dit self installeer." + "Voeg by tuisskerm" + "Skuif item hierheen" + "Item is by tuisskerm gevoeg" + "Item is verwyder" + "Skuif item" + "Skuif na ry %1$s kolom %2$s" + "Skuif na posisie %1$s" + "Skuif na gunstelingposisie %1$s" + "Item geskuif" + "Voeg by vouer: %1$s" + "Voeg by vouer met %1$s" + "Item by vouer gevoeg" + "Skep vouer met: %1$s" + "Vouer geskep" + "Skuif na tuisskerm" + "Skuif skerm na links" + "Skuif skerm na regs" + "Skerm is geskuif" + "Verander grootte" + "Vermeerder breedte" + "Vermeerder hoogte" + "Verminder breedte" + "Verminder hoogte" + "Legstukgrootte is verander na breedte %1$s hoogte %2$s" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 1a25f66cd..d7fed9de4 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -20,57 +20,27 @@ "ማስጀመሪያ3" - "መነሻ" - "Android ዋና መተግበሪያዎች" + "ስራ" "መተግበሪያ አልተጫነም።" "መተግበሪያ አይገኝም" "የወረደው መተግበሪያ ደህንነቱ በተጠበቀ ሁኔታ ውስጥ ተሰናክሏል" "ምግብሮች በደህንነቱ የተጠበቀ ሁኔታ ተሰናክለዋል" - "ፍርግሞች" - "ፍርግሞች" "ማህደረ ማስታወሻ አሳይ" "ፍርግም ለማንሳት ይንኩ እና ይያዙት" "%1$d × %2$d" - "ንጥሉን እዚህ የመነሻ ማያ ገጽ ላይ ማኖር አልተቻለም።" - "ለመፍጠር መግብር ይምረጡ" - "አቃፊ ስም" - "አቃፊ ዳግም ሰይም" - "እሺ" - "ይቅር" - "ወደ መነሻ ማያ ገጽ ያክሉ" - "መተግበሪያዎች" - "አቋራጮች" - "ፍርግሞች" - "የመነሻ ማያ ገጾችዎ ላይ ተጨማሪ ቦታ የለም።" + "መተግበሪያዎችን ይፈልጉ" + "መተግበሪያዎችን በመጫን ላይ..." + "ከ«%1$s» ጋር የሚዛመዱ ምንም መተግበሪያዎች አልተገኙም" "በዚህ መነሻ ማያ ገጽ ላይ ምንም ቦታ የለም።" "በተወዳጆች መሣቢያ ውስጥ ተጨማሪ ቦታ የለም" - "ይህ መግብር ወደ የተወዳጆች መሣቢያ ላይ እንዳይገባ በጣም ትልቅ ነው" - "አቋራጭ «%s» ተፈጥሯል።" - "አቋራጭ «%s» ተወግዶ ነበር።" - "አቋራጭ «%s» አስቀድሞ አለ።" - "አቋራጭ ይምረጡ" - "መተግበሪያ ይምረጡ" "መተግበሪያዎች" "መነሻ" - "አስወግድ" - "አራግፍ" "አስወግድ" "አራግፍ" "የመተግበሪያ መረጃ" - "መተግበሪያዎች" - "አስወግድ" - "ዝማኔ አራግፍ" - "መተግበሪያ አራግፍ" - "የመተግበሪያ ዝርዝሮች" - "1 መተግበሪያ ተመርጧል" - "1 ፍርግም ተመርጧል" - "1 አቃፊ ተመርጧል" - "1 አቋራጭ ተመርጧል" "አቋራጮችን ይጭናል" "መተግበሪያው ያለተጠቃሚ ጣልቃ ገብነት አቋራጭ እንዲያክል ያስችለዋል።" - "አቋራጮችን ያራግፋል" - "መተግበሪያው አቋራጮችን ያለተጠቃሚ ጣልቃ ገብነት እንዲያስወግድ ያስችለዋል።" "የመነሻ ቅንብሮች እና አቋራጮችን ያነባል" "መተግበሪያው በመነሻ ውስጥ ያሉ ቅንብሮችን እና አቋራጮችን እንዲያነብ ያስችለዋል።" "የመነሻ ቅንብሮችን እና አቋራጮችን ይጽፋል" @@ -78,30 +48,17 @@ "ፍርግም የመጫን ችግር" "ማዋቀሪያ" "ይህ የስርዓት መተግበሪያ ነው እና ማራገፍ አይቻልም።" - "የሮኬት ማስጀመሪያ" "ስም-አልባ አቃፊ" - "መነሻ ማያ ገጽ %1$d" "ገጽ %1$d ከ%2$d" "መነሻ ማያ ገጽ %1$d ከ%2$d" - "የመተግበሪያዎች ገጽ %1$d ከ%2$d" - "የመግብሮች ገጽ %1$d ከ%2$d" "እንኳን በደህና መጡ" - "ልክ እቤትዎ እንዳሉ ሆነው ዘና ይበሉ።" - - - "ለመተግበሪያዎች እና አቃፊዎች ተጨማሪ ማያ ገጾችን ይፍጠሩ" "የመተግበሪያ አዶዎችዎን ይቅዱ" "አዶዎች እና አቃፊዎች ከድሮው የመነሻ ማያ ገጾችዎ ይምጡ?" "አዶዎችን ይቅዱ" "እንደ አዲስ ይጀምሩ" - "ቦታዎን ያደራጁ" - "ልጣፍ ፣ ምግብሮችን እና ቅንብሮችን ለማቀናበር ጀርባውን ይንኩ እና ይያዙት።" "የግድግዳ ወረቀቶች፣ ንዑስ ፕሮግራሞች እና ቅንብሮች" "ለማበጀት ጀርባውን ነክተው ይያዙት" "ገባኝ" - "አንድ አቃፊ እነሆ" - "አንድ እንደዚህ አይነት ለመፍጠር መተግበሪያውን ነክተው ይያዙት እና ወደ ሌላ ያንቀሳቅሱት።" - "እሺ" "አቃፊ ተከፍቷል፣ %1$d%2$d" "አቃፊን ለመዝጋት ይንኩ" "ዳግም የተሰየመውን ለማስቀመጥ ይንኩ" @@ -111,14 +68,34 @@ "ፍርግሞች" "የግድግዳ ወረቀቶች" "ቅንብሮች" - "በመጠበቅ ላይ" - "በማውረድ ላይ" - "በመጫን ላይ" + "ማሽከርከርን ይፍቀዱ" "የማይታወቅ" - "ወደነበረበት አልተመለሰም" - "ሁሉንም አስወግድ" "አስወግድ" "ፈልግ" "ይህ መተግበሪያ አልተጫነም" "የዚህ አዶ መተግበሪያ አልተጫነም። ማስወገድ ወይም መተግበሪያውን መፈለግና ራስዎ መጫን ይችላሉ።" + "ወደ መነሻ ማያ ገጽ ያክሉ" + "ንጥልን ወደዚህ ውሰድ" + "ወደ መነሻ ማያ ገጽ ንጥል ታክሏል" + "ንጥል ነገር ተንቀሳቅሷል" + "ንጥልን አንቀሳቅስ" + "ወደ ረድፍ %1$s ዓምድ %2$s አንቀሳቅስ" + "ወደ አቀማመጥ %1$s አንቀሳቅስ" + "ወደ ተወዳጆች አቀማመጥ %1$s አንቀሳቅስ" + "ንጥል ተንቀሳቅሷል" + "ወደ አቃፊ አክል፦ %1$s" + "ወደ አቃፊ አክል ከ%1$s" + "ንጥል ወደ አቃፊ ታክሏል" + "አቃፊ ፍጠር ከዚህ ጋር፦ %1$s" + "አቃፊ ተፈጥሮዋል" + "ወደ መነሻ ማያ ገጽ አንቀሳቅስ" + "ማያ ገጽን ወደ ግራ አንቀሳቅስ" + "ማያ ገጽን ወደ ቀኝ አንቀሳቅስ" + "ማያ ገጽ ተንቀሳቅሷል" + "መጠን ቀይር" + "ስፋት ጨምር" + "ቁመት ጨምር" + "ስፋት ይቀንሱ" + "ቁመት ይቀንሱ" + "የመግብር መጠን ወደ ስፋት %1$s ቁመት %2$s ተለውጧል" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 592be5841..b7cd901de 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "الرئيسية" - "‏تطبيقات Android الأساسية" + "العمل" "لم يتم تثبيت التطبيق." "التطبيق ليس متاحًا" "تم تعطيل التطبيق الذي تم تنزيله في الوضع الآمن" "الأدوات معطلة في الوضع الآمن" - "الأدوات" - "الأدوات" "عرض الذاكرة" "المس مع الاستمرار لاختيار إحدى الأدوات." "%1$d × %2$d" - "تعذر إسقاط العنصر على هذه الشاشة الرئيسية." - "اختيار أداة لإنشائها" - "اسم المجلد" - "إعادة تسمية المجلد" - "موافق" - "إلغاء" - "إضافة إلى الشاشة الرئيسية" - "التطبيقات" - "الاختصارات" - "الأدوات" - "ليس هناك مساحة أخرى في الشاشات الرئيسية." + "البحث في التطبيقات" + "جارٍ تحميل التطبيقات…" + "لم يتم العثور على أية تطبيقات تتطابق مع \"%1$s\"" "ليس هناك مساحة أخرى في هذه الشاشة الرئيسية." "لا يوجد المزيد من الحقول في علبة المفضلة" - "هذه الأداة كبيرة جدًا مما يحول دون قبولها في علبة المفضّلة" - "تم إنشاء الاختصار \"%s\"." - "تمت إزالة الاختصار \"%s\"." - "الاختصار \"%s\" موجود من قبل." - "اختيار اختصار" - "اختيار تطبيق" "التطبيقات" "الرئيسية" - "إزالة" - "إزالة" "إزالة" "إزالة" "معلومات عن التطبيق" - "التطبيقات" - "إزالة" - "إزالة التحديث" - "إزالة التطبيق" - "تفاصيل التطبيق" - "تم تحديد تطبيق واحد" - "تم تحديد أداة واحدة" - "تم تحديد مجلد واحد" - "تم تحديد اختصار واحد" "تثبيت اختصارات" "للسماح لتطبيق ما بإضافة اختصارات بدون تدخل المستخدم." - "إزالة الاختصارات" - "للسماح للتطبيق بإزالة الاختصارات بدون تدخل المستخدم." "قراءة إعدادات واختصارات الشاشة الرئيسية" "للسماح للتطبيق بقراءة الإعدادات والاختصارات في الشاشة الرئيسية." "كتابة إعدادات واختصارات الشاشة الرئيسية" @@ -78,30 +48,17 @@ "حدثت مشكلة أثناء تحميل الأداة" "الإعداد" "هذا تطبيق نظام وتتعذر إزالته." - "قاذفة صواريخ" "مجلد بدون اسم" - "‏الشاشة الرئيسية %1$d" "‏الصفحة %1$d من %2$d" "‏الشاشة الرئيسية %1$d من %2$d" - "‏صفحة التطبيقات %1$d من %2$d" - "‏صفحة الأدوات %1$d من %2$d" "مرحبًا" - "تصرف على راحتك." - - - "إنشاء المزيد من الشاشات للتطبيقات والمجلدات" "نسخ رموز التطبيقات" "هل تريد استيراد رموز ومجلدات من الشاشات الرئيسية القديمة؟" "نسخ الرموز" "بداية جديدة" - "تنظيم مساحتك" - "المس مع الاستمرار الجزء الخلفي من صورة الشاشة لإدارة الخلفية والأدوات والإعدادات." "الخلفيات والأدوات والإعدادات" "المس مع الاستمرار الخلفية لتخصيصها" "حسنًا" - "إليك المجلد" - "لإنشاء مجلد مثل هذا، المس أحد التطبيقات مع استمرار اللمس، ثم حركه فوق آخر." - "موافق" "تم فتح المجلد، بمقاس %1$d في %2$d" "المس لإغلاق المجلد" "المس لحفظ إعادة التسمية" @@ -111,14 +68,34 @@ "الأدوات" "الخلفيات" "الإعدادات" - "انتظار" - "جارٍ التنزيل" - "جارٍ التثبيت" + "السماح بالتدوير" "غير معروفة" - "استعادة مخفقة" - "إزالة الكل" "إزالة" "بحث" "لم يتم تثبيت هذا التطبيق" "لم يتم تثبيت تطبيق لهذا الرمز. يمكنك إزالته أو البحث عن التطبيق وتثبيته يدويًا." + "إضافة إلى الشاشة الرئيسية" + "نقل العنصر إلى هنا" + "تمت إضافة العنصر إلى الشاشة الرئيسية" + "تم حذف العنصر" + "نقل العنصر" + "نقل إلى الصف %1$s العمود %2$s" + "نقل إلى الموضع %1$s" + "نقل إلى الموضع المفضل %1$s" + "تم نقل العنصر" + "إضافة إلى المجلد: %1$s" + "إضافة إلى المجلد الذي به %1$s" + "تمت إضافة العنصر إلى المجلد" + "إنشاء مجلد يتضمن: %1$s" + "تم إنشاء المجلد" + "نقل إلى الشاشة الرئيسية" + "نقل الشاشة إلى اليسار" + "نقل الشاشة إلى اليمين" + "تم نقل الشاشة" + "تغيير حجم" + "زيادة العرض" + "زيادة الارتفاع" + "تقليل العرض" + "تقليل الارتفاع" + "تم تغيير حجم الأداة إلى العرض %1$s والارتفاع %2$s" diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml index 0da8364ab..099a2208d 100644 --- a/res/values-az-rAZ/strings.xml +++ b/res/values-az-rAZ/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Əsas səhifə" - "Əsas Android Tətbiqləri" + "İş" "Tətbiq quraşdırılmayıb." "Tətbiq əlçatmazdır" "Güvənli rejimdə icazə verilməyən tətbiq endirildi" "Vidcetlər Güvənli rejimdə deaktiv edilib" - "Vidcetlər" - "Vidcetlər" "Suvenirləri göstər" "Vidceti götürmək üçün toxunub saxlayın." "%1$d × %2$d" - "Bu Əsas ekrana element atmaq mümkün olmadı." - "Yaratmaq üçün vidcet seçin" - "Qovluq adı" - "Qovluq adını dəyiş" - "OK" - "Ləğv et" - "Əsas ekrana əlavə et" - "Tətbiqlər" - "Qısa yollar" - "Vidcet" - "Əsas ekranlarınızda boş yer yoxdur." + "Tətbiq Axtarın" + "Tətbiqlər endirilir..." + "\"%1$s\" sorğusuna uyğun Tətbiqlər tapılmadı" "Bu Əsas ekranda boş yer yoxdur." "Favoritlər-də yer yoxdur" - "Bu vidcet Favorit-ə yerləşdirmək üçün çox böyükdür" - "\"%s\" qısayolu yaradılıb." - "\"%s\" qısayolu kənarlaşdırıldı." - "\"%s\" qısayolu artıq mövcuddur." - "Qısayol seçin" - "Tətbiq seçin" "Tətbiqlər" "Əsas səhifə" - "Yığışdır" - "Sistemdən sil" "Kənarlaşdır" "Sistemdən sil" "Tətbiq məlumatı" - "Tətbiqlər" - "Kənarlaşdır" - "Güncəlləməni sistemdən sil" - "Tətbiqi sistemdən sil" - "Tətbiq məlumatları" - "1 tətbiq seçildi" - "1 vidcet seçilib" - "1 qovluq seçildi" - "1 qısayol seçilib" "qısayolları quraşdır" "Tətbiqə istifadəçi müdaxiləsi olmadan qısayolları əlavə etməyə icazə verir." - "qısayolları sistemdən sil" - "İstifadəçi müdaxiləsi olmadan tətbiqə qısayolları silməyə icazə verir." "Əsas Səhifə ayarlarını və qısayolları oxuyun" "Tətbiqə Əsas Səhifədə parametrləri və qısayolları oxumağa icazə verir." "Əsas Səhifə ayarlarını və qısayolları yazın" @@ -78,30 +48,17 @@ "Vidcet yükləmə problemi" "Quraşdırma" "Bu sistem tətbiqi olduğu üçün sistemdən silinə bilməz." - "Raket Başladıcı" "Adsız Qovluq" - "Əsas Səhifə ekranı %1$d" "Səhifə %1$d of %2$d" "Əsas Səhifə ekranı %1$d of %2$d" - "%2$d tətbiq səhifəsi %1$d" - "%2$d vidcet səhifəsi %1$d" "Xoş gəlmisiniz" - "Özünüzü evinizdəki kimi hiss edin." - - - "Tətbiqlər və qovluqlar üçün daha çox ekran yaradın" "Tətbiq ikonalarınızı kopyalayın" "Köhnə Əsas ekranınızda olan ikonalar və qovluqlar import edilsin?" "İKONALARI KOPYALA" "YENİDƏN BAŞLA" - "Sahənizi təşkil edin" - "Divar kağızını idarə etmək üçün arxa fona toxunun və saxlayın, vidcetlər və ayarlar." "Divar kağızları, vidcetlər və ayarlar" "Fərdiləşdirmək üçün arxa fona toxunaraq saxlayın" "ANLADIM" - "Burada qovluq var" - "Bunun kimi birini yaradın, tətbiqə toxunun və saxlayın, sonra da bunu digərinin üstünə daşıyın." - "OK" "Qovluq açıldı, %2$d hündürlük ilə %1$d enində" "Qovluğu bağlamaq üçün toxunun" "Ad dəyişikliyini yadda saxlamaq üçün toxunun" @@ -111,14 +68,34 @@ "Vidcet" "Divar kağızları" "Ayarlar" - "Gözlənilir" - "Endirilir" - "Quraşdırılır" + "Fırlatmağa icazə verin" "Naməlum" - "Bərpa edilməyib" - "Hamısını Silin" "Yığışdır" "Axtarış" "Bu tətbiq quraşdırılmayıb" "Bu ikona üçün tətbiq quraşdırılmayıb. Onu silə bilərsiniz, və ya tətbiqi taparaq manual yol ilə quraşdıra bilərsiniz." + "Əsas ekrana əlavə edin" + "Elementi bura köçürün" + "Element əsas ekrana əlavə edildi" + "Element silindi" + "Elementi köçürün" + "Sıra %1$s sütun %2$s köçürün" + "%1$s mövqeyinə köçürün" + "%1$s sevimlilər mövqeyinə köçürün" + "Elementin yeri dəyişildi" + "Qovluğa əlavə edin: %1$s" + "%1$s adlı qovluğa əlavə edin" + "Element qovluğa əlavə edildi" + "Qovluq yaradın: %1$s" + "Qovluq yaradıldı" + "Əsas ekrana köçürün" + "Ekranı sola köçürün" + "Ekranı sağa köçürün" + "Ekran köçürülüb" + "Ölçüsünü dəyişin" + "Eni artırın" + "Hündürlüyü artırın" + "Eni azaldın" + "Hündürlüyü azaldın" + "Vidcetin eni %1$s hündürlüyü %2$s kimi ölçüləndirildi" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 2015158d9..fc5390b80 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -173,8 +173,6 @@ - - @@ -199,10 +197,6 @@ - - - - diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 3f710db30..eeaa1ede4 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Начало" - "Основни приложения на Android" + "Работа" "Приложението не е инсталирано." "Приложението не е налично" "Изтегленото приложение е деактивирано в безопасния режим" "Приспособленията са деактивирани в безопасния режим" - "Приспособления" - "Приспособления" "Показване на паметта" "Докоснете и задръжте за избор на приспособление." "%1$d × %2$d" - "Не можа да се премести на този начален екран." - "Избор на приспособл. за създаване" - "Име на папката" - "Преименуване на папка" - "ОK" - "Отказ" - "Добавяне към началния екран" - "Приложения" - "Преки пътища" - "Приспособления" - "На началните ви екрани няма повече място." + "Търсене в приложенията" + "Приложенията се зареждат…" + "Няма намерени приложения, съответстващи на „%1$s“" "На този начален екран няма повече място." "Няма повече място в областта с любимите" - "Това приспособление е твърде голямо за областта с любимите" - "Прекият път към %s е създаден." - "Прекият път към %s бе премахнат." - "Прекият път към %s вече съществува." - "Избор на пряк път" - "Избор на приложение" "Приложения" "Начало" - "Премахване" - "Деинсталиране" "Премахване" "Деинсталиране" "Информация за приложението" - "Приложения" - "Премахване" - "Деинст. на актуализацията" - "Деинсталиране на приложението" - "Подробности за приложението" - "Избрано е 1 приложение" - "Избрано е 1 приспособление" - "Избрана е 1 папка" - "Избран е 1 пряк път" "инсталиране на преки пътища" "Разрешава на приложението да добавя преки пътища без намеса на потребителя." - "деинсталиране на преки пътища" - "Разрешава на приложението да премахва преки пътища без намеса на потребителя." "четене на настройките и преките пътища в Начало" "Разрешава на приложението да чете настройките и преките пътища в Начало." "запис на настройките и преките пътища в Начало" @@ -78,30 +48,17 @@ "Проблем при зареждане на приспособлението" "Настройване" "Това е системно приложение и не може да се деинсталира." - "Ракетна площадка" "Папка без име" - "Начален екран %1$d" "Страница %1$d от %2$d" "Начален екран %1$d от %2$d" - "Страница с приложения %1$d от %2$d" - "Страница с приспособления %1$d от %2$d" "Добре дошли" - "Персонализиране и приспособяване." - - - "Създаване на още екрани за приложения и папки" "Икони на прилож. ви: Копиране" "Да се импортират ли иконите и папките от старите ви начални екрани?" "КОПИРАНЕ НА ИКОНИТЕ" "СТАРТИРАНЕ ОТНАЧАЛО" - "Организиране на мястото ви" - "Докоснете и задръжте фона, за да управлявате тапета, приспособленията и настройките." "Тапети, приспособления и настройки" "Докоснете и задръжте фона за персонализиране" "РАЗБРАХ" - "Ето една папка" - "За да създадете подобна, докоснете и задръжте приложение, след което го преместете върху друго." - "ОK" "Папката е отворена – %1$d на %2$d" "Докоснете, за да затворите папката" "Докоснете, за да запазите новото име" @@ -111,14 +68,34 @@ "Приспособления" "Тапети" "Настройки" - "Изчаква" - "Изтегля се" - "Инсталира се" + "Разрешаване на завъртането" "Няма информация" - "Не е възстановено" - "Премахване на всички" "Премахване" "Търсене" "Това приложение не е инсталирано" "Приложението за тази икона не е инсталирано. Можете да я премахнете или да потърсите приложението и да го инсталирате ръчно." + "Добавяне към началния екран" + "Преместване на елемента тук" + "Елементът е добавен към началния екран" + "Елементът е премахнат" + "Преместване на елемента" + "Преместване към ред %1$s, колона %2$s" + "Преместване към позиция %1$s" + "Преместване към позиция %1$s в любимите" + "Елементът е преместен" + "Добавяне към папката „%1$s“" + "Добавяне към папката, съдържаща %1$s" + "Елементът е добавен към папката" + "Създаване на папка с елемента „%1$s“" + "Папката е създадена" + "Преместване към началния екран" + "Преместване на екрана наляво" + "Преместване на екрана надясно" + "Екранът е преместен" + "Преоразмеряване" + "Увеличаване на ширината" + "Увеличаване на височината" + "Намаляване на ширината" + "Намаляване на височината" + "Приспособлението е преоразмерено към ширина %1$s и височина %2$s" diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml index 143420103..57f7b511d 100644 --- a/res/values-bn-rBD/strings.xml +++ b/res/values-bn-rBD/strings.xml @@ -20,57 +20,27 @@ "লঞ্চার৩" - "হোম" - "Android প্রাথমিক অ্যাপ্লিকেশানগুলি" + "কাজ" "অ্যাপ্লিকেশান ইনস্টল করা নেই৷" "অ্যাপ্লিকেশান অনুপলব্ধ" "ডাউনলোড করা অ্যাপ্লিকেশান নিরাপদ মোডে অক্ষম রয়েছে" "সুরক্ষিত মোডে উইজেট নিষ্ক্রিয় থাকে" - "উইজেটগুলি" - "উইজেটগুলি" "মেম দেখান" "একটি উইজেট তুলতে তা স্পর্শ করে ধরে রাখুন৷" "%1$d × %2$d" - "এই হোম স্ক্রীনে আইটেম রাখা যায়নি৷" - "তৈরি করেতে উইজেট চয়ন করুন" - "ফোল্ডারের নাম" - "ফোল্ডার পুনঃনামকরণ করুন" - "ঠিক আছে" - "বাতিল করুন" - "হোম স্ক্রীনে যোগ করুন" - "অ্যাপ্লিকেশানগুলি" - "শর্টকাটগুলি" - "উইজেটগুলি" - "আপনার হোম স্ক্রীনগুলিতে আর কোনো জায়গা নেই৷" + "অ্যাপ্লিকেশানগুলি অনুসন্ধান করুন" + "অ্যাপ্লিকেশানগুলি লোড হচ্ছে..." + "\"%1$s\" এর সাথে মেলে এমন কোনো অ্যাপ্লিকেশান পাওয়া যায়নি" "এই হোম স্ক্রীনে আর কোনো জায়গা নেই৷" "পছন্দসই ট্রে-তে আর কোনো জায়গা নেই" - "পছন্দসই ট্রে\'র জন্য এই উইজেটটি খুবই বড়" - "শর্টকাট \"%s\" তৈরি করা হয়েছে৷" - "শর্টকাট \"%s\" সরানো হয়েছে৷" - "শর্টকাট %s আগে থেকেই আছে৷" - "শর্টকাট চয়ন করুন" - "অ্যাপ্লিকেশান চয়ন করুন" "অ্যাপ্লিকেশানগুলি" "হোম" - "সরান" - "আনইনস্টল করুন" "সরান" "আনইনস্টল করুন" "অ্যাপ্লিকেশানের তথ্য" - "অ্যাপ্লিকেশানগুলি" - "সরান" - "আপডেট আনইনস্টল করুন" - "অ্যাপ্লিকেশান আনইনস্টল করুন" - "অ্যাপ্লিকেশানের বিশদ বিবরণ" - "১টি অ্যাপ্লিকেশান নির্বাচন করা হয়েছে" - "১টি উইজেট নির্বাচন করা হয়েছে" - "১টি ফোল্ডার নির্বাচন করা হয়েছে" - "১টি শর্টকাট নির্বাচন করা হয়েছে" "শর্টকাটগুলি ইনস্টল করে" "একটি অ্যাপ্লিকেশানকে ব্যবহারকারীর হস্তক্ষেপ ছাড়াই শর্টকাটগুলি যোগ করার অনুমতি দেয়৷" - "শর্টকাটগুলি আনইনস্টল করে" - "অ্যাপ্লিকেশানটিকে ব্যবহারকারীর হস্তক্ষেপ ছাড়াই শর্টকাটগুলি সরানোর অনুমতি দেয়৷" "হোম সেটিংস এবং শর্টকাটগুলি পড়ে" "হোমে অ্যাপ্লিকেশানটিকে সেটিংস এবং শর্টকাটগুলি পড়তে দেয়৷" "হোম সেটিংস এবং শর্টকাটগুলি লেখে" @@ -78,30 +48,17 @@ "উইজেট লোড হতে সমস্যা হয়েছে" "সেটআপ" "এটি একটি সিস্টেম অ্যাপ্লিকেশান এবং আনইনস্টল করা যাবে না৷" - "রকেট লঞ্চার" "নামবিহীন ফোল্ডার" - "%1$d নম্বর হোম স্ক্রীন" "%2$dটির মধ্যে %1$dটি পৃষ্ঠা" "%2$dটির %1$d নম্বর হোম স্ক্রীন" - "%2$dটির মধ্যে %1$dটি অ্যাপ্লিকেশান পৃষ্ঠা" - "%2$dটির মধ্যে %1$dটি উইজেট পৃষ্ঠা" "স্বাগতম" - "নিজের বাড়ির মতো স্বাচ্ছন্দ্য বোধ করুন৷" - - - "অ্যাপ্লিকেশান এবং ফোল্ডারগুলির জন্য আরো স্ক্রীn তৈরি করুন" "আপনার অ্যাপ্লিকেশান আইকনগুলি অনুলিপি করুন" "আপনার পুরানো হোম স্ক্রীন থেকে আইকন এবং ফোল্ডারগুলি আমদানি করবেন?" "আইকনগুলি অনুলিপি করুন" "নতুন করে শুরু করুন" - "আপনার স্থান সংগঠিত করুন" - "ওয়ালপেপার, উইজেট এবং সেটিংস পরিচালনা করতে পটভূমি স্পর্শ করে ধরে রাখুন৷" "ওয়ালপেপার, উইজেট এবং সেটিংস" "কাস্টমাইজ করার জন্য পটভূমি স্পর্শ করে ধরে থাকুন" "বুঝেছি" - "এখানে একটি ফোল্ডার আছে" - "এটির মতো একটি তৈরি করতে, একটি অ্যাপ্লিকেশান স্পর্শ করে ধরে রাখুন, এবং তারপরে এটিকে অন্য একটির উপরে সরিয়ে নিয়ে যান৷" - "ঠিক আছে" "ফোল্ডার খোলা হয়েছে, %1$d বাই %2$d" "ফোল্ডার বন্ধ করতে স্পর্শ করুন" "পুনঃনামকরণ সংরক্ষণ করতে স্পর্শ করুন" @@ -111,14 +68,34 @@ "উইজেটগুলি" "ওয়ালপেপারগুলি" "সেটিংস" - "প্রতীক্ষা" - "ডাউনলোড হচ্ছে" - "ইনস্টল করা হচ্ছে" + "ঘূর্ণনের অনুমতি দিন" "অজানা" - "পুনঃস্থাপন করা যায়নি" - "সবগুলি সরান" "সরান" "অনুসন্ধান" "এই অ্যাপ্লিকেশানটি ইন্সটল করা নাই" "এই আইকনের অ্যাপ্লিকেশানটি ইন্সটল করা নাই। আপনি এটি সরাতে পারেন বা অ্যাপ্লিকেশানটি অনুসন্ধান করে এটি নিজে ইন্সটল করতে পারেন।" + "হোম স্ক্রীনে যোগ করুন" + "এখানে আইটেম সরান" + "হোম স্ক্রীনে আইটেম যোগ করা হয়েছে" + "আইটেম সরানো হয়েছে" + "আইটেম সরান" + "সারি %1$s কলাম %2$s এ সরান" + "অবস্থানে সরান %1$s" + "পছন্দসই অবস্থানে সরান %1$s" + "আইটেম সরানো হয়েছে" + "ফোল্ডারে যোগ করুন: %1$s" + "%1$s সহ ফোল্ডারে যোগ করা হয়েছে" + "আইটেম ফোল্ডারে যোগ করা হয়েছে" + "এর সাথে ফোল্ডার তৈরি করুন: %1$s" + "ফোল্ডার তৈরি করা হয়েছে" + "হোম স্ক্রীনে সরান" + "স্ক্রীন বাম দিকে সরান" + "স্ক্রীন ডান দিকে সরান" + "স্ক্রীন সরানো হয়েছে" + "পুনরায় আকার দিন" + "প্রস্থ বাড়ান" + "উচ্চতা বাড়ান" + "প্রস্থ কমান" + "উচ্চতা কমান" + "উইজেটের আকার প্রস্থ %1$s উচ্চতা %2$s তে পরিবর্তন করা হয়েছে" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 89e582a81..83f284a9d 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Inici" - "Aplicacions principals d\'Android" + "Feina" "L\'aplicació no s\'ha instal·lat." "L\'aplicació no està disponible." "L\'aplicació que has baixat està desactivada al mode segur." "En Mode segur, els widgets estan desactivats." - "Widgets" - "Widgets" "Mostra la memòria" "Mantén premut un widget per triar-lo." "%1$d × %2$d" - "No s\'ha pogut deixar anar l\'element a Inici." - "Tria el widget que vulguis crear" - "Nom de la carpeta" - "Canvi de nom de la carpeta" - "D\'acord" - "Cancel·la" - "Afegir a la pantalla d\'inici" - "Aplicacions" - "Dreceres" - "Widgets" - "No queda espai a les pantalles d\'inici." + "Cerca a les aplicacions" + "S\'estan carregant les aplicacions..." + "No s\'ha trobat cap aplicació que coincideixi amb %1$s" "Ja no queda espai en aquesta pantalla d\'inici." "No hi ha més espai a la safata Preferits." - "Aquest widget és massa gran per a la safata Preferits." - "S\'ha creat la drecera \"%s\"." - "S\'ha suprimit la drecera \"%s\"." - "La drecera \"%s\" ja existeix." - "Tria d\'una drecera" - "Tria d\'una aplicació" "Aplicacions" "Inici" - "Suprimeix" - "Desinstal·la" "Suprimeix" "Desinstal·la" "Informació de l\'aplicació" - "Aplicacions" - "Suprimeix" - "Desinstal·la l\'actualització" - "Desinstal·la l\'aplicació" - "Detalls de l\'aplicació" - "1 aplicació seleccionada" - "1 widget seleccionat" - "1 carpeta seleccionada" - "1 drecera seleccionada" "instal·la dreceres" "Permet que una aplicació afegeixi dreceres sense la intervenció de l\'usuari." - "desinstal·la dreceres" - "Permet que l\'aplicació suprimeixi dreceres sense la intervenció de l\'usuari." "llegeix la configuració i les dreceres de la pantalla d\'inici" "Permet que l\'aplicació llegeixi la configuració i les dreceres de la pantalla d\'inici." "escriu la configuració i les dreceres de la pantalla d\'inici" @@ -78,30 +48,17 @@ "S\'ha produït un problema en carregar el widget" "Configuració" "Aquesta aplicació és una aplicació del sistema i no es pot desinstal·lar." - "Rocket Launcher" "Carpeta sense nom" - "Pantalla d\'inici %1$d" "Pàgina %1$d de %2$d" "Pantalla d\'inici %1$d de %2$d" - "Pàgina d\'aplicacions %1$d de %2$d" - "Pàgina de widgets %1$d de %2$d" "Us donem la benvinguda" - "Personalitza la pantalla d\'inici" - - - "Crea més pantalles per a aplicacions i carpetes" "Copiar les icones d\'aplicació" "Importar icones i carpetes de pantalles d\'inici anteriors?" "COPIA LES ICONES." "NOU COMENÇAMENT" - "Organitza el teu espai" - "Toca i mantén premut el fons per gestionar el fons de pantalla, els widgets i la configuració." "Fons de pantalla, widgets i configuració" "Mantén premut el fons per fer personalitzacions." "D\'ACORD" - "Aquí hi ha una carpeta" - "Per crear-ne una com aquesta, mantén premuda una aplicació i, a continuació, mou-la sobre una altra." - "D\'acord" "S\'ha obert la carpeta, %1$d per %2$d" "Toca per tancar la carpeta" "Toca per desar el canvi de nom" @@ -111,14 +68,34 @@ "Widgets" "Fons de pantalla" "Configuració" - "En espera" - "S\'està baixant" - "Instal·lant" + "Permet la rotació" "Desconegut" - "No restaurat" - "Suprimeix-ho tot" "Suprimeix" "Cerca" "Aquesta aplicació no està instal·lada" "L\'aplicació d\'aquesta icona no està instal·lada. Pots suprimir-la o cercar l\'aplicació i instal·lar-la manualment." + "Afegeix a la pantalla d\'inici" + "Mou l\'element aquí" + "S\'ha afegit l\'element a la pantalla d\'inici" + "S\'ha suprimit l\'element" + "Desplaça l\'element" + "Desplaça l\'element a la fila %1$s i la columna %2$s" + "Desplaça l\'element a la posició %1$s" + "Desplaça l\'element a la posició de preferits %1$s" + "Element desplaçat" + "Afegeix l\'element a la carpeta: %1$s" + "Afegeix l\'element a la carpeta amb %1$s" + "Element afegit a la carpeta" + "Crea una carpeta amb: %1$s" + "Carpeta creada" + "Desplaça a la pantalla d\'inici" + "Desplaça pantalla a l\'esquerra" + "Desplaça pantalla a la dreta" + "S\'ha desplaçat la pantalla" + "Canvia la mida" + "Augmenta l\'amplada" + "Augmenta l\'alçada" + "Redueix l\'amplada" + "Redueix l\'alçada" + "S\'ha canviat la mida del widget a l\'amplada %1$s i l\'alçada %2$s" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 0288806f4..c99a7ed84 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Plocha" - "Android Core Apps" + "Práce" "Aplikace není nainstalována." "Aplikace není k dispozici." "Stažená aplikace je v nouzovém režimu zakázána" "V nouzovém režimu jsou widgety zakázány." - "Widgety" - "Widgety" "Zobrazit Mem" "Widget vyberete dotykem a podržením." "%1$d × %2$d" - "Na tuto plochu položku nelze přesunout." - "Vyberte widget k vytvoření" - "Název složky" - "Přejmenovat složku" - "OK" - "Zrušit" - "Přidat na plochu" - "Aplikace" - "Klávesové zkratky" - "Widgety" - "Na plochách již není místo." + "Hledat aplikace" + "Načítání aplikací…" + "Dotazu „%1$s“ neodpovídají žádné aplikace" "Na této ploše již není místo." "Na panelu Oblíbené položky již není místo." - "Tento widget je pro panel Oblíbené položky příliš velký." - "Zástupce aplikace %s byl vytvořen." - "Zástupce aplikace %s byl odebrán." - "Zástupce aplikace %s již existuje." - "Výběr zástupce" - "Výběr aplikace" "Aplikace" "Plocha" - "Odstranit" - "Odinstalovat" "Odstranit" "Odinstalovat" "Informace o aplikaci" - "Aplikace" - "Odstranit" - "Odinstalovat aktualizaci" - "Odinstalovat aplikaci" - "Podrobnosti o aplikaci" - "Vybrána 1 aplikace" - "Vybrán 1 widget" - "Vybrána 1 složka" - "Vybrán 1 zástupce" "instalace zástupce" "Umožňuje aplikaci přidat zástupce bez zásahu uživatele." - "odinstalovat zástupce" - "Umožňuje aplikaci odstranit zástupce bez zásahu uživatele." "čtení nastavení a odkazů plochy" "Umožňuje aplikaci číst nastavení a odkazy na ploše." "zápis nastavení a odkazů plochy" @@ -78,30 +48,17 @@ "Problém s načtením widgetu" "Nastavení" "Toto je systémová aplikace a nelze ji odinstalovat." - "Rocket Launcher" "Složka bez názvu" - "Plocha %1$d" "Strana %1$d z %2$d" "Plocha %1$d z %2$d" - "Stránka aplikací %1$d z %2$d" - "Stránka widgetů %1$d z %2$d" "Vítejte" - "Udělejte si pohodlí." - - - "Vytvořte několik obrazovek pro aplikace a složky" "Zkopírování ikon aplikací" "Chcete importovat ikony a složky ze svých starých ploch?" "ZKOPÍROVAT IKONY" "ZAČÍT S VÝCHOZÍM ROZVRŽENÍM" - "Organizace prostoru" - "Chcete-li spravovat tapetu, widgety a nastavení, dotkněte se pozadí a přidržte je." "Tapety, widgety a nastavení" "Pozadí můžete přizpůsobit klepnutím a podržením" "ROZUMÍM" - "Toto je složka" - "Chcete-li vytvořit složku, přetáhněte aplikaci na jinou aplikaci." - "OK" "Složka otevřena, rozměry %1$d x %2$d" "Dotykem složku zavřete" "Dotykem uložíte změnu názvu" @@ -111,14 +68,34 @@ "Widgety" "Tapety" "Nastavení" - "Čekání" - "Stahování" - "Instalace" + "Povolit otáčení" "Neznámé" - "Nebylo obnoveno" - "Odstranit vše" "Odstranit" "Hledat" "Tato aplikace není nainstalována" "Aplikace pro tuto ikonu není nainstalována. Můžete ikonu odstranit nebo zkusit aplikaci vyhledat a nainstalovat ručně." + "Přidat na plochu" + "Přesunout položku sem" + "Položka byla přidána na plochu" + "Položka byla odstraněna" + "Přesunout položku" + "Přesunout na řádek %1$s do sloupce %2$s" + "Přesunout na pozici %1$s" + "Přesunout do oblíbených položek na pozici %1$s" + "Položka byla přesunuta" + "Přidat do složky: %1$s" + "Přidat do složky s aplikací %1$s" + "Položka byla přidána do složky" + "Vytvořit složku s položkou %1$s" + "Složka byla vytvořena" + "Přesunout na plochu" + "Přesunout obrazovku doleva" + "Přesunout obrazovku doprava" + "Obrazovka byla přesunuta" + "Změnit velikost" + "Zvýšit šířku" + "Zvýšit výšku" + "Snížit šířku" + "Snížit výšku" + "Velikost widgetu upravena: šířka %1$s, výška %2$s" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 5fa6aa6b6..eeab92e6e 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Startskærm" - "Kerneapps i Android" + "Arbejde" "Appen er ikke installeret." "Appen er ikke tilgængelig" "Downloadet app er deaktiveret i sikker tilstand" "Widgets er deaktiveret i Beskyttet tilstand" - "Widgets" - "Widgets" "Vis Mem" "Tryk på en widget, og hold den nede for at vælge." "%1$d × %2$d" - "Elementet kunne ikke trækkes til startskærmen." - "Vælg den widget, du vil oprette" - "Mappenavn" - "Omdøb mappe" - "OK" - "Annuller" - "Føj til startskærm" - "Apps" - "Genveje" - "Widgets" - "Der er ikke mere plads på dine startskærme." + "Søg i Apps" + "Indlæser apps…" + "Der blev ikke fundet nogen apps, som matcher \"%1$s\"" "Der er ikke mere plads på denne startskærm." "Der er ikke mere plads i bakken Foretrukne" - "Denne widget er for stor til bakken Foretrukne" - "Genvejen \"%s\" blev oprettet." - "Genvejen \"%s\" blev fjernet." - "Genvejen \"%s\" findes allerede." - "Vælg genvej" - "Vælg app" "Apps" "Startskærm" - "Fjern" - "Afinstaller" "Fjern" "Afinstaller" "Oplysninger om appen" - "Apps" - "Fjern" - "Afinstaller opdatering" - "Afinstaller appen" - "Oplysninger om appen" - "1 app er valgt" - "1 widget er valgt" - "1 mappe er valgt" - "1 genvej er valgt" "installere genveje" "Tillader, at en app tilføjer genveje uden brugerens indgriben." - "afinstaller genveje" - "Tillader, at appen fjerner genveje uden brugerens indgriben." "læs indstillinger og genveje for startskærmen" "Tillader, at appen læser indstillingerne og genvejene på startskærmen." "skrive indstillinger og genveje for startskærmen" @@ -78,30 +48,17 @@ "Der er problemer med indlæsning af widgetten" "Konfigurer" "Dette er en systemapp, som ikke kan afinstalleres." - "Rocket Launcher" "Unavngiven mappe" - "Startskærm %1$d" "Side %1$d ud af %2$d" "Startskærm %1$d ud af %2$d" - "Apps-side %1$d ud af %2$d" - "Widgets-side %1$d ud af %2$d" "Velkommen" - "Føl dig hjemme." - - - "Opret flere skærme til apps og mapper" "Kopiér dine appikoner" "Vil du importere ikoner og mapper fra gamle startskærme?" "KOPIÉR IKONER" "START PÅ EN FRISK" - "Organiser din arbejdsplads" - "Tryk på en baggrund, og hold fingeren nede for at administrere baggrunde, widgets og indstillinger." "Baggrunde, widgets og indstillinger" "Tryk på baggrunden, og hold fingeren nede for at tilpasse den" "OK, FORSTÅET" - "Her kan du se en mappe" - "Du kan oprette en mappe magen til denne ved at trykke på en app og holde fingeren nede, mens du flytter appen til en anden mappe." - "OK" "Mappen er åben, %1$d gange %2$d" "Tryk for at lukke mappen" "Tryk for at gemme det nye navn" @@ -111,14 +68,34 @@ "Widgets" "Baggrunde" "Indstillinger" - "Afventer" - "Downloader" - "Installerer" + "Tillad rotation" "Ukendt" - "Ikke gendannet" - "Slet alle" "Fjern" "Søg" "Denne app er ikke installeret" "Appen, der hører til dette ikon, er ikke installeret. Du kan fjerne den eller prøve at søge efter appen og installere den manuelt." + "Føj til startskærm" + "Flyt elementet hertil" + "Elementet er føjet til startskærmen" + "Elementet er fjernet" + "Flyt element" + "Flyt til række %1$s, kolonne %2$s" + "Flyt til position %1$s" + "Flyt til foretrukne position %1$s" + "Elementet blev flyttet" + "Føj til mappen: %1$s" + "Føj til mappen, der indeholder %1$s" + "Elementet blev føjet til mappen" + "Opret mappe med: %1$s" + "Mappen blev oprettet" + "Flyt til startskærmen" + "Flyt skærmen til venstre" + "Flyt skærmen til højre" + "Skærmen er flyttet" + "Tilpas størrelse" + "Øg bredden" + "Øg højden" + "Reducer bredden" + "Reducer højden" + "Størrelsen for widgetten er ændret til bredde %1$s og højde %2$s" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 059983ecf..ac6f76b0c 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Startseite" - "Android Core Apps" + "Arbeit" "App ist nicht installiert." "App nicht verfügbar" "Heruntergeladene App im abgesicherten Modus deaktiviert" "Widgets im abgesicherten Modus deaktiviert" - "Widgets" - "Widgets" "Speicher anzeigen" "Zum Hinzufügen Widget berühren und halten" "%1$d × %2$d" - "Element wurde nicht auf diesem Startbildschirm abgelegt." - "Widget zum Erstellen auswählen" - "Ordnername" - "Ordner umbenennen" - "OK" - "Abbrechen" - "Zum Startbildschirm hinzufügen" - "Apps" - "Verknüpfungen" - "Widgets" - "Auf Ihren Startbildschirmen ist kein Platz mehr vorhanden." + "In Apps suchen" + "Apps werden geladen..." + "Keine Apps für \"%1$s\" gefunden" "Auf diesem Startbildschirm ist kein Platz mehr vorhanden." "Ablage \"Favoriten\" ist voll." - "Dieses Widget ist zu groß für die Ablage \"Favoriten\"." - "Verknüpfung \"%s\" wurde erstellt." - "Verknüpfung \"%s\" wurde entfernt." - "Verknüpfung \"%s\" ist bereits vorhanden." - "Verknüpfung auswählen" - "App auswählen" "Apps" "Startseite" - "Entfernen" - "Deinstallieren" "Entfernen" "Deinstallieren" "App-Info" - "Apps" - "Entfernen" - "Update deinstallieren" - "App deinstallieren" - "App-Details" - "1 App ausgewählt" - "1 Widget ausgewählt" - "1 Ordner ausgewählt" - "1 Verknüpfung ausgewählt" "Verknüpfungen installieren" "Ermöglicht einer App das Hinzufügen von Verknüpfungen ohne Eingreifen des Nutzers" - "Verknüpfungen deinstallieren" - "Ermöglicht einer App das Entfernen von Verknüpfungen ohne Eingreifen des Nutzers" "Einstellungen und Verknüpfungen auf dem Startbildschirm lesen" "Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu lesen" "Einstellungen und Verknüpfungen für den Startbildschirm schreiben" @@ -78,30 +48,17 @@ "Problem beim Laden des Widgets" "Einrichten" "Dies ist eine Systemanwendung, die nicht deinstalliert werden kann." - "Rocket Launcher" "Unbenannter Ordner" - "Startbildschirm %1$d" "Seite %1$d von %2$d" "Startbildschirm %1$d von %2$d" - "Apps-Seite %1$d von %2$d" - "Widgets-Seite %1$d von %2$d" "Hallo!" - "Gerät personalisieren" - - - "Mehr Bildschirme für Apps und Ordner erstellen" "App-Symbole kopieren" "Symbole und Ordner alter Startbildschirme importieren?" "Symbole kopieren" "Standardübersicht verwenden" - "Arbeitsbereich organisieren" - "Hintergrund berühren und halten, um Hintergrund, Widgets und Einstellungen zu verwalten" "Hintergründe, Widgets & Einstellungen" "Berühren und halten Sie den Hintergrund, um ihn anzupassen." "OK" - "Hier ist ein Ordner" - "Um einen Ordner zu erstellen, berühren und halten Sie eine App und verschieben Sie sie auf eine andere." - "OK" "Ordner geöffnet, %1$d x %2$d" "Ordner durch Berühren schließen" "Umbenennung durch Berühren speichern" @@ -111,14 +68,34 @@ "Widgets" "Hintergründe" "Einstellungen" - "Warten" - "Download läuft" - "Installation" + "Drehung zulassen" "Unbekannt" - "Nicht wiederhergestellt" - "Alle entfernen" "Entfernen" "Suchen" "Diese App ist nicht installiert" "Die App für dieses Symbol ist nicht installiert. Sie können das Symbol entfernen oder nach der App suchen und sie manuell installieren." + "Zum Startbildschirm hinzufügen" + "Element hierhin verschieben" + "Element zum Startbildschirm hinzugefügt" + "Element entfernt" + "Element verschieben" + "In Zeile %1$s, Spalte %2$s verschoben" + "Auf Position %1$s verschoben" + "Auf Favoritenposition %1$s verschoben" + "Element verschoben" + "Zum Ordner \"%1$s\" hinzufügen" + "Zum Ordner hinzufügen, in dem sich %1$s befindet" + "Element zum Ordner hinzugefügt" + "Anhand von %1$s Ordner erstellen" + "Ordner erstellt" + "Auf Startbildschirm verschieben" + "Bildschirm nach links" + "Bildschirm nach rechts" + "Bildschirm verschoben" + "Größe anpassen" + "Breite vergrößern" + "Höhe vergrößern" + "Breite verringern" + "Höhe verringern" + "Größe des Widgets zu Breite %1$s und Höhe %2$s geändert" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 7e5989d3e..a60458a97 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Αρχική οθόνη" - "Βασικές εφαρμογές Android" + "Εργασία" "Η εφαρμογή δεν έχει εγκατασταθεί." "Η εφαρμογή δεν είναι διαθέσιμη" "Η λήψη εφαρμογών απενεργοποήθηκε στην Ασφαλή λειτουργία" "Τα γραφικά στοιχεία απενεργοποιήθηκαν στην ασφαλή λειτουργία" - "Γραφικά στοιχεία" - "Γραφικά στοιχεία" "Εμφάνιση Mem" "Αγγίξτε παρατεταμένα για να πάρετε ένα γραφ.στοιχ." "%1$d × %2$d" - "Αδυναμία τοποθέτησης στοιχείου στην Αρχική οθόνη." - "Επιλ. γραφ. στοιχείο για δημιουργία" - "Όνομα φακέλου" - "Μετονομασία φακέλου" - "OK" - "Ακύρωση" - "Προσθήκη στην αρχική οθόνη" - "Εφαρμογές" - "Συντομεύσεις" - "Γραφικά στοιχεία" - "Δεν υπάρχει άλλος χώρος στις Αρχικές οθόνες σας." + "Αναζήτηση εφαρμογών" + "Φόρτωση εφαρμογών…" + "Δεν βρέθηκαν εφαρμογές για το ερώτημα \"%1$s\"" "Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη." "Δεν υπάρχει επιπλέον χώρος στην περιοχή Αγαπημένα" - "Αυτό το γραφικό στοιχείο είναι πολύ μεγάλο για την περιοχή Αγαπημένα." - "Δημιουργήθηκε η συντόμευση \"%s\"." - "Η συντόμευση \"%s\" καταργήθηκε." - "Η συντόμευση \"%s\" υπάρχει ήδη." - "Επιλογή συντόμευσης" - "Επιλογή εφαρμογής" "Εφαρμογές" "Αρχική οθόνη" - "Κατάργηση" - "Κατάργηση εγκατάστασης" "Κατάργηση" "Κατάργηση εγκατάστασης" "Πληροφορίες εφαρμογής" - "Εφαρμογές" - "Κατάργηση" - "Κατάργηση εγκατάστασης ενημέρωσης" - "Κατάργηση εγκατάστασης εφαρμογής" - "Λεπτομέρειες εφαρμογής" - "Επιλέχτηκε 1 εφαρμογή" - "Επιλέχτηκε 1 γραφικό στοιχείο" - "Επιλέχτηκε 1 φάκελος" - "Επιλέχτηκε 1 συντόμευση" "εγκατάσταση συντομεύσεων" "Επιτρέπει σε μια εφαρμογή την προσθήκη συντομεύσεων χωρίς την παρέμβαση του χρήστη." - "κατάργηση εγκατάστασης συντομεύσεων" - "Επιτρέπει στην εφαρμογή την κατάργηση συντομεύσεων χωρίς την παρέμβαση του χρήστη." "ανάγνωση ρυθμίσεων και συντομεύσεων αρχικής οθόνης" "Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην Αρχική οθόνη." "εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης" @@ -78,30 +48,17 @@ "Παρουσιάστηκε πρόβλημα στη φόρτωση του γραφικού στοιχείου" "Ρύθμιση" "Αυτή είναι μια εφαρμογή συστήματος και δεν είναι δυνατή η κατάργηση της εγκατάστασής της." - "Rocket Launcher" "Φάκελος χωρίς όνομα" - "Αρχική οθόνη %1$d" "Σελίδα %1$d από %2$d" "Αρχική οθόνη %1$d από %2$d" - "Σελίδα εφαρμογών %1$d από %2$d" - "Σελίδα γραφικών στοιχείων %1$d από %2$d" "Καλώς ορίσατε" - "Νιώστε σαν στο σπίτι σας." - - - "Δημιουργία περισσότερων οθονών για εφαρμογές και φακέλους" "Αντιγραφή εικονιδίων εφαρμογών" "Εισαγωγή εικονιδίων και φακέλων από παλιές αρχικές οθόνες;" "ΑΝΤΙΓΡΑΦΗ ΕΙΚΟΝΙΔΙΩΝ" "ΝΕΑ ΕΝΑΡΞΗ" - "Οργανώστε το χώρο σας" - "Αγγίξτε παρατεταμένα το φόντο για να διαχειριστείτε την ταπετσαρία, τα γραφικά στοιχεία και τις ρυθμίσεις." "Ταπετσαρίες, γραφικά στοιχεία και ρυθμίσεις" "Αγγίξτε παρατεταμένα το παρασκήνιο για προσαρμογή" "ΕΓΙΝΕ" - "Ορίστε ένας φάκελος" - "Για να δημιουργήσετε έναν φάκελο σαν κι αυτόν, πατήστε παρατεταμένα μια εφαρμογή και στη συνέχεια, μετακινήστε τη πάνω σε μια άλλη." - "OK" "Άνοιγμα φακέλου, %1$d επί %2$d" "Αγγίξτε για να κλείσετε τον φάκελο" "Αγγίξτε για να αποθηκεύσετε το νέο όνομα" @@ -111,14 +68,34 @@ "Γραφικά στοιχεία" "Ταπετσαρίες" "Ρυθμίσεις" - "Αναμονή" - "Λήψη " - "Εγκατάσταση" + "Να επιτρέπεται η περιστροφή" "Άγνωστο" - "Δεν ανακτήθηκε" - "Κατάργηση όλων" "Κατάργηση" "Αναζήτηση" "Αυτή η εφαρμογή δεν είναι εγκατεστημένη" "Η εφαρμογή γι\' αυτό το εικονίδιο δεν είναι εγκατεστημένη. Μπορείτε να το καταργήσετε ή να αναζητήσετε την εφαρμογή και να την εγκαταστήσετε με μη αυτόματο τρόπο." + "Προσθήκη στην αρχική οθόνη" + "Μετακίνηση στοιχείου εδώ" + "Το στοιχείο προστέθηκε στην αρχική οθόνη" + "Το στοιχείο καταργήθηκε" + "Μετακίνηση στοιχείου" + "Μετακίνηση στη σειρά %1$s, στήλη %2$s" + "Μετακίνηση στη θέση %1$s" + "Μετακίνηση στη θέση %1$s στα αγαπημένα" + "Το στοιχείο καταργήθηκε" + "Προσθήκη στο φάκελο: %1$s" + "Προσθήκη στο φάκελο με την εφαρμογή %1$s" + "Το στοιχείο προστέθηκε στο φάκελο" + "Δημιουργία φακέλου με: %1$s" + "Δημιουργήθηκε φάκελος" + "Μετακίνηση Αρχικής οθόνης" + "Μετακίνηση οθόνης αριστερά" + "Μετακίνηση οθόνης δεξιά" + "Η οθόνη μετακινήθηκε" + "Προσαρμογή μεγέθους" + "Αύξηση του πλάτους" + "Αύξηση του ύψους" + "μείωση του πλάτους" + "Μείωση του ύψους" + "Έγινε προσαρμογή του μεγέθους του γραφικού στοιχείου σε %1$s πλάτος και %2$s ύψος" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 0d004fef5..09963e422 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Home" - "Android Core Apps" + "Work" "App isn\'t installed." "App isn\'t available" "Downloaded app disabled in Safe mode" "Widgets disabled in Safe mode" - "Widgets" - "Widgets" "Show Mem" "Touch & hold to pick up a widget." "%1$d × %2$d" - "Couldn\'t drop item on this Home screen." - "Choose widget to create" - "Folder name" - "Rename folder" - "OK" - "Cancel" - "Add to Home screen" - "Apps" - "Shortcuts" - "Widgets" - "No more room on your Home screens." + "Search Apps" + "Loading Apps…" + "No Apps found matching \"%1$s\"" "No more room on this Home screen." "No more room in the Favourites tray" - "This widget is too large for the Favourites tray" - "Shortcut \"%s\" created." - "Shortcut \"%s\" was removed." - "Shortcut \"%s\" already exists." - "Choose shortcut" - "Choose app" "Apps" "Home" - "Remove" - "Uninstall" "Remove" "Uninstall" "App info" - "Apps" - "Remove" - "Uninstall update" - "Uninstall app" - "App details" - "1 app selected" - "1 widget selected" - "1 folder selected" - "1 shortcut selected" "install shortcuts" "Allows an app to add shortcuts without user intervention." - "uninstall shortcuts" - "Allows the app to remove shortcuts without user intervention." "read Home settings and shortcuts" "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" @@ -78,30 +48,17 @@ "Problem loading widget" "Setup" "This is a system app and can\'t be uninstalled." - "Rocket Launcher" "Unnamed Folder" - "Home screen %1$d" "Page %1$d of %2$d" "Home screen %1$d of %2$d" - "Apps page %1$d of %2$d" - "Widgets page %1$d of %2$d" "Welcome" - "Make yourself at home." - - - "Create more screens for apps and folders" "Copy your app icons" "Import icons and folders from your old Home screens?" "COPY ICONS" "START AFRESH" - "Organise your space" - "Touch & hold background to manage wallpaper, widgets and settings." "Wallpapers, widgets, & settings" "Touch & hold background to customise" "GOT IT" - "Here\'s a folder" - "To create one like this, touch & hold an app, then move it over another." - "OK" "Folder opened, %1$d by %2$d" "Touch to close folder" "Touch to save rename" @@ -111,14 +68,34 @@ "Widgets" "Wallpapers" "Settings" - "Waiting" - "Downloading" - "Installing" + "Allow rotation" "Unknown" - "Not restored" - "Remove All" "Remove" "Search" "This app is not installed" "The app for this icon isn\'t installed. You can remove it, or search for the app and install it manually." + "Add to Home screen" + "Move item here" + "Item added to home screen" + "Item removed" + "Move item" + "Move to row %1$s column %2$s" + "Move to position %1$s" + "Move to favourites position %1$s" + "Item moved" + "Add to folder: %1$s" + "Add to folder with %1$s" + "Item added to folder" + "Create folder with: %1$s" + "Folder created" + "Move to Home screen" + "Move screen to left" + "Move screen to right" + "Screen moved" + "Re-size" + "Increase width" + "Increase height" + "Decrease width" + "Decrease height" + "Widget re-sized to width %1$s height %2$s" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 0d004fef5..09963e422 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Home" - "Android Core Apps" + "Work" "App isn\'t installed." "App isn\'t available" "Downloaded app disabled in Safe mode" "Widgets disabled in Safe mode" - "Widgets" - "Widgets" "Show Mem" "Touch & hold to pick up a widget." "%1$d × %2$d" - "Couldn\'t drop item on this Home screen." - "Choose widget to create" - "Folder name" - "Rename folder" - "OK" - "Cancel" - "Add to Home screen" - "Apps" - "Shortcuts" - "Widgets" - "No more room on your Home screens." + "Search Apps" + "Loading Apps…" + "No Apps found matching \"%1$s\"" "No more room on this Home screen." "No more room in the Favourites tray" - "This widget is too large for the Favourites tray" - "Shortcut \"%s\" created." - "Shortcut \"%s\" was removed." - "Shortcut \"%s\" already exists." - "Choose shortcut" - "Choose app" "Apps" "Home" - "Remove" - "Uninstall" "Remove" "Uninstall" "App info" - "Apps" - "Remove" - "Uninstall update" - "Uninstall app" - "App details" - "1 app selected" - "1 widget selected" - "1 folder selected" - "1 shortcut selected" "install shortcuts" "Allows an app to add shortcuts without user intervention." - "uninstall shortcuts" - "Allows the app to remove shortcuts without user intervention." "read Home settings and shortcuts" "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" @@ -78,30 +48,17 @@ "Problem loading widget" "Setup" "This is a system app and can\'t be uninstalled." - "Rocket Launcher" "Unnamed Folder" - "Home screen %1$d" "Page %1$d of %2$d" "Home screen %1$d of %2$d" - "Apps page %1$d of %2$d" - "Widgets page %1$d of %2$d" "Welcome" - "Make yourself at home." - - - "Create more screens for apps and folders" "Copy your app icons" "Import icons and folders from your old Home screens?" "COPY ICONS" "START AFRESH" - "Organise your space" - "Touch & hold background to manage wallpaper, widgets and settings." "Wallpapers, widgets, & settings" "Touch & hold background to customise" "GOT IT" - "Here\'s a folder" - "To create one like this, touch & hold an app, then move it over another." - "OK" "Folder opened, %1$d by %2$d" "Touch to close folder" "Touch to save rename" @@ -111,14 +68,34 @@ "Widgets" "Wallpapers" "Settings" - "Waiting" - "Downloading" - "Installing" + "Allow rotation" "Unknown" - "Not restored" - "Remove All" "Remove" "Search" "This app is not installed" "The app for this icon isn\'t installed. You can remove it, or search for the app and install it manually." + "Add to Home screen" + "Move item here" + "Item added to home screen" + "Item removed" + "Move item" + "Move to row %1$s column %2$s" + "Move to position %1$s" + "Move to favourites position %1$s" + "Item moved" + "Add to folder: %1$s" + "Add to folder with %1$s" + "Item added to folder" + "Create folder with: %1$s" + "Folder created" + "Move to Home screen" + "Move screen to left" + "Move screen to right" + "Screen moved" + "Re-size" + "Increase width" + "Increase height" + "Decrease width" + "Decrease height" + "Widget re-sized to width %1$s height %2$s" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 0d004fef5..09963e422 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Home" - "Android Core Apps" + "Work" "App isn\'t installed." "App isn\'t available" "Downloaded app disabled in Safe mode" "Widgets disabled in Safe mode" - "Widgets" - "Widgets" "Show Mem" "Touch & hold to pick up a widget." "%1$d × %2$d" - "Couldn\'t drop item on this Home screen." - "Choose widget to create" - "Folder name" - "Rename folder" - "OK" - "Cancel" - "Add to Home screen" - "Apps" - "Shortcuts" - "Widgets" - "No more room on your Home screens." + "Search Apps" + "Loading Apps…" + "No Apps found matching \"%1$s\"" "No more room on this Home screen." "No more room in the Favourites tray" - "This widget is too large for the Favourites tray" - "Shortcut \"%s\" created." - "Shortcut \"%s\" was removed." - "Shortcut \"%s\" already exists." - "Choose shortcut" - "Choose app" "Apps" "Home" - "Remove" - "Uninstall" "Remove" "Uninstall" "App info" - "Apps" - "Remove" - "Uninstall update" - "Uninstall app" - "App details" - "1 app selected" - "1 widget selected" - "1 folder selected" - "1 shortcut selected" "install shortcuts" "Allows an app to add shortcuts without user intervention." - "uninstall shortcuts" - "Allows the app to remove shortcuts without user intervention." "read Home settings and shortcuts" "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" @@ -78,30 +48,17 @@ "Problem loading widget" "Setup" "This is a system app and can\'t be uninstalled." - "Rocket Launcher" "Unnamed Folder" - "Home screen %1$d" "Page %1$d of %2$d" "Home screen %1$d of %2$d" - "Apps page %1$d of %2$d" - "Widgets page %1$d of %2$d" "Welcome" - "Make yourself at home." - - - "Create more screens for apps and folders" "Copy your app icons" "Import icons and folders from your old Home screens?" "COPY ICONS" "START AFRESH" - "Organise your space" - "Touch & hold background to manage wallpaper, widgets and settings." "Wallpapers, widgets, & settings" "Touch & hold background to customise" "GOT IT" - "Here\'s a folder" - "To create one like this, touch & hold an app, then move it over another." - "OK" "Folder opened, %1$d by %2$d" "Touch to close folder" "Touch to save rename" @@ -111,14 +68,34 @@ "Widgets" "Wallpapers" "Settings" - "Waiting" - "Downloading" - "Installing" + "Allow rotation" "Unknown" - "Not restored" - "Remove All" "Remove" "Search" "This app is not installed" "The app for this icon isn\'t installed. You can remove it, or search for the app and install it manually." + "Add to Home screen" + "Move item here" + "Item added to home screen" + "Item removed" + "Move item" + "Move to row %1$s column %2$s" + "Move to position %1$s" + "Move to favourites position %1$s" + "Item moved" + "Add to folder: %1$s" + "Add to folder with %1$s" + "Item added to folder" + "Create folder with: %1$s" + "Folder created" + "Move to Home screen" + "Move screen to left" + "Move screen to right" + "Screen moved" + "Re-size" + "Increase width" + "Increase height" + "Decrease width" + "Decrease height" + "Widget re-sized to width %1$s height %2$s" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 4408080e2..636674293 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Pantalla principal" - "Aplicaciones básicas de Android" + "Trabajo" "No se instaló la aplicación." "La aplicación no está disponible." "Aplicación descargada inhabilitada en modo seguro" "Widgets inhabilitados en modo seguro" - "Widgets" - "Widgets" "Mostrar memoria" "Mantén presionado el widget que desees elegir." "%1$d × %2$d" - "Error al soltar elemento en la pantalla principal" - "Elegir los widgets para crear" - "Nombre de carpeta" - "Cambiar nombre de carpeta" - "Aceptar" - "Cancelar" - "Agregar a la pantalla principal" - "Aplicaciones" - "Accesos directos" - "Widgets" - "No hay más espacio en tus pantallas principales." + "Buscar aplicaciones" + "Cargando aplicaciones…" + "No hay aplicaciones que coincidan con %1$s." "No hay más espacio en esta pantalla principal." "La bandeja de favoritos está llena." - "Este widget es demasiado grande para la bandeja de favoritos." - "Se creó el acceso directo \"%s\"." - "Se eliminó el acceso directo \"%s\"." - "El acceso directo \"%s\" ya existe." - "Elegir acceso directo" - "Elegir aplicación" "Aplicaciones" "Pantalla principal" - "Eliminar" - "Desinstalar" "Eliminar" "Desinstalar" "Información de la aplicación" - "Aplicaciones" - "Eliminar" - "Desinstalar actualización" - "Desinstalar aplicación" - "Detalles de la aplicación" - "Se seleccionó 1 aplicación." - "Se seleccionó 1 widget." - "Se seleccionó 1 carpeta." - "Se seleccionó 1 acceso directo." "instalar accesos directos" "Permite que una aplicación agregue accesos directos sin que el usuario intervenga." - "desinstalar accesos directos" - "Permite que la aplicación elimine accesos directos sin que el usuario intervenga." "leer configuración y accesos directos de la pantalla principal" "Permite que la aplicación lea la configuración y los accesos directos de la pantalla principal." "escribir configuración y accesos directos de la pantalla principal" @@ -78,30 +48,17 @@ "Problema al cargar el widget" "Configuración" "Esta es una aplicación del sistema y no se puede desinstalar." - "Lanzacohetes" "Carpeta sin nombre" - "Pantalla principal %1$d" "Página %1$d de %2$d" "Pantalla principal %1$d de %2$d" - "Página de aplicaciones %1$d de %2$d" - "Página de widgets %1$d de %2$d" "Bienvenido" - "Siéntete como en casa." - - - "Crea más pantallas para aplicaciones y carpetas." "Copiar íconos de aplicaciones" "¿Importar íconos y carpetas de pant. principales antiguas?" "COPIAR ÍCONOS" "EMPEZAR DE CERO" - "Organiza tu espacio" - "Mantén presionado el fondo para administrar el fondo de pantalla, los widgets y la configuración." "Fondos, widgets y configuración" "Mantén presionado el fondo para personalizarlo" "ENTENDIDO" - "Aquí tienes una carpeta" - "Para crear una carpeta como esta, mantén presionada una aplicación y luego muévela sobre otra." - "Aceptar" "Carpeta abierta, %1$d por %2$d" "Toca para cerrar la carpeta." "Toca para guardar el nuevo nombre." @@ -111,14 +68,34 @@ "Widgets" "Fondos de pantalla" "Configuración" - "Pendiente" - "Descargando" - "Instalando" + "Permitir la rotación" "Desconocido" - "No restaurado" - "Eliminar todo" "Eliminar" "Buscar" "Esta aplicación no está instalada" "La aplicación para este ícono no está instalada. Puedes eliminar el ícono o buscar la aplicación e instarla manualmente." + "Agregar a la pantalla principal" + "Mover elemento aquí" + "Se agregó el elemento a la pantalla principal." + "Se eliminó el elemento." + "Mover elemento" + "Mover a fila %1$s, columna %2$s" + "Mover a la posición número %1$s" + "Mover a la posición de favoritos número %1$s" + "Elemento movido" + "Agregar a carpeta: %1$s" + "Agregar a la carpeta que contiene %1$s" + "Elemento agregado a la carpeta" + "Crear carpeta con: %1$s" + "Carpeta creada" + "Mover a la pantalla principal" + "Mover pantalla a la izquierda" + "Mover pantalla a la derecha" + "Se movió la pantalla." + "Ajustar tamaño" + "Aumentar el ancho" + "Aumentar la altura" + "Reducir el ancho" + "Reducir la altura" + "Se cambió la dimensión del widget a %1$s de ancho y %2$s de alto." diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 898d0eaa5..34331fce9 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Home" - "Aplicaciones básicas de Android" + "Trabajo" "La aplicación no está instalada." "La aplicación no está disponible" "Aplicación descargada inhabilitada en modo seguro" "Widgets inhabilitados en modo seguro" - "Widgets" - "Widgets" "Mostrar memoria" "Mantén pulsado el widget que quieras seleccionar." "%1$d × %2$d" - "Error al arrastrar elemento a pantalla de inicio." - "Selecciona widget a añadir" - "Nombre de carpeta" - "Cambiar nombre de carpeta" - "Aceptar" - "Cancelar" - "Añadir a la pantalla de inicio" - "Aplicaciones" - "Accesos directos" - "Widgets" - "No queda espacio en las pantallas de inicio." + "Busca aplicaciones" + "Cargando aplicaciones…" + "No se han encontrado aplicaciones que contengan \"%1$s\"" "No queda espacio en la pantalla de inicio." "La bandeja de favoritos está completa" - "Este widget es demasiado grande para la bandeja de favoritos" - "Se ha creado el acceso directo \"%s\"." - "Se ha eliminado el acceso directo \"%s\"." - "El acceso directo \"%s\" ya existe." - "Selecciona un acceso directo" - "Selecciona una aplicación" "Aplicaciones" "Inicio" - "Eliminar" - "Desinstalar" "Eliminar" "Desinstalar" "Información de la aplicación" - "Aplicaciones" - "Eliminar" - "Desinstalar actualización" - "Desinstalar aplicación" - "Información de la aplicación" - "1 aplicación seleccionada" - "1 widget seleccionado" - "1 carpeta seleccionada" - "1 acceso directo seleccionado" "instalar accesos directos" "Permite que una aplicación añada accesos directos sin intervención del usuario." - "desinstalar accesos directos" - "Permite que la aplicación elimine accesos directos sin intervención del usuario." "leer información de accesos directos y de ajustes de la pantalla de inicio" "Permite que la aplicación consulte los ajustes y los accesos directos de la pantalla de inicio." "escribir información de accesos directos y de ajustes de la pantalla de inicio" @@ -78,30 +48,17 @@ "Problema al cargar el widget" "Configuración" "Esta aplicación es del sistema y no se puede desinstalar." - "Rocket Launcher" "Carpeta sin nombre" - "Pantalla de inicio %1$d" "Página %1$d de %2$d" "Pantalla de inicio %1$d de %2$d" - "Página de aplicaciones %1$d de %2$d" - "Página de widgets %1$d de %2$d" "Te damos la bienvenida" - "Personaliza tu pantalla de inicio." - - - "Crea más pantallas para aplicaciones y carpetas" "Copiar iconos de aplicaciones" "¿Importar iconos y carpetas de pantallas de inicio antiguas?" "COPIAR ICONOS" "AJUSTES PREDETERMINADOS" - "Organiza tu espacio" - "Mantén pulsado el fondo para gestionar el fondo de pantalla, los widgets y los ajustes." "Fondos de pantalla, widgets y ajustes" "Mantén pulsado el fondo para personalizarlo" "ENTENDIDO" - "Esto es una carpeta" - "Para crear una carpeta como esta, mantén pulsada una aplicación y muévela sobre otra." - "Aceptar" "Carpeta abierta, %1$d por %2$d" "Toca para cerrar la carpeta" "Toca para cambiar el nuevo nombre" @@ -111,14 +68,34 @@ "Widgets" "Fondos de pantalla" "Ajustes" - "Esperando" - "Descargando" - "Instalando" + "Permitir rotación" "Desconocido" - "No restaurado" - "Eliminar todo" "Eliminar" "Buscar" "Esta aplicación no está instalada" "La aplicación de este icono no está instalada. Puedes eliminar el icono o buscar la aplicación e instalarla manualmente." + "Añadir a la pantalla de inicio" + "Mover elemento aquí" + "Elemento añadido a la pantalla de inicio" + "Elemento eliminado" + "Mover elemento" + "Mover a la fila %1$s, columna %2$s" + "Mover a la posición número %1$s" + "Mover a la posición número %1$s de favoritos" + "Elemento movido" + "Añadir a carpeta: %1$s" + "Añadir a la carpeta con %1$s" + "Elemento añadido a carpeta" + "Crear carpeta con: %1$s" + "Carpeta creada" + "Mover a la pantalla de inicio" + "Mover pantalla a la izquierda" + "Mover pantalla a la derecha" + "Pantalla movida" + "Modificar tamaño" + "Aumentar ancho" + "Aumentar altura" + "Reducir ancho" + "Reducir altura" + "Se ha modificado el tamaño del widget a %1$s de ancho y %2$s de alto" diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index 76b20aba7..c4ba823cc 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Avaekraan" - "Androidi tuumrakendused" + "Töö" "Rakendus pole installitud." "Rakendus ei ole saadaval" "Allalaetud rakendus on turvarežiimis keelatud" "Turvarežiimis on vidinad keelatud" - "Vidinad" - "Vidinad" "Mälu kuvamine" "Vidina valimiseks vajutage ja hoidke seda all." "%1$d × %2$d" - "Üksust ei saanud sellele avaekraanile tuua." - "Valige loomiseks vidin" - "Kausta nimi" - "Kausta ümbernimetamine" - "OK" - "Tühista" - "Avaekraanile lisamine" - "Rakendused" - "Otseteed" - "Vidinad" - "Teie avaekraanidel ei ole enam ruumi." + "Otsige rakendustest" + "Rakenduste laadimine ..." + "Päringule „%1$s” ei vastanud ükski rakendus" "Sellel avaekraanil pole enam ruumi." "Salves Lemmikud pole rohkem ruumi" - "See vidin on salve Lemmikud jaoks liiga suur" - "Otsetee „%s” on loodud." - "Otsetee „%s” on eemaldatud." - "Otsetee „%s” on juba olemas." - "Otsetee valimine" - "Rakenduse valimine" "Rakendused" "Avaekraan" - "Eemalda" - "Desinstalli" "Eemalda" "Desinstalli" "Rakenduse teave" - "Rakendused" - "Eemalda" - "Desinstalli värskendus" - "Rakenduse desinstallimine" - "Rakenduse üksikasjad" - "Valitud on 1 rakendus" - "Valitud on 1 vidin" - "Valitud on 1 kaust" - "Valitud on 1 otsetee" "installi otseteed" "Võimaldab rakendusel lisada otseteid kasutaja sekkumiseta." - "desinstalli otseteed" - "Võimaldab rakendusel eemaldada otseteid kasutaja sekkumiseta." "loe avaekraani seadeid ja otseteid" "Võimaldab rakendusel lugeda avaekraanil seadeid ja otseteid." "kirjuta avaekraani seaded ja otseteed" @@ -78,30 +48,17 @@ "Probleem vidina laadimisel" "Seadistamine" "See on süsteemirakendus ja seda ei saa desinstallida." - "Rocket Launcher" "Nimetu kaust" - "Avaekraan %1$d" "Leht %1$d/%2$d" "Avaekraan %1$d/%2$d" - "Rakenduste leht %1$d/%2$d" - "Vidinate leht %1$d/%2$d" "Tere tulemast" - "Tundke end nagu kodus." - - - "Looge rakenduste ja kaustade jaoks rohkem ekraanikuvasid" "Kopeerige rakenduste ikoonid" "Kas importida vanade avaekraanide ikoonid ja kaustad?" "KOPEERI IKOONID" "ALUSTA ALGUSEST" - "Korraldage oma ruumi" - "Taustapildi, vidinate ja seadete haldamiseks puudutage tausta ning hoidke seda all." "Taustapildid, vidinad ja seaded" "Kohandamiseks puudutage ja hoidke tausta all" "SELGE" - "Siin on kaust" - "Sarnase loomiseks vajutage ja hoidke rakendust all, seejärel viige see teise peale." - "OK" "Kaust on avatud, %1$d x %2$d" "Puudutage kausta sulgemiseks" "Puudutage uue nime salvestamiseks" @@ -111,14 +68,34 @@ "Vidinad" "Taustapildid" "Seaded" - "Ootamine" - "Allalaadimine" - "Installimine" + "Luba pööramine" "Teadmata" - "Ei taastatud" - "Eemalda kõik" "Eemalda" "Otsing" "See rakendus ei ole installitud" "Selle ikooni rakendust pole installitud. Saate selle eemaldada või rakendust otsida ja käsitsi installida." + "Lisa avaekraanile" + "Teisalda üksus siia" + "Üksus lisati avaekraanile" + "Üksus eemaldati" + "Teisalda üksus" + "Teisaldamine %1$s. rea %2$s. veergu" + "Teisaldamine %1$s. positsioonile" + "Teisaldamine lemmikute %1$s. positsioonile" + "Üksus teisaldati" + "Lisamine kausta: %1$s" + "Lisamine kausta nimega %1$s" + "Üksus lisati kausta" + "Kausta loomine nimega %1$s" + "Kaust on loodud" + "Teisalda avaekraanile" + "Teisalda ekraan vasakule" + "Teisalda ekraan paremale" + "Ekraan teisaldati" + "Muuda suurust" + "Suurenda laiust" + "Suurenda kõrgust" + "Vähenda laiust" + "Vähenda kõrgust" + "Vidina suurust muudeti. Laius: %1$s. Kõrgus: %2$s" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 3b0deb85b..afed3b548 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -20,95 +20,34 @@ "Käivitaja" - "Kodu" - "Androidi tuumrakendused" - "Taustapildi valimiskoht:" "Määra taustapilt" "Taustapildid" "Rakendus pole installitud." - "Vidinad" "Vidina valimiseks puudutage seda pikalt." - "Pood" "%1$d × %2$d" - "Üksust ei saa sellele avaekraanile tuua." - "Valige loomiseks vidin" - "Kausta nimi" - "Nimeta kaust ümber" - "OK" - "Tühista" - "Lisa avamenüüsse" - "Rakendused" - "Otseteed" - "Vidinad" - "Teie avakuvadel ei ole enam ruumi." "Sellel avalehel pole enam ruumi." "Kohandataval dokialal pole rohkem ruumi." - "See vidin on tööpunkti jaoks liiga suur." - "Otsetee „%s” loodud." - "Otsetee „%s” eemaldatud." - "Otsetee „%s” on juba olemas." - "Otsetee valimine" - "Rakenduse valimine" "Rakendused" "Kodu" - "Eemalda" - "Desinstalli" "Eemalda" "Desinstalli" "Rakenduse teave" - "Otsing" - "Häälotsing" - "Rakendused" - "Eemalda" - "Desinstalli värskendus" - "Lisa" - "Rakenduste haldamine" - "Taustapilt" - "Otsing" - "Teadistused" - "Süsteemiseaded" - "Abi" - "Rakenduse desinstallimine" - "Rakenduse üksikasjad" - "Valitud on 1 rakendus" - "1 vidin on valitud" - "1 kaust on valitud" - "1 otsetee on valitud" "otseteede installimine" "Võimaldab rakendusel lisada otseteid kasutaja sekkumiseta." - "otseteede desinstallimine" - "Võimaldab rakendusel eemaldada otseteid kasutaja sekkumiseta." "avalehe seadete ja otseteede lugemine" "Võimaldab rakendusel lugeda avalehe seadeid ja otseteid." "avalehe seadete ja otseteede kirjutamine" "Võimaldab rakendusel muuta avalehel seadeid ja otseteid." "Probleem vidina laadimisel" "See on süsteemirakendus ja seda ei saa desinstallida." - "Rocket Launcher" "Nimeta kaust" - "Avakuva %1$d" "Leht %1$d/%2$d" "Avakuva %1$d/%2$d" - "Rakenduste leht %1$d/%2$d" - "Vidinate leht %1$d/%2$d" - "Tunne end nagu kodus" - "Võite panna oma lemmikrakendused siia." - "Kõikide oma rakenduste nägemiseks puudutage ringi." - "Valige mõned rakendused" - "Rakenduse lisamiseks avakuvale puudutage seda pikalt." - "Korraldage oma rakendused kaustadesse" - "Rakenduse liigutamiseks pange sõrm rakendusele ja hoidke seda." - "Avakuval uue kausta tegemiseks virnastage üks rakendus teisele." - "OK" "Kaust on avatud, %1$d x %2$d" "Puudutage kausta sulgemiseks" "Puudutage uue nime salvestamiseks" "Kaust suletud" "Kausta uus nimi: %1$s" "%1$s" - - - - diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml index e02479c0e..8bfca6cd1 100644 --- a/res/values-eu-rES/strings.xml +++ b/res/values-eu-rES/strings.xml @@ -20,57 +20,27 @@ "Abiarazlea3" - "Hasiera" - "Android-en nukleoko aplikazioak" + "Lana" "Aplikazioa instalatu gabe dago." "Ez dago erabilgarri aplikazioa" "Deskargatutako aplikazioa modu seguruan desgaitu da" "Widgetak desgaitu egin dira modu seguruan" - "Widgetak" - "Widgetak" "Erakutsi memoria" "Eduki ukituta widgeta aukeratzeko." "%1$d × %2$d" - "Ezin izan da elementua hasierako pantailan jaregin." - "Aukeratu sortu beharreko widgeta" - "Karpetaren izena" - "Aldatu karpetaren izena" - "Ados" - "Utzi" - "Gehitu hasierako pantailan" - "Aplikazioak" - "Lasterbideak" - "Widgetak" - "Hasierako pantailetan ez dago toki gehiago." + "Bilatu aplikazioetan" + "Aplikazioak kargatzen…" + "Ez da aurkitu \"%1$s\" bilaketarekin bat datorren aplikaziorik" "Hasierako pantaila honetan ez dago toki gehiago." "Ez dago toki gehiago Gogokoak erretiluan" - "Widgeta handiegia da Gogokoak erretiluan ezartzeko" - "\"%s\" lasterbidea sortu da." - "\"%s\" lasterbidea kendu da." - "\"%s\" lasterbidea lehendik dago." - "Aukeratu lasterbidea" - "Aukeratu aplikazioa" "Aplikazioak" "Hasiera" - "Kendu" - "Desinstalatu" "Kendu" "Desinstalatu" "Aplikazioaren informazioa" - "Aplikazioak" - "Kendu" - "Desinstalatu eguneratzea" - "Desinstalatu aplikazioa" - "Aplikazioaren xehetasunak" - "Aplikazio bat hautatu da" - "Widget bat hautatu da" - "Karpeta bat hautatu da" - "Lasterbide bat hautatu da" "Instalatu lasterbideak" "Erabiltzaileak ezer egin gabe lasterbideak gehitzea baimentzen die aplikazioei." - "Desinstalatu lasterbideak" - "Erabiltzaileak ezer egin gabe lasterbideak kentzea baimentzen die aplikazioei." "Irakurri hasierako ezarpenak eta lasterbideak" "Hasierako pantailako ezarpenak eta lasterbideak irakurtzea baimentzen die aplikazioei." "Idatzi hasierako ezarpenak eta lasterbideak" @@ -78,30 +48,17 @@ "Arazo bat izan da widgeta kargatzean" "Konfigurazioa" "Sistema-aplikazioa da hau eta ezin da desinstalatu." - "Rocket Launcher" "Izenik gabeko karpeta" - "%1$d hasierako pantaila" "%1$d/%2$d orria" "%1$d/%2$d hasierako pantaila" - "%1$d/%2$d aplikazio-orria" - "%1$d/%2$d widget-orria" "Ongi etorri" - "Pertsonalizatu hasierako pantaila nahieran." - - - "Sortu pantaila gehiago aplikazioak eta karpetak ezartzeko" "Kopiatu aplikazioen ikonoak" "Ikonoak eta karpetak aurreko hasierako pantailatik inportatu?" "KOPIATU IKONOAK" "HASI HUTSETIK" - "Antolatu zure txokoa" - "Eduki ukituta atzeko planoa horma-paperak, widgetak eta ezarpenak kudeatzeko." "Horma-paperak, widgetak eta ezarpenak" "Pertsonalizatzeko, eduki ukituta atzeko planoa" "ADOS" - "Hortxe duzu karpeta" - "Horrelako bat sortzeko, eduki ukituta aplikazio bat eta eraman beste baten gainera." - "Ados" "Karpeta ireki da: %1$d x %2$d" "Karpeta ixteko, uki ezazu" "Karpetaren izen berria gordetzeko, uki ezazu" @@ -111,14 +68,34 @@ "Widgetak" "Horma-paperak" "Ezarpenak" - "Zain" - "Deskargatzen" - "Instalatzen" + "Baimendu biratzeko aukera" "Ezezaguna" - "Ez da leheneratu" - "Kendu guztiak" "Kendu" "Bilatu" "Aplikazio hau ez dago instalatuta" "Ikono honen aplikazioa ez dago instalatuta. Ikonoa ken dezakezu, edo aplikazioa bilatu eta eskuz instalatu." + "Gehitu hasierako pantailan" + "Ekarri elementua hona" + "Gehitu da elementua hasierako pantailan" + "Kendu da elementua" + "Mugitu elementua" + "Eraman %1$s. errenkadara, %2$s. zutabera" + "Eraman %1$s. postura" + "Eraman gogokoen %1$s. postura" + "Elementua mugitu da" + "Gehitu %1$s karpetan" + "Gehitu %1$s duen karpetan" + "Elementua karpetan gehitu da" + "Sortu karpeta %1$s elementuarekin" + "Karpeta sortu da" + "Eraman hasierako pantailara" + "Eraman pantaila ezkerrera" + "Eraman pantaila eskuinera" + "Mugitu da pantaila" + "Aldatu tamaina" + "Handitu zabalera" + "Handitu altuera" + "Txikitu zabalera" + "Txikitu altuera" + "Aldatu da widgetaren tamaina. Zabalera: %1$s. Altuera: %2$s." diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 924cccf75..701d59d50 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "صفحه اصلی" - "‏برنامه‌های Android Core" + "کاری" "برنامه نصب نشده است." "برنامه در دسترس نیست" "برنامه دانلود شده در حالت ایمن غیرفعال شد" "ابزارک‌ها در حالت ایمن غیرفعال هستند" - "ابزارک‌ها" - "ابزارک‌ها" "‏نمایش Mem" "برای انتخاب ابزارک لمس کنید و نگه دارید." "%1$d × %2$d" - "این مورد را نمی‌توان در این صفحه اصلی رها کرد." - "انتخاب ابزارکی که باید ایجاد شود" - "نام پوشه" - "تغییر نام پوشه" - "تأیید" - "لغو" - "افزودن به صفحه اصلی" - "برنامه‌ها" - "میان‌برها" - "ابزارک‌ها" - "فضای بیشتری در صفحات نمایش اصلی شما موجود نیست." + "جستجوی برنامه‌ها" + "در حال بارگیری برنامه‌ها..." + "هیچ برنامه‌ای مطابق با «%1$s» پیدا نشد" "فضای بیشتری در این صفحه اصلی موجود نیست." "فضای بیشتری در سینی موارد دلخواه وجود ندارد" - "این ابزارک برای سینی موارد دلخواه بسیار بزرگ است" - "میان‌بر «%s» ایجاد شد." - "میان‌بر «%s» حذف شد." - "میان‌بر «%s» در حال حاضر وجود دارد." - "انتخاب میان‌بر" - "انتخاب برنامه" "برنامه‌ها" "صفحه اصلی" - "حذف" - "حذف نصب" "حذف" "حذف نصب" "اطلاعات برنامه" - "برنامه‌ها" - "حذف" - "حذف نصب به‌روزرسانی" - "حذف نصب برنامه" - "جزئیات برنامه" - "۱ برنامه انتخاب شد" - "۱ ابزارک انتخاب شد" - "۱ پوشه انتخاب شد" - "۱ میان‌بر انتخاب شد" "نصب میان‌برها" "به برنامه اجازه می‌دهد میان‌برها را بدون دخالت کاربر اضافه کند." - "حذف نصب میان‌برها" - "به برنامه اجازه می‌دهد میان‌برها را بدون دخالت کاربر حذف کند." "خواندن تنظیمات و میان‌برهای صفحه اصلی" "به برنامه اجازه می‌دهد تنظیمات و میان‌برها را در صفحه اصلی بخواند." "نوشتن تنظیمات و میان‌برهای صفحه اصلی" @@ -78,30 +48,17 @@ "مشکل در بارگیری ابزارک" "تنظیم" "این برنامه سیستمی است و حذف نصب نمی‌شود." - "Rocket Launcher" "پوشه بی‌نام" - "‏صفحه اصلی %1$d" "‏صفحه %1$d از %2$d" "‏صفحه اصلی %1$d از %2$d" - "‏صفحه برنامه‌ها %1$d از %2$d" - "‏صفحه ابزارک‌ها %1$d از %2$d" "خوش آمدید" - "راحت باشید." - - - "صفحات بیشتری را برای برنامه‌ها و پوشه‌ها ایجاد کنید" "کپی کردن نمادهای برنامه شما" "نمادها و پوشه‌ها از صفحه‌های اصلی قدیمی شما وارد شوند؟" "کپی نمادها" "شروع تازه" - "فضای خود را سازماندهی کنید" - "برای مدیریت کاغذدیواری، ابزارک‌ها و تنظیمات، پس‌زمینه را لمس کرده و نگه‌دارید." "کاغذدیواری‌ها، ابزارک‌ها و تنظیمات" "برای سفارشی کردن، پس‌زمینه را لمس کنید و نگه‌دارید" "متوجه شدم" - "اینجا یک پوشه است" - "برای ایجاد پوشه‌ای مثل این، یک برنامه را لمس کرده و نگه‌دارید، سپس آن را روی برنامه دیگر بیاندازید." - "تأیید" "پوشه باز شده، %1$d در %2$d" "برای بستن پوشه لمس کنید" "برای ذخیره تغییر نام لمس کنید" @@ -111,14 +68,34 @@ "ابزارک‌ها" "کاغذدیواری‌ها" "تنظیمات" - "در حال انتظار" - "در حال دانلود" - "در حال نصب" + "چرخش مجاز است" "نامشخص" - "بازیابی نشد" - "حذف همه" "حذف" "جستجو" "این برنامه نصب نشده است." "برنامه برای این نماد نصب نشده است. می‌توانید آن را حذف کنید یا سعی کنید برنامه را جستجو کنید و آن را به صورت دستی نصب کنید." + "افزودن به صفحه اصلی" + "انتقال مورد به اینجا" + "مورد به صفحه اصلی اضافه شد" + "مورد حذف شد" + "انتقال مورد" + "انتقال به سطر %1$s ستون %2$s" + "انتقال به موقعیت %1$s" + "انتقال به موقعیت دلخواه %1$s" + "مورد منتقل شد" + "افزودن به پوشه: %1$s" + "افزودن به پوشه حاوی %1$s" + "مورد به پوشه اضافه شد" + "ایجاد پوشه با: %1$s" + "پوشه ایجاد شد" + "انتقال به صفحه اصلی" + "انتقال صفحه به چپ" + "انتقال صفحه به راست" + "صفحه منتقل شد" + "تغییر اندازه" + "افزایش عرض" + "افزایش ارتفاع" + "کاهش عرض" + "کاهش ارتفاع" + "اندازه ابزارک به عرض %1$s ارتفاع %2$s تغییر کرد" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index a5da03f43..f0766d68a 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Aloitusruutu" - "Androidin ydinsovellukset" + "Työ" "Sovellusta ei ole asennettu." "Sovellus ei ole käytettävissä" "Ladattu sovellus poistettiin käytöstä suojatussa tilassa" "Widgetit poistettu käytöstä vikasietotilassa" - "Widgetit" - "Widgetit" "Näytä muisti" "Valitse widget painamalla sitä pitkään." "%1$d × %2$d" - "Kohteen lisääminen tähän aloitusruutuun epäonnistui." - "Valitse luotava widget" - "Kansion nimi" - "Nimeä kansio uudelleen" - "OK" - "Peruuta" - "Lisää aloitusruutuun" - "Sovellukset" - "Pikakuvakkeet" - "Widgetit" - "Aloitusruuduilla ei ole enää tilaa." + "Sovellushaku" + "Ladataan sovelluksia…" + "”%1$s” ei palauttanut sovelluksia." "Tässä aloitusruudussa ei ole enää tilaa." "Suosikit-valikossa ei ole enää tilaa" - "Tämä widget on liian suuri Suosikit-valikkoon lisättäväksi" - "Pikakuvake %s luotiin." - "Pikakuvake %s poistettiin." - "Pikakuvake %s on jo olemassa." - "Valitse pikakuvake" - "Valitse sovellus" "Sovellukset" "Aloitusruutu" - "Poista" - "Poista" "Poista" "Poista" "Sovelluksen tiedot" - "Sovellukset" - "Poista" - "Poista päivitys" - "Poista sovellus" - "Sovelluksen tiedot" - "1 sovellus valittu" - "1 widget valittu" - "1 kansio valittu" - "1 pikakuvake valittu" "asenna pikakuvakkeita" "Antaa sovelluksen lisätä pikakuvakkeita itsenäisesti ilman käyttäjän valintaa." - "poista pikakuvakkeita" - "Antaa sovelluksen poistaa pikakuvakkeita ilman käyttäjän valintaa." "lue aloitusruudun asetuksia ja pikakuvakkeita" "Antaa sovelluksen lukea aloitusruudun asetukset ja pikakuvakkeet." "kirjoita aloitusruudun asetuksia ja pikakuvakkeita" @@ -78,30 +48,17 @@ "Ongelma ladattaessa widgetiä" "Asetus" "Tämä on järjestelmäsovellus, eikä sitä voi poistaa." - "Sinko" "Nimetön kansio" - "Aloitusruutu %1$d" "Sivu %1$d / %2$d" "Aloitusruutu %1$d/%2$d" - "Apps-sivu %1$d / %2$d" - "Widgetit-sivu %1$d / %2$d" "Tervetuloa" - "Ole kuin kotonasi." - - - "Luo lisää ruutuja sovelluksille ja kansioille" "Kopioi sovelluskuvakkeet" "Tuodaanko kuvakkeet ja kansiot vanhoista aloitusruuduista?" "KOPIOI KUVAKKEET" "ALOITA ALUSTA" - "Järjestä tilasi" - "Hallitse taustakuvaa, widgetejä ja asetuksia koskettamalla taustaa pitkään." "Taustakuvat, widgetit ja asetukset" "Muokkaa taustaa koskettamalla ja painamalla pitkään" "SELVÄ" - "Tässä on kansio" - "Luo se seuraavasti: kosketa sovellusta pitkään ja siirrä se sitten toisen päälle." - "OK" "Kansio avattu, koko %1$d x %2$d" "Sulje kansio koskettamalla" "Tallenna uudella nimellä koskettamalla" @@ -111,14 +68,34 @@ "Widgetit" "Taustakuvat" "Asetukset" - "Odottaa" - "Ladataan" - "Asennetaan" + "Salli kierto" "Tuntematon" - "Ei palautettu" - "Poista kaikki" "Poista" "Haku" "Sovellusta ei ole asennettu" "Kuvakkeen sovellusta ei ole asennettu. Voit poistaa kuvakkeen tai etsiä sovelluksen ja asentaa sen manuaalisesti." + "Lisää aloitusnäytölle" + "Siirrä kohde tänne" + "Kohde lisättiin aloitusnäytölle." + "Kohde poistettiin." + "Siirrä kohde" + "Siirrä rivin %1$s sarakkeeseen %2$s." + "Siirrä kohtaan %1$s." + "Siirrä suosikkien kohtaan %1$s." + "Kohde on siirretty." + "Lisää kansioon %1$s." + "Lisää samaan kansioon sovelluksen %1$s kanssa." + "Kohde on lisätty kansioon." + "Luo kansio, jossa on %1$s." + "Kansio on luotu." + "Siirrä aloitusnäytölle" + "Siirrä näyttöä vasemmalle" + "Siirrä näyttöä oikealle" + "Näyttö siirrettiin." + "Muuta kokoa" + "Lisää leveyttä" + "Lisää korkeutta" + "Vähennä leveyttä" + "Vähennä korkeutta" + "Widgetin kokoa muutettiin. Sen leveys on nyt %1$s ja korkeus %2$s." diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 62a2b894e..0c19ef268 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -20,57 +20,27 @@ "Lanceur3" - "Accueil" - "Applications de base Android" + "Travail" "L\'application n\'est pas installée." "Application indisponible" "L\'application téléchargée est désactivée en mode sécurisé." "Widgets désactivés en mode sans échec" - "Widgets" - "Widgets" "Afficher la mémoire" "Maintenez un doigt sur le widget pour l\'ajouter." "%1$d × %2$d" - "Imposs. de déposer l\'élément sur l\'écran d\'accueil" - "Sélectionnez le widget à créer" - "Nom du dossier" - "Renommer le dossier" - "OK" - "Annuler" - "Ajouter à l\'écran d\'accueil" - "Applications" - "Raccourcis" - "Widgets" - "Vous n\'avez plus d\'espace libre sur vos écrans d\'accueil." + "Rechercher des applications" + "Chargement des applications en cours..." + "Aucune application trouvée correspondant à « %1$s »" "Pas d\'espace libre sur l\'écran d\'accueil." "Il n\'y a plus d\'espace dans la zone des favoris" - "Ce widget est trop volumineux pour la zone des favoris" - "Le raccourci « %s » a été créé." - "Le raccourci « %s » a été supprimé." - "Le raccourci « %s » existe déjà." - "Sélectionner un raccourci" - "Sélectionner une application" "Applications" "Accueil" - "Supprimer" - "Désinstaller" "Supprimer" "Désinstaller" "Détails de l\'application" - "Applications" - "Supprimer" - "Désinstaller la mise à jour" - "Désinstaller l\'application" - "Détails de l\'application" - "1 application sélectionnée" - "1 widget sélectionné" - "1 dossier sélectionné" - "1 raccourci sélectionné" "installer des raccourcis" "Permet à une application d\'ajouter des raccourcis sans l\'intervention de l\'utilisateur." - "désinstaller des raccourcis" - "Permet à l\'application de supprimer des raccourcis sans l\'intervention de l\'utilisateur." "lire les paramètres et les raccourcis de la page d\'accueil" "Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil." "enregistrer les paramètres de la page d\'accueil et des raccourcis" @@ -78,30 +48,17 @@ "Problème lors du chargement du widget" "Configuration" "Impossible de désinstaller cette application, car il s\'agit d\'une application système." - "Lance-missile" "Dossier sans nom" - "Écran d\'accueil %1$d" "Page %1$d sur %2$d" "Écran d\'accueil %1$d sur %2$d" - "Page des applications : %1$d sur %2$d" - "Page des widgets : %1$d sur %2$d" "Bienvenue" - "Faites comme chez vous." - - - "Créer plus d\'écrans pour les applications et les dossiers" "Copier les icônes de vos applis" "Importer les icônes et dossiers des anciens écrans d\'accueil?" "COPIER LES ICÔNES" "DISPOSITION PAR DÉFAUT" - "Organiser son espace personnel" - "Maintenez votre doigt sur l\'arrière-plan pour gérer les fonds d\'écran, les widgets et les paramètres." "Fonds d\'écran, widgets et paramètres" "Maintenez le doigt sur le fond d\'écran pour personnaliser" "J\'ai compris" - "Voici un dossier" - "Pour créer un dossier comme ça, maintenez votre doigt sur une application, puis déplacez-la sur une autre." - "OK" "Dossier ouvert, %1$d par %2$d" "Toucher pour fermer le dossier" "Toucher pour enregistrer le nouveau nom" @@ -111,14 +68,34 @@ "Widgets" "Fonds d\'écran" "Paramètres" - "En attente" - "Téléchargement..." - "Installation…" + "Permettre la rotation" "Inconnu" - "Non restauré" - "Tout supprimer" "Supprimer" "Rechercher" "Cette application n\'est pas installée" "L\'application liée à cette icône n\'est pas installée. Vous pouvez la supprimer ou rechercher l\'application et l\'installer manuellement." + "Ajouter à l\'écran d\'accueil" + "Déplacer l\'élément ici" + "Élément ajouté à l\'écran d\'accueil" + "Élément supprimé" + "Déplacer l\'élément" + "Déplacer vers rangée %1$s colonne %2$s" + "Déplacer vers la position %1$s" + "Déplacer vers la position %1$s dans les favoris" + "Élément déplacé" + "Ajouter au dossier : %1$s" + "Ajouter au dossier contenant %1$s" + "Élément ajouté au dossier" + "Créer un dossier avec : %1$s" + "Dossier créé" + "Déplacer sur l\'écran d\'accueil" + "Déplacer l\'écran à gauche" + "Déplacer l\'écran à droite" + "Écran déplacé" + "Redimensionner" + "Augmenter la largeur" + "Augmenter la hauteur" + "Diminuer la largeur" + "Diminuer la hauteur" + "Le widget a été redimensionné (largeur : %1$s, hauteur : %2$s)" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index d23b6a492..662bcf14e 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Accueil" - "Applications de base Android" + "Android Work" "L\'application n\'est pas installée." "Application indisponible" "L\'application téléchargée est désactivée en mode sécurisé." "Les widgets sont désactivés en mode sécurisé." - "Widgets" - "Widgets" "Afficher la mémoire" "App. de manière prolongée pour sélectionner widget." "%1$d x %2$d" - "Impossible de déposer élément sur écran d\'accueil." - "Sélectionner le widget à créer" - "Nom du dossier" - "Renommer le dossier" - "OK" - "Annuler" - "Ajouter à l\'écran d\'accueil" - "Applications" - "Raccourcis" - "Widgets" - "Vous n\'avez plus d\'espace libre sur vos écrans d\'accueil." + "Rechercher dans les applications" + "Chargement des applications en cours…" + "Aucune application ne correspond à la requête \"%1$s\"." "Pas d\'espace libre sur cet écran d\'accueil." "Plus d\'espace disponible dans la zone de favoris." - "Ce widget est trop volumineux pour la zone de favoris." - "Le raccourci \"%s\" a été créé." - "Le raccourci \"%s\" a été supprimé." - "Le raccourci \"%s\" existe déjà." - "Sélectionner un raccourci" - "Sélectionner une application" "Applications" "Accueil" - "Supprimer" - "Désinstaller" "Supprimer" "Désinstaller" "Informations sur l\'application" - "Applications" - "Supprimer" - "Désinstaller la mise à jour" - "Désinstaller l\'application" - "Informations sur l\'application" - "1 application sélectionnée" - "1 widget sélectionné" - "1 dossier sélectionné" - "1 raccourci sélectionné" "installer des raccourcis" "Permettre à une application d\'ajouter des raccourcis sans l\'intervention de l\'utilisateur" - "désinstaller des raccourcis" - "Permettre à l\'application de supprimer des raccourcis sans l\'intervention de l\'utilisateur" "lire les paramètres et les raccourcis de l\'écran d\'accueil" "Permettre à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil" "modifier les paramètres et les raccourcis de l\'écran d\'accueil" @@ -78,30 +48,17 @@ "Problème lors du chargement du widget." "Configuration" "Impossible de désinstaller cette application, car il s\'agit d\'une application système." - "Rocket Launcher" "Dossier sans nom" - "Écran d\'accueil %1$d" "Page %1$d sur %2$d" "Écran d\'accueil %1$d sur %2$d" - "Page des applications %1$d sur %2$d" - "Page des widgets %1$d sur %2$d" "Bienvenue" - "Familiarisez-vous avec l\'écran d\'accueil." - - - "Créez des écrans personnalisés pour vos applis et dossiers" "Copier les icônes de vos applis" "Importer les icônes et dossiers des anciens écrans d\'accueil ?" "COPIER LES ICÔNES" "DISPOSITION PAR DÉFAUT" - "Organisez votre espace" - "Appuyez de manière prolongée sur l\'arrière-plan pour gérer les fonds d\'écran, les widgets et les paramètres." "Fonds d\'écran, widgets et paramètres" "Appuyez de manière prolongée sur l\'arrière-plan pour le personnaliser." "OK" - "Voici un dossier" - "Pour en créer un, appuyez de manière prolongée sur une application, puis déplacez-la vers une autre." - "OK" "Dossier ouvert, %1$d par %2$d" "Appuyez pour fermer le dossier." "Appuyez pour enregistrer le nouveau nom." @@ -111,14 +68,34 @@ "Widgets" "Fonds d\'écran" "Paramètres" - "En attente" - "Téléchargement…" - "Installation…" + "Autoriser la rotation" "Inconnu" - "Non restauré" - "Tout supprimer" "Supprimer" "Rechercher" "Cette application n\'est pas installée" "L\'application correspondant à cette icône n\'est pas installée. Vous pouvez supprimer cette dernière, ou essayer de rechercher l\'application et de l\'installer manuellement." + "Ajouter à l\'écran d\'accueil" + "Déplacer l\'élément ici" + "L\'élément a bien été ajouté à l\'écran d\'accueil." + "L\'élément a bien été supprimé." + "Déplacer l\'élément" + "Déplacer vers la ligne %1$s, colonne %2$s" + "Déplacer vers la position %1$s" + "Déplacer vers la position %1$s dans les favoris" + "Élément déplacé" + "Ajouter au dossier \"%1$s\"" + "Ajouter au dossier contenant \"%1$s\"" + "Élément ajouté au dossier" + "Créer un dossier avec \"%1$s\"" + "Dossier créé" + "Déplacer vers l\'écran d\'accueil" + "Déplacer l\'écran vers la gauche" + "Déplacer l\'écran vers la droite" + "L\'écran a bien été déplacé." + "Redimensionner" + "Augmenter la largeur" + "Augmenter la hauteur" + "Diminuer la largeur" + "Diminuer la hauteur" + "Le widget a bien été redimensionné (largeur : %1$s, hauteur : %2$s)." diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml index 96a53dc09..6cf76a7c0 100644 --- a/res/values-gl-rES/strings.xml +++ b/res/values-gl-rES/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Inicio" - "Aplicacións básicas de Android" + "Traballo" "A aplicación non está instalada" "A aplicación non está dispoñible" "A aplicación que descargaches está desactivada no modo seguro" "Os widgets están desactivados no modo seguro" - "Widgets" - "Widgets" "Mostrar memoria" "Mantén premido un widget para seleccionalo." "%1$d × %2$d" - "Non se puido engadir á pantalla de inicio." - "Escolle o widget que queiras crear" - "Nome do cartafol" - "Cambiar o nome do cartafol" - "Aceptar" - "Cancelar" - "Engadir á pantalla de inicio" - "Aplicacións" - "Atallos" - "Widgets" - "Non hai máis espazo nas pantallas de inicio." + "Aplicacións de busca" + "Cargando aplicacións..." + "Non se atoparon aplicacións que coincidan con \"%1$s\"" "Non hai máis espazo nesta pantalla de inicio." "Non hai máis espazo na bandexa de favoritos" - "Este widget é demasiado grande para a bandexa de favoritos" - "Creouse o atallo \"%s\"." - "Eliminouse o atallo \"%s\"." - "O atallo \"%s\" xa existe." - "Escoller un atallo" - "Escoller unha aplicación" "Aplicacións" "Inicio" - "Eliminar" - "Desinstalar" "Eliminar" "Desinstalar" "Información da aplicación" - "Aplicacións" - "Eliminar" - "Desinstalar actualización" - "Desinstalar aplicación" - "Detalles da aplicación" - "1 aplicación seleccionada" - "1 widget seleccionado" - "1 cartafol seleccionado" - "1 atallo seleccionado" "instalar atallos" "Permite a unha aplicación engadir atallos sen intervención do usuario." - "desinstalar atallos" - "Permite a unha aplicación eliminar atallos sen intervención do usuario." "ler a configuración e os atallos da pantalla de inicio" "Permite a unha aplicación ler a configuración e os atallos da páxina de inicio." "modificar a configuración e os atallos da pantalla de inicio" @@ -78,30 +48,17 @@ "Produciuse un problema ao cargar o widget" "Configuración" "Esta aplicación é do sistema e non se pode desinstalar." - "Lanzacohetes" "Cartafol sen nome" - "Pantalla de inicio %1$d" "Páxina %1$d de %2$d" "Pantalla de inicio %1$d de %2$d" - "Páxina de aplicacións %1$d de %2$d" - "Páxina de widgets %1$d de %2$d" "Dámosche a benvida" - "Síntete como na túa casa." - - - "Crea máis pantallas para aplicacións e cartafoles" "Copiar iconas das aplicacións" "Queres importar as iconas e os cartafoles doutras pantallas de inicio?" "COPIAR ICONAS" "COMEZAR DE CERO" - "Organiza o espazo" - "Mantén premido o fondo para xestionar o fondo de pantalla e máis." "Fondos pantalla, widgets e configuración" "Mantén tocado o segundo plano para personalizar" "DE ACORDO" - "Isto é un cartafol" - "Para crear un igual, mantén premida a aplicación e móvea sobre outra." - "Aceptar" "Abriuse o cartafol, %1$d por %2$d" "Toca para pechar o cartafol" "Toca para gardar o cambio de nome" @@ -111,14 +68,34 @@ "Widgets" "Fondos de pantalla" "Configuración" - "En espera" - "Descargando" - "Instalando" + "Permitir xiro" "Descoñecido" - "Non restaurado" - "Eliminar todas" "Eliminar" "Buscar" "Esta aplicación non está instalada" "A aplicación para esta icona non está instalada. Podes eliminala ou buscar a aplicación e instalala manualmente." + "Engadir á pantalla de inicio" + "Mover elemento aquí" + "Engadiuse o elemento á pantalla de inicio" + "Eliminouse o elemento" + "Mover elemento" + "Mover á fila %1$s columna %2$s" + "Mover á posición %1$s" + "Mover á posición dos favoritos %1$s" + "Moveuse o elemento" + "Engadir ao cartafol: %1$s" + "Engadir ao cartafol con %1$s" + "Engadiuse o elemento ao cartafol" + "Crear cartafol con: %1$s" + "Creouse o cartafol" + "Mover á pantalla de inicio" + "Mover pantalla á esquerda" + "Mover pantalla á dereita" + "Moveuse a pantalla" + "Cambiar tamaño" + "Aumentar ancho" + "Aumentar altura" + "Reducir ancho" + "Reducir altura" + "Cambiouse o tamaño do widget polo ancho %1$s e a altura %2$s" diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml index a2798d6b9..4a2274f1b 100644 --- a/res/values-gu-rIN/strings.xml +++ b/res/values-gu-rIN/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "હોમ" - "Android Core એપ્લિકેશન્સ" + "કાર્યાલય" "એપ્લિકેશન ઇન્સ્ટોલ થઈ નથી." "એપ્લિકેશન ઉપલબ્ધ નથી" "સુરક્ષિત મોડમાં ડાઉનલોડ કરેલ એપ્લિકેશન અક્ષમ કરી" "સુરક્ષિત મોડમાં વિજેટ્સ અક્ષમ કર્યા" - "વિજેટ્સ" - "વિજેટ્સ" - "Mem દર્શાવો" + "Mem બતાવો" "વિજેટ ચૂંટવા માટે ટચ કરો અને પકડી રાખો." "%1$d × %2$d" - "આ હોમ સ્ક્રીન પર આઇટમ છોડી શકાઈ નથી." - "બનાવવા માટે વિજેટ પસંદ કરો" - "ફોલ્ડરનું નામ" - "ફોલ્ડરનું નામ બદલો" - "ઑકે" - "રદ કરો" - "હોમ સ્ક્રીન પર ઉમેરો" - "એપ્લિકેશન્સ" - "શોર્ટકટ્સ" - "વિજેટ્સ" - "તમારી હોમ સ્ક્રીન પર વધુ જગ્યા નથી." + "શોધ એપ્લિકેશનો" + "એપ્લિકેશનો લોડ કરી રહ્યું છે…" + "\"%1$s\" થી મેળ ખાતી કોઈ એપ્લિકેશનો મળી નથી" "આ હોમ સ્ક્રીન પર વધુ જગ્યા નથી." "મનપસંદ ટ્રે પર વધુ જગ્યા નથી" - "મનપસંદ ટ્રે માટે આ વિજેટ ખૂબ મોટું છે" - "\"%s\" શોર્ટકટ બનાવ્યું." - "\"%s\" શોર્ટકટ દૂર કર્યું હતું." - "\"%s\" શોર્ટકટ પહેલાંથી અસ્તિત્વમાં છે." - "શોર્ટકટ પસંદ કરો" - "એપ્લિકેશન પસંદ કરો" - "એપ્લિકેશન્સ" + "એપ્લિકેશનો" "હોમ" - "દૂર કરો" - "અનઇન્સ્ટોલ કરો" "દૂર કરો" "અનઇન્સ્ટોલ કરો" "એપ્લિકેશન માહિતી" - "એપ્લિકેશન્સ" - "દૂર કરો" - "અપડેટ અનઇન્સ્ટોલ કરો" - "એપ્લિકેશન અનઇન્સ્ટોલ કરો" - "એપ્લિકેશનની વિગતો" - "1 એપ્લિકેશન પસંદ કરી" - "1 વિજેટ પસંદ કર્યું" - "1 ફોલ્ડર પસંદ કર્યું" - "1 શોર્ટકટ પસંદ કર્યું" "શોર્ટકટ્સ ઇન્સ્ટોલ કરો" "એપ્લિકેશનને વપરાશકર્તા હસ્તક્ષેપ વગર શોર્ટકટ્સ ઉમેરવાની મંજૂરી આપે છે." - "શોર્ટકટ્સ અનઇન્સ્ટોલ કરો" - "એપ્લિકેશનને વપરાશકર્તા હસ્તક્ષેપ વગર શોર્ટકટ્સ દૂર કરવાની મંજૂરી આપે છે." "હોમ સેટિંગ્સ અને શોર્ટકટ્સ વાંચો" "એપ્લિકેશનને હોમમાં સેટિંગ્સ અને શોર્ટકટ્સ વાંચવાની મંજૂરી આપે છે." "હોમ સેટિંગ્સ અને શોર્ટકટ્સ લખો" @@ -78,30 +48,17 @@ "વિજેટ લોડ કરવામાં સમસ્યા" "સેટઅપ" "આ એક સિસ્ટમ એપ્લિકેશન છે અને અનઇન્સ્ટોલ કરી શકાતી નથી." - "રોકેટ લોન્ચર" "અનામી ફોલ્ડર" - "%1$d હોમ સ્ક્રીન" "%2$d માંથી %1$d પૃષ્ઠ" "%2$d માંથી %1$d હોમ સ્ક્રીન" - "%2$d માંથી %1$d એપ્લિકેશન્સ પૃષ્ઠ" - "%2$d માંથી %1$d વિજેટ્સ પૃષ્ઠ" "સ્વાગત છે" - "ઘરે જાતે બનાવે છે." - - - "એપ્લિકેશન્સ અને ફોલ્ડર્સ માટે વધુ સ્ક્રીન બનાવો" "તમારા એપ્લિકેશન આયકન્સને કૉપિ કરો" "તમારી જૂની હોમ સ્ક્રીન્સથી આયકન્સ અને ફોલ્ડર્સને આયાત કરીએ?" "આયકન્સને કૉપિ કરો" "નવેસરથી પ્રારંભ કરો" - "તમારા સ્થાનને ગોઠવો" - "વૉલપેપર, વિજેટ્સ અને સેટિંગ્સને સંચાલિત કરવા માટે પૃષ્ઠભૂમિને ટચ કરો અને પકડી રાખો." "વૉલપેપર્સ, વિજેટ્સ અને સેટિંગ્સ" "પૃષ્ઠભૂમિને કસ્ટમાઇઝ કરવા માટે ટચ કરો અને પકડી રાખો" "સમજાઈ ગયું" - "અહીં ફોલ્ડર છે" - "આના જેવું એક બનાવવા માટે, એપ્લિકેશનને ટચ કરો અને પકડી રાખો, પછી તેને બીજીમાં ખસેડો." - "ઑકે" "%1$d બાય %2$d નું ફોલ્ડર ખોલ્યું" "ફોલ્ડર બંધ કરવા માટે ટચ કરો" "નામ બદલવાનું સાચવવા માટે ટચ કરો" @@ -111,14 +68,34 @@ "વિજેટ્સ" "વૉલપેપર્સ" "સેટિંગ્સ" - "રાહ જુએ છે" - "ડાઉનલોડ કરે છે" - "ઇન્સ્ટોલ કરી રહ્યું છે" + "પરિભ્રમણને મંજૂરી આપો" "અજાણ્યો" - "પુનર્સ્થાપિત કર્યું નથી" - "બધું દૂર કરો" "દૂર કરો" "શોધો" "આ એપ્લિકેશન ઇન્સ્ટોલ થયેલ નથી" "આ આયકન માટેની એપ્લિકેશન ઇન્સ્ટોલ થયેલ નથી. તમે તેને દૂર કરી શકો છો અથવા એપ્લિકેશન માટે શોધ કરી અને તેને મેન્યુઅલી ઇન્સ્ટોલ કરી શકો છો." + "હોમ સ્ક્રીન પર ઉમેરો" + "આઇટમ અહીં ખસેડો" + "હોમ સ્ક્રીનમાં આઇટમ ઉમેરી" + "આઇટમ દૂર કરી" + "આઇટમ ખસેડો" + "%1$s પંક્તિ %2$s કૉલમ પર ખસેડો" + "%1$s સ્થિતિ પર ખસેડો" + "મનપસંદ સ્થિતિ %1$s પર ખસેડો" + "આઇટમ ખસેડી" + "ફોલ્ડરમાં ઉમેરો: %1$s" + "%1$s સાથે ફોલ્ડરમાં ઉમેરો" + "ફોલ્ડરમાં આઇટમ ઉમેરી" + "આની સાથે ફોલ્ડર બનાવો: %1$s" + "ફોલ્ડર બનાવ્યું" + "હોમ સ્ક્રીન પર ખસેડો" + "સ્ક્રીનને ડાબી બાજુ ખસેડો" + "સ્ક્રીનને જમણી બાજુ ખસેડો" + "સ્ક્રીન ખસેડી" + "આકાર બદલો" + "પહોળાઈ વધારો" + "ઊંચાઈ વધારો" + "પહોળાઈ ઘટાડો" + "ઊંચાઈ ઘટાડો" + "વિજેટનો આકાર બદલીને %1$s પહોળાઈ %2$s ઊંચાઈ કર્યો" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 0599da0e8..6fdbf2441 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "होम" - "Android के मुख्य ऐप्लिकेशन" + "कार्यस्‍थल" "एप्‍लिकेशन इंस्‍टॉल नहीं है." "ऐप्स उपलब्ध नहीं है" "डाउनलोड किए गए ऐप्स सुरक्षित मोड में अक्षम है" "विजेट सुरक्षित मोड में अक्षम हैं" - "शॉर्टकट" - "शॉर्टकट" "मेमोरी दिखाएं" "विजेट को चुनने के लिए स्‍पर्श करके रखें." "%1$d × %2$d" - "आइटम को इस होम स्‍क्रीन पर नहीं छोड़ा जा सका." - "बनाने के लिए विजेट चुनें" - "फ़ोल्‍डर का नाम" - "फ़ोल्‍डर का नाम बदलें" - "ठीक" - "अभी नहीं" - "होम स्‍क्रीन में जोड़ें" - "ऐप्लिकेशन" - "शॉर्टकट" - "शॉर्टकट" - "आपकी होम स्‍क्रीन पर स्थान शेष नहीं है." + "ऐप्‍स खोजें" + "ऐप्स लोड हो रहे हैं..." + "\"%1$s\" से मिलान करने वाला कोई ऐप नहीं मिला" "इस होम स्‍क्रीन पर स्थान शेष नहीं है." "पसंदीदा ट्रे में और स्थान नहीं है" - "पसंदीदा ट्रे के लिए यह विजेट बहुत ही बड़ा है" - "शॉर्टकट \"%s\" बनाया गया." - "शॉर्टकट \"%s\" निकाल दिया गया था." - "शॉर्टकट \"%s\" पहले से मौजूद है." - "शॉर्टकट चुनें" - "एप्‍लिकेशन चुनें" "ऐप्लिकेशन" "होम" - "निकालें" - "अनइंस्टॉल करें" "निकालें" "अनइंस्टॉल करें" "ऐप्लिकेशन की जानकारी" - "ऐप्लिकेशन" - "निकालें" - "अपडेट अनइंस्‍टॉल करें" - "ऐप्लिकेशन अनइंस्‍टॉल करें" - "ऐप्लिकेशन का विवरण" - "1 एप्‍लिकेशन चयनित" - "1 विजेट चयनित" - "1 फ़ोल्‍डर चयनित" - "1 शॉर्टकट चयनित" "शॉर्टकट इंस्‍टॉल करें" "ऐप्लिकेशन को उपयोगकर्ता के हस्‍तक्षेप के बिना शॉर्टकट जोड़ने देती है." - "शॉर्टकट अनइंस्टॉल करें" - "ऐप्लिकेशन को उपयोगकर्ता के हस्‍तक्षेप के बिना शॉर्टकट निकालने देती है." "होम सेटिंग और शॉर्टकट पढ़ें" "ऐप्लिकेशन को होम में सेटिंग और शॉर्टकट पढ़ने देती है." "होम सेटिंग और शॉर्टकट लिखें" @@ -78,30 +48,17 @@ "विजेट लोड करने में समस्‍या" "सेटअप" "यह एक सिस्टम ऐप्लिकेशन है और इसे अनइंस्टॉल नहीं किया जा सकता." - "रॉकेट लॉन्‍चर" "अनामित फ़ोल्डर" - "होम स्‍क्रीन %1$d" "पृष्ठ %2$d में से %1$d" "होम स्क्रीन %2$d में से %1$d" - "ऐप्लिकेशन पृष्ठ %2$d में से %1$d" - "शॉर्टकट %2$d में से %1$d" "स्वागत है" - "जैसा चाहें वैसा उपयोग करें." - - - "ऐप्लिकेशन और फ़ोल्डर के लिए और अधिक स्क्रीन बनाएं" "ऐप्स आइकन की प्रतिलिपि बनाएं" "अपनी पुरानी होम स्क्रीन से आइकन और फ़ोल्डर आयात करें?" "आइकन की प्रतिलिपि बनाएं" "फिर से शुरू करें" - "अपने स्थान को व्यवस्थित करें" - "वॉलपेपर, शॉर्टकट और सेटिंग प्रबंधित करने के लिए पृष्ठभूमि को स्पर्श करके रखें." "वॉलपेपर, शॉर्टकट और सेटिंग" "पृष्ठभूमि कस्टमाइज़ करने के लिए स्पर्श करके रखें" "समझ लिया" - "यहां एक फ़ोल्डर है" - "इसके जैसा कोई एक बनाने के लिए, किसी ऐप्लिकेशन को स्पर्श करके रखें, फिर इसे किसी दूसरे पर ले जाएं." - "ठीक" "फ़ोल्डर खोला गया, %1$d गुणा %2$d" "फ़ोल्‍डर बंद करने के लिए स्‍पर्श करें" "बदला गया नाम सहेजने के लिए स्पर्श करें" @@ -111,14 +68,34 @@ "शॉर्टकट" "वॉलपेपर" "सेटिंग" - "प्रतीक्षा में" - "डाउनलोड हो रहा है" - "इंस्टॉल हो रहा है" + "रोटेशन की अनुमति दें" "अज्ञात" - "पुन:स्थापित नहीं हुआ" - "सभी निकालें" "निकालें" "खोजें" "यह ऐप्स इंस्टॉल नहीं है" "इस आइकन का ऐप्स इंस्टॉल नहीं है. आप उसे निकाल सकते हैं या ऐप्स की खोज करके उसे मैन्युअल रूप से इंस्टॉल कर सकते हैं." + "होम स्‍क्रीन में जोड़ें" + "आइटम यहां ले जाएं" + "होम स्क्रीन में आइटम जोड़ा गया" + "आइटम निकाला गया" + "आइटम ले जाएं" + "पंक्ति %1$s स्तंभ %2$s पर ले जाएं" + "%1$s स्थिति पर ले जाएं" + "%1$s की पसंदीदा स्थिति पर ले जाएं" + "आइटम ले जाया गया" + "फ़ोल्डर में जोड़ें: %1$s" + "%1$s के साथ फ़ोल्डर में जोड़ें" + "आइटम फ़ोल्डर में जोड़ा गया" + "इसके साथ फ़ोल्डर बनाएं: %1$s" + "फ़ोल्डर बनाया गया" + "होम स्क्रीन पर ले जाएं" + "स्क्रीन को बाएं ले जाएं" + "स्क्रीन को दाएं ले जाएं" + "स्क्रीन ले जाई गई" + "आकार बदलें" + "चौड़ाई बढ़ाएं" + "ऊंचाई बढ़ाएं" + "चौड़ाई घटाएं" + "ऊंचाई घटाएं" + "विजेट का आकार बदलकर उसकी चौड़ाई %1$s और ऊंचाई %2$s कर दी गई" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 00810a76c..a54a7e4b0 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -20,57 +20,27 @@ "Pokretač3" - "Početna" - "Matične aplikacije za Android" + "Posao" "Aplikacija nije instalirana." "Aplikacija nije dostupna" "Preuzeta aplikacija onemogućena je u Sigurnom načinu rada" "Widgeti su onemogućeni u Sigurnom načinu rada" - "Widgeti" - "Widgeti" "Prikaži mem" "Dodirnite i držite kako biste podigli widget." "%1$d × %2$d" - "Stavka nije ispuštena na ovaj početni zaslon." - "Odabir widgeta za stvaranje" - "Naziv mape" - "Preimenovanje mape" - "U redu" - "Odustani" - "Dodavanje na početni zaslon" - "Aplikacije" - "Prečaci" - "Widgeti" - "Na vašim početnim zaslonima više nema mjesta." + "Pretraži aplikacije" + "Učitavanje aplikacija…" + "Nema aplikacija podudarnih s upitom \"%1$s\"" "Na ovom početnom zaslonu više nema mjesta." "Nema više prostora na traci Favoriti" - "Widget je prevelik za traku Favoriti" - "Izrađen je prečac za \"%s\"." - "Uklonjen je prečac za \"%s\"." - "Prečac za \"%s\" već postoji." - "Odabir prečaca" - "Odabir aplikacije" "Aplikacije" "Početna" - "Ukloni" - "Deinstaliraj" "Ukloni" "Deinstaliraj" "Informacije o aplikaciji" - "Aplikacije" - "Ukloni" - "Deinstalacija ažuriranja" - "Deinstaliranje aplikacije" - "Pojedinosti o aplikaciji" - "Odabrana je 1 aplikacija" - "Odabran je 1 widget" - "Odabrana je 1 mapa" - "Odabran je 1 prečac" "instaliranje prečaca" "Aplikaciji omogućuje dodavanje prečaca bez intervencije korisnika." - "deinstaliranje prečaca" - "Aplikaciji omogućuje uklanjanje prečaca bez intervencije korisnika." "čitanje postavki početnog zaslona i prečaca" "Aplikaciji omogućuje čitanje postavki i prečaca na početnom zaslonu." "pisanje postavki početnog zaslona i prečaca" @@ -78,30 +48,17 @@ "Problem pri učitavanju widgeta" "Postavljanje" "Ovo je aplikacija sustava i ne može se ukloniti." - "Lansirna rampa" "Neimenovana mapa" - "Početni zaslon %1$d" "Stranica %1$d od %2$d" "Početni zaslon %1$d od %2$d" - "Stranica aplikacija %1$d od %2$d" - "Stranica widgeta %1$d od %2$d" "Dobro došli" - "Osjećajte se kao kod kuće." - - - "Izradite više zaslona za aplikacije i mape" "Kopiranje ikona aplikacija" "Želite li uvesti ikone i mape sa starih početnih zaslona?" "KOPIRAJ IKONE" "POKRENI NOVO" - "Organizirajte svoj prostor" - "Dodirnite i držite pozadinu da biste upravljali pozadinskom slikom, widgetima i postavkama." "Pozadine, widgeti i postavke" "Dodirnite i zadržite pozadinu radi prilagodbe" "SHVAĆAM" - "Evo mape" - "Da biste izradili ovakvu mapu, dodirnite i držite aplikaciju pa je pomaknite preko druge aplikacije." - "U redu" "Mapa je otvorena, %1$d x %2$d" "Dodirnite da biste zatvorili mapu" "Dodirnite da biste spremili preimenovanje" @@ -111,14 +68,34 @@ "Widgeti" "Pozadine" "Postavke" - "Čekanje" - "Preuzimanje" - "Instaliranje" + "Dopusti rotaciju" "Nepoznato" - "Nije vraćeno" - "Ukloni sve" "Ukloni" "Traži" "Ta aplikacija nije instalirana" "Aplikacija ove ikone nije instalirana. Možete je ukloniti ili potražiti aplikaciju i instalirati je ručno." + "Dodavanje na početni zaslon" + "Premjesti stavku ovdje" + "Stavka je dodana na početni zaslon" + "Stavka je uklonjena" + "Premještanje stavke" + "Premještanje u redak %1$s, stupac %2$s" + "Premještanje na položaj %1$s" + "Premještanje na položaj favorita %1$s" + "Stavka premještena" + "Dodavanje u mapu: %1$s" + "Dodavanje u mapu s aplikacijom %1$s" + "Stavka dodana u mapu" + "Izrada mape pomoću stavke: %1$s" + "Mapa izrađena" + "Premještanje na početni zaslon" + "Premještanje zaslona ulijevo" + "Premještanje zaslona udesno" + "Zaslon je premješten" + "Promjena veličine" + "Povećanje širine" + "Povećanje visine" + "Smanjenje širine" + "Smanjenje visine" + "Širina widgeta promijenjena je na %1$s, a visina na %2$s" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 513548a2a..e9fc5747f 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Főoldal" - "Alap Android-alkalmazások" + "Munka" "Az alkalmazás nincs telepítve." "Az alkalmazás nem érhető el" "A letöltött alkalmazás Csökkentett módban ki van kapcsolva" "A modulok ki vannak kapcsolva Csökkentett módban" - "Modulok" - "Modulok" "Mem. megjelenítése" "Modul felvételéhez érintse meg, és tartsa lenyomva" "%1$d × %2$d" - "Nem lehet elemeket dobni erre a kezdőképernyőre." - "A létrehozáshoz válasszon modult" - "Mappa neve" - "Mappa átnevezése" - "OK" - "Mégse" - "Hozzáadás a kezdőképernyőhöz" - "Alkalmazások" - "Parancsikonok" - "Modulok" - "Nincs több hely a kezdőképernyőkön." + "Alkalmazások keresése" + "Alkalmazások betöltése…" + "Egy alkalmazás sem található a(z) „%1$s” lekérdezésre." "Nincs több hely ezen a kezdőképernyőn." "Nincs több hely a Kedvencek tálcán" - "Ez a modul túl nagy a Kedvencek tálcán való elhelyezéshez" - "A(z) „%s” parancsikon létrehozva." - "A(z) „%s” parancsikon eltávolítva." - "A(z) „%s” parancsikon már létezik." - "Parancsikon választása" - "Válasszon alkalmazást" "Alkalmazások" "Főoldal" - "Eltávolítás" - "Eltávolítás" "Eltávolítás" "Eltávolítás" "Alkalmazásinformáció" - "Alkalmazások" - "Eltávolítás" - "Eltávolítja a frissítést" - "Alkalmazás eltávolítása" - "Az alkalmazás adatai" - "1 alkalmazás kiválasztva" - "1 modul kiválasztva" - "1 mappa kiválasztva" - "1 parancsikon kiválasztva" "parancsikonok telepítése" "Lehetővé teszi egy alkalmazás számára, hogy felhasználói beavatkozás nélkül adjon hozzá parancsikonokat." - "parancsikonok eltávolítása" - "Lehetővé teszi egy alkalmazás számára, hogy felhasználói beavatkozás nélkül távolítson el parancsikonokat." "Főoldal beállításainak és parancsikonjainak beolvasása" "Lehetővé teszi az alkalmazás számára, hogy beolvassa a kezdőképernyő beállításait és parancsikonjait." "Főoldal beállításainak és parancsikonjainak írása" @@ -78,30 +48,17 @@ "Probléma történt a modul betöltésekor" "Beállítás" "Ez egy rendszeralkalmazás, és nem lehet eltávolítani." - "Aknavető" "Névtelen mappa" - "%1$d. kezdőképernyő" "%2$d/%1$d. oldal" "%2$d/%1$d. kezdőképernyő" - "%2$d/%1$d. alkalmazásoldal" - "%2$d/%1$d. moduloldal" "Üdvözöljük!" - "Varázsolja egyedivé készülékét." - - - "Hozzon létre további képernyőket az alkalmazásoknak és mappáknak" "Alkalmazásikonok másolása" "Importálja ikonjait és mappáit régi kezdőképernyőiről?" "IKONOK MÁSOLÁSA" "TELJESEN ÚJ" - "Munkaterület rendezése" - "Érintse meg és tartsa lenyomva a hátteret a háttérkép, modulok és beállítások kezeléséhez." "Háttérképek, modulok és beállítások" "Érintse meg és tartsa lenyomva a személyre szabáshoz" "MEGÉRTETTEM" - "Itt egy mappa" - "Mappa létrehozásához érintse meg és tartsa lenyomva az alkalmazást, majd húzza egy másik fölé." - "OK" "Mappa megnyitva – szélesség: %1$d; magasság: %2$d" "Érintse meg a mappa bezárásához" "Érintse meg az átnevezés mentéséhez" @@ -111,14 +68,34 @@ "Modulok" "Háttérképek" "Beállítások" - "Várakozik" - "Letöltés alatt" - "Települ" + "Elforgatás engedélyezése" "Ismeretlen" - "Nincs visszaállítva" - "Az összes eltávolítása" "Eltávolítás" "Keresés" "Az alkalmazás nincs telepítve" "Az ikonhoz tartozó alkalmazás nincs telepítve. Törölheti az ikont, vagy az alkalmazás megkeresése után manuálisan telepítheti azt." + "Hozzáadás a kezdőképernyőhöz" + "Elem áthelyezése ide" + "Elem hozzáadva a kezdőképernyőhöz" + "Elem eltávolítva" + "Elem mozgatása" + "Áthelyezés ide: %1$s. sor, %2$s. oszlop" + "Áthelyezés a(z) %1$s. pozícióba" + "Áthelyezés a kedvencek %1$s. pozíciójába" + "Elem áthelyezve" + "Hozzáadás a(z) %1$s mappához" + "Hozzáadás a mappához a következővel: %1$s" + "Elem hozzáadva a mappához" + "Mappa létrehozása a következővel: %1$s" + "Mappa létrehozva" + "Áthelyezés a kezdőképernyőre" + "Képernyő mozgatása balra" + "Képernyő mozgatása jobbra" + "Képernyő áthelyezve" + "Átméretezés" + "Szélesség növelése" + "Magasság növelése" + "Szélesség csökkentése" + "Magasság csökkentése" + "Modul átméretezve %1$s szélességre és %2$s magasságra" diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml index 4af794e6f..de4aed158 100644 --- a/res/values-hy-rAM/strings.xml +++ b/res/values-hy-rAM/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Հիմնական" - "Android Core Apps" + "Աշխատանքային" "Ծրագիրը տեղադրված չէ:" "Հավելվածը հասանելի չէ" "Ներբեռնված ծրագիրն անջատված է Անվտանգ ռեժիմում" "Վիջեթներն անջատված են անվտանգ ռեժիմում" - "Վիջեթներ" - "Վիջեթներ" "Ցուցադրել մեմը" "Հպեք և պահեք՝ վիջեթն ընտրելու համար:" "%1$d × %2$d" - "Հնարավոր չէ տեղադրել տարրն այս հիմնական էկրանին:" - "Ստեղծելու համար ընտրեք վիջեթը" - "Պանակի անունը" - "Վերանվանել պանակը" - "Լավ" - "Չեղարկել" - "Ավելացնել հիմնական էկրանին" - "Ծրագրեր" - "Դյուրանցումներ" - "Վիջեթներ" - "Այլևս տեղ չկա ձեր հիմնական էկրաններին:" + "Հավելվածների որոնում" + "Հավելվածների բեռնում…" + %1$s» հարցմանը համապատասխանող հավելվածներ չեն գտնվել" "Այլևս տեղ չկա այս հիմնական էկրանին:" "Ընտրյալների ցուցակում այլևս ազատ տեղ չկա" - "Այս վիջեթը շատ մեծ է Ընտրյալների ցուցակի համար" - %s» դյուրանցումը ստեղծված է:" - %s» դյուրանցումը հեռացվեց:" - %s» դյուրանցումն արդեն գոյություն ունի:" - "Ընտրել դյուրանցումը" - "Ընտրել ծրագիրը" "Ծրագրեր" "Հիմնական" - "Հեռացնել" - "Ապատեղադրել" "Հեռացնել" "Ապատեղադրել" "Ծրագրի տեղեկություններ" - "Ծրագրեր" - "Հեռացնել" - "Ապատեղադրել թարմացումը" - "Ապատեղադրել ծրագիրը" - "Ծրագրի մանրամասներ" - "1 ընտրված ծրագիր" - "1 ընտրված վիջեթ" - "1 ընտրված պանակ" - "1 ընտրված դյուրանցում" "տեղադրել դյուրանցումներ" "Ծրագրին թույլ է տալիս ավելացնել դյուրանցումներ՝ առանց օգտագործողի միջամտության:" - "ապատեղադրել դյուրանցումները" - "Ծրագրին թույլ է տալիս հեռացնել դյուրանցումներ՝ առանց օգտագործողի միջամտության:" "կարդալ հիմնաէջի կարգավորումներն ու դյուրանցումները" "Ծրագրին թույլ է տալիս կարդալ հիմնաէջի կարգավորումներն ու դյուրանցումները:" "ստեղծել հիմնաէջի կարգավորումներ ու դյուրանցումներ" @@ -78,30 +48,17 @@ "Վիջեթի բեռնման խնդիր կա" "Կարգավորում" "Սա համակարգային ծրագիր է և չի կարող ապատեղադրվել:" - "Հրթիռային թողարկիչ" "Անանուն պանակ" - "Հիմնական էկրան %1$d" "Էջ %1$d՝ %2$d-ից" "Հիմնական էկրան %1$d` %2$d-ից" - "Ծրագրերի էջերը՝ %1$d %2$d-ից" - "Վիջեթների էջերը՝ %1$d %2$d-ից" "Բարի գալուստ" - "Զգացեք ձեզ ինչպես տանը:" - - - "Ստեղծեք նոր էկրաններ ծրագրերի և պանակների համար" "Պատճենել ձեր ծրագրի պատկերակները" "Ներմուծե՞լ պատկերակները և պանակները ձեր նախկին Հիմնական էկրանից" "ՊԱՏՃԵՆԵԼ ՊԱՏԿԵՐԱԿՆԵՐԸ" "ՄԵԿՆԱՐԿԵԼ ԸՍՏ ԿԱՆԽԱԴՐՎԱԾԻ" - "Կառավարեք ձեր տարածությունը" - "Հպեք և պահեք հետնաշերտի վրա՝ պաստառները, վիջեթներն ու կարգավորումները կառավարելու համար:" "Պաստառներ, վիջեթներ և կարգավորումներ" "Հարմարեցնելու համար հպեք և պահեք հետնաշերտի վրա" "ՀԱՍԿԱՆԱԼԻ Է" - "Ահա մի պանակ" - "Նման պանակ ստեղծելու համար հպեք և պահեք որևէ ծրագրի վրա, ապա տեղաշարժեք այն մեկ ուրիշ ծրագրի վրա:" - "Լավ" "Թղթապանակը բաց է, %1$d-ից %2$d" "Հպեք՝ պանակը փակելու համար" "Հպեք՝ վերանվանումը պահելու համար" @@ -111,14 +68,34 @@ "Վիջեթներ" "Պաստառներ" "Կարգավորումներ" - "Առկախ է" - "Ներբեռնվում է" - "Տեղադրվում է" + "Թույլ տալ պարբերական կրկնությունը" "Անհայտ է" - "Չի վերականգնվել" - "Հեռացնել բոլորը" "Հեռացնել" "Գտնել" "Այս ծրագիրը տեղադրված չէ:" "Այս պատկերակի ծրագիրը տեղադրված չէ: Դուք կարող եք հեռացնել այն կամ գտնել ծրագիրը և տեղադրել այն ձեռքով:" + "Ավելացնել Հիմնական էկրանին" + "Տեղափոխել տարրն այստեղ" + "Տարրն ավելացվեց հիմնական էկրանին" + "Տարրը հեռացվեց" + "Տեղափոխել տարրը" + "Տեղափոխել տող %1$s սյունակ %2$s" + "Տեղափոխել դիրք %1$s" + "Տեղափոխել նախընտրած դիրք՝ %1$s" + "Տարրը տեղափոխվեց" + "Ավելացնել թղթապանակում՝ %1$s" + "Ավելացնել «%1$s» պանակին" + "Տարրն ավելացվեց թղթապանակում" + "Ստեղծել թղթապանակ, օգտագործելով՝ %1$s" + "Թղթապանակը ստեղծվեց" + "Տեղափոխել Հիմնական էկրան" + "Տեղափոխել էկրանը ձախ" + "Տեղափոխել էկրանը աջ" + "Էկրանը տեղափոխվեց" + "Չափափոխել" + "Ավելացնել լայնությունը" + "Ավելացնել բարձրությունը" + "Նվազեցնել լայնությունը" + "Նվազեցնել բարձրությունը" + "Վիջեթի լայնությունը փոխվել է %1$s-ի, իսկ բարձրությունը՝ %2$s-ի" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index b0c5d139d..c65254a2a 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Layar Utama" - "Aplikasi Inti Android" + "Kantor" "Aplikasi tidak dipasang." "Aplikasi tidak tersedia" "Aplikasi yang diunduh dinonaktifkan dalam mode Aman" "Widget dinonaktifkan dalam mode Aman" - "Widget" - "Widget" "Tampilkan Memori" "Sentuh lama untuk memilih widget." "%1$d × %2$d" - "Tidak dapat melepas item ke layar Utama ini." - "Pilih widget untuk membuat" - "Nama folder" - "Ganti nama folder" - "Oke" - "Batal" - "Tambahkan ke layar Utama" - "Aplikasi" - "Pintasan" - "Widget" - "Tidak ada ruang lagi di layar Utama Anda." + "Telusuri Apps" + "Memuat Aplikasi..." + "Tidak ditemukan Aplikasi yang cocok dengan \"%1$s\"" "Tidak ada ruang lagi pada layar Utama ini." "Tidak ada ruang tersisa di baki Favorit" - "Widget ini terlalu besar untuk baki Favorit" - "Pintasan \"%s\" sudah dibuat." - "Pintasan \"%s\" telah dihapus." - "Pintasan \"%s\" sudah ada." - "Pilih pintasan" - "Pilih aplikasi" "Aplikasi" "Layar Utama" - "Hapus" - "Copot pemasangan" "Hapus" "Copot pemasangan" "Info aplikasi" - "Aplikasi" - "Hapus" - "Copot pemasangan pembaruan" - "Copot aplikasi" - "Detail aplikasi" - "1 aplikasi dipilih" - "1 widget dipilih" - "1 folder dipilih" - "1 pintasan dipilih" "memasang pintasan" "Mengizinkan aplikasi menambahkan pintasan tanpa campur tangan pengguna." - "mencopot pemasangan pintasan" - "Mengizinkan aplikasi menghapus pintasan tanpa campur tangan pengguna." "membaca setelan dan pintasan layar Utama" "Mengizinkan aplikasi membaca setelan dan pintasan di layar Utama." "menulis setelan dan pintasan layar Utama" @@ -78,30 +48,17 @@ "Masalah memuat widget" "Siapkan" "Ini adalah aplikasi sistem dan tidak dapat dicopot pemasangannya." - "Rocket Launcher" "Folder Tanpa Nama" - "Layar utama %1$d" "Laman %1$d dari %2$d" "Layar utama %1$d dari %2$d" - "Laman aplikasi %1$d dari %2$d" - "Laman widget %1$d dari %2$d" "Selamat Datang" - "Serasa di rumah sendiri." - - - "Buat lebih banyak layar untuk aplikasi dan folder" "Salin ikon aplikasi Anda" "Impor ikon dan folder dari layar Utama lama Anda?" "IKON SALIN" "MULAI DARI AWAL" - "Kelola ruang Anda" - "Sentuh lama latar belakang untuk mengelola wallpaper, widget, dan setelan." "Wallpaper, widget, & setelan" "Sentuh & tahan latar belakang untuk menyesuaikan" "MENGERTI" - "Ini adalah folder" - "Untuk membuat seperti yang ini, sentuh lama aplikasi, lalu pindahkan ke atas aplikasi lain." - "Oke" "Folder dibuka, %1$d x %2$d" "Sentuh untuk menutup folder" "Sentuh untuk menyimpan ganti nama" @@ -111,14 +68,34 @@ "Widget" "Wallpaper" "Setelan" - "Menunggu" - "Mengunduh" - "Memasang" + "Izinkan putaran" "Tidak dikenal" - "Tak dipulihkan" - "Buang Semua" "Buang" "Telusuri" "Aplikasi ini belum terpasang" "Aplikasi untuk ikon ini belum dipasang. Anda dapat membuangnya, atau menelusuri aplikasi dan memasangnya secara manual." + "Tambahkan ke layar Utama" + "Pindahkan item ke sini" + "Item ditambahkan ke layar utama" + "Item dihapus" + "Pindahkan item" + "Pindahkan ke baris %1$s kolom %2$s" + "PIndahkan ke posisi %1$s" + "Pindahkan ke posisi favorit %1$s" + "Item dipindahkan" + "Tambahkan ke folder: %1$s" + "Tambahkan ke folder dengan %1$s" + "Item ditambahkan ke folder" + "Buat folder dengan: %1$s" + "Folder dibuat" + "Pindahkan ke layar Utama" + "Pindahkan layar ke kiri" + "Pindahkan layar ke kanan" + "Layar dipindahkan" + "Ubah ukuran" + "Tambahi lebar" + "Tambahi tinggi" + "Kurangi lebar" + "Kurangi tinggi" + "Widget diubah ukurannya menjadi lebar %1$s tinggi %2$s" diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml index a3fa0bc52..1d46cdc93 100644 --- a/res/values-is-rIS/strings.xml +++ b/res/values-is-rIS/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Heim" - "Kjarnaforrit Android" + "Vinna" "Forritið er ekki uppsett." "Forritið er ekki í boði" "Sótt forrit er óvirkt í öryggisstillingu" "Græjur eru óvirkar í öruggri stillingu" - "Græjur" - "Græjur" "Sýna minni" "Haltu fingri á græju til að grípa hana." "%1$d × %2$d" - "Ekki er hægt að sleppa atriði á þennan heimaskjá." - "Veldu græju til að búa til" - "Möppuheiti" - "Endurnefna möppu" - "Í lagi" - "Hætta við" - "Bæta á heimaskjá" - "Forrit" - "Flýtileiðir" - "Græjur" - "Heimaskjáirnir þínir eru fullskipaðir." + "Leita í forritum" + "Hleður forrit…" + "Ekki fundust forrit sem samsvara „%1$s“" "Ekki meira pláss á þessum heimaskjá." "Ekki meira pláss í bakka fyrir uppáhald" - "Þessi græja er of stór fyrir bakkann fyrir uppáhald" - "Flýtileiðin „%s“ var búin til." - "Flýtileiðin „%s“ var fjarlægð." - "Flýtileiðin „%s“ er þegar til." - "Veldu flýtileið" - "Veldu forrit" "Forrit" "Heim" - "Fjarlægja" - "Eyða" "Fjarlægja" "Eyða" "Upplýsingar um forrit" - "Forrit" - "Fjarlægja" - "Fjarlægja uppfærslu" - "Fjarlægja forrit" - "Upplýsingar um forrit" - "1 forrit valið" - "1 græja valin" - "1 mappa valin" - "1 flýtileið valin" "setja upp flýtileiðir" "Leyfir forriti að bæta við flýtileiðum án íhlutunar notanda." - "fjarlægja flýtileiðir" - "Leyfir forriti að fjarlægja flýtileiðir án íhlutunar notanda." "lesa stillingar og flýtileiðir heimaskjás" "Leyfir forriti að lesa stillingar og flýtileiðir heimaskjás." "skrifa stillingar og flýtileiðir heimaskjás" @@ -78,30 +48,17 @@ "Vandamál við að hlaða græju" "Uppsetning" "Þetta er kerfisforrit sem ekki er hægt að fjarlægja." - "Eldflaugapallur" "Ónefnd mappa" - "Heimaskjár %1$d" "Síða %1$d af %2$d" "Heimaskjár %1$d af %2$d" - "Forritasíða %1$d af %2$d" - "Græjusíða %1$d af %2$d" "Komdu fagnandi" - "Komdu þér vel fyrir." - - - "Búðu til fleiri skjái fyrir forrit og möppur" "Afritaðu forritatáknin þín" "Flytja inn tákn og möppur af eldri heimaskjáum?" "AFRITA TÁKN" "BYRJA UPP Á NÝTT" - "Settu hlutina á sína staði" - "Haltu inni á bakgrunni til að stjórna veggfóðri, græjum og stillingum." "Veggfóður, græjur og stillingar" "Haltu fingri á bakgrunninum til að sérsníða hann" "ÉG SKIL" - "Hér er mappa" - "Til að búa til svona skaltu draga forrit yfir á annað forrit." - "Í lagi" "Mappa opnuð, %1$d sinnum %2$d" "Snertu til að loka möppunni" "Snertu til að staðfesta nýtt heiti" @@ -111,14 +68,34 @@ "Græjur" "Veggfóður" "Stillingar" - "Bíður" - "Sækir" - "Setur upp" + "Leyfa snúning" "Óþekkt" - "Ekki endurheimt" - "Fjarlægja öll" "Fjarlægja" "Leita" "Þetta forrit er ekki uppsett" "Forritið fyrir þetta tákn er ekki uppsett. Þú getur fjarlægt það eða leitað að forritinu og sett það upp handvirkt." + "Bæta á heimaskjá" + "Færa atriði hingað" + "Atriði bætt á heimaskjáinn" + "Atriði fjarlægt" + "Færa atriði" + "Færa í línu %1$s, dálk %2$s" + "Færa í stöðu %1$s" + "Færa í stöðu %1$s á festisvæði" + "Atriði fært" + "Setja í möppu: %1$s" + "Setja í möppu með %1$s" + "Atriði sett í möppu" + "Búa til möppu með: %1$s" + "Mappa búin til" + "Færa á heimaskjá" + "Færa skjá til vinstri" + "Færa skjá til hægri" + "Skjár færður" + "Breyta stærð" + "Auka breidd" + "Auka hæð" + "Minnka breidd" + "Minnka hæð" + "Stærð græju breytt í %1$s á breidd og %2$s á hæð" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index d78d0326d..02057a19c 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Home page" - "Applicazioni di base Android" + "Lavoro" "App non installata." "App non disponibile" "L\'app scaricata è stata disattivata in modalità provvisoria" "Widget disabilitati in modalità provvisoria" - "Widget" - "Widget" "Mostra Mem" "Tocca e tieni premuto per scegliere un widget." "%1$d × %2$d" - "Rilascio elemento in schermata Home non riuscito." - "Scegli il widget da creare" - "Nome cartella" - "Rinomina cartella" - "OK" - "Annulla" - "Aggiungi a schermata Home" - "App" - "Scorciatoie" - "Widget" - "Spazio nelle schermate Home esaurito." + "Cerca app" + "Caricamento di app…" + "Nessuna app trovata corrispondente a \"%1$s\"" "Spazio nella schermata Home esaurito." "Spazio esaurito nella barra dei Preferiti" - "Questo widget è troppo grande per la barra dei Preferiti" - "Scorciatoia \"%s\" creata." - "La scorciatoia \"%s\" è stata rimossa." - "Scorciatoia \"%s\" già presente." - "Scegli scorciatoia" - "Scegli app" "App" "Home page" - "Rimuovi" - "Disinstalla" "Rimuovi" "Disinstalla" "Informazioni app" - "App" - "Rimuovi" - "Disinstalla aggiornamento" - "Disinstalla app" - "Dettagli sull\'app" - "1 app selezionata" - "1 widget selezionato" - "1 cartella selezionata" - "1 scorciatoia selezionata" "aggiunta di scorciatoie" "Consente a un\'app di aggiungere scorciatoie automaticamente." - "eliminazione di scorciatoie" - "Consente all\'app di rimuovere scorciatoie automaticamente." "lettura di impostazioni e scorciatoie in Home" "Consente all\'app di leggere le impostazioni e le scorciatoie in Home." "creazione di impostazioni e scorciatoie in Home" @@ -78,30 +48,17 @@ "Errore durante il caricamento del widget" "Configurazione" "Questa è un\'app di sistema e non può essere disinstallata." - "Lanciamissili" "Cartella senza nome" - "Schermata Home %1$d" "Pagina %1$d di %2$d" "Schermata Home %1$d di %2$d" - "Pagina di applicazioni %1$d di %2$d" - "Pagina di widget %1$d di %2$d" "Benvenuto" - "Personalizza la schermata Home." - - - "Creare più schermate per app e cartelle" "Copia le icone delle tue app" "Importare icone e cartelle dalle schermate Home precedenti?" "COPIA ICONE" "RICOMINCIA" - "Organizza il tuo spazio" - "Tocca e tieni premuto lo sfondo per gestire sfondi, widget e impostazioni." "Sfondi, widget e impostazioni" "Tocca lo sfondo e tieni premuto per personalizzare" "OK" - "Ecco una cartella" - "Per crearne una simile, tocca un\'app e tieni premuto, dopodiché spostala sopra un\'altra." - "OK" "Cartella aperta, %1$d per %2$d" "Tocca per chiudere la cartella" "Tocca per salvare nuovo nome" @@ -111,14 +68,34 @@ "Widget" "Sfondi" "Impostazioni" - "In attesa" - "Download..." - "Installazione..." + "Consenti rotazione" "Sconosciuto" - "Non ripristinato" - "Rimuovi tutto" "Rimuovi" "Cerca" "L\'app non è installata" "L\'app per questa icona non è installata. Puoi rimuoverla o cercare l\'app e installarla manualmente." + "Aggiungi a schermata Home" + "Sposta elemento qui" + "Elemento aggiunto alla schermata Home" + "Elemento rimosso" + "Sposta elemento" + "Sposta a riga %1$s, colonna %2$s" + "Sposta nella posizione %1$s" + "Sposta nella posizione %1$s dei preferiti" + "Elemento spostato" + "Aggiungi alla cartella: %1$s" + "Aggiungi a cartella con %1$s" + "Elemento aggiunto alla cartella" + "Crea cartella con: %1$s" + "Cartella creata" + "Sposta nella schermata Home" + "Sposta schermata a sinistra" + "Sposta schermata a destra" + "Schermata spostata" + "Ridimensiona" + "Aumenta larghezza" + "Aumenta altezza" + "Riduci larghezza" + "Riduci altezza" + "Widget ridimensionato a larghezza %1$s, altezza %2$s" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 61fb53efa..a8039f7c1 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "דף הבית" - "‏אפליקציות הליבה של Android" + "עבודה" "האפליקציה לא מותקנת." "האפליקציה אינה זמינה" "אפליקציה שהורדת הושבתה במצב בטוח" "ווידג\'טים מושבתים במצב בטוח" - "רכיבי ווידג\'ט" - "רכיבי ווידג\'ט" "הצג זכרון" "גע נגיעה רציפה בווידג\'ט כדי לבחור בו." "%1$d × %2$d" - "לא ניתן היה לשחרר את הפריט במסך דף הבית הזה." - "בחר ווידג\'ט ליצירה" - "שם תיקיה" - "שנה את שם התיקיה" - "אישור" - "בטל" - "הוסף למסך דף הבית" - "אפליקציות" - "קיצורי דרך" - "רכיבי ווידג\'ט" - "אין יותר מקום במסכי דף הבית." + "חפש אפליקציות" + "טוען אפליקציות…" + "לא נמצאו אפליקציות התואמות ל-\"%1$s\"" "אין עוד מקום במסך דף הבית הזה." "אין עוד מקום במגש המועדפים" - "הווידג\'ט הזה גדול מדי עבור מגש המועדפים." - "קיצור הדרך \'%s\' נוצר." - "קיצור הדרך \'%s\' הוסר." - "קיצור הדרך \'%s\' כבר קיים." - "בחר קיצור דרך" - "בחר אפליקציה" "אפליקציות" "דף הבית" - "הסר" - "הסר התקנה" "הסר" "הסר התקנה" "פרטי אפליקציה" - "אפליקציות" - "הסר" - "הסר את התקנת העדכון" - "הסר את התקנת האפליקציה" - "פרטי האפליקציה" - "נבחרה אפליקציה אחת" - "נבחר ווידג\'ט אחד" - "נבחרה תיקיה אחת" - "נבחר קיצור דרך אחד" "התקן קיצורי דרך" "מאפשר לאפליקציה להוסיף קיצורי דרך ללא התערבות המשתמש." - "הסר התקנה של קיצורי דרך" - "מאפשר לאפליקציה להסיר קיצורי דרך ללא התערבות המשתמש." "קרא הגדרות וקיצורי דרך של דף הבית" "מאפשר לאפליקציה לקרוא את ההגדרות וקיצורי הדרך בדף הבית." "כתוב הגדרות וקיצורי דרך של דף הבית" @@ -78,30 +48,17 @@ "בעיה בטעינת ווידג\'ט" "הגדר" "זוהי אפליקציית מערכת ולא ניתן להסיר את התקנתה." - "Rocket Launcher" "תיקיה ללא שם" - "‏מסך דף הבית %1$d" "‏דף %1$d מתוך %2$d" "‏מסך דף הבית %1$d מתוך %2$d" - "‏דף אפליקציות %1$d מתוך %2$d" - "‏דף רכיבי ווידג\'ט ‏%1$d מתוך %2$d" "ברוכים הבאים" - "להרגיש בבית." - - - "צור מסכים נוספים עבור אפליקציות ותיקיות" "העתקת סמלי האפליקציות שלך" "האם לייבא סמלים ותיקיות ממסכי דף הבית הישנים שלך?" "העתק סמלים" "התחל דף חדש" - "ארגן את אזור העבודה שלך" - "גע נגיעה רציפה ברקע כדי לנהל את הטפט, רכיבי הווידג\'ט וההגדרות." "טפטים, ווידג\'טים והגדרות" "גע והחזק ברקע לביצוע התאמה אישית" "הבנתי" - "הנה תיקייה" - "כדי ליצור תיקייה כזו, גע נגיעה רציפה באפליקציה, ולאחר מכן גרור ושחרר אותו על-גבי אפליקציה אחרת." - "אישור" "תיקיה פתוחה, %1$d על %2$d" "גע כדי לסגור את התיקיה" "גע כדי לשמור את שינוי השם" @@ -111,14 +68,34 @@ "רכיבי ווידג\'ט" "טפטים" "הגדרות" - "ממתין" - "מוריד" - "מתקין" + "אפשרות סיבוב" "לא ידוע" - "לא שוחזרה" - "הסר את הכל" "הסר" "חפש" "אפליקציה זו אינה מותקנת" "האפליקציה של סמל זה אינה מותקנת. ניתן להסיר אותו, או לחפש את האפליקציה ולהתקין אותה ידנית." + "הוסף למסך דף הבית" + "העבר את הפריט לכאן" + "הפריט הועבר אל מסך דף הבית" + "הפריט הוסר" + "העבר את הפריט" + "העבר אל שורה %1$s עמודה %2$s" + "העבר אל מיקום %1$s" + "העבר אל מיקום %1$s במועדפים" + "הפריט הועבר" + "הוסף לתיקייה: %1$s" + "העבר אל התיקייה עם %1$s" + "הפריט נוסף לתיקייה" + "צור תיקייה עם: %1$s" + "התיקייה נוצרה" + "העבר אל מסך דף הבית" + "הזז את המסך שמאלה" + "הזז את המסך ימינה" + "המסך הועבר" + "שנה גודל" + "הגדל רוחב" + "הגדל גובה" + "הקטן רוחב" + "הקטן גובה" + "גודל הווידג\'ט שונה - רוחב %1$s גובה %2$s" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index ec872b8a9..ba58d88ef 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "ホーム" - "Android Core Apps" + "仕事用" "このアプリはインストールされていません。" "このアプリは使用できません" "ダウンロードしたアプリは、セーフモードでは無効です" "セーフモードではウィジェットは無効です" - "ウィジェット" - "ウィジェット" "メモリーを表示" "ウィジェットを追加するには押し続けます。" "%1$dx%2$d" - "このホーム画面にアイテムをドロップできませんでした" - "作成するウィジェットの選択" - "フォルダ名" - "フォルダ名を変更" - "OK" - "キャンセル" - "ホーム画面に追加" - "アプリ" - "ショートカット" - "ウィジェット" - "ホーム画面に空きスペースがありません。" + "アプリを検索" + "アプリを読み込んでいます…" + "「%1$s」に一致するアプリは見つかりませんでした" "このホーム画面に空きスペースがありません。" "お気に入りトレイに空きスペースがありません" - "このウィジェットはお気に入りトレイには大きすぎます" - "ショートカット「%s」を作成しました。" - "ショートカット「%s」を削除しました。" - "ショートカット「%s」は既に存在します。" - "ショートカットを選択" - "アプリを選択" "アプリ" "ホーム" - "削除" - "アンインストール" "削除" "アンインストール" "アプリ情報" - "アプリ" - "削除" - "更新をアンインストール" - "アプリをアンインストール" - "アプリの詳細" - "1つのアプリが選択されています" - "1つのウィジェットが選択されています" - "1つのフォルダが選択されています" - "1つのショートカットが選択されています" "ショートカットのインストール" "ユーザー操作なしでショートカットを追加することをアプリに許可します。" - "ショートカットのアンインストール" - "ユーザー操作なしでショートカットを削除することをアプリに許可します。" "ホームの設定とショートカットの読み取り" "ホームの設定とショートカットの読み取りをアプリに許可します。" "ホームの設定とショートカットの書き込み" @@ -78,30 +48,17 @@ "ウィジェットを表示できません" "セットアップ" "このシステムアプリはアンインストールできません。" - "Rocket Launcher" "名前のないフォルダ" - "ホーム画面: %1$d" "%1$d/%2$dページ" "ホーム画面: %1$d/%2$d" - "アプリの%1$d/%2$dページ" - "ウィジェットの%1$d/%2$dページ" "ようこそ" - "ホームをカスタマイズします。" - - - "アプリとフォルダの画面をもっと作成します" "アプリのアイコンをコピー" "古いホーム画面からアイコンとフォルダをインポートしますか?" "アイコンをコピー" "初期状態にリセットする" - "スペースを整理" - "壁紙、ウィジェット、設定を管理するには、背景を押し続けます。" "壁紙、ウィジェット、設定" "カスタマイズするにはバックグラウンドを押し続けます" "OK" - "これがフォルダです" - "これと同じフォルダを作成するには、アプリを押し続けてから別のアプリの上に移動します。" - "OK" "フォルダが開いています。%1$dx%2$dの大きさです" "タップしてフォルダを閉じます" "タップして名前の変更を保存します" @@ -111,14 +68,34 @@ "ウィジェット" "壁紙" "設定" - "待機中" - "ダウンロード中" - "インストール中" + "回転を許可" "不明" - "復元失敗" - "すべて削除" "削除" "検索" "このアプリはインストールされていません" "このアイコンのアプリはインストールされていません。このアイコンは削除できます。または、手動でアプリを検索してインストールしください。" + "ホーム画面に追加" + "アイテムをここに移動" + "アイテムをホーム画面に追加しました" + "アイテムを削除しました" + "アイテムを移動" + "行%1$s、列%2$sに移動" + "位置%1$sに移動" + "お気に入りの位置%1$sに移動" + "アイテムを移動しました" + "フォルダ「%1$s」に追加" + "%1$sのあるフォルダに追加" + "アイテムをフォルダに追加しました" + "「%1$s」フォルダを作成" + "フォルダを作成しました" + "ホーム画面に移動" + "画面を左に移動" + "画面を右に移動" + "画面を移動しました" + "サイズを変更" + "幅を広くする" + "高さを高くする" + "幅を狭くする" + "高さを低くする" + "ウィジェットのサイズを幅%1$s、高さ%2$sに変更しました" diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index b96d3d267..07030d866 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "მთავარი" - "Android-ის ბირთვის აპები" + "სამუშაო" "აპი არ არის დაყენებული." "აპი მიუწვდომელია" "უსაფრთხო რეჟიმში ჩამოტვირთული აპი გაუქმებულია" "უსაფრთხო რეჟიმში ვიჯეტი გამორთულია" - "ვიჯეტები" - "ვიჯეტები" "Mem-ის ჩვენება" "შეეხეთ და დააყოვნეთ ვიჯეტის ასარჩევად." "%1$d × %2$d" - "ერთეულის მთავარ ეკრანზე ჩაგდება ვერ მოხერხდა." - "აირჩიეთ ვიჯეტი შესაქმნელად" - "საქაღალდის სახელი" - "საქაღალდის გადარქმევა" - "კარგი" - "გაუქმება" - "მთავარ ეკრანზე დამატება" - "აპები" - "მალსახმობები" - "ვიჯეტები" - "მთავარ ეკრანებზე ადგილი აღარ არის." + "აპების ძიება" + "აპები იტვირთება..." + "„%1$s“-ის თანხვედრი აპები არ მოიძებნა" "ამ მთავარ ეკრანზე ადგილი აღარ არის." "რჩეულების თაროზე ადგილი არ არის" - "ეს ვიჯეტი ძალიან დიდია რჩეულების თაროსთვის" - "შეიქმნა მალსახმობი „%s“." - "მასლახმობი „%s“ წაშლილია." - "მალსახმობი „%s“ უკვე არსებობს." - "აირჩიეთ მალსახმობი" - "აირჩიეთ აპი" "აპები" "მთავარი" - "წაშლა" - "დეინსტალაცია" "წაშლა" "დეინსტალაცია" "აპის შესახებ" - "აპები" - "წაშლა" - "განახლების დეინსტალაცია" - "აპის დეინსტალაცია" - "აპის შესახებ" - "არჩეულია 1 აპი" - "არჩეულია 1 ვიჯეტი" - "არჩეულია 1 საქაღალდე" - "არჩეულია 1 მალსახმობი" "მალსახმობების დაყენება" "აპისთვის მალსახმობების დამოუკიდებლად დამატების უფლების მიცემა." - "მალსახმობების წაშლა" - "აპისთვის მალსახმობების დამოუკიდებლად წაშლის უფლების მიცემა." "მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვა" "აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვის უფლების მიცემა." "მთავარი ეკრანის პარამეტრებისა და მალსახმობების ჩაწერა" @@ -78,30 +48,17 @@ "პრობლემა ვიჯეტის ჩატვირთვისას" "დაყენება" "ეს სისტემური აპია და მისი წაშლა შეუძლებელია." - "ფეიერვერკი" "უსახელო საქაღალდე" - "მთავარი ეკრანი %1$d" "გვერდი %1$d %2$d-დან" "მთავარი ეკრანი %1$d, %2$d-დან" - "აპების გვერდი %1$d, %2$d-დან" - "ვიჯეტების გვერდი %1$d, %2$d-დან" "მოგესალმებით" - "იგრძენით თავი საკუთარ სახლში" - - - "აპებისა და საქაღალდეებისთვის კიდევ ერთი ეკრანის შექმნა" "თქვენი აპის ხატულების კოპირება" "გსურთ, ძველი მთავარი ეკრანიდან ხატულების და საქაღ. იმპორტი?" "ხატულების კოპირება" "სტანდარტული განლაგება" - "თქვენი სივრცის ორგანიზება" - "თუ გსურთ ფონების, ვიჯეტების და პარამეტრების მართვა, შეეხეთ და არ აუშვათ ფონს." "ფონები, ვიჯეტები, & პარამეტრები" "მოსარგებად შეეხეთ & დააყოვნეთ ფონზე" "გასაგებია" - "აი, საქაღალდე" - "ასეთის შესაქმნელად, შეეხეთ და დააყოვნეთ აპზე, ხოლო შემდეგ გადააჩოჩეთ შემდეგზე." - "კარგი" "საქაღალდე გახსნილია, %1$d x %2$d" "შეეხეთ საქაღალდის დასახურად" "შეეხეთ ახალი სახელის შესანახად" @@ -111,14 +68,34 @@ "ვიჯეტები" "ფონები" "პარამეტრები" - "მოცდა..." - "ჩამოტვირთვა..." - "ინსტალაცია..." + "როტაციის დაშვება" "უცნობი" - "არ აღდგა" - "ყველას ამოშლა" "ამოშლა" "ძიება" "ეს აპი დაყენებული არ არის" "ამ ხატულის აპი დაყენებული არ არის. შეგიძლიათ ამოშალოთ, ან მოიძიოთ აპი და ხელით მოახდინოთ მისი ინსტალაცია." + "მთავარ ეკრანზე დამატება" + "ერთეულის გადაადგილება აქ" + "ერთეული დაემატა მთავარ ეკრანს" + "ერთეული წაიშალა" + "ერთეულის გადაადგილება" + "გადატანა რიგში %1$s სვეტში %2$s" + "გადატანა %1$s პოზიციაზე" + "გადატანა რჩეულთა პოზიციაზე %1$s" + "ერთეული გადაადგილდა" + "საქაღალდეში დამატება: %1$s" + "საქაღალდეში დამატება %1$s-ით" + "ერთეული დაემატა საქაღალდეს" + "საქაღალდის შექმნა ერთეულით: %1$s" + "საქაღალდე შექმნილია" + "მთავარ ეკრანზე გადატანა" + "ეკრანის გადატანა მარცხნივ" + "ეკრანის გადატანა მარჯვნით" + "ეკრანი გადაადგილდა" + "ზომის შეცვლა" + "სიგანის გაზრდა" + "სიმაღლის გაზრდა" + "სიგანის შემცირება" + "სიმაღლის შემცირება" + "ვიჯეტის ზომები შეიცვალა: სიგანე %1$s სიმაღლე %2$s" diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml index c5b5a62f6..e79c9ce98 100644 --- a/res/values-kk-rKZ/strings.xml +++ b/res/values-kk-rKZ/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "Негізгі" - "Android Core қолданбалары" + "Жұмыс" "Қолданба орнатылмаған." "Қолданба қол жетімді емес" "Жүктелген қолданба қауіпсіз режимде өшірілген" "Қауіпсіз режимде виджеттер өшіріледі" - "Виджеттер" - "Виджеттер" "Жадты көрсету" "Виджетті таңдау үшін түртіп, мықтап ұстаңыз." "%1$d × %2$d" - "Элементті осы Негізгі Экранға тастау орындалмады." - "Жасақтау үшін виджет таңдау" - "Қалта атауы" - "Қалтаның атауын өзгерту" - "Жарайды" - "Өшіру" - "Негізгі экранға қосу" - "Қолданбалар" - "Төте пернелер" - "Виджеттер" - "Негізгі экранда орын жоқ." + "Қолданбаларды іздеу" + "Қолданбалар жүктелуде…" + %1$s» сұрауына сәйкес келетін қолданбалар жоқ" "Бұл Негізгі экранда орын қалмады." "Қалаулылар науасында орын қалмады" - "Бұл виджет Қалаулылар науасы үшін тым үлкен" - "\"%s\" төте пернесі жасақталды." - "\"%s\" төте пернесі алынды." - "\"%s\" төте пернесі бұрыннан бар." - "Төте перне таңдау" - "Қолданба таңдау" "Қолданбалар" "Негізгі" - "Алып тастау" - "Алмау" "Алып тастау" "Алмау" "Қолданба ақпары" - "Қолданбалар" - "Алып тастау" - "Жаңартуды алмау" - "Қолданбаны алып тастау" - "Қолданба туралы толығырақ" - "1 қолданба таңдалған" - "1 виджет таңдалған" - "1 қалта таңдалған" - "1 төте перне таңдалған" "төте пернелерді орнату" "Қолданбаға пайдаланушының қатысуынсыз төте пернелерді қосу мүмкіндігін береді." - "төте пернелерді алып тастау" - "Қолданбаға пайдаланушының қатысуынсыз төте пернелерді алу мүмкіндігін береді." "Негізгі экрандағы параметрлер мен төте пернелерді оқу" "Қолданбаға Негізгі экрандағы параметрлер мен төте пернелерді оқу мүмкіндігін береді." "Негізгі экран параметрлері мен төте пернелерін жазу" @@ -78,30 +48,17 @@ "Виджетті жүктеу барысында мәселе орын алды" "Орнату" "Бұл жүйе қолданбасы, сондықтан оны алу мүмкін емес." - "Rocket Launcher" "Атауы жоқ қалта" - "%1$d негізгі экран" "%1$d бет, барлығы %2$d" "%1$d негізгі экран, барлығы %2$d" - "%1$d қолданба беті, барлығы %2$d" - "%1$d виджет беті, барлығы %2$d" "Қош келдіңіз" - "Өзіңізді ыңғайлы сезініңіз." - - - "Қолданбалар мен қалталар үшін көбірек экрандар жасау" "Қолданба таңбаларын көшіру" "Бұрынғы негізгі экрандарыңыздағы таңбалар мен қалталар импортталсын ба?" "ТАҢБАЛАРДЫ КӨШІРУ" "ЖАҢАДАН БАСТАУ" - "Кеңістікті реттеу" - "Артқы фонды, виджеттерді және параметрлерді басқару үшін артқы шебін түртіп, мықтап ұстаңыз." "Тұсқағаздар, виджеттер және параметрлер" "Теңшеу үшін фонды түртіп, ұстап тұрыңыз" "ТҮСІНДІМ" - "Міне, қалта." - "Осы сияқты қалта жасау үшін, қолданбаны түртіп, мықтап ұстаңыз, одан кейін екіншісінің үстінен жылжытыңыз." - "Жарайды" "Қалта ашылды, %1$d және %2$d" "Қалтаны жабу үшін түртіңіз" "Өзгертілген атауын сақтау үшін түртіңіз" @@ -111,14 +68,34 @@ "Виджеттер" "Артқы фондар" "Параметрлер" - "Күтілуде" - "Жүктелуде" - "Орнатылуда" + "Айналуға рұқсат ету" "Белгісіз" - "Қалп. кел-меді" - "Барлығын алып тастау" "Алып тастау" "Іздеу" "Бұл қолданба орнатылмаған" "Осы белгіше үшін қолданба орнатылмаған. Оны жоюға болады немесе қолданбаны іздеп, қолмен орнатуға болады." + "Негізгі экранға қосу" + "Элементті мұнда жылжыту" + "Элемент негізгі экранға қосылды" + "Элемент жойылды" + "Элементті жылжыту" + "%1$s-жол, %2$s-бағанға жылжыту" + "%1$s-орынға жылжыту" + "%1$s нөмірлі таңдаулы орынға жылжыту" + "Элемент жылжытылды" + "Қалтаға қосу: %1$s" + "%1$s бар қалтаға қосу" + "Элемент қалтаға қосылды" + "Мына бар қалтаны жасау: %1$s" + "Қалта жасалды" + "Негізгі экранға жылжыту" + "Экранды солға жылжыту" + "Экранды оңға жылжыту" + "Экран жылжытылды" + "Өлшемін өзгерту" + "Енін арттыру" + "Биіктігін арттыру" + "Енін азайту" + "Биіктігін азайту" + "Виджет өлшемінің ені %1$s, биіктігі %2$s болып өзгертілді" diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml index 670ac70b5..9f7f53717 100644 --- a/res/values-km-rKH/strings.xml +++ b/res/values-km-rKH/strings.xml @@ -20,57 +20,27 @@ "Launcher3" - "ដើម" - "កម្មវិធី​​សំខាន់​ៗ​របស់ Android" + "ការងារ" "មិន​បាន​ដំឡើង​កម្មវិធី។" "មិន​មាន​កម្មវិធី" "បាន​បិទ​កម្មវិធី​ដែល​បាន​ទាញ​យក​ក្នុង​របៀប​សុវត្ថិភាព" "បាន​បិទ​ធាតុ​ក្រាហ្វិក​ក្នុង​របៀប​សុវត្ថិភាព" - "ធាតុ​ក្រាហ្វិក" - "ធាតុ​ក្រាហ្វិក" "បង្ហាញ​ Mem" "ប៉ះ & សង្កត់ ដើម្បី​ជ្រើស​ធាតុ​ក្រាហ្វិក។" "%1$d × %2$d" - "មិន​អាច​ទម្លាក់​ធាតុ​លើ​អេក្រង់​ដើម​នេះ​ទេ" - "ជ្រើស​ធាតុ​ក្រាហ្វិក ដើម្បី​​​បង្កើត" - "ឈ្មោះ​ថត" - "ប្ដូរ​ឈ្មោះ​ថត" - "យល់ព្រម" - "បោះបង់" - "បន្ថែម​ទៅ​អេក្រង់​ដើម" - "កម្មវិធី" - "ផ្លូវកាត់" - "ធាតុ​ក្រាហ្វិក" - "គ្មាន​បន្ទប់​នៅ​លើ​អេក្រង់​ដើម​រស់​អ្នក​ទៀត​ទេ។" + "ស្វែងរកកម្មវិធី" + "កំពុងដំណើរការកម្មវិធី..." + "គ្មានកម្មវិធីដែលត្រូវជាមួយ \"%1$s\" ទេ" "គ្មាន​បន្ទប់​នៅ​លើ​អេក្រង់​ដើម​នេះ​ទៀត​ទេ។" "គ្មាន​បន្ទប់​​ក្នុង​ថាស​និយម​ប្រើ" - "ធាតុ​ក្រាហ្វិក​នេះ​ធំ​ពេក​សម្រាប់​ថាស​និយម​ប្រើ" - "បាន​បង្កើត​ផ្លូវកាត់ \"%s\" ។" - "បាន​លុប​ផ្លូវកាត់ \"%s\" ។" - "មាន​ផ្លូវកាត់ \"%s\" រួច​ហើយ។" - "ជ្រើស​ផ្លូវកាត់" - "ជ្រើស​កម្មវិធី" "កម្មវិធី" "ដើម" - "លុប​ចេញ" - "លុប" "លុប​ចេញ" "លុប" "ព័ត៌មាន​កម្មវិធី" - "កម្មវិធី" - "លុប​ចេញ" - "លុប​បច្ចុប្បន្នភាព" - "លុប​កម្មវិធី" - "ព័ត៌មាន​លម្អិត​កម្មវិធី" - "បាន​ជ្រើស​កម្មវិធី ១" - "បាន​ជ្រើស​ធាតុ ១" - "បាន​ជ្រើស​ថត ១" - "បាន​ជ្រើស​ផ្លូវកាត់ ១" "ដំឡើង​ផ្លូវកាត់" "អនុញ្ញាត​ឲ្យ​កម្មវិធី​បន្ថែម​ផ្លូវកាត់​ ដោយ​មិន​ចាំបាច់​​អំពើ​ពី​អ្នក​ប្រើ។" - "លុប​ផ្លូវកាត់" - "អនុញ្ញាត​ឲ្យ​កម្មវិធី​លុប​ផ្លូវកាត់​ដោយ​មិន​ចាំបាច់​អំពើ​ពី​អ្នក​ប្រើ។" "អាន​ការ​កំណត់​ និង​ផ្លូវកាត់​​អេក្រង់​ដើម" "អនុញ្ញាត​ឲ្យ​កម្មវិធី​អាន​ការ​កំណត់ និង​ផ្លូវកាត់​ក្នុង​អេក្រង់​ដើម។" "សរសេរ​ការ​កំណត់ ​និង​ផ្លូវកាត់​​លើ​អេក្រង់​ដើម" @@ -78,30 +48,17 @@ "បញ្ហា​ក្នុង​ការ​ផ្ទុក​ធាតុ​​ក្រាហ្វិក" "រៀបចំ" "នេះ​​​ជា​កម្មវិធី​ប្រព័ន្ធ មិន​អាច​លុប​បាន​ទេ។" - "កម្មវិធី​ចាប់ផ្ដើម​រ៉ូកែត" "ថត​គ្មាន​ឈ្មោះ" - "អេក្រង់​ដើម %1$d" "ទំព័រ %1$d នៃ %2$d" "អេក្រង់​ដើម %1$d នៃ %2$d" - "ទំព័រ​កម្មវិធី %1$d នៃ %2$d" - "ទំព័រ​ធាតុ​ក្រាហ្វិក ​%1$d នៃ %2$d" "សូម​ស្វាគមន៍​" - "ធ្វើ​ដោយ​ខ្លួន​ឯង​នៅ​លើ​អេក្រង់​ដើម។" - - - "បង្កើត​អេក្រង់​ច្រើន​សម្រាប់​កម្មវិធី​ ​និង​ថតឯកសារ" "ចម្លង​រូបតំណាង​កម្មវិធី​របស់​អ្នក" "នាំចូល​រូបតំណាង និង​ថត​ពី​អេក្រង់​ដើម​ចាស់​របស់​អ្នក?" "រូប​តំណាង​ច្បាប់​ចម្លង" "ចាប់ផ្ដើម​ធ្វើ​ឲ្យ​ស្រស់" - "រៀបចំ​ចន្លោះ​របស់​អ្នក" - "ប៉ះ & សង្កត់​លើ​ផ្ទៃ​ខាង​ក្រោម ដើម្បី​គ្រប់គ្រង​ផ្ទាំង​រូបភាព, ធាតុ​ក្រាហ្វិក និង​ការ​កំណត់។" "ផ្ទាំងរូបភាព,ធាតុក្រាហ្វិក & ការកំណត់" "ប៉ះ & សង្កត់​ផ្ទៃ​ខាង​ក្រោយ​ដើម្បី​ប្ដូរ​តាម​​តម្រូវ​ការ" "យល់​ហើយ" - "នេះ​ជា​ថត" - "ដើម្បី​បង្កើត​មួយ​ដូច​នេះ ប៉ះ & សង្កត់​​លើ​កម្មវិធី បន្ទាប់​មក​ផ្លាស់ទី​វា​ទៅ​លើ​ធាតុ​មួយ​ផ្សេង​ទៀត។" - "យល់ព្រម" "បាន​បើក​ថត %1$d ដោយ %2$d" "ប៉ះ ដើម្បី​បិទ​ថត" "ប៉ះ ដើម្បី​រក្សាទុក​ការ​ប្ដូរ​ឈ្មោះ" @@ -111,14 +68,34 @@ "ធាតុ​ក្រាហ្វិក" "ផ្ទាំង​រូបភាព" "ការកំណត់" - "រង់ចាំ" - "​ទាញ​យក" - "ដំឡើង" + "អនុញ្ញាតឲ្យបង្វិល" "មិន​ស្គាល់" - "មិនបាន​​ស្តា​រ" - "លុបចេញ​​​ទាំងអស់" "លុបចេញ"