├── MODULE_LICENSE_APACHE2 ├── tests ├── res │ ├── raw │ │ ├── db_schema_v10.json │ │ ├── package_install_state_change_task_data.txt │ │ └── cache_data_updated_task_data.txt │ ├── layout │ │ ├── test_layout_appwidget_blue.xml │ │ ├── test_layout_appwidget_red.xml │ │ └── test_layout_appwidget_view.xml │ └── xml │ │ ├── appwidget_no_config.xml │ │ └── appwidget_with_config.xml ├── src │ └── com │ │ └── android │ │ └── launcher3 │ │ ├── testcomponent │ │ ├── AppWidgetWithConfig.java │ │ └── AppWidgetNoConfig.java │ │ └── util │ │ └── Wait.java └── Android.mk ├── res ├── drawable-hdpi │ ├── ic_allapps.png │ ├── workspace_bg.9.png │ ├── ic_allapps_pressed.png │ ├── workspace_bg_dark.9.png │ ├── widget_resize_frame.9.png │ ├── widget_resize_shadow.9.png │ └── ic_widget_resize_handle.png ├── drawable-mdpi │ ├── ic_allapps.png │ ├── workspace_bg.9.png │ ├── ic_allapps_pressed.png │ ├── workspace_bg_dark.9.png │ ├── widget_resize_frame.9.png │ ├── widget_resize_shadow.9.png │ └── ic_widget_resize_handle.png ├── drawable-xhdpi │ ├── ic_allapps.png │ ├── workspace_bg.9.png │ ├── ic_allapps_pressed.png │ ├── widget_resize_frame.9.png │ ├── workspace_bg_dark.9.png │ ├── ic_widget_resize_handle.png │ └── widget_resize_shadow.9.png ├── drawable-xxhdpi │ ├── ic_allapps.png │ ├── workspace_bg.9.png │ ├── ic_allapps_pressed.png │ ├── workspace_bg_dark.9.png │ ├── widget_resize_frame.9.png │ ├── widget_resize_shadow.9.png │ └── ic_widget_resize_handle.png ├── mipmap-hdpi │ ├── ic_launcher_home.png │ ├── ic_launcher_home_background.png │ └── ic_launcher_home_foreground.png ├── mipmap-mdpi │ ├── ic_launcher_home.png │ ├── ic_launcher_home_background.png │ └── ic_launcher_home_foreground.png ├── drawable-xxxhdpi │ ├── workspace_bg.9.png │ ├── workspace_bg_dark.9.png │ ├── widget_resize_frame.9.png │ ├── ic_widget_resize_handle.png │ └── widget_resize_shadow.9.png ├── mipmap-xhdpi │ ├── ic_launcher_home.png │ ├── ic_launcher_home_background.png │ └── ic_launcher_home_foreground.png ├── mipmap-xxhdpi │ ├── ic_launcher_home.png │ ├── ic_launcher_home_background.png │ └── ic_launcher_home_foreground.png ├── mipmap-xxxhdpi │ ├── ic_launcher_home.png │ ├── ic_launcher_home_background.png │ └── ic_launcher_home_foreground.png ├── values-sw600dp │ ├── config.xml │ └── dimens.xml ├── xml │ ├── file_paths.xml │ ├── backupscheme.xml │ ├── default_workspace_4x4.xml │ ├── default_workspace_4x5.xml │ ├── default_workspace_5x5.xml │ ├── default_workspace_5x6.xml │ └── default_workspace_6x6.xml ├── values-sw720dp-land │ └── dimens.xml ├── values │ ├── bridge.xml │ ├── plurals.xml │ ├── bools.xml │ └── drawables.xml ├── layout │ ├── zzz_weight_watcher.xml │ ├── all_apps_button.xml │ ├── app_icon.xml │ ├── appwidget_not_ready.xml │ ├── widget_list_divider.xml │ ├── folder_application.xml │ ├── notification_pref_warning.xml │ ├── workspace_screen.xml │ ├── gradient_bg.xml │ ├── folder_page.xml │ ├── search_container_all_apps_include.xml │ ├── system_shortcut_icon_only.xml │ ├── widget_cell.xml │ ├── appwidget_error.xml │ ├── popup_container.xml │ ├── system_shortcut_icons.xml │ ├── hotseat.xml │ ├── all_apps_divider.xml │ ├── all_apps_empty_search.xml │ └── all_apps_icon.xml ├── values-hy │ └── plurals.xml ├── values-ja │ └── plurals.xml ├── values-km │ └── plurals.xml ├── values-ko │ └── plurals.xml ├── values-am │ └── plurals.xml ├── values-bg │ └── plurals.xml ├── values-ca │ └── plurals.xml ├── values-de │ └── plurals.xml ├── values-el │ └── plurals.xml ├── values-es │ └── plurals.xml ├── values-et │ └── plurals.xml ├── values-eu │ └── plurals.xml ├── values-fi │ └── plurals.xml ├── values-fr │ └── plurals.xml ├── values-gl │ └── plurals.xml ├── values-it │ └── plurals.xml ├── values-ka │ └── plurals.xml ├── values-lo │ └── plurals.xml ├── values-mr │ └── plurals.xml ├── values-nb │ └── plurals.xml ├── values-nl │ └── plurals.xml ├── values-pt │ └── plurals.xml ├── values-af │ └── plurals.xml ├── values-az │ └── plurals.xml ├── values-da │ └── plurals.xml ├── values-en-rAU │ └── plurals.xml ├── values-en-rGB │ └── plurals.xml ├── values-en-rIN │ └── plurals.xml ├── values-es-rUS │ └── plurals.xml ├── values-fr-rCA │ └── plurals.xml ├── values-hi │ └── plurals.xml ├── values-hu │ └── plurals.xml ├── values-in │ └── plurals.xml ├── values-kk │ └── plurals.xml ├── values-ky │ └── plurals.xml ├── values-mk │ └── plurals.xml ├── values-mn │ └── plurals.xml ├── values-ms │ └── plurals.xml ├── values-pa │ └── plurals.xml ├── values-pt-rPT │ └── plurals.xml ├── values-si │ └── plurals.xml ├── values-sq │ └── plurals.xml ├── values-sv │ └── plurals.xml ├── values-te │ └── plurals.xml ├── values-th │ └── plurals.xml ├── values-tr │ └── plurals.xml ├── values-vi │ └── plurals.xml ├── values-zh-rCN │ └── plurals.xml ├── values-zh-rHK │ └── plurals.xml ├── values-zh-rTW │ └── plurals.xml ├── values-bn │ └── plurals.xml ├── values-gu │ └── plurals.xml ├── values-is │ └── plurals.xml ├── values-kn │ └── plurals.xml ├── values-my │ └── plurals.xml ├── values-ne │ └── plurals.xml ├── values-sw │ └── plurals.xml ├── values-ta │ └── plurals.xml ├── values-tl │ └── plurals.xml ├── values-uz │ └── plurals.xml ├── values-fa │ └── plurals.xml ├── values-ur │ └── plurals.xml ├── values-zu │ └── plurals.xml ├── values-ml │ └── plurals.xml ├── values-ar-rXB │ └── plurals.xml ├── values-en-rXA │ └── plurals.xml ├── drawable │ ├── gutter_horizontal.xml │ ├── ic_poodle_color.xml │ ├── bg_smartspace.xml │ ├── ic_launcher_home.xml │ ├── pending_widget_bg.xml │ ├── all_apps_divider.xml │ ├── all_apps_search_divider.xml │ ├── round_rect_primary.xml │ ├── all_apps_search_hint.xml │ ├── all_apps_button_icon.xml │ ├── qsb_icon_click_feedback.xml │ ├── ic_default_shortcut.xml │ ├── widget_internal_focus_bg.xml │ ├── ic_edit_no_shadow.xml │ ├── ic_allapps_search.xml │ ├── horizontal_ellipsis.xml │ ├── ic_star_rating.xml │ └── ic_uninstall_no_shadow.xml ├── values-sw720dp │ ├── config.xml │ └── dimens.xml ├── values-bs │ └── plurals.xml ├── values-hr │ └── plurals.xml ├── values-lv │ └── plurals.xml ├── values-ro │ └── plurals.xml ├── values-sr │ └── plurals.xml ├── values-b+sr+Latn │ └── plurals.xml ├── values-v23 │ ├── styles.xml │ └── bools.xml ├── values-sl │ └── plurals.xml ├── values-cs │ └── plurals.xml ├── values-sk │ └── plurals.xml ├── values-be │ └── plurals.xml ├── values-iw │ └── plurals.xml ├── values-ru │ └── plurals.xml ├── values-uk │ └── plurals.xml ├── values-lt │ └── plurals.xml ├── values-pl │ └── plurals.xml ├── values-v24 │ └── config.xml ├── layout-land │ └── search_container_hotseat.xml ├── values-v26 │ ├── colors.xml │ └── bools.xml ├── values-ar │ └── plurals.xml ├── anim │ └── no_anim.xml ├── interpolator │ ├── decelerate_quart.xml │ ├── decelerate_quint.xml │ ├── disco_bounce.xml │ ├── folder_interpolator.xml │ ├── large_folder_preview_item_close_interpolator.xml │ └── large_folder_preview_item_open_interpolator.xml ├── color │ ├── qsb_icon_tint.xml │ ├── primary_text_material_dark.xml │ ├── secondary_text_material_dark.xml │ ├── primary_text_material_light.xml │ └── secondary_text_material_light.xml ├── drawable-v24 │ ├── ic_info_shadow.xml │ ├── ic_remove_shadow.xml │ ├── ic_uninstall_shadow.xml │ ├── ic_mic_shadow.xml │ └── ic_super_g_shadow.xml ├── values-sw340dp │ └── dimens.xml ├── values-v19 │ └── styles.xml ├── drawable-v26 │ ├── adaptive_icon_drawable_wrapper.xml │ └── ic_launcher_home.xml ├── layout-v23 │ └── search_container_all_apps_include.xml ├── layout-port │ └── search_container_hotseat.xml ├── layout-sw720dp │ └── search_container_hotseat.xml ├── values-v21 │ └── styles.xml ├── color-v24 │ ├── all_apps_bg_hand_fill.xml │ └── all_apps_bg_hand_fill_dark.xml └── raw │ └── downgrade_schema.json ├── assets └── fonts │ └── GoogleSans-Regular.ttf ├── src ├── com │ ├── android │ │ └── launcher3 │ │ │ ├── OnAlarmListener.java │ │ │ ├── CustomAppWidget.java │ │ │ ├── AppFilter.java │ │ │ ├── LauncherProviderChangeListener.java │ │ │ ├── SimpleOnStylusPressListener.java │ │ │ ├── util │ │ │ ├── FlagOp.java │ │ │ ├── NoLocaleSqliteContext.java │ │ │ ├── LogConfig.java │ │ │ ├── TouchController.java │ │ │ ├── CellAndSpan.java │ │ │ ├── Provider.java │ │ │ └── RunnableWithId.java │ │ │ ├── discovery │ │ │ └── AppDiscoveryUpdateState.java │ │ │ ├── LogAccelerateInterpolator.java │ │ │ ├── LogDecelerateInterpolator.java │ │ │ ├── Insettable.java │ │ │ ├── IconProvider.java │ │ │ ├── MainThreadExecutor.java │ │ │ ├── allapps │ │ │ └── search │ │ │ │ └── SearchAlgorithm.java │ │ │ ├── testing │ │ │ ├── DummyWidget.java │ │ │ └── ToggleWeightWatcher.java │ │ │ ├── LauncherBackupAgent.java │ │ │ ├── compat │ │ │ ├── UserManagerCompatVNMr1.java │ │ │ └── UserManagerCompatVM.java │ │ │ └── LauncherExterns.java │ └── google │ │ └── android │ │ ├── apps │ │ └── nexuslauncher │ │ │ ├── smartspace │ │ │ ├── ISmartspace.java │ │ │ └── SmartspacePreferencesShortcut.java │ │ │ ├── qsb │ │ │ └── OPAStatusReceiver.java │ │ │ ├── search │ │ │ ├── SearchResult.java │ │ │ ├── AppItemInfoWithIcon.java │ │ │ └── LogContainerProvider.java │ │ │ ├── NexusAppFilter.java │ │ │ ├── utils │ │ │ └── ActionIntentFilter.java │ │ │ └── DynamicDrawableFactory.java │ │ └── libraries │ │ ├── gsa │ │ └── launcherclient │ │ │ ├── ISerializableScrollCallback.java │ │ │ ├── IScrollCallback.java │ │ │ └── StaticInteger.java │ │ └── launcherclient │ │ ├── ILauncherOverlayCallback.aidl │ │ └── ILauncherOverlay.aidl └── amirz │ └── aidlbridge │ ├── IBridge.aidl │ └── IBridgeCallback.aidl ├── .gitignore ├── go └── res │ ├── values-v23 │ └── bools.xml │ ├── values-v26 │ └── bools.xml │ ├── values │ └── override.xml │ ├── drawable │ └── ic_widget.xml │ ├── xml │ └── device_profiles.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-ja │ └── strings.xml │ └── values-am │ └── strings.xml ├── src_config └── com │ └── android │ └── launcher3 │ └── BuildConfig.java ├── proto_overrides └── launcher_log_extension.proto └── proto_pixel └── search.proto /MODULE_LICENSE_APACHE2: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/res/raw/db_schema_v10.json: -------------------------------------------------------------------------------- 1 | { 2 | "version" : 10, 3 | "downgrade_to_9" : [] 4 | } -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/ic_allapps.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/ic_allapps.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/ic_allapps.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/ic_allapps.png -------------------------------------------------------------------------------- /assets/fonts/GoogleSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/assets/fonts/GoogleSans-Regular.ttf -------------------------------------------------------------------------------- /res/drawable-hdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /res/mipmap-hdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-hdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /res/mipmap-mdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-mdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /res/drawable-xxxhdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxxhdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /res/mipmap-xhdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xhdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /res/mipmap-xxhdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xxhdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /res/mipmap-xxxhdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xxxhdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /res/drawable-hdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /res/drawable-mdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /res/drawable-hdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /res/drawable-xxxhdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxxhdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-hdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-mdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xhdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /res/drawable-xxxhdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxxhdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxhdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /res/drawable-xxxhdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxxhdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /res/drawable-xxxhdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/drawable-xxxhdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /res/mipmap-hdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-hdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /res/mipmap-hdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-hdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /res/mipmap-mdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-mdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /res/mipmap-mdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-mdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /res/mipmap-xhdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xhdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /res/mipmap-xhdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xhdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /res/mipmap-xxhdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xxhdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /res/mipmap-xxhdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xxhdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /res/values-sw600dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | true 3 | true 4 | 5 | -------------------------------------------------------------------------------- /res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/mipmap-xxxhdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xxxhdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /res/mipmap-xxxhdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirzaidi/Launcher3/HEAD/res/mipmap-xxxhdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /res/values-sw720dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -50.0dip 4 | 5 | -------------------------------------------------------------------------------- /src/com/android/launcher3/OnAlarmListener.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | public interface OnAlarmListener { 4 | public void onAlarm(Alarm alarm); 5 | } 6 | -------------------------------------------------------------------------------- /src/amirz/aidlbridge/IBridge.aidl: -------------------------------------------------------------------------------- 1 | package amirz.aidlbridge; 2 | 3 | import amirz.aidlbridge.IBridgeCallback; 4 | 5 | interface IBridge { 6 | oneway void bindService(in IBridgeCallback cb, in int flags); 7 | } 8 | -------------------------------------------------------------------------------- /res/values/bridge.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0xB662CC2F 4 | v3 5 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/smartspace/ISmartspace.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.smartspace; 2 | 3 | public interface ISmartspace { 4 | void cq(); 5 | 6 | void cr(final SmartspaceDataContainer p0); 7 | } 8 | -------------------------------------------------------------------------------- /src/amirz/aidlbridge/IBridgeCallback.aidl: -------------------------------------------------------------------------------- 1 | package amirz.aidlbridge; 2 | 3 | interface IBridgeCallback { 4 | oneway void onServiceConnected(in ComponentName name, in IBinder service); 5 | 6 | oneway void onServiceDisconnected(in ComponentName name); 7 | } 8 | -------------------------------------------------------------------------------- /res/layout/zzz_weight_watcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /src/com/google/android/libraries/gsa/launcherclient/ISerializableScrollCallback.java: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.gsa.launcherclient; 2 | 3 | public interface ISerializableScrollCallback extends IScrollCallback { 4 | void setPersistentFlags(int flags); 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | db_files 2 | *.iml 3 | .project 4 | .classpath 5 | .project.properties 6 | gen/ 7 | tests/stress/gen/ 8 | WallpaperPicker/gen/ 9 | WallpaperPicker/.project.properties 10 | bin/ 11 | .idea/ 12 | .gradle/ 13 | local.properties 14 | gradle/ 15 | build/ 16 | gradlew* -------------------------------------------------------------------------------- /src/com/google/android/libraries/gsa/launcherclient/IScrollCallback.java: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.gsa.launcherclient; 2 | 3 | public interface IScrollCallback { 4 | void onOverlayScrollChanged(float progress); 5 | 6 | void onServiceStateChanged(boolean overlayAttached); 7 | } 8 | -------------------------------------------------------------------------------- /src/com/google/android/libraries/gsa/launcherclient/StaticInteger.java: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.gsa.launcherclient; 2 | 3 | public class StaticInteger { 4 | public final int mData; 5 | 6 | public StaticInteger(int data) { 7 | mData = data; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/com/google/android/libraries/launcherclient/ILauncherOverlayCallback.aidl: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.launcherclient; 2 | 3 | interface ILauncherOverlayCallback { 4 | 5 | oneway void overlayScrollChanged(float progress); 6 | 7 | oneway void overlayStatusChanged(int status); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /tests/res/layout/test_layout_appwidget_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/res/layout/test_layout_appwidget_red.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /res/xml/backupscheme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /res/values-hy/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ր 5 | %d ր 6 | 7 | 8 | %d ժ 9 | %d ժ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ja/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d分 5 | %d分 6 | 7 | 8 | %d時間 9 | %d時間 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-km/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ន 5 | %d ន 6 | 7 | 8 | %d ម៉ 9 | %d ម៉ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ko/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d분 5 | %d분 6 | 7 | 8 | %d시간 9 | %d시간 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-am/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ደቂቃ 5 | %d ደቂቃ 6 | 7 | 8 | %d ሰዓ 9 | %d ሰዓ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-bg/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | 7 | 8 | %d ч 9 | %d ч 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ca/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-de/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-el/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d λ. 5 | %d λ. 6 | 7 | 8 | %d ώ. 9 | %d ώ. 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-es/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-et/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-eu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-fi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-fr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-gl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-it/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ka/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d წთ 5 | %d წთ 6 | 7 | 8 | %d სთ 9 | %d სთ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-lo/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ນທ 5 | %d ນທ 6 | 7 | 8 | %d ຊມ 9 | %d ຊມ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-mr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d मि 5 | %d मि 6 | 7 | 8 | %d ता 9 | %d ता 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-nb/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d t 9 | %d t 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-nl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d u 9 | %d u 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-pt/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-af/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | 7 | 8 | %d uur 9 | %d uur 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-az/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d dəq 5 | %d dəq 6 | 7 | 8 | %d saat 9 | %d saat 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-da/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | 7 | 8 | %d t. 9 | %d t. 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-en-rAU/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-en-rGB/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-en-rIN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-es-rUS/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-fr-rCA/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-hi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d मिनट 5 | %d मिनट 6 | 7 | 8 | %d घंटे 9 | %d घंटे 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-hu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d perc 5 | %d perc 6 | 7 | 8 | %d óra 9 | %d óra 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-in/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d mnt 5 | %d mnt 6 | 7 | 8 | %d jam 9 | %d jam 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-kk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | 7 | 8 | %d сағ 9 | %d сағ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ky/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мүн. 5 | %d мүн. 6 | 7 | 8 | %d с. 9 | %d с. 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-mk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин. 5 | %d мин. 6 | 7 | 8 | %d часа 9 | %d час 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-mn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | 7 | 8 | %d цаг 9 | %d цаг 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ms/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d jam 9 | %d jam 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-pa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ਮਿੰਟ 5 | %d ਮਿੰਟ 6 | 7 | 8 | %d ਘੰਟੇ 9 | %d ਘੰਟਾ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-pt-rPT/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-si/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | මිනි %d 5 | මිනි %d 6 | 7 | 8 | පැය %d 9 | පැය %d 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-sq/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | 7 | 8 | %d orë 9 | %d orë 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-sv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d tim 9 | %d tim 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-te/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d నిమి 5 | %d నిమి 6 | 7 | 8 | %d గం 9 | %d గం 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-th/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d นาที 5 | %d นาที 6 | 7 | 8 | %d ชม. 9 | %d ชม. 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-tr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d dk. 5 | %d dk. 6 | 7 | 8 | %d sa. 9 | %d sa. 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-vi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d phút 5 | %d phút 6 | 7 | 8 | %d giờ 9 | %d giờ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-zh-rCN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d 分钟 5 | %d 分钟 6 | 7 | 8 | %d 小时 9 | %d 小时 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-zh-rHK/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d 分鐘 5 | %d 分鐘 6 | 7 | 8 | %d 小時 9 | %d 小時 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-zh-rTW/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d 分鐘 5 | %d 分鐘 6 | 7 | 8 | %d 小時 9 | %d 小時 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-bn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d মিনিট 5 | %d মিনিট 6 | 7 | 8 | %d ঘণ্টা 9 | %d ঘণ্টা 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-gu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d મિનિટ 5 | %d મિનિટ 6 | 7 | 8 | %d કલાક 9 | %d કલાક 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-is/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d mín. 5 | %d mín. 6 | 7 | 8 | %d klst. 9 | %d klst. 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-kn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ನಿಮಿಷ 5 | %d ನಿಮಿಷ 6 | 7 | 8 | %d ಗಂಟೆ 9 | %d ಗಂಟೆ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-my/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d မိနစ် 5 | %d မိနစ် 6 | 7 | 8 | %d နာရီ 9 | %d နာရီ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ne/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d मिनेट 5 | %d मिनेट 6 | 7 | 8 | %d घन्टा 9 | %d घन्टा 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-sw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dakika %d 5 | Dakika %d 6 | 7 | 8 | Saa %d 9 | Saa %d 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ta/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d நிமி. 5 | %d நிமி. 6 | 7 | 8 | %d ம.நே 9 | %d ம.நே 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-tl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d na min 5 | %d min 6 | 7 | 8 | %d na oras 9 | %d oras 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-uz/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d daqiqa 5 | %d daqiqa 6 | 7 | 8 | %d soat 9 | %d soat 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-fa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏%d دقیقه 5 | ‏%d دقیقه 6 | 7 | 8 | ‏%d ساعت 9 | ‏%d ساعت 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ur/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏‎%d منٹ 5 | ‏‎%d منٹ 6 | 7 | 8 | ‏‎%d گھنٹہ 9 | ‏‎%d گھنٹہ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-zu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d iminithi 5 | %d iminithi 6 | 7 | 8 | %d ihora 9 | %d ihora 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-ml/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d മിനിറ്റ് 5 | %d മിനിറ്റ് 6 | 7 | 8 | %d മണിക്കൂർ 9 | %d മണിക്കൂർ 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/com/android/launcher3/CustomAppWidget.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | public interface CustomAppWidget { 4 | public String getLabel(); 5 | public int getPreviewImage(); 6 | public int getIcon(); 7 | public int getWidgetLayout(); 8 | 9 | public int getSpanX(); 10 | public int getSpanY(); 11 | public int getMinSpanX(); 12 | public int getMinSpanY(); 13 | public int getResizeMode(); 14 | } 15 | -------------------------------------------------------------------------------- /res/values-ar-rXB/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏‮%d‬‏ ‏‮min‬‏ 5 | ‏‮%d‬‏ ‏‮min‬‏ 6 | 7 | 8 | ‏‮%d‬‏ ‏‮hr‬‏ 9 | ‏‮%d‬‏ ‏‮hr‬‏ 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/values-en-rXA/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [»%d« ḿîñ one] 5 | [»%d« ḿîñ one] 6 | 7 | 8 | [»%d« ĥŕ one] 9 | [»%d« ĥŕ one] 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/drawable/gutter_horizontal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | -------------------------------------------------------------------------------- /tests/res/xml/appwidget_no_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /res/values-sw720dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | true 3 | true 4 | 5 | 6 | 7 | 90 8 | 9 | 10 | false 11 | 12 | -------------------------------------------------------------------------------- /res/values-bs/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /res/values-hr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /res/values-lv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /res/values-ro/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /res/values-sr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | %d мин 7 | 8 | 9 | %d ч 10 | %d ч 11 | %d ч 12 | 13 | 14 | -------------------------------------------------------------------------------- /res/values-b+sr+Latn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d č 10 | %d č 11 | %d č 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/com/android/launcher3/AppFilter.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.content.ComponentName; 4 | import android.content.Context; 5 | import android.os.UserHandle; 6 | 7 | public class AppFilter { 8 | 9 | public static AppFilter newInstance(Context context) { 10 | return Utilities.getOverrideObject(AppFilter.class, context, R.string.app_filter_class); 11 | } 12 | 13 | public boolean shouldShowApp(ComponentName app, UserHandle user) { 14 | return true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/android/launcher3/LauncherProviderChangeListener.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | /** 4 | * This class is a listener for {@link LauncherProvider} changes. It gets notified in the 5 | * sendNotify method. This listener is needed because by default the Launcher suppresses 6 | * standard data change callbacks. 7 | */ 8 | public interface LauncherProviderChangeListener { 9 | 10 | void onLauncherProviderChanged(); 11 | 12 | void onExtractedColorsChanged(); 13 | 14 | void onAppWidgetHostReset(); 15 | } 16 | -------------------------------------------------------------------------------- /tests/res/xml/appwidget_with_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /tests/res/layout/test_layout_appwidget_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /res/values-v23/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/qsb/OPAStatusReceiver.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.qsb; 2 | 3 | import com.android.launcher3.Utilities; 4 | import android.content.Intent; 5 | import android.content.Context; 6 | import android.content.BroadcastReceiver; 7 | 8 | public class OPAStatusReceiver extends BroadcastReceiver { 9 | @Override 10 | public void onReceive(Context context, Intent intent) { 11 | Utilities.getDevicePrefs(context).edit().putBoolean("opa_enabled", intent.getBooleanExtra("OPA_ENABLED", false)).apply(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /res/values-sl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d h 11 | %d h 12 | %d h 13 | %d h 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-cs/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d h 11 | %d h 12 | %d h 13 | %d h 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-sk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d h 11 | %d h 12 | %d h 13 | %d h 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-be/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d хв 5 | %d хв 6 | %d хв 7 | %d хв 8 | 9 | 10 | %d гадз 11 | %d гадз 12 | %d гадз 13 | %d гадз 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-iw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏%d ד’ 5 | ‏%d ד’ 6 | ‏%d ד’ 7 | ‏%d ד’ 8 | 9 | 10 | ‏%d ש’ 11 | ‏%d ש’ 12 | ‏%d ש’ 13 | ‏%d ש’ 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-ru/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин. 5 | %d мин. 6 | %d мин. 7 | %d мин. 8 | 9 | 10 | %d ч. 11 | %d ч. 12 | %d ч. 13 | %d ч. 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-uk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d хв 5 | %d хв 6 | %d хв 7 | %d хв 8 | 9 | 10 | %d год 11 | %d год 12 | %d год 13 | %d год 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-lt/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | %d min. 7 | %d min. 8 | 9 | 10 | %d val. 11 | %d val. 12 | %d val. 13 | %d val. 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-pl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d godz. 11 | %d godz. 12 | %d godz. 13 | %d godz. 14 | 15 | 16 | -------------------------------------------------------------------------------- /res/values-v24/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 5 | 1 6 | 2 7 | 256 8 | 9 | 10 | 11 | @string/theme_automatic 12 | @string/theme_default 13 | @string/theme_light 14 | @string/theme_dark 15 | @string/theme_transparent 16 | 17 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/search/SearchResult.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.search; 2 | 3 | import com.android.launcher3.allapps.search.AllAppsSearchBarController; 4 | import com.android.launcher3.util.ComponentKey; 5 | 6 | import java.util.ArrayList; 7 | 8 | class SearchResult { 9 | final AllAppsSearchBarController.Callbacks mCallbacks; 10 | final String mQuery; 11 | final ArrayList mApps; 12 | 13 | SearchResult(String query, AllAppsSearchBarController.Callbacks callbacks) { 14 | mApps = new ArrayList<>(); 15 | mQuery = query; 16 | mCallbacks = callbacks; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /res/layout-land/search_container_hotseat.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /src/com/android/launcher3/SimpleOnStylusPressListener.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.view.MotionEvent; 4 | import android.view.View; 5 | 6 | import com.android.launcher3.StylusEventHelper.StylusButtonListener; 7 | 8 | /** 9 | * Simple listener that performs a long click on the view after a stylus button press. 10 | */ 11 | public class SimpleOnStylusPressListener implements StylusButtonListener { 12 | private View mView; 13 | 14 | public SimpleOnStylusPressListener(View view) { 15 | mView = view; 16 | } 17 | 18 | public boolean onPressed(MotionEvent event) { 19 | return mView.isLongClickable() && mView.performLongClick(); 20 | } 21 | 22 | public boolean onReleased(MotionEvent event) { 23 | return false; 24 | } 25 | } -------------------------------------------------------------------------------- /res/layout/all_apps_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/FlagOp.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.util; 2 | 3 | public abstract class FlagOp { 4 | 5 | public static FlagOp NO_OP = new FlagOp() {}; 6 | 7 | private FlagOp() {} 8 | 9 | public int apply(int flags) { 10 | return flags; 11 | } 12 | 13 | public static FlagOp addFlag(final int flag) { 14 | return new FlagOp() { 15 | @Override 16 | public int apply(int flags) { 17 | return flags | flag; 18 | } 19 | }; 20 | } 21 | 22 | public static FlagOp removeFlag(final int flag) { 23 | return new FlagOp() { 24 | @Override 25 | public int apply(int flags) { 26 | return flags & ~flag; 27 | } 28 | }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /res/drawable/ic_poodle_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 13 | 16 | 19 | -------------------------------------------------------------------------------- /res/values-v26/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | #66FFFFFF 21 | 22 | -------------------------------------------------------------------------------- /go/res/values-v23/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | false 21 | -------------------------------------------------------------------------------- /go/res/values-v26/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | false 21 | -------------------------------------------------------------------------------- /res/layout/app_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /res/values-ar/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏%d دقيقة 5 | ‏%d دقيقة 6 | ‏دقيقة واحدة (%d) 7 | ‏دقيقتان (%d) 8 | ‏%d دقائق 9 | ‏%d دقيقة 10 | 11 | 12 | ‏%d ساعة 13 | ‏%d ساعة 14 | ‏ساعة واحدة (%d) 15 | ‏ساعتان (%d) 16 | ‏%d ساعات 17 | ‏%d ساعة 18 | 19 | 20 | -------------------------------------------------------------------------------- /res/anim/no_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /res/drawable/bg_smartspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3.discovery; 18 | 19 | public enum AppDiscoveryUpdateState { 20 | START, UPDATE, END 21 | } 22 | -------------------------------------------------------------------------------- /res/drawable/ic_launcher_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 19 | -------------------------------------------------------------------------------- /res/interpolator/decelerate_quart.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | -------------------------------------------------------------------------------- /res/interpolator/decelerate_quint.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/search/AppItemInfoWithIcon.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.search; 2 | 3 | import android.content.Intent; 4 | 5 | import com.android.launcher3.ItemInfoWithIcon; 6 | import com.android.launcher3.util.ComponentKey; 7 | 8 | public class AppItemInfoWithIcon extends ItemInfoWithIcon { 9 | private Intent mIntent; 10 | 11 | public AppItemInfoWithIcon(final ComponentKey componentKey) { 12 | mIntent = new Intent(Intent.ACTION_MAIN) 13 | .addCategory(Intent.CATEGORY_LAUNCHER) 14 | .setComponent(componentKey.componentName) 15 | .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 16 | user = componentKey.user; 17 | itemType = 0; 18 | } 19 | 20 | public Intent getIntent() { 21 | return this.mIntent; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | false 21 | 22 | true 23 | -------------------------------------------------------------------------------- /res/color/qsb_icon_tint.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /res/values-v23/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | true 21 | 22 | true 23 | -------------------------------------------------------------------------------- /res/values-v26/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | true 21 | 22 | false 23 | -------------------------------------------------------------------------------- /res/layout/appwidget_not_ready.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /tests/src/com/android/launcher3/testcomponent/AppWidgetWithConfig.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 | * use this file except in compliance with the License. You may obtain a copy of 6 | * the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | * License for the specific language governing permissions and limitations under 14 | * the License. 15 | */ 16 | package com.android.launcher3.testcomponent; 17 | 18 | /** 19 | * A simple app widget with configuration sceen. 20 | */ 21 | public class AppWidgetWithConfig extends AppWidgetNoConfig { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/NoLocaleSqliteContext.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.util; 2 | 3 | import android.content.Context; 4 | import android.content.ContextWrapper; 5 | import android.database.DatabaseErrorHandler; 6 | import android.database.sqlite.SQLiteDatabase; 7 | import android.database.sqlite.SQLiteDatabase.CursorFactory; 8 | 9 | /** 10 | * A context wrapper which creates databases without support for localized collators. 11 | */ 12 | public class NoLocaleSqliteContext extends ContextWrapper { 13 | 14 | public NoLocaleSqliteContext(Context context) { 15 | super(context); 16 | } 17 | 18 | @Override 19 | public SQLiteDatabase openOrCreateDatabase( 20 | String name, int mode, CursorFactory factory, DatabaseErrorHandler errorHandler) { 21 | return super.openOrCreateDatabase( 22 | name, mode | Context.MODE_NO_LOCALIZED_COLLATORS, factory, errorHandler); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /res/drawable/pending_widget_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | -------------------------------------------------------------------------------- /res/xml/default_workspace_4x4.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/xml/default_workspace_4x5.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/xml/default_workspace_5x5.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/xml/default_workspace_5x6.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/xml/default_workspace_6x6.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/drawable/all_apps_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /res/drawable/all_apps_search_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /res/layout/widget_list_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | -------------------------------------------------------------------------------- /res/interpolator/disco_bounce.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | -------------------------------------------------------------------------------- /res/interpolator/folder_interpolator.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 25 | -------------------------------------------------------------------------------- /res/drawable-v24/ic_info_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | -------------------------------------------------------------------------------- /res/drawable-v24/ic_remove_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | -------------------------------------------------------------------------------- /res/drawable/round_rect_primary.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /res/values-sw340dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 20dp 22 | 16sp 23 | 24 | -------------------------------------------------------------------------------- /res/drawable-v24/ic_uninstall_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | -------------------------------------------------------------------------------- /res/drawable/all_apps_search_hint.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/src/com/android/launcher3/testcomponent/AppWidgetNoConfig.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 | * use this file except in compliance with the License. You may obtain a copy of 6 | * the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | * License for the specific language governing permissions and limitations under 14 | * the License. 15 | */ 16 | package com.android.launcher3.testcomponent; 17 | 18 | import android.appwidget.AppWidgetProvider; 19 | 20 | /** 21 | * A simple app widget without any configuration screen. 22 | */ 23 | public class AppWidgetNoConfig extends AppWidgetProvider { 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /res/interpolator/large_folder_preview_item_close_interpolator.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 25 | -------------------------------------------------------------------------------- /res/interpolator/large_folder_preview_item_open_interpolator.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 25 | -------------------------------------------------------------------------------- /src/com/android/launcher3/LogAccelerateInterpolator.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.animation.TimeInterpolator; 4 | 5 | public class LogAccelerateInterpolator implements TimeInterpolator { 6 | 7 | int mBase; 8 | int mDrift; 9 | final float mLogScale; 10 | 11 | public LogAccelerateInterpolator(int base, int drift) { 12 | mBase = base; 13 | mDrift = drift; 14 | mLogScale = 1f / computeLog(1, mBase, mDrift); 15 | } 16 | 17 | static float computeLog(float t, int base, int drift) { 18 | return (float) -Math.pow(base, -t) + 1 + (drift * t); 19 | } 20 | 21 | @Override 22 | public float getInterpolation(float t) { 23 | // Due to rounding issues, the interpolation doesn't quite reach 1 even though it should. 24 | // To account for this, we short-circuit to return 1 if the input is 1. 25 | return Float.compare(t, 1f) == 0 ? 1f : 1 - computeLog(1 - t, mBase, mDrift) * mLogScale; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/android/launcher3/LogDecelerateInterpolator.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.animation.TimeInterpolator; 4 | 5 | public class LogDecelerateInterpolator implements TimeInterpolator { 6 | 7 | int mBase; 8 | int mDrift; 9 | final float mLogScale; 10 | 11 | public LogDecelerateInterpolator(int base, int drift) { 12 | mBase = base; 13 | mDrift = drift; 14 | 15 | mLogScale = 1f / computeLog(1, mBase, mDrift); 16 | } 17 | 18 | static float computeLog(float t, int base, int drift) { 19 | return (float) -Math.pow(base, -t) + 1 + (drift * t); 20 | } 21 | 22 | @Override 23 | public float getInterpolation(float t) { 24 | // Due to rounding issues, the interpolation doesn't quite reach 1 even though it should. 25 | // To account for this, we short-circuit to return 1 if the input is 1. 26 | return Float.compare(t, 1f) == 0 ? 1f : computeLog(t, mBase, mDrift) * mLogScale; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src_config/com/android/launcher3/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3; 18 | 19 | /** 20 | * Config file used by Make. This file is automatically generated when using gradle. 21 | */ 22 | public class BuildConfig { 23 | public static final String APPLICATION_ID = "com.google.android.apps.nexuslauncher"; 24 | } 25 | -------------------------------------------------------------------------------- /res/values/drawables.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | @drawable/ic_info_no_shadow 18 | @drawable/ic_remove_no_shadow 19 | @drawable/ic_uninstall_no_shadow 20 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/smartspace/SmartspacePreferencesShortcut.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.smartspace; 2 | 3 | import android.view.View; 4 | 5 | import com.android.launcher3.AbstractFloatingView; 6 | import com.android.launcher3.ItemInfo; 7 | import com.android.launcher3.Launcher; 8 | import com.android.launcher3.R; 9 | import com.android.launcher3.popup.SystemShortcut; 10 | 11 | class SmartspacePreferencesShortcut extends SystemShortcut { 12 | SmartspacePreferencesShortcut() { 13 | super(R.drawable.ic_smartspace_preferences, R.string.smartspace_preferences); 14 | } 15 | 16 | public View.OnClickListener getOnClickListener(final Launcher launcher, ItemInfo itemInfo) { 17 | return new View.OnClickListener() { 18 | public void onClick(final View view) { 19 | SmartspaceController.get(view.getContext()).cZ(); 20 | AbstractFloatingView.closeAllOpenViews(launcher); 21 | } 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /go/res/values/override.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | #Intent;action=android.intent.action.DELETE;launchFlags=0x10800000;B.android.intent.extra.RETURN_RESULT=true;end 22 | -------------------------------------------------------------------------------- /res/values-v19/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 25 | 26 | -------------------------------------------------------------------------------- /src/com/android/launcher3/Insettable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3; 18 | 19 | import android.graphics.Rect; 20 | 21 | /** 22 | * Allows the implementing {@link View} to not draw underneath system bars. 23 | * e.g., notification bar on top and home key area on the bottom. 24 | */ 25 | public interface Insettable { 26 | 27 | void setInsets(Rect insets); 28 | } -------------------------------------------------------------------------------- /res/layout/folder_application.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 23 | -------------------------------------------------------------------------------- /res/drawable-v26/adaptive_icon_drawable_wrapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/color/primary_text_material_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /proto_overrides/launcher_log_extension.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | syntax = "proto2"; 17 | 18 | option java_package = "com.android.launcher3.userevent"; 19 | option java_outer_classname = "LauncherLogExtensions"; 20 | 21 | package userevent; 22 | 23 | // 24 | // Use this to add any app specific extensions to the proto. 25 | // 26 | message LauncherEventExtension { 27 | } 28 | 29 | message TargetExtension { 30 | } 31 | -------------------------------------------------------------------------------- /res/color/secondary_text_material_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /res/color/primary_text_material_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /res/color/secondary_text_material_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /res/drawable-v26/ic_launcher_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/res/raw/package_install_state_change_task_data.txt: -------------------------------------------------------------------------------- 1 | # Model data used by PackageInstallStateChangeTaskTest 2 | 3 | classMap s com.android.launcher3.ShortcutInfo 4 | classMap w com.android.launcher3.LauncherAppWidgetInfo 5 | 6 | # Items for the BgDataModel 7 | 8 | # App shortcuts 9 | bgItem s itemType=0 title=app1-class1 intent=component=app1/class1 id=1 10 | bgItem s itemType=0 title=app1-class2 intent=component=app1/class2 id=2 11 | bgItem s itemType=0 title=app2-class1 intent=component=app2/class1 id=3 12 | bgItem s itemType=0 title=app2-class2 intent=component=app2/class2 id=4 13 | 14 | # Promise icons for app3 15 | bgItem s itemType=0 status=2 title=app3-class1 intent=component=app3/class1 id=5 16 | bgItem s itemType=0 status=2 title=app3-class2 intent=component=app3/class2 id=6 17 | bgItem s itemType=1 status=1 title=app3-shrt intent=component=app3/class3 id=7 18 | 19 | # Promise icon for app4 20 | bgItem s itemType=1 status=1 title=app4-shrt intent=component=app4/class1 id=8 21 | 22 | # Widget 23 | bgItem w providerName=app4/provider1 id=9 24 | bgItem w providerName=app5/provider1 id=10 -------------------------------------------------------------------------------- /res/drawable/all_apps_button_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /res/drawable/qsb_icon_click_feedback.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /res/layout/notification_pref_warning.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 24 | -------------------------------------------------------------------------------- /res/layout/workspace_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/LogConfig.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.util; 2 | 3 | /** 4 | * This is a utility class that keeps track of all the tag that can be enabled to debug 5 | * a behavior in runtime. 6 | * 7 | * To use any of the strings defined in this class, execute the following command. 8 | * 9 | * $ adb shell setprop log.tag.TAGNAME VERBOSE 10 | */ 11 | 12 | public class LogConfig { 13 | // These are list of strings that can be used to replace TAGNAME. 14 | 15 | /** 16 | * After this tag is turned on, whenever there is n user event, debug information is 17 | * printed out to logcat. 18 | */ 19 | public static final String USEREVENT = "UserEvent"; 20 | 21 | /** 22 | * When turned on, all icons are kept on the home screen, even if they don't have an active 23 | * session. 24 | */ 25 | public static final String KEEP_ALL_ICONS = "KeepAllIcons"; 26 | 27 | /** 28 | * When turned on, icon cache is only fetched from memory and not disk. 29 | */ 30 | public static final String MEMORY_ONLY_ICON_CACHE = "MemoryOnlyIconCache"; 31 | } 32 | -------------------------------------------------------------------------------- /proto_pixel/search.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | option java_package = "com.google.android.apps.nexuslauncher.search"; 4 | option java_outer_classname = "SearchProto"; 5 | 6 | package nano; 7 | 8 | message a_search { 9 | optional int32 ef = 1; 10 | optional int32 eg = 2; 11 | optional int32 eh = 3; 12 | optional int32 ee = 4; 13 | } 14 | 15 | message b_search { 16 | optional string label = 1; 17 | optional string ek = 2; 18 | optional string ej = 3; 19 | optional string el = 4; 20 | } 21 | 22 | message c_search { 23 | optional int32 em = 1; 24 | optional string ep = 2; 25 | optional string er = 3; 26 | optional a_search en = 4; 27 | optional int32 es = 5; 28 | repeated b_search eo = 6; 29 | optional a_search ev = 7; 30 | optional string ey = 8; 31 | optional int32 ew = 9; 32 | optional int32 ex = 10; 33 | optional string eu = 11; 34 | optional a_search et = 12; 35 | optional bool eA = 13; 36 | optional a_search ez = 14; 37 | optional bool eq = 15; 38 | } 39 | 40 | message d_search { 41 | optional c_search eB = 1; 42 | } 43 | -------------------------------------------------------------------------------- /res/drawable/ic_default_shortcut.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 13 | 18 | 24 | 25 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/search/LogContainerProvider.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.search; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.widget.FrameLayout; 6 | 7 | import com.android.launcher3.ItemInfo; 8 | import com.android.launcher3.logging.UserEventDispatcher; 9 | import com.android.launcher3.userevent.nano.LauncherLogProto; 10 | 11 | class LogContainerProvider extends FrameLayout implements UserEventDispatcher.LogContainerProvider { 12 | private final int mPredictedRank; 13 | 14 | public LogContainerProvider(Context context, int predictedRank) { 15 | super(context); 16 | mPredictedRank = predictedRank; 17 | } 18 | 19 | @Override 20 | public void fillInLogContainerData(View v, ItemInfo info, LauncherLogProto.Target target, LauncherLogProto.Target targetParent) { 21 | if (mPredictedRank >= 0) { 22 | targetParent.containerType = 7; 23 | target.predictedRank = mPredictedRank; 24 | } else { 25 | targetParent.containerType = 8; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /res/drawable-v24/ic_mic_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /res/layout/gradient_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/NexusAppFilter.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher; 2 | 3 | import android.content.ComponentName; 4 | import android.content.Context; 5 | import android.os.UserHandle; 6 | 7 | import com.android.launcher3.AppFilter; 8 | 9 | import java.util.HashSet; 10 | 11 | public class NexusAppFilter extends AppFilter { 12 | private final HashSet mHideList = new HashSet<>(); 13 | 14 | public NexusAppFilter(Context context) { 15 | //Voice Search 16 | mHideList.add(ComponentName.unflattenFromString("com.google.android.googlequicksearchbox/.VoiceSearchActivity")); 17 | 18 | //Wallpapers 19 | mHideList.add(ComponentName.unflattenFromString("com.google.android.apps.wallpaper/.picker.CategoryPickerActivity")); 20 | 21 | //Google Now Launcher 22 | mHideList.add(ComponentName.unflattenFromString("com.google.android.launcher/.StubApp")); 23 | } 24 | 25 | @Override 26 | public boolean shouldShowApp(ComponentName componentName, UserHandle user) { 27 | return !mHideList.contains(componentName); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 850dp 20 | 525dp 21 | 22 | 23 | 56dp 24 | 25 | 26 | -1000dp 27 | 28 | -------------------------------------------------------------------------------- /res/drawable-v24/ic_super_g_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /res/layout-v23/search_container_all_apps_include.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /res/layout/folder_page.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 25 | -------------------------------------------------------------------------------- /res/drawable/widget_internal_focus_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /res/layout/search_container_all_apps_include.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 22 | 23 | -------------------------------------------------------------------------------- /src/com/android/launcher3/IconProvider.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.content.pm.LauncherActivityInfo; 4 | import android.graphics.drawable.Drawable; 5 | import android.os.Build; 6 | 7 | import java.util.Locale; 8 | 9 | public class IconProvider { 10 | 11 | private static final boolean DBG = false; 12 | private static final String TAG = "IconProvider"; 13 | 14 | protected String mSystemState; 15 | 16 | public IconProvider() { 17 | updateSystemStateString(); 18 | } 19 | 20 | public void updateSystemStateString() { 21 | mSystemState = Locale.getDefault().toString() + "," + Build.VERSION.SDK_INT; 22 | } 23 | 24 | public String getIconSystemState(String packageName) { 25 | return mSystemState; 26 | } 27 | 28 | /** 29 | * @param flattenDrawable true if the caller does not care about the specification of the 30 | * original icon as long as the flattened version looks the same. 31 | */ 32 | public Drawable getIcon(LauncherActivityInfo info, int iconDpi, boolean flattenDrawable) { 33 | return info.getIcon(iconDpi); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/android/launcher3/MainThreadExecutor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License 15 | */ 16 | 17 | package com.android.launcher3; 18 | 19 | import android.os.Looper; 20 | 21 | import com.android.launcher3.util.LooperExecutor; 22 | 23 | /** 24 | * An executor service that executes its tasks on the main thread. 25 | * 26 | * Shutting down this executor is not supported. 27 | */ 28 | public class MainThreadExecutor extends LooperExecutor { 29 | 30 | public MainThreadExecutor() { 31 | super(Looper.getMainLooper()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/TouchController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3.util; 18 | 19 | import android.view.MotionEvent; 20 | 21 | public interface TouchController { 22 | 23 | /** 24 | * Called when the draglayer receives touch event. 25 | */ 26 | boolean onControllerTouchEvent(MotionEvent ev); 27 | 28 | /** 29 | * Called when the draglayer receives a intercept touch event. 30 | */ 31 | boolean onControllerInterceptTouchEvent(MotionEvent ev); 32 | } 33 | -------------------------------------------------------------------------------- /src/com/android/launcher3/allapps/search/SearchAlgorithm.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.android.launcher3.allapps.search; 17 | 18 | /** 19 | * An interface for handling search. 20 | */ 21 | public interface SearchAlgorithm { 22 | 23 | /** 24 | * Performs search and sends the result to the callback. 25 | */ 26 | void doSearch(String query, AllAppsSearchBarController.Callbacks callback); 27 | 28 | /** 29 | * Cancels any active request. 30 | */ 31 | void cancel(boolean interruptActiveRequests); 32 | } 33 | -------------------------------------------------------------------------------- /res/layout-port/search_container_hotseat.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /src/com/android/launcher3/testing/DummyWidget.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.testing; 2 | 3 | import android.appwidget.AppWidgetProviderInfo; 4 | 5 | import com.android.launcher3.CustomAppWidget; 6 | import com.android.launcher3.R; 7 | 8 | public class DummyWidget implements CustomAppWidget { 9 | @Override 10 | public String getLabel() { 11 | return "Dumb Launcher Widget"; 12 | } 13 | 14 | @Override 15 | public int getPreviewImage() { 16 | return 0; 17 | } 18 | 19 | @Override 20 | public int getIcon() { 21 | return 0; 22 | } 23 | 24 | @Override 25 | public int getWidgetLayout() { 26 | return R.layout.zzz_dummy_widget; 27 | } 28 | 29 | @Override 30 | public int getSpanX() { 31 | return 2; 32 | } 33 | 34 | @Override 35 | public int getSpanY() { 36 | return 2; 37 | } 38 | 39 | @Override 40 | public int getMinSpanX() { 41 | return 1; 42 | } 43 | 44 | @Override 45 | public int getMinSpanY() { 46 | return 1; 47 | } 48 | 49 | @Override 50 | public int getResizeMode() { 51 | return AppWidgetProviderInfo.RESIZE_BOTH; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/com/android/launcher3/testing/ToggleWeightWatcher.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.testing; 2 | 3 | import android.app.Activity; 4 | import android.content.SharedPreferences; 5 | import android.os.Bundle; 6 | import android.view.View; 7 | 8 | import com.android.launcher3.Launcher; 9 | import com.android.launcher3.LauncherAppState; 10 | import com.android.launcher3.Utilities; 11 | import com.android.launcher3.util.TestingUtils; 12 | 13 | public class ToggleWeightWatcher extends Activity { 14 | 15 | @Override 16 | protected void onCreate(Bundle savedInstanceState) { 17 | super.onCreate(savedInstanceState); 18 | 19 | SharedPreferences sp = Utilities.getPrefs(this); 20 | boolean show = sp.getBoolean(TestingUtils.SHOW_WEIGHT_WATCHER, true); 21 | 22 | show = !show; 23 | sp.edit().putBoolean(TestingUtils.SHOW_WEIGHT_WATCHER, show).apply(); 24 | 25 | Launcher launcher = (Launcher) LauncherAppState.getInstance(this).getModel().getCallback(); 26 | if (launcher != null && launcher.mWeightWatcher != null) { 27 | launcher.mWeightWatcher.setVisibility(show ? View.VISIBLE : View.GONE); 28 | } 29 | finish(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tests/Android.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2015 The Android Open Source Project 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | 16 | LOCAL_PATH := $(call my-dir) 17 | include $(CLEAR_VARS) 18 | 19 | LOCAL_MODULE_TAGS := tests 20 | LOCAL_STATIC_JAVA_LIBRARIES := android-support-test ub-uiautomator mockito-target-minus-junit4 21 | 22 | LOCAL_SRC_FILES := $(call all-java-files-under, src) 23 | LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/AndroidManifest-common.xml 24 | 25 | LOCAL_SDK_VERSION := current 26 | LOCAL_MIN_SDK_VERSION := 21 27 | 28 | LOCAL_PACKAGE_NAME := Launcher3Tests 29 | 30 | LOCAL_INSTRUMENTATION_FOR := Launcher3 31 | 32 | include $(BUILD_PACKAGE) 33 | -------------------------------------------------------------------------------- /res/layout-sw720dp/search_container_hotseat.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /src/com/android/launcher3/LauncherBackupAgent.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.app.backup.BackupAgent; 4 | import android.app.backup.BackupDataInput; 5 | import android.app.backup.BackupDataOutput; 6 | import android.os.ParcelFileDescriptor; 7 | 8 | import com.android.launcher3.logging.FileLog; 9 | import com.android.launcher3.provider.RestoreDbTask; 10 | 11 | public class LauncherBackupAgent extends BackupAgent { 12 | 13 | @Override 14 | public void onCreate() { 15 | super.onCreate(); 16 | // Set the log dir as LauncherAppState is not initialized during restore. 17 | FileLog.setDir(getFilesDir()); 18 | } 19 | 20 | @Override 21 | public void onRestore( 22 | BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) { 23 | // Doesn't do incremental backup/restore 24 | } 25 | 26 | @Override 27 | public void onBackup( 28 | ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) { 29 | // Doesn't do incremental backup/restore 30 | } 31 | 32 | @Override 33 | public void onRestoreFinished() { 34 | RestoreDbTask.setPending(this, true); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/com/android/launcher3/compat/UserManagerCompatVNMr1.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3.compat; 18 | 19 | import android.annotation.TargetApi; 20 | import android.content.Context; 21 | import android.os.Build; 22 | 23 | @TargetApi(Build.VERSION_CODES.N_MR1) 24 | public class UserManagerCompatVNMr1 extends UserManagerCompatVN { 25 | 26 | UserManagerCompatVNMr1(Context context) { 27 | super(context); 28 | } 29 | 30 | @Override 31 | public boolean isDemoUser() { 32 | return mUserManager.isDemoUser(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/utils/ActionIntentFilter.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.utils; 2 | 3 | import android.content.Context; 4 | import android.content.IntentFilter; 5 | import android.content.pm.PackageManager; 6 | 7 | public class ActionIntentFilter { 8 | public static IntentFilter googleInstance(String... array) { 9 | return newInstance("com.google.android.googlequicksearchbox", array); 10 | } 11 | 12 | public static IntentFilter newInstance(String s, String... array) { 13 | IntentFilter intentFilter = new IntentFilter(); 14 | for (int length = array.length, i = 0; i < length; ++i) { 15 | intentFilter.addAction(array[i]); 16 | } 17 | intentFilter.addDataScheme("package"); 18 | intentFilter.addDataSchemeSpecificPart(s, 0); 19 | return intentFilter; 20 | } 21 | 22 | public static boolean googleEnabled(final Context context) { 23 | try { 24 | return context.getPackageManager().getApplicationInfo("com.google.android.googlequicksearchbox", 0).enabled; 25 | } catch (PackageManager.NameNotFoundException ex) { 26 | return false; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/CellAndSpan.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.util; 2 | 3 | /** 4 | * Base class which represents an area on the grid. 5 | */ 6 | public class CellAndSpan { 7 | 8 | /** 9 | * Indicates the X position of the associated cell. 10 | */ 11 | public int cellX = -1; 12 | 13 | /** 14 | * Indicates the Y position of the associated cell. 15 | */ 16 | public int cellY = -1; 17 | 18 | /** 19 | * Indicates the X cell span. 20 | */ 21 | public int spanX = 1; 22 | 23 | /** 24 | * Indicates the Y cell span. 25 | */ 26 | public int spanY = 1; 27 | 28 | public CellAndSpan() { 29 | } 30 | 31 | public void copyFrom(CellAndSpan copy) { 32 | cellX = copy.cellX; 33 | cellY = copy.cellY; 34 | spanX = copy.spanX; 35 | spanY = copy.spanY; 36 | } 37 | 38 | public CellAndSpan(int cellX, int cellY, int spanX, int spanY) { 39 | this.cellX = cellX; 40 | this.cellY = cellY; 41 | this.spanX = spanX; 42 | this.spanY = spanY; 43 | } 44 | 45 | public String toString() { 46 | return "(" + cellX + ", " + cellY + ": " + spanX + ", " + spanY + ")"; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 28 | 29 | -------------------------------------------------------------------------------- /tests/src/com/android/launcher3/util/Wait.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3.util; 2 | 3 | import android.os.SystemClock; 4 | 5 | /** 6 | * A utility class for waiting for a condition to be true. 7 | */ 8 | public class Wait { 9 | 10 | private static final long DEFAULT_SLEEP_MS = 200; 11 | 12 | public static boolean atMost(Condition condition, long timeout) { 13 | return atMost(condition, timeout, DEFAULT_SLEEP_MS); 14 | } 15 | 16 | public static boolean atMost(Condition condition, long timeout, long sleepMillis) { 17 | long endTime = SystemClock.uptimeMillis() + timeout; 18 | while (SystemClock.uptimeMillis() < endTime) { 19 | try { 20 | if (condition.isTrue()) { 21 | return true; 22 | } 23 | } catch (Throwable t) { 24 | // Ignore 25 | } 26 | SystemClock.sleep(sleepMillis); 27 | } 28 | 29 | // Check once more before returning false. 30 | try { 31 | if (condition.isTrue()) { 32 | return true; 33 | } 34 | } catch (Throwable t) { 35 | // Ignore 36 | } 37 | return false; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /res/layout/system_shortcut_icon_only.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 25 | -------------------------------------------------------------------------------- /go/res/drawable/ic_widget.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 25 | 26 | -------------------------------------------------------------------------------- /res/color-v24/all_apps_bg_hand_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /res/layout/widget_cell.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /res/raw/downgrade_schema.json: -------------------------------------------------------------------------------- 1 | { 2 | // Note: Comments are not supported in JSON schema, but android parser is lenient. 3 | 4 | // Maximum DB version supported by this schema 5 | "version" : 27, 6 | 7 | // Downgrade from 27 to 26. Empty array indicates, the DB is compatible 8 | "downgrade_to_26" : [], 9 | "downgrade_to_25" : [], 10 | "downgrade_to_24" : [], 11 | "downgrade_to_23" : [], 12 | "downgrade_to_22" : [ 13 | "ALTER TABLE favorites RENAME TO temp_favorites;", 14 | "CREATE TABLE favorites(_id INTEGER PRIMARY KEY, title TEXT, intent TEXT, container INTEGER, screen INTEGER, cellX INTEGER, cellY INTEGER, spanX INTEGER, spanY INTEGER, itemType INTEGER, appWidgetId INTEGER NOT NULL DEFAULT - 1, iconPackage TEXT, iconResource TEXT, icon BLOB, appWidgetProvider TEXT, modified INTEGER NOT NULL DEFAULT 0, restored INTEGER NOT NULL DEFAULT 0, profileId INTEGER DEFAULT 0, rank INTEGER NOT NULL DEFAULT 0);", 15 | "INSERT INTO favorites SELECT _id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconPackage, iconResource, icon, appWidgetProvider, modified, restored, profileId, rank FROM temp_favorites;", 16 | "DROP TABLE temp_favorites;" 17 | ] 18 | 19 | // Missing values indicate the DB is not compatible 20 | } -------------------------------------------------------------------------------- /src/com/google/android/libraries/launcherclient/ILauncherOverlay.aidl: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.launcherclient; 2 | 3 | import android.view.WindowManager.LayoutParams; 4 | import com.google.android.libraries.launcherclient.ILauncherOverlayCallback; 5 | 6 | interface ILauncherOverlay { 7 | 8 | oneway void startScroll(); 9 | 10 | oneway void onScroll(in float progress); 11 | 12 | oneway void endScroll(); 13 | 14 | oneway void windowAttached(in LayoutParams lp, in ILauncherOverlayCallback cb, in int flags); 15 | 16 | oneway void windowDetached(in boolean isChangingConfigurations); 17 | 18 | oneway void closeOverlay(in int flags); 19 | 20 | oneway void onPause(); 21 | 22 | oneway void onResume(); 23 | 24 | oneway void openOverlay(in int flags); 25 | 26 | oneway void requestVoiceDetection(in boolean start); 27 | 28 | String getVoiceSearchLanguage(); 29 | 30 | boolean isVoiceDetectionRunning(); 31 | 32 | boolean hasOverlayContent(); 33 | 34 | oneway void windowAttached2(in Bundle bundle, in ILauncherOverlayCallback cb); 35 | 36 | oneway void unusedMethod(); 37 | 38 | oneway void setActivityState(in int flags); 39 | 40 | boolean startSearch(in byte[] data, in Bundle bundle); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/com/android/launcher3/compat/UserManagerCompatVM.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3.compat; 18 | 19 | import android.annotation.TargetApi; 20 | import android.content.Context; 21 | import android.os.Build; 22 | import android.os.UserHandle; 23 | 24 | @TargetApi(Build.VERSION_CODES.M) 25 | public class UserManagerCompatVM extends UserManagerCompatVL { 26 | 27 | UserManagerCompatVM(Context context) { 28 | super(context); 29 | } 30 | 31 | @Override 32 | public long getUserCreationTime(UserHandle user) { 33 | return mUserManager.getUserCreationTime(user); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /res/values-sw720dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 8dp 20 | 64dp 21 | 180dp 22 | 23 | 24 | 75dp 25 | 62dp 26 | 13dp 27 | 32dp 28 | 29 | 30 | -------------------------------------------------------------------------------- /go/res/xml/device_profiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 32 | 33 | -------------------------------------------------------------------------------- /res/drawable/ic_edit_no_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 26 | -------------------------------------------------------------------------------- /src/com/android/launcher3/LauncherExterns.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3; 18 | 19 | import android.content.SharedPreferences; 20 | 21 | /** 22 | * This interface defines the set of methods that the Launcher activity exposes. Methods 23 | * here should be safe to call from classes outside of com.android.launcher3.* 24 | */ 25 | public interface LauncherExterns { 26 | 27 | public boolean setLauncherCallbacks(LauncherCallbacks callbacks); 28 | 29 | public SharedPreferences getSharedPrefs(); 30 | 31 | public void setLauncherOverlay(Launcher.LauncherOverlay overlay); 32 | 33 | void clearTypedText(); 34 | } 35 | -------------------------------------------------------------------------------- /res/layout/appwidget_error.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 29 | -------------------------------------------------------------------------------- /res/layout/popup_container.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 28 | 29 | -------------------------------------------------------------------------------- /res/layout/system_shortcut_icons.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 27 | 28 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/Provider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.launcher3.util; 18 | 19 | /** 20 | * Utility class to allow lazy initialization of objects. 21 | */ 22 | public abstract class Provider { 23 | 24 | /** 25 | * Initializes and returns the object. This may contain expensive operations not suitable 26 | * to UI thread. 27 | */ 28 | public abstract T get(); 29 | 30 | public static Provider of (final T value) { 31 | return new Provider() { 32 | @Override 33 | public T get() { 34 | return value; 35 | } 36 | }; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /go/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | "按住捷徑即可選取捷徑。" 23 | "扲兩下然後扲住就可以揀選捷徑,或者用自訂嘅操作。" 24 | "捷徑" 25 | "%1$s 捷徑" 26 | 27 | -------------------------------------------------------------------------------- /go/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | "按住捷徑即可選取。" 23 | "輕觸兩下並按住捷徑即可選取,你也可以使用自訂動作。" 24 | "捷徑" 25 | "「%1$s」捷徑" 26 | 27 | -------------------------------------------------------------------------------- /res/drawable/ic_allapps_search.xml: -------------------------------------------------------------------------------- 1 | 16 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /res/color-v24/all_apps_bg_hand_fill_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /res/layout/hotseat.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /res/layout/all_apps_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | -------------------------------------------------------------------------------- /src/com/android/launcher3/util/RunnableWithId.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.android.launcher3.util; 17 | 18 | /** 19 | * A runnable with an id associated which is used for equality check. 20 | */ 21 | public abstract class RunnableWithId implements Runnable { 22 | 23 | public static final int RUNNABLE_ID_BIND_APPS = 1; 24 | public static final int RUNNABLE_ID_BIND_WIDGETS = 2; 25 | 26 | public final int id; 27 | 28 | public RunnableWithId(int id) { 29 | this.id = id; 30 | } 31 | 32 | @Override 33 | public boolean equals(Object obj) { 34 | return obj instanceof RunnableWithId && ((RunnableWithId) obj).id == id; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /go/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | "触摸并按住快捷方式即可选择快捷方式。" 23 | "点按两次并按住快捷方式即可选择快捷方式,您也可以使用自定义操作。" 24 | "快捷方式" 25 | "%1$s快捷方式" 26 | 27 | -------------------------------------------------------------------------------- /src/com/google/android/apps/nexuslauncher/DynamicDrawableFactory.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.os.Process; 6 | 7 | import com.android.launcher3.FastBitmapDrawable; 8 | import com.android.launcher3.ItemInfo; 9 | import com.android.launcher3.LauncherSettings; 10 | import com.android.launcher3.Utilities; 11 | import com.android.launcher3.graphics.DrawableFactory; 12 | import com.google.android.apps.nexuslauncher.clock.DynamicClock; 13 | 14 | public class DynamicDrawableFactory extends DrawableFactory { 15 | private final DynamicClock mDynamicClockDrawer; 16 | 17 | public DynamicDrawableFactory(Context context) { 18 | mDynamicClockDrawer = new DynamicClock(context); 19 | } 20 | 21 | @Override 22 | public FastBitmapDrawable newIcon(Bitmap icon, ItemInfo info) { 23 | if (info != null && 24 | Utilities.ATLEAST_OREO && 25 | info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION && 26 | DynamicClock.DESK_CLOCK.equals(info.getTargetComponent()) && 27 | info.user.equals(Process.myUserHandle())) { 28 | return mDynamicClockDrawer.drawIcon(icon); 29 | } 30 | return super.newIcon(icon, info); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /go/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | "바로가기를 선택하려면 길게 터치하세요." 23 | "바로가기를 선택하려면 두 번 탭한 다음 길게 터치하거나 맞춤 액션을 사용합니다." 24 | "바로가기" 25 | "%1$s 바로가기" 26 | 27 | -------------------------------------------------------------------------------- /res/drawable/horizontal_ellipsis.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 23 | 24 | 27 | -------------------------------------------------------------------------------- /res/layout/all_apps_empty_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 30 | 31 | -------------------------------------------------------------------------------- /tests/res/raw/cache_data_updated_task_data.txt: -------------------------------------------------------------------------------- 1 | # Model data used by CacheDataUpdatedTaskTest 2 | 3 | classMap s com.android.launcher3.ShortcutInfo 4 | 5 | # Items for the BgDataModel 6 | 7 | # App shortcuts 8 | bgItem s itemType=0 title=app1-class1 intent=component=app1/class1 id=1 9 | bgItem s itemType=0 title=app1-class2 intent=component=app1/class2 id=2 10 | bgItem s itemType=0 title=app2-class1 intent=component=app2/class1 id=3 11 | bgItem s itemType=0 title=app2-class2 intent=component=app2/class2 id=4 12 | 13 | # Auto install app shortcut 14 | bgItem s itemType=0 status=2 title=app3-class1 intent=component=app3/class1 id=5 15 | bgItem s itemType=0 status=2 title=app3-class2 intent=component=app3/class2 id=6 16 | 17 | # Custom shortcuts 18 | bgItem s itemType=1 title=app1-shrt intent=component=app1/class3 id=7 19 | bgItem s itemType=1 title=app4-shrt intent=component=app4/class1 id=8 20 | 21 | # Restored custom shortcut 22 | bgItem s itemType=1 status=1 title=app3-shrt intent=component=app3/class3 id=9 23 | bgItem s itemType=1 status=1 title=app5-shrt intent=component=app5/class1 id=10 24 | 25 | allApps componentName=app1/class1 intent=component=app1/class1 26 | allApps componentName=app1/class2 intent=component=app1/class2 27 | allApps componentName=app2/class1 intent=component=app2/class1 28 | allApps componentName=app2/class2 intent=component=app2/class2 -------------------------------------------------------------------------------- /go/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | "ショートカットを追加するには押し続けます。" 23 | "ダブルタップ後に押し続けてショートカットを選択するか、カスタム操作を使用してください。" 24 | "ショートカット" 25 | "「%1$s」のショートカット" 26 | 27 | -------------------------------------------------------------------------------- /res/drawable/ic_star_rating.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 27 | -------------------------------------------------------------------------------- /res/drawable/ic_uninstall_no_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /go/res/values-am/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 22 | "አንድ አቋራጭ ለመውሰድ ነክተው ይያዙ" 23 | "አንድ አቋራጭ ለመውሰድ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ አድርገው ይያዙ።" 24 | "አቋራጮች" 25 | "%1$s አቋራጮች" 26 | 27 | -------------------------------------------------------------------------------- /res/layout/all_apps_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 28 | 29 | --------------------------------------------------------------------------------