├── .gitignore
├── Android.mk
├── AndroidManifest-common.xml
├── AndroidManifest.xml
├── CleanSpec.mk
├── LICENSE
├── MODULE_LICENSE_APACHE2
├── README.md
├── assets
├── fonts
│ └── GoogleSans-Regular.ttf
└── license.html
├── build.gradle
├── fill_screens.py
├── go
├── AndroidManifest.xml
├── res
│ ├── drawable
│ │ └── ic_widget.xml
│ ├── layout
│ │ └── widget_cell_content.xml
│ ├── values-af
│ │ └── strings.xml
│ ├── values-am
│ │ └── strings.xml
│ ├── values-ar
│ │ └── strings.xml
│ ├── values-az-rAZ
│ │ └── strings.xml
│ ├── values-az
│ │ └── strings.xml
│ ├── values-b+sr+Latn
│ │ └── strings.xml
│ ├── values-be
│ │ └── strings.xml
│ ├── values-bg
│ │ └── strings.xml
│ ├── values-bn
│ │ └── strings.xml
│ ├── values-bs-rBA
│ │ └── strings.xml
│ ├── values-bs
│ │ └── strings.xml
│ ├── values-ca
│ │ └── strings.xml
│ ├── values-cs
│ │ └── strings.xml
│ ├── values-da
│ │ └── strings.xml
│ ├── values-de
│ │ └── strings.xml
│ ├── values-el
│ │ └── strings.xml
│ ├── values-en-rAU
│ │ └── strings.xml
│ ├── values-en-rGB
│ │ └── strings.xml
│ ├── values-en-rIN
│ │ └── strings.xml
│ ├── values-es-rUS
│ │ └── strings.xml
│ ├── values-es
│ │ └── strings.xml
│ ├── values-et
│ │ └── strings.xml
│ ├── values-eu
│ │ └── strings.xml
│ ├── values-fa
│ │ └── strings.xml
│ ├── values-fi
│ │ └── strings.xml
│ ├── values-fr-rCA
│ │ └── strings.xml
│ ├── values-fr
│ │ └── strings.xml
│ ├── values-gl
│ │ └── strings.xml
│ ├── values-gu
│ │ └── strings.xml
│ ├── values-hi
│ │ └── strings.xml
│ ├── values-hr
│ │ └── strings.xml
│ ├── values-hu
│ │ └── strings.xml
│ ├── values-hy
│ │ └── strings.xml
│ ├── values-in
│ │ └── strings.xml
│ ├── values-is
│ │ └── strings.xml
│ ├── values-it
│ │ └── strings.xml
│ ├── values-iw
│ │ └── strings.xml
│ ├── values-ja
│ │ └── strings.xml
│ ├── values-ka-rGE
│ │ └── strings.xml
│ ├── values-ka
│ │ └── strings.xml
│ ├── values-kk
│ │ └── strings.xml
│ ├── values-km
│ │ └── strings.xml
│ ├── values-kn
│ │ └── strings.xml
│ ├── values-ko
│ │ └── strings.xml
│ ├── values-ky-rKG
│ │ └── strings.xml
│ ├── values-ky
│ │ └── strings.xml
│ ├── values-lo-rLA
│ │ └── strings.xml
│ ├── values-lo
│ │ └── strings.xml
│ ├── values-lt
│ │ └── strings.xml
│ ├── values-lv
│ │ └── strings.xml
│ ├── values-mk
│ │ └── strings.xml
│ ├── values-ml
│ │ └── strings.xml
│ ├── values-mn
│ │ └── strings.xml
│ ├── values-mr
│ │ └── strings.xml
│ ├── values-ms
│ │ └── strings.xml
│ ├── values-my
│ │ └── strings.xml
│ ├── values-nb
│ │ └── strings.xml
│ ├── values-ne
│ │ └── strings.xml
│ ├── values-nl
│ │ └── strings.xml
│ ├── values-pa
│ │ └── strings.xml
│ ├── values-pl
│ │ └── strings.xml
│ ├── values-pt-rPT
│ │ └── strings.xml
│ ├── values-pt
│ │ └── strings.xml
│ ├── values-ro
│ │ └── strings.xml
│ ├── values-ru
│ │ └── strings.xml
│ ├── values-si-rLK
│ │ └── strings.xml
│ ├── values-si
│ │ └── strings.xml
│ ├── values-sk
│ │ └── strings.xml
│ ├── values-sl
│ │ └── strings.xml
│ ├── values-sq
│ │ └── strings.xml
│ ├── values-sr
│ │ └── strings.xml
│ ├── values-sv
│ │ └── strings.xml
│ ├── values-sw
│ │ └── strings.xml
│ ├── values-ta
│ │ └── strings.xml
│ ├── values-te
│ │ └── strings.xml
│ ├── values-th
│ │ └── strings.xml
│ ├── values-tl
│ │ └── strings.xml
│ ├── values-tr
│ │ └── strings.xml
│ ├── values-uk
│ │ └── strings.xml
│ ├── values-ur
│ │ └── strings.xml
│ ├── values-uz-rUZ
│ │ └── strings.xml
│ ├── values-uz
│ │ └── strings.xml
│ ├── values-v23
│ │ └── bools.xml
│ ├── values-v26
│ │ └── bools.xml
│ ├── values-vi
│ │ └── strings.xml
│ ├── values-zh-rCN
│ │ └── strings.xml
│ ├── values-zh-rHK
│ │ └── strings.xml
│ ├── values-zh-rTW
│ │ └── strings.xml
│ ├── values-zu
│ │ └── strings.xml
│ ├── values
│ │ ├── override.xml
│ │ └── strings.xml
│ └── xml
│ │ └── device_profiles.xml
└── src_flags
│ └── com
│ └── android
│ └── launcher3
│ └── config
│ └── FeatureFlags.java
├── print_db.py
├── proguard.flags
├── proto_overrides
└── launcher_log_extension.proto
├── proto_pixel
├── search.proto
└── smartspace.proto
├── protos
├── launcher_dump.proto
└── launcher_log.proto
├── res
├── anim
│ ├── no_anim.xml
│ └── task_open_enter.xml
├── animator-v23
│ └── discovery_bounce.xml
├── animator
│ ├── all_apps_fastscroll_icon_anim.xml
│ ├── discovery_bounce.xml
│ └── overview_button_anim.xml
├── color-v24
│ ├── all_apps_bg_hand_fill.xml
│ └── all_apps_bg_hand_fill_dark.xml
├── color
│ ├── primary_text_material_dark.xml
│ ├── primary_text_material_light.xml
│ ├── qsb_icon_tint.xml
│ ├── secondary_text_material_dark.xml
│ └── secondary_text_material_light.xml
├── drawable-hdpi
│ ├── ic_allapps.png
│ ├── ic_allapps_pressed.png
│ ├── ic_widget_resize_handle.png
│ ├── widget_resize_frame.9.png
│ ├── widget_resize_shadow.9.png
│ ├── workspace_bg.9.png
│ └── workspace_bg_dark.9.png
├── drawable-mdpi
│ ├── ic_allapps.png
│ ├── ic_allapps_pressed.png
│ ├── ic_widget_resize_handle.png
│ ├── widget_resize_frame.9.png
│ ├── widget_resize_shadow.9.png
│ ├── workspace_bg.9.png
│ └── workspace_bg_dark.9.png
├── drawable-v24
│ ├── ic_info_shadow.xml
│ ├── ic_mic_shadow.xml
│ ├── ic_remove_shadow.xml
│ ├── ic_super_g_shadow.xml
│ └── ic_uninstall_shadow.xml
├── drawable-v26
│ ├── adaptive_icon_drawable_wrapper.xml
│ └── ic_launcher_home.xml
├── drawable-xhdpi
│ ├── ic_allapps.png
│ ├── ic_allapps_pressed.png
│ ├── ic_widget_resize_handle.png
│ ├── widget_resize_frame.9.png
│ ├── widget_resize_shadow.9.png
│ ├── workspace_bg.9.png
│ └── workspace_bg_dark.9.png
├── drawable-xxhdpi
│ ├── ic_allapps.png
│ ├── ic_allapps_pressed.png
│ ├── ic_widget_resize_handle.png
│ ├── widget_resize_frame.9.png
│ ├── widget_resize_shadow.9.png
│ ├── workspace_bg.9.png
│ └── workspace_bg_dark.9.png
├── drawable-xxxhdpi
│ ├── ic_widget_resize_handle.png
│ ├── widget_resize_frame.9.png
│ ├── widget_resize_shadow.9.png
│ ├── workspace_bg.9.png
│ └── workspace_bg_dark.9.png
├── drawable
│ ├── all_apps_button_icon.xml
│ ├── all_apps_divider.xml
│ ├── all_apps_search_divider.xml
│ ├── all_apps_search_hint.xml
│ ├── bg_celllayout.xml
│ ├── bg_qsb_click_feedback.xml
│ ├── bg_smartspace.xml
│ ├── deep_shortcuts_drag_handle.xml
│ ├── gutter_horizontal.xml
│ ├── horizontal_ellipsis.xml
│ ├── ic_all_apps_bg_hand.xml
│ ├── ic_all_apps_bg_icon_1.xml
│ ├── ic_all_apps_bg_icon_2.xml
│ ├── ic_all_apps_bg_icon_3.xml
│ ├── ic_all_apps_bg_icon_4.xml
│ ├── ic_allapps_search.xml
│ ├── ic_default_shortcut.xml
│ ├── ic_edit_no_shadow.xml
│ ├── ic_info_no_shadow.xml
│ ├── ic_instant_app_badge.xml
│ ├── ic_launcher_home.xml
│ ├── ic_mic_color.xml
│ ├── ic_mic_shadow.xml
│ ├── ic_remove_no_shadow.xml
│ ├── ic_setting.xml
│ ├── ic_smartspace_preferences.xml
│ ├── ic_star_rating.xml
│ ├── ic_super_g_color.xml
│ ├── ic_super_g_shadow.xml
│ ├── ic_uninstall_no_shadow.xml
│ ├── ic_wallpaper.xml
│ ├── ic_warning.xml
│ ├── ic_widget.xml
│ ├── pending_widget_bg.xml
│ ├── qsb_icon_click_feedback.xml
│ ├── round_rect_primary.xml
│ └── widget_internal_focus_bg.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
├── layout-land
│ ├── all_apps_fast_scroller.xml
│ ├── launcher.xml
│ └── search_container_hotseat.xml
├── layout-port
│ ├── launcher.xml
│ └── search_container_hotseat.xml
├── layout-sw720dp
│ ├── all_apps_fast_scroller.xml
│ ├── launcher.xml
│ └── search_container_hotseat.xml
├── layout-v23
│ └── search_container_all_apps_include.xml
├── layout
│ ├── add_item_confirmation_activity.xml
│ ├── all_apps.xml
│ ├── all_apps_button.xml
│ ├── all_apps_discovery_item.xml
│ ├── all_apps_discovery_loading_divider.xml
│ ├── all_apps_divider.xml
│ ├── all_apps_empty_search.xml
│ ├── all_apps_fast_scroller.xml
│ ├── all_apps_google_search_fallback.xml
│ ├── all_apps_icon.xml
│ ├── all_apps_search_market.xml
│ ├── app_edit_bottom_sheet.xml
│ ├── app_icon.xml
│ ├── app_widget_resize_frame.xml
│ ├── apps_search_icon_template.xml
│ ├── apps_search_qsb_template.xml
│ ├── appwidget_error.xml
│ ├── appwidget_not_ready.xml
│ ├── deep_shortcut.xml
│ ├── drop_target_bar_horz.xml
│ ├── drop_target_bar_vert.xml
│ ├── folder_application.xml
│ ├── folder_icon.xml
│ ├── folder_page.xml
│ ├── gradient_bg.xml
│ ├── hotseat.xml
│ ├── notification.xml
│ ├── notification_footer.xml
│ ├── notification_main.xml
│ ├── notification_pref_warning.xml
│ ├── overview_panel.xml
│ ├── page_indicator.xml
│ ├── popup_container.xml
│ ├── qsb_default_view.xml
│ ├── qsb_hotseat_content.xml
│ ├── search_container_all_apps.xml
│ ├── search_container_all_apps_google.xml
│ ├── search_container_all_apps_include.xml
│ ├── search_container_workspace.xml
│ ├── shortcuts_item.xml
│ ├── smartspace_singleline.xml
│ ├── smartspace_twolines.xml
│ ├── system_shortcut.xml
│ ├── system_shortcut_icon_only.xml
│ ├── system_shortcut_icons.xml
│ ├── user_folder.xml
│ ├── user_folder_icon_normalized.xml
│ ├── widget_cell.xml
│ ├── widget_cell_content.xml
│ ├── widget_list_divider.xml
│ ├── widgets_bottom_sheet.xml
│ ├── widgets_list_row_view.xml
│ ├── widgets_scroll_container.xml
│ ├── widgets_view.xml
│ ├── workspace_screen.xml
│ ├── zzz_dummy_widget.xml
│ └── zzz_weight_watcher.xml
├── 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
├── 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
├── raw
│ └── downgrade_schema.json
├── values-af
│ ├── plurals.xml
│ └── strings.xml
├── values-am
│ ├── plurals.xml
│ └── strings.xml
├── values-ar-rXB
│ └── plurals.xml
├── values-ar
│ ├── plurals.xml
│ └── strings.xml
├── values-az
│ ├── plurals.xml
│ └── strings.xml
├── values-b+sr+Latn
│ ├── plurals.xml
│ └── strings.xml
├── values-be
│ ├── plurals.xml
│ └── strings.xml
├── values-bg
│ ├── plurals.xml
│ └── strings.xml
├── values-bn
│ ├── plurals.xml
│ └── strings.xml
├── values-bs
│ ├── plurals.xml
│ └── strings.xml
├── values-ca
│ ├── plurals.xml
│ └── strings.xml
├── values-cs
│ ├── plurals.xml
│ └── strings.xml
├── values-da
│ ├── plurals.xml
│ └── strings.xml
├── values-de
│ ├── plurals.xml
│ └── strings.xml
├── values-el
│ ├── plurals.xml
│ └── strings.xml
├── values-en-rAU
│ ├── plurals.xml
│ └── strings.xml
├── values-en-rGB
│ ├── plurals.xml
│ └── strings.xml
├── values-en-rIN
│ ├── plurals.xml
│ └── strings.xml
├── values-en-rXA
│ └── plurals.xml
├── values-es-rUS
│ ├── plurals.xml
│ └── strings.xml
├── values-es
│ ├── plurals.xml
│ └── strings.xml
├── values-et
│ ├── plurals.xml
│ └── strings.xml
├── values-eu
│ ├── plurals.xml
│ └── strings.xml
├── values-fa
│ ├── plurals.xml
│ └── strings.xml
├── values-fi
│ ├── plurals.xml
│ └── strings.xml
├── values-fr-rCA
│ ├── plurals.xml
│ └── strings.xml
├── values-fr
│ ├── plurals.xml
│ └── strings.xml
├── values-gl
│ ├── plurals.xml
│ └── strings.xml
├── values-gu
│ ├── plurals.xml
│ └── strings.xml
├── values-hi
│ ├── plurals.xml
│ └── strings.xml
├── values-hr
│ ├── plurals.xml
│ └── strings.xml
├── values-hu
│ ├── plurals.xml
│ └── strings.xml
├── values-hy
│ ├── plurals.xml
│ └── strings.xml
├── values-in
│ ├── plurals.xml
│ └── strings.xml
├── values-is
│ ├── plurals.xml
│ └── strings.xml
├── values-it
│ ├── plurals.xml
│ └── strings.xml
├── values-iw
│ ├── plurals.xml
│ └── strings.xml
├── values-ja
│ ├── plurals.xml
│ └── strings.xml
├── values-ka
│ ├── plurals.xml
│ └── strings.xml
├── values-kk
│ ├── plurals.xml
│ └── strings.xml
├── values-km
│ ├── plurals.xml
│ └── strings.xml
├── values-kn
│ ├── plurals.xml
│ └── strings.xml
├── values-ko
│ ├── plurals.xml
│ └── strings.xml
├── values-ky
│ ├── plurals.xml
│ └── strings.xml
├── values-land
│ └── dimens.xml
├── values-lo
│ ├── plurals.xml
│ └── strings.xml
├── values-lt
│ ├── plurals.xml
│ └── strings.xml
├── values-lv
│ ├── plurals.xml
│ └── strings.xml
├── values-mk
│ ├── plurals.xml
│ └── strings.xml
├── values-ml
│ ├── plurals.xml
│ └── strings.xml
├── values-mn
│ ├── plurals.xml
│ └── strings.xml
├── values-mr
│ ├── plurals.xml
│ └── strings.xml
├── values-ms
│ ├── plurals.xml
│ └── strings.xml
├── values-my
│ ├── plurals.xml
│ └── strings.xml
├── values-nb
│ ├── plurals.xml
│ └── strings.xml
├── values-ne
│ ├── plurals.xml
│ └── strings.xml
├── values-nl
│ ├── plurals.xml
│ └── strings.xml
├── values-pa
│ ├── plurals.xml
│ └── strings.xml
├── values-pl
│ ├── plurals.xml
│ └── strings.xml
├── values-pt-rPT
│ ├── plurals.xml
│ └── strings.xml
├── values-pt
│ ├── plurals.xml
│ └── strings.xml
├── values-rm
│ └── strings.xml
├── values-ro
│ ├── plurals.xml
│ └── strings.xml
├── values-ru
│ ├── plurals.xml
│ └── strings.xml
├── values-si
│ ├── plurals.xml
│ └── strings.xml
├── values-sk
│ ├── plurals.xml
│ └── strings.xml
├── values-sl
│ ├── plurals.xml
│ └── strings.xml
├── values-sq
│ ├── plurals.xml
│ └── strings.xml
├── values-sr
│ ├── plurals.xml
│ └── strings.xml
├── values-sv
│ ├── plurals.xml
│ └── strings.xml
├── values-sw
│ ├── plurals.xml
│ └── strings.xml
├── values-sw340dp
│ └── dimens.xml
├── values-sw600dp
│ ├── config.xml
│ └── dimens.xml
├── values-sw720dp-land
│ └── dimens.xml
├── values-sw720dp
│ ├── config.xml
│ ├── dimens.xml
│ └── styles.xml
├── values-ta
│ ├── plurals.xml
│ └── strings.xml
├── values-te
│ ├── plurals.xml
│ └── strings.xml
├── values-th
│ ├── plurals.xml
│ └── strings.xml
├── values-tl
│ ├── plurals.xml
│ └── strings.xml
├── values-tr
│ ├── plurals.xml
│ └── strings.xml
├── values-uk
│ ├── plurals.xml
│ └── strings.xml
├── values-ur
│ ├── plurals.xml
│ └── strings.xml
├── values-uz
│ ├── plurals.xml
│ └── strings.xml
├── values-v19
│ └── styles.xml
├── values-v21
│ └── styles.xml
├── values-v23
│ ├── bools.xml
│ └── styles.xml
├── values-v24
│ └── config.xml
├── values-v26
│ ├── bools.xml
│ ├── colors.xml
│ └── styles.xml
├── values-vi
│ ├── plurals.xml
│ └── strings.xml
├── values-zh-rCN
│ ├── plurals.xml
│ └── strings.xml
├── values-zh-rHK
│ ├── plurals.xml
│ └── strings.xml
├── values-zh-rTW
│ ├── plurals.xml
│ └── strings.xml
├── values-zu
│ ├── plurals.xml
│ └── strings.xml
├── values
│ ├── attrs.xml
│ ├── bools.xml
│ ├── bridge.xml
│ ├── colors.xml
│ ├── config.xml
│ ├── dimens.xml
│ ├── drawables.xml
│ ├── plurals.xml
│ ├── strings.xml
│ └── styles.xml
└── xml
│ ├── app_edit_prefs.xml
│ ├── backupscheme.xml
│ ├── default_workspace_3x3.xml
│ ├── default_workspace_4x4.xml
│ ├── default_workspace_4x5.xml
│ ├── default_workspace_5x5.xml
│ ├── default_workspace_5x6.xml
│ ├── default_workspace_6x6.xml
│ ├── device_profiles.xml
│ ├── dw_hotseat_4.xml
│ ├── dw_hotseat_5.xml
│ ├── dw_hotseat_6.xml
│ ├── dw_phone_hotseat.xml
│ ├── dw_tablet_hotseat.xml
│ ├── file_paths.xml
│ └── launcher_preferences.xml
├── src
├── amirz
│ └── aidlbridge
│ │ ├── Bridge.aidl
│ │ └── BridgeCallback.aidl
└── com
│ ├── android
│ └── launcher3
│ │ ├── AbstractFloatingView.java
│ │ ├── Alarm.java
│ │ ├── AllAppsList.java
│ │ ├── AppFilter.java
│ │ ├── AppInfo.java
│ │ ├── AppWidgetResizeFrame.java
│ │ ├── AppWidgetsRestoredReceiver.java
│ │ ├── AutoInstallsLayout.java
│ │ ├── BaseActivity.java
│ │ ├── BaseContainerView.java
│ │ ├── BaseRecyclerView.java
│ │ ├── BubbleTextView.java
│ │ ├── ButtonDropTarget.java
│ │ ├── CellLayout.java
│ │ ├── CheckLongPressHelper.java
│ │ ├── ClickShadowView.java
│ │ ├── CustomAppWidget.java
│ │ ├── DefaultLayoutParser.java
│ │ ├── DeleteDropTarget.java
│ │ ├── DeviceProfile.java
│ │ ├── DragSource.java
│ │ ├── DropTarget.java
│ │ ├── DropTargetBar.java
│ │ ├── ExtendedEditText.java
│ │ ├── FastBitmapDrawable.java
│ │ ├── FirstFrameAnimatorHelper.java
│ │ ├── FocusHelper.java
│ │ ├── FolderInfo.java
│ │ ├── Hotseat.java
│ │ ├── IconCache.java
│ │ ├── IconProvider.java
│ │ ├── InfoDropTarget.java
│ │ ├── Insettable.java
│ │ ├── InsettableFrameLayout.java
│ │ ├── InstallShortcutReceiver.java
│ │ ├── InterruptibleInOutAnimator.java
│ │ ├── InvariantDeviceProfile.java
│ │ ├── ItemInfo.java
│ │ ├── ItemInfoWithIcon.java
│ │ ├── Launcher.java
│ │ ├── LauncherAnimUtils.java
│ │ ├── LauncherAppState.java
│ │ ├── LauncherAppWidgetHost.java
│ │ ├── LauncherAppWidgetHostView.java
│ │ ├── LauncherAppWidgetInfo.java
│ │ ├── LauncherAppWidgetProviderInfo.java
│ │ ├── LauncherBackupAgent.java
│ │ ├── LauncherCallbacks.java
│ │ ├── LauncherExterns.java
│ │ ├── LauncherFiles.java
│ │ ├── LauncherModel.java
│ │ ├── LauncherProvider.java
│ │ ├── LauncherProviderChangeListener.java
│ │ ├── LauncherRootView.java
│ │ ├── LauncherScroller.java
│ │ ├── LauncherSettings.java
│ │ ├── LauncherStateTransitionAnimation.java
│ │ ├── LogAccelerateInterpolator.java
│ │ ├── LogDecelerateInterpolator.java
│ │ ├── MainThreadExecutor.java
│ │ ├── OnAlarmListener.java
│ │ ├── OverviewButtonClickListener.java
│ │ ├── PagedView.java
│ │ ├── Partner.java
│ │ ├── PendingAddItemInfo.java
│ │ ├── PendingAppWidgetHostView.java
│ │ ├── PinchAnimationManager.java
│ │ ├── PinchThresholdManager.java
│ │ ├── PinchToOverviewListener.java
│ │ ├── PromiseAppInfo.java
│ │ ├── SessionCommitReceiver.java
│ │ ├── SettingsActivity.java
│ │ ├── ShortcutAndWidgetContainer.java
│ │ ├── ShortcutInfo.java
│ │ ├── SimpleOnStylusPressListener.java
│ │ ├── StylusEventHelper.java
│ │ ├── UninstallDropTarget.java
│ │ ├── Utilities.java
│ │ ├── WidgetPreviewLoader.java
│ │ ├── Workspace.java
│ │ ├── WorkspaceStateTransitionAnimation.java
│ │ ├── accessibility
│ │ ├── AccessibleDragListenerAdapter.java
│ │ ├── DragAndDropAccessibilityDelegate.java
│ │ ├── DragViewStateAnnouncer.java
│ │ ├── FolderAccessibilityHelper.java
│ │ ├── LauncherAccessibilityDelegate.java
│ │ ├── OverviewAccessibilityDelegate.java
│ │ ├── OverviewScreenAccessibilityDelegate.java
│ │ ├── ShortcutMenuAccessibilityDelegate.java
│ │ └── WorkspaceAccessibilityHelper.java
│ │ ├── allapps
│ │ ├── AllAppsBackgroundDrawable.java
│ │ ├── AllAppsCaretController.java
│ │ ├── AllAppsContainerView.java
│ │ ├── AllAppsFastScrollHelper.java
│ │ ├── AllAppsGridAdapter.java
│ │ ├── AllAppsRecyclerView.java
│ │ ├── AllAppsRecyclerViewContainerView.java
│ │ ├── AllAppsTransitionController.java
│ │ ├── AlphabeticalAppsList.java
│ │ ├── AppInfoComparator.java
│ │ ├── LandscapeFastScroller.java
│ │ ├── SearchUiManager.java
│ │ └── search
│ │ │ ├── AllAppsSearchBarController.java
│ │ │ ├── AppsSearchContainerLayout.java
│ │ │ ├── DefaultAppSearchAlgorithm.java
│ │ │ ├── HeaderElevationController.java
│ │ │ └── SearchAlgorithm.java
│ │ ├── anim
│ │ ├── AnimationLayerSet.java
│ │ ├── CircleRevealOutlineProvider.java
│ │ ├── PropertyListBuilder.java
│ │ ├── PropertyResetListener.java
│ │ ├── RevealOutlineAnimation.java
│ │ ├── RoundedRectRevealOutlineProvider.java
│ │ └── SpringAnimationHandler.java
│ │ ├── badge
│ │ ├── BadgeInfo.java
│ │ ├── BadgeRenderer.java
│ │ └── FolderBadgeInfo.java
│ │ ├── compat
│ │ ├── AlphabeticIndexCompat.java
│ │ ├── AppWidgetManagerCompat.java
│ │ ├── AppWidgetManagerCompatVL.java
│ │ ├── AppWidgetManagerCompatVO.java
│ │ ├── LauncherAppsCompat.java
│ │ ├── LauncherAppsCompatVL.java
│ │ ├── LauncherAppsCompatVO.java
│ │ ├── PackageInstallerCompat.java
│ │ ├── PackageInstallerCompatVL.java
│ │ ├── ShortcutConfigActivityInfo.java
│ │ ├── UserManagerCompat.java
│ │ ├── UserManagerCompatVL.java
│ │ ├── UserManagerCompatVM.java
│ │ ├── UserManagerCompatVN.java
│ │ ├── UserManagerCompatVNMr1.java
│ │ ├── WallpaperColorsCompat.java
│ │ ├── WallpaperManagerCompat.java
│ │ ├── WallpaperManagerCompatVL.java
│ │ └── WallpaperManagerCompatVOMR1.java
│ │ ├── config
│ │ └── BaseFlags.java
│ │ ├── discovery
│ │ ├── AppDiscoveryAppInfo.java
│ │ ├── AppDiscoveryItem.java
│ │ ├── AppDiscoveryItemView.java
│ │ ├── AppDiscoveryUpdateState.java
│ │ └── RatingView.java
│ │ ├── dragndrop
│ │ ├── AddItemActivity.java
│ │ ├── BaseItemDragListener.java
│ │ ├── DragController.java
│ │ ├── DragDriver.java
│ │ ├── DragLayer.java
│ │ ├── DragOptions.java
│ │ ├── DragView.java
│ │ ├── FlingToDeleteHelper.java
│ │ ├── FolderAdaptiveIcon.java
│ │ ├── LivePreviewWidgetCell.java
│ │ ├── PinItemDragListener.java
│ │ ├── PinShortcutRequestActivityInfo.java
│ │ ├── PinWidgetFlowHandler.java
│ │ └── SpringLoadedDragController.java
│ │ ├── dynamicui
│ │ ├── ColorExtractionAlgorithm.java
│ │ ├── ColorExtractionService.java
│ │ ├── ExtractedColors.java
│ │ ├── ExtractionUtils.java
│ │ └── WallpaperColorInfo.java
│ │ ├── folder
│ │ ├── ClippedFolderIconLayoutRule.java
│ │ ├── Folder.java
│ │ ├── FolderAnimationManager.java
│ │ ├── FolderIcon.java
│ │ ├── FolderIconPreviewVerifier.java
│ │ ├── FolderPagedView.java
│ │ ├── FolderPreviewItemAnim.java
│ │ ├── PreviewBackground.java
│ │ ├── PreviewImageView.java
│ │ ├── PreviewItemDrawingParams.java
│ │ ├── PreviewItemManager.java
│ │ └── StackFolderIconLayoutRule.java
│ │ ├── graphics
│ │ ├── DragPreviewProvider.java
│ │ ├── DrawableFactory.java
│ │ ├── FastScrollThumbDrawable.java
│ │ ├── FixedScaleDrawable.java
│ │ ├── GradientView.java
│ │ ├── HolographicOutlineHelper.java
│ │ ├── IconNormalizer.java
│ │ ├── IconPalette.java
│ │ ├── IconShapeOverride.java
│ │ ├── LauncherIcons.java
│ │ ├── PreloadIconDrawable.java
│ │ ├── ShadowDrawable.java
│ │ ├── ShadowGenerator.java
│ │ ├── TintedDrawableSpan.java
│ │ └── TriangleShape.java
│ │ ├── keyboard
│ │ ├── CustomActionsPopup.java
│ │ ├── FocusIndicatorHelper.java
│ │ ├── FocusedItemDecorator.java
│ │ └── ViewGroupFocusHelper.java
│ │ ├── logging
│ │ ├── DumpTargetWrapper.java
│ │ ├── FileLog.java
│ │ ├── LoggerUtils.java
│ │ └── UserEventDispatcher.java
│ │ ├── model
│ │ ├── AddWorkspaceItemsTask.java
│ │ ├── BaseModelUpdateTask.java
│ │ ├── BgDataModel.java
│ │ ├── CacheDataUpdatedTask.java
│ │ ├── DbDowngradeHelper.java
│ │ ├── GridSizeMigrationTask.java
│ │ ├── LoaderCursor.java
│ │ ├── LoaderResults.java
│ │ ├── LoaderTask.java
│ │ ├── ModelWriter.java
│ │ ├── PackageInstallStateChangedTask.java
│ │ ├── PackageItemInfo.java
│ │ ├── PackageUpdatedTask.java
│ │ ├── SdCardAvailableReceiver.java
│ │ ├── ShortcutsChangedTask.java
│ │ ├── UserLockStateChangedTask.java
│ │ ├── WidgetItem.java
│ │ └── WidgetsModel.java
│ │ ├── notification
│ │ ├── Interpolators.java
│ │ ├── NotificationFooterLayout.java
│ │ ├── NotificationInfo.java
│ │ ├── NotificationItemView.java
│ │ ├── NotificationKeyData.java
│ │ ├── NotificationListener.java
│ │ └── NotificationMainView.java
│ │ ├── pageindicators
│ │ ├── CaretDrawable.java
│ │ ├── PageIndicator.java
│ │ ├── PageIndicatorCaretLandscape.java
│ │ ├── PageIndicatorDots.java
│ │ └── PageIndicatorLineCaret.java
│ │ ├── popup
│ │ ├── PopupContainerWithArrow.java
│ │ ├── PopupDataProvider.java
│ │ ├── PopupItemView.java
│ │ ├── PopupPopulator.java
│ │ └── SystemShortcut.java
│ │ ├── provider
│ │ ├── ImportDataTask.java
│ │ ├── LauncherDbUtils.java
│ │ ├── LossyScreenMigrationTask.java
│ │ └── RestoreDbTask.java
│ │ ├── qsb
│ │ ├── QsbContainerView.java
│ │ └── QsbWidgetHostView.java
│ │ ├── shortcuts
│ │ ├── DeepShortcutManager.java
│ │ ├── DeepShortcutManagerBackport.java
│ │ ├── DeepShortcutTextView.java
│ │ ├── DeepShortcutView.java
│ │ ├── ShortcutCache.java
│ │ ├── ShortcutDragPreviewProvider.java
│ │ ├── ShortcutInfoCompat.java
│ │ ├── ShortcutInfoCompatBackport.java
│ │ ├── ShortcutKey.java
│ │ └── ShortcutsItemView.java
│ │ ├── testing
│ │ ├── DummyWidget.java
│ │ ├── LauncherExtension.java
│ │ ├── MemoryDumpActivity.java
│ │ ├── MemoryTracker.java
│ │ ├── ToggleWeightWatcher.java
│ │ └── WeightWatcher.java
│ │ ├── touch
│ │ ├── OverScroll.java
│ │ └── SwipeDetector.java
│ │ ├── util
│ │ ├── ActivityResultInfo.java
│ │ ├── CellAndSpan.java
│ │ ├── ComponentKey.java
│ │ ├── ComponentKeyMapper.java
│ │ ├── ConfigMonitor.java
│ │ ├── ContentWriter.java
│ │ ├── FlagOp.java
│ │ ├── FlingAnimation.java
│ │ ├── FocusLogic.java
│ │ ├── GridOccupancy.java
│ │ ├── IOUtils.java
│ │ ├── InstantAppResolver.java
│ │ ├── ItemInfoMatcher.java
│ │ ├── LabelComparator.java
│ │ ├── LogConfig.java
│ │ ├── LongArrayMap.java
│ │ ├── LooperExecutor.java
│ │ ├── LooperIdleLock.java
│ │ ├── ManagedProfileHeuristic.java
│ │ ├── MultiHashMap.java
│ │ ├── NoLocaleSqliteContext.java
│ │ ├── PackageManagerHelper.java
│ │ ├── PackageUserKey.java
│ │ ├── ParcelableSparseArray.java
│ │ ├── PendingRequestArgs.java
│ │ ├── Preconditions.java
│ │ ├── Provider.java
│ │ ├── RunnableWithId.java
│ │ ├── SQLiteCacheHelper.java
│ │ ├── SettingsObserver.java
│ │ ├── SystemUiController.java
│ │ ├── TestingUtils.java
│ │ ├── Themes.java
│ │ ├── Thunk.java
│ │ ├── TouchController.java
│ │ ├── TransformingTouchDelegate.java
│ │ ├── VerticalFlingDetector.java
│ │ ├── ViewOnDrawExecutor.java
│ │ └── WallpaperOffsetInterpolator.java
│ │ ├── views
│ │ ├── ButtonPreference.java
│ │ ├── DoubleShadowBubbleTextView.java
│ │ └── RecyclerViewFastScroller.java
│ │ └── widget
│ │ ├── PendingAddShortcutInfo.java
│ │ ├── PendingAddWidgetInfo.java
│ │ ├── PendingItemDragHelper.java
│ │ ├── WidgetAddFlowHandler.java
│ │ ├── WidgetCell.java
│ │ ├── WidgetHostViewLoader.java
│ │ ├── WidgetImageView.java
│ │ ├── WidgetItemComparator.java
│ │ ├── WidgetListRowEntry.java
│ │ ├── WidgetsBottomSheet.java
│ │ ├── WidgetsContainerView.java
│ │ ├── WidgetsDiffReporter.java
│ │ ├── WidgetsListAdapter.java
│ │ ├── WidgetsRecyclerView.java
│ │ └── WidgetsRowViewHolder.java
│ └── google
│ └── android
│ ├── apps
│ └── nexuslauncher
│ │ ├── CustomAppFilter.java
│ │ ├── CustomAppPredictor.java
│ │ ├── CustomBottomSheet.java
│ │ ├── CustomDrawableFactory.java
│ │ ├── CustomEditShortcut.java
│ │ ├── CustomIconPreference.java
│ │ ├── CustomIconProvider.java
│ │ ├── CustomIconUtils.java
│ │ ├── DynamicDrawableFactory.java
│ │ ├── DynamicIconProvider.java
│ │ ├── NexusAppFilter.java
│ │ ├── NexusLauncher.java
│ │ ├── NexusLauncherActivity.java
│ │ ├── NexusLauncherOverlay.java
│ │ ├── PixelBridge.java
│ │ ├── SettingsActivity.java
│ │ ├── clock
│ │ ├── AutoUpdateClock.java
│ │ ├── ClockLayers.java
│ │ ├── CustomClock.java
│ │ └── DynamicClock.java
│ │ ├── graphics
│ │ ├── DoubleShadowTextView.java
│ │ └── IcuDateTextView.java
│ │ ├── qsb
│ │ ├── AbstractQsbLayout.java
│ │ ├── AllAppsQsbLayout.java
│ │ ├── ConfigBuilder.java
│ │ ├── FallbackAppsSearchView.java
│ │ ├── HotseatQsbWidget.java
│ │ ├── ItemDragListener.java
│ │ ├── LongClickReceiver.java
│ │ └── OPAStatusReceiver.java
│ │ ├── search
│ │ ├── AppItemInfoWithIcon.java
│ │ ├── AppLaunchActivity.java
│ │ ├── AppSearchProvider.java
│ │ ├── ItemInfoUpdateReceiver.java
│ │ ├── LogContainerProvider.java
│ │ ├── SearchResult.java
│ │ └── SearchThread.java
│ │ ├── smartspace
│ │ ├── ISmartspace.java
│ │ ├── NewCardInfo.java
│ │ ├── SmartspaceBroadcastReceiver.java
│ │ ├── SmartspaceCard.java
│ │ ├── SmartspaceController.java
│ │ ├── SmartspaceDataContainer.java
│ │ ├── SmartspacePreferencesShortcut.java
│ │ └── SmartspaceView.java
│ │ └── utils
│ │ ├── ActionIntentFilter.java
│ │ ├── ColorManipulation.java
│ │ └── ProtoStore.java
│ └── libraries
│ ├── gsa
│ └── launcherclient
│ │ ├── BaseClientService.java
│ │ ├── IScrollCallback.java
│ │ ├── ISerializableScrollCallback.java
│ │ ├── LauncherClient.java
│ │ ├── LauncherClientBridge.java
│ │ ├── LauncherClientService.java
│ │ └── StaticInteger.java
│ └── launcherclient
│ ├── ILauncherOverlay.aidl
│ └── ILauncherOverlayCallback.aidl
├── src_config
└── com
│ └── android
│ └── launcher3
│ └── BuildConfig.java
├── src_flags
└── com
│ └── android
│ └── launcher3
│ └── config
│ └── FeatureFlags.java
└── tests
├── Android.mk
├── AndroidManifest-common.xml
├── AndroidManifest.xml
├── res
├── drawable
│ └── test_drawable_pin_item.xml
├── layout
│ ├── test_layout_appwidget_blue.xml
│ ├── test_layout_appwidget_red.xml
│ └── test_layout_appwidget_view.xml
├── raw
│ ├── cache_data_updated_task_data.txt
│ ├── db_schema_v10.json
│ └── package_install_state_change_task_data.txt
└── xml
│ ├── appwidget_no_config.xml
│ └── appwidget_with_config.xml
└── src
└── com
└── android
└── launcher3
├── allapps
└── search
│ └── DefaultAppSearchAlgorithmTest.java
├── logging
└── FileLogTest.java
├── model
├── AddWorkspaceItemsTaskTest.java
├── BaseModelUpdateTaskTestCase.java
├── CacheDataUpdatedTaskTest.java
├── DbDowngradeHelperTest.java
├── GridSizeMigrationTaskTest.java
├── LoaderCursorTest.java
└── PackageInstallStateChangedTaskTest.java
├── popup
└── PopupPopulatorTest.java
├── provider
└── RestoreDbTaskTest.java
├── testcomponent
├── AppWidgetNoConfig.java
├── AppWidgetWithConfig.java
├── BaseTestingActivity.java
├── RequestPinItemActivity.java
├── TouchEventGenerator.java
└── WidgetConfigActivity.java
├── touch
└── SwipeDetectorTest.java
├── ui
├── AbstractLauncherUiTest.java
├── AllAppsAppLaunchTest.java
├── AllAppsIconToHomeTest.java
├── ShortcutsLaunchTest.java
├── ShortcutsToHomeTest.java
└── widget
│ ├── AddConfigWidgetTest.java
│ ├── AddWidgetTest.java
│ ├── BindWidgetTest.java
│ └── RequestPinItemTest.java
├── util
├── Condition.java
├── FocusLogicTest.java
├── GridOccupancyTest.java
├── TestLauncherProvider.java
├── Wait.java
└── rule
│ ├── LauncherActivityRule.java
│ └── ShellCommandRule.java
└── widget
└── WidgetsListAdapterTest.java
/.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*
--------------------------------------------------------------------------------
/MODULE_LICENSE_APACHE2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/MODULE_LICENSE_APACHE2
--------------------------------------------------------------------------------
/assets/fonts/GoogleSans-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/assets/fonts/GoogleSans-Regular.ttf
--------------------------------------------------------------------------------
/go/res/drawable/ic_widget.xml:
--------------------------------------------------------------------------------
1 |
16 |
21 |
25 |
26 |
--------------------------------------------------------------------------------
/go/res/values-am/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "አንድ አቋራጭ ለመውሰድ ነክተው ይያዙ"
23 | "አንድ አቋራጭ ለመውሰድ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ አድርገው ይያዙ።"
24 | "አቋራጮች"
25 | "%1$s አቋራጮች"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "ショートカットを追加するには押し続けます。"
23 | "ダブルタップ後に押し続けてショートカットを選択するか、カスタム操作を使用してください。"
24 | "ショートカット"
25 | "「%1$s」のショートカット"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ko/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "바로가기를 선택하려면 길게 터치하세요."
23 | "바로가기를 선택하려면 두 번 탭한 다음 길게 터치하거나 맞춤 액션을 사용합니다."
24 | "바로가기"
25 | "%1$s 바로가기"
26 |
27 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/go/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "触摸并按住快捷方式即可选择快捷方式。"
23 | "点按两次并按住快捷方式即可选择快捷方式,您也可以使用自定义操作。"
24 | "快捷方式"
25 | "%1$s快捷方式"
26 |
27 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/go/res/xml/device_profiles.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
32 |
33 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/anim/no_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 |
--------------------------------------------------------------------------------
/res/color-v24/all_apps_bg_hand_fill.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/res/color-v24/all_apps_bg_hand_fill_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/res/color/primary_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/qsb_icon_tint.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/res/color/secondary_text_material_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/res/color/secondary_text_material_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/workspace_bg_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-hdpi/workspace_bg_dark.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/workspace_bg_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-mdpi/workspace_bg_dark.9.png
--------------------------------------------------------------------------------
/res/drawable-v24/ic_info_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
20 |
--------------------------------------------------------------------------------
/res/drawable-v24/ic_mic_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/drawable-v24/ic_remove_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
20 |
--------------------------------------------------------------------------------
/res/drawable-v24/ic_super_g_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/drawable-v24/ic_uninstall_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
20 |
--------------------------------------------------------------------------------
/res/drawable-v26/adaptive_icon_drawable_wrapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/res/drawable-v26/ic_launcher_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/workspace_bg_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xhdpi/workspace_bg_dark.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/workspace_bg_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxhdpi/workspace_bg_dark.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxxhdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxxhdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxxhdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxxhdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/workspace_bg_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/drawable-xxxhdpi/workspace_bg_dark.9.png
--------------------------------------------------------------------------------
/res/drawable/all_apps_button_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/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/drawable/all_apps_search_hint.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/res/drawable/bg_smartspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/drawable/gutter_horizontal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/res/drawable/horizontal_ellipsis.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
23 |
24 |
27 |
--------------------------------------------------------------------------------
/res/drawable/ic_allapps_search.xml:
--------------------------------------------------------------------------------
1 |
16 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/res/drawable/ic_default_shortcut.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
13 |
18 |
24 |
25 |
--------------------------------------------------------------------------------
/res/drawable/ic_edit_no_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
22 |
26 |
--------------------------------------------------------------------------------
/res/drawable/ic_launcher_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
19 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/res/drawable/pending_widget_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
20 |
--------------------------------------------------------------------------------
/res/drawable/qsb_icon_click_feedback.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
20 | -
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/res/drawable/round_rect_primary.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/res/drawable/widget_internal_focus_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/res/interpolator/decelerate_quart.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 |
--------------------------------------------------------------------------------
/res/interpolator/decelerate_quint.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 |
--------------------------------------------------------------------------------
/res/interpolator/disco_bounce.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
23 |
--------------------------------------------------------------------------------
/res/interpolator/folder_interpolator.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
25 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/res/layout-land/search_container_hotseat.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/layout-port/search_container_hotseat.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/layout-sw720dp/search_container_hotseat.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/layout-v23/search_container_all_apps_include.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
18 |
19 |
22 |
--------------------------------------------------------------------------------
/res/layout/all_apps_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/res/layout/all_apps_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/res/layout/all_apps_empty_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
30 |
31 |
--------------------------------------------------------------------------------
/res/layout/app_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/res/layout/appwidget_error.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
29 |
--------------------------------------------------------------------------------
/res/layout/appwidget_not_ready.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
21 |
--------------------------------------------------------------------------------
/res/layout/folder_application.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
23 |
--------------------------------------------------------------------------------
/res/layout/folder_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
25 |
--------------------------------------------------------------------------------
/res/layout/gradient_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/res/layout/hotseat.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
20 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/res/layout/notification_pref_warning.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
24 |
--------------------------------------------------------------------------------
/res/layout/popup_container.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
28 |
29 |
--------------------------------------------------------------------------------
/res/layout/search_container_all_apps_include.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
18 |
19 |
22 |
23 |
--------------------------------------------------------------------------------
/res/layout/system_shortcut_icon_only.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
25 |
--------------------------------------------------------------------------------
/res/layout/system_shortcut_icons.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
27 |
28 |
--------------------------------------------------------------------------------
/res/layout/widget_cell.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/res/layout/widget_list_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/res/layout/workspace_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
24 |
--------------------------------------------------------------------------------
/res/layout/zzz_weight_watcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/res/mipmap-hdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-hdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-hdpi/ic_launcher_home_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-hdpi/ic_launcher_home_background.png
--------------------------------------------------------------------------------
/res/mipmap-hdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-hdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-mdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-mdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-mdpi/ic_launcher_home_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-mdpi/ic_launcher_home_background.png
--------------------------------------------------------------------------------
/res/mipmap-mdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-mdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-xhdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xhdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-xhdpi/ic_launcher_home_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xhdpi/ic_launcher_home_background.png
--------------------------------------------------------------------------------
/res/mipmap-xhdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xhdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-xxhdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xxhdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-xxhdpi/ic_launcher_home_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xxhdpi/ic_launcher_home_background.png
--------------------------------------------------------------------------------
/res/mipmap-xxhdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xxhdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-xxxhdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xxxhdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-xxxhdpi/ic_launcher_home_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xxxhdpi/ic_launcher_home_background.png
--------------------------------------------------------------------------------
/res/mipmap-xxxhdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/android-hacker/Launcher3/6650ec7a19e619e54bd405cd2a17e46e2582a0dd/res/mipmap-xxxhdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/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-am/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d ደቂቃ
5 | - %d ደቂቃ
6 |
7 |
8 | - %d ሰዓ
9 | - %d ሰዓ
10 |
11 |
12 |
--------------------------------------------------------------------------------
/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-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/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-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 |
--------------------------------------------------------------------------------
/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-bg/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-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-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-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-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-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-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-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/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-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-fa/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d دقیقه
5 | - %d دقیقه
6 |
7 |
8 | - %d ساعت
9 | - %d ساعت
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-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-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-gu/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d મિનિટ
5 | - %d મિનિટ
6 |
7 |
8 | - %d કલાક
9 | - %d કલાક
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-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-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-hy/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d ր
5 | - %d ր
6 |
7 |
8 | - %d ժ
9 | - %d ժ
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-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-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-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-ja/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d分
5 | - %d分
6 |
7 |
8 | - %d時間
9 | - %d時間
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-kk/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-kn/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-ky/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-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-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-mk/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d мин.
5 | - %d мин.
6 |
7 |
8 | - %d часа
9 | - %d час
10 |
11 |
12 |
--------------------------------------------------------------------------------
/res/values-ml/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-mr/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-my/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-ne/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d मिनेट
5 | - %d मिनेट
6 |
7 |
8 | - %d घन्टा
9 | - %d घन्टा
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-pa/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d ਮਿੰਟ
5 | - %d ਮਿੰਟ
6 |
7 |
8 | - %d ਘੰਟੇ
9 | - %d ਘੰਟਾ
10 |
11 |
12 |
--------------------------------------------------------------------------------
/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-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-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-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-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-si/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - මිනි %d
5 | - මිනි %d
6 |
7 |
8 | - පැය %d
9 | - පැය %d
10 |
11 |
12 |
--------------------------------------------------------------------------------
/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-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-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-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-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-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-sw340dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 | 20dp
22 | 16sp
23 |
24 |
--------------------------------------------------------------------------------
/res/values-sw600dp/config.xml:
--------------------------------------------------------------------------------
1 |
2 | true
3 | true
4 |
5 |
--------------------------------------------------------------------------------
/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/values-sw720dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -50.0dip
4 |
5 |
--------------------------------------------------------------------------------
/res/values-sw720dp/config.xml:
--------------------------------------------------------------------------------
1 |
2 | true
3 | true
4 |
5 |
6 |
7 | 90
8 |
9 |
10 | false
11 |
12 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/res/values-ta/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d நிமி.
5 | - %d நிமி.
6 |
7 |
8 | - %d ம.நே
9 | - %d ம.நே
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-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-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-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-ur/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d منٹ
5 | - %d منٹ
6 |
7 |
8 | - %d گھنٹہ
9 | - %d گھنٹہ
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-v19/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
25 |
26 |
--------------------------------------------------------------------------------
/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
28 |
29 |
--------------------------------------------------------------------------------
/res/values-v23/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | true
21 |
22 | true
23 |
--------------------------------------------------------------------------------
/res/values-v23/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/res/values-v26/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | true
21 |
22 | false
23 |
--------------------------------------------------------------------------------
/res/values-v26/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 | #66FFFFFF
21 |
22 |
--------------------------------------------------------------------------------
/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-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/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | false
21 |
22 | true
23 |
--------------------------------------------------------------------------------
/res/values/bridge.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 0xB662CC2F
4 | v2
5 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/xml/backupscheme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/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/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/amirz/aidlbridge/Bridge.aidl:
--------------------------------------------------------------------------------
1 | package amirz.aidlbridge;
2 |
3 | import amirz.aidlbridge.BridgeCallback;
4 |
5 | interface Bridge {
6 | oneway void setCallback(in int index, in BridgeCallback cb);
7 | }
8 |
--------------------------------------------------------------------------------
/src/amirz/aidlbridge/BridgeCallback.aidl:
--------------------------------------------------------------------------------
1 | package amirz.aidlbridge;
2 |
3 | interface BridgeCallback {
4 | oneway void onBridgeConnected(in IBinder service);
5 |
6 | oneway void onBridgeDisconnected();
7 | }
8 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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/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 | }
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/OnAlarmListener.java:
--------------------------------------------------------------------------------
1 | package com.android.launcher3;
2 |
3 | public interface OnAlarmListener {
4 | public void onAlarm(Alarm alarm);
5 | }
6 |
--------------------------------------------------------------------------------
/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 | }
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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/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/ISerializableScrollCallback.java:
--------------------------------------------------------------------------------
1 | package com.google.android.libraries.gsa.launcherclient;
2 |
3 | public interface ISerializableScrollCallback extends IScrollCallback {
4 | void setPersistentFlags(int flags);
5 | }
6 |
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/tests/res/layout/test_layout_appwidget_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/tests/res/layout/test_layout_appwidget_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/tests/res/layout/test_layout_appwidget_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------
/tests/res/raw/db_schema_v10.json:
--------------------------------------------------------------------------------
1 | {
2 | "version" : 10,
3 | "downgrade_to_9" : []
4 | }
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------
/tests/res/xml/appwidget_no_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/tests/res/xml/appwidget_with_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------