├── .gitignore
├── Android.mk
├── AndroidManifest-common.xml
├── AndroidManifest.xml
├── CleanSpec.mk
├── MODULE_LICENSE_APACHE2
├── NOTICE
├── README.md
├── 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-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
│ │ ├── dimens.xml
│ │ ├── override.xml
│ │ └── strings.xml
│ └── xml
│ │ └── device_profiles.xml
└── src_flags
│ └── com
│ └── android
│ └── launcher3
│ └── config
│ └── FeatureFlags.java
├── libs
└── freeme-framework.jar
├── print_db.py
├── proguard.flags
├── proto_overrides
└── launcher_log_extension.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
├── 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
├── 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
├── drawable-v24
│ ├── ic_info_shadow.xml
│ ├── ic_remove_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
├── 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
├── drawable-xxxhdpi
│ ├── ic_widget_resize_handle.png
│ ├── widget_resize_frame.9.png
│ ├── widget_resize_shadow.9.png
│ └── workspace_bg.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
│ ├── 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_info_no_shadow.xml
│ ├── ic_instant_app_badge.xml
│ ├── ic_launcher_home.xml
│ ├── ic_remove_no_shadow.xml
│ ├── ic_setting.xml
│ ├── ic_star_rating.xml
│ ├── ic_uninstall_no_shadow.xml
│ ├── ic_wallpaper.xml
│ ├── ic_warning.xml
│ ├── ic_widget.xml
│ ├── pending_widget_bg.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
├── layout-port
│ └── launcher.xml
├── layout-sw720dp
│ ├── all_apps_fast_scroller.xml
│ └── launcher.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_icon.xml
│ ├── all_apps_search_market.xml
│ ├── app_icon.xml
│ ├── app_widget_resize_frame.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
│ ├── search_container_all_apps.xml
│ ├── search_container_workspace.xml
│ ├── shortcuts_item.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_foreground.png
├── mipmap-mdpi
│ ├── ic_launcher_home.png
│ └── ic_launcher_home_foreground.png
├── mipmap-xhdpi
│ ├── ic_launcher_home.png
│ └── ic_launcher_home_foreground.png
├── mipmap-xxhdpi
│ ├── ic_launcher_home.png
│ └── ic_launcher_home_foreground.png
├── raw
│ └── downgrade_schema.json
├── values-af
│ └── strings.xml
├── values-am
│ └── strings.xml
├── values-ar
│ └── 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
│ └── 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
│ └── strings.xml
├── values-kk
│ └── strings.xml
├── values-km
│ └── strings.xml
├── values-kn
│ └── strings.xml
├── values-ko
│ └── strings.xml
├── values-ky
│ └── strings.xml
├── values-land
│ └── dimens.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-rm
│ └── strings.xml
├── values-ro
│ └── strings.xml
├── values-ru
│ └── 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-sw340dp
│ └── dimens.xml
├── values-sw600dp
│ ├── config.xml
│ └── dimens.xml
├── values-sw720dp
│ ├── config.xml
│ ├── dimens.xml
│ └── styles.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
│ └── strings.xml
├── values-v19
│ └── styles.xml
├── values-v21
│ └── styles.xml
├── values-v26
│ ├── bools.xml
│ └── styles.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
│ ├── attrs.xml
│ ├── bools.xml
│ ├── colors.xml
│ ├── config.xml
│ ├── dimens.xml
│ ├── drawables.xml
│ ├── strings.xml
│ └── styles.xml
└── xml
│ ├── backupscheme.xml
│ ├── default_workspace_3x3.xml
│ ├── default_workspace_4x4.xml
│ ├── default_workspace_5x5.xml
│ ├── default_workspace_5x6.xml
│ ├── device_profiles.xml
│ ├── dw_phone_hotseat.xml
│ ├── dw_tablet_hotseat.xml
│ └── launcher_preferences.xml
├── src
└── 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
│ ├── DeepShortcutTextView.java
│ ├── DeepShortcutView.java
│ ├── ShortcutCache.java
│ ├── ShortcutDragPreviewProvider.java
│ ├── ShortcutInfoCompat.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
├── 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/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/MODULE_LICENSE_APACHE2
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Launcher3
2 |
3 | 本工程旨在创建一个可以在Android Studio中编译、调试的Launcher3工程。如果有其他Android App有同样的需求,可做参考。
4 |
5 | 由于Launcher3使用了一些私有的API,比如`android.app.WallpaperColors`,这些导致Android Studio使用标准的sdk编译不过。
6 |
7 | ## 1. 获取framework.jar
8 | `framework.jar`可通过编译android官方的aosp工程获得,编译时间较长。生成的路径为:
9 |
10 | ```java
11 | out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
12 | ```
13 |
14 | 如果不知道如何编译android源码,可参考[Google官方构建编译环境指南](https://source.android.com/source/initializing),当然如果不敢兴趣,可使用我上传的`freeme-framework.jar`.
15 |
16 | ## 2. 放置framework.jar
17 | 新建`libs`目录,在本文我重命名为 `freeme-framework.jar`并放在此`libs`目录。
18 |
19 | ## 3. 修改build.gradle
20 |
21 | ```groovy
22 | dependencies {
23 | //provided是指这个库仅仅在编译时使用,但最终不会被编译到apk或aar里
24 | provided files('libs/freeme-framework.jar')
25 |
26 | ...
27 | }
28 |
29 | //添加此处配置,意在调整编译时优先加载freeme-framework.jar,这样才能让使用某个公共类中的私有api不会报错
30 | //-Xbootclasspath/p是java编址的优先寻址设置
31 | //"Xbootclasspath/p"后接的路径,是相对于当前Project的根目录的相对路径
32 | gradle.projectsEvaluated {
33 | tasks.withType(JavaCompile) {
34 | options.compilerArgs << '-Xbootclasspath/p:libs/freeme-framework.jar'
35 | }
36 | }
37 | ```
38 |
39 | ## 最后,就可以顺利运行了
40 |
41 |
--------------------------------------------------------------------------------
/go/res/drawable/ic_widget.xml:
--------------------------------------------------------------------------------
1 |
16 |
21 |
25 |
26 |
--------------------------------------------------------------------------------
/go/res/values-af/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Raak en hou om \'n kortpad op te tel."
23 | "Dubbeltik en hou om \'n kortpad op te tel of gebruik gepasmaakte handelinge."
24 | "Kortpaaie"
25 | "%1$s-kortpaaie"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-am/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "አንድ አቋራጭ ለመውሰድ ነክተው ይያዙ"
23 | "አንድ አቋራጭ ለመውሰድ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ አድርገው ይያዙ።"
24 | "አቋራጮች"
25 | "%1$s አቋራጮች"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ar/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "المس مع الاستمرار لاختيار اختصار."
23 | "يمكنك النقر نقرًا مزدوجًا مع الاستمرار لاختيار اختصار أو استخدام الإجراءات المخصصة."
24 | "الاختصارات"
25 | "اختصارات %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-az-rAZ/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Qısayolu seçmək üçün toxunub saxlayın."
23 | "Qısayolu seçmək üçün iki dəfə basıb saxlayın və ya fərdi əməliyyatlardan istifadə edin."
24 | "Qısayollar"
25 | "%1$s qısayolları"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-az/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Qısayolu seçmək üçün toxunub saxlayın."
23 | "Qısayolu seçmək üçün iki dəfə basıb saxlayın və ya fərdi əməliyyatlardan istifadə edin."
24 | "Qısayollar"
25 | "%1$s qısayolları"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-b+sr+Latn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Dodirnite i zadržite da biste izabrali prečicu."
23 | "Dvaput dodirnite i zadržite da biste izabrali prečicu ili koristite prilagođene radnje."
24 | "Prečice"
25 | "Prečice za %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-be/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Дакраніцеся і ўтрымлiвайце ярлык, каб дадаць яго."
23 | "Дакраніцеся двойчы і ўтрымлівайце, каб выбраць ярлык або выкарыстоўваць спецыяльныя дзеянні."
24 | "Ярлыкі"
25 | "Ярлыкі %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-bn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "কোনও শর্টকাট বেছে নিতে টাচ করে ধরে রাখুন।"
23 | "কোনও শর্টকাট বেছে নিতে ডাবল ট্যাপ করে ধরে রাখুন অথবা কাস্টম ক্রিয়াগুলি ব্যবহার করুন।"
24 | "শর্টকাট"
25 | "%1$s এর শর্টকাট"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-bs-rBA/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Dodirnite i držite da uzmete prečicu."
23 | "Dvaput dodirnite i držite da uzmete prečicu ili koristite prilagođene akcije."
24 | "Prečice"
25 | "Prečice aplikacije %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-bs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Dodirnite i držite da uzmete prečicu."
23 | "Dvaput dodirnite i držite da uzmete prečicu ili koristite prilagođene akcije."
24 | "Prečice"
25 | "Prečice aplikacije %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-cs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Zkratku vyberete podržením."
23 | "Dvojitým klepnutím a podržením vyberte zkratku, případně použijte vlastní akce."
24 | "Zkratky"
25 | "Zkratky aplikace %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-da/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Hold en genvej nede for at samle den op."
23 | "Tryk to gange, og hold en genvej nede for at samle den op og bruge tilpassede handlinger."
24 | "Genveje"
25 | "%1$s-genveje"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-en-rAU/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Touch & hold to pick up a shortcut."
23 | "Double-tap & hold to pick up a shortcut or use custom actions."
24 | "Shortcuts"
25 | "%1$s shortcuts"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-en-rGB/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Touch & hold to pick up a shortcut."
23 | "Double-tap & hold to pick up a shortcut or use custom actions."
24 | "Shortcuts"
25 | "%1$s shortcuts"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-en-rIN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Touch & hold to pick up a shortcut."
23 | "Double-tap & hold to pick up a shortcut or use custom actions."
24 | "Shortcuts"
25 | "%1$s shortcuts"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-et/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Otsetee valimiseks puudutage seda pikalt."
23 | "Topeltpuudutage ja hoidke otsetee valimiseks või kohandatud toimingute kasutamiseks."
24 | "Otseteed"
25 | "Rakenduse %1$s otseteed"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-fa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "برای انتخاب یک میانبر، لمس کنید و نگهدارید."
23 | "برای انتخاب یک میانبر، دو ضربه سریع بزنید و نگهدارید یا از اقدامهای سفارشی استفاده کنید."
24 | "میانبرها"
25 | "میانبرهای %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-gu/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "એક શૉર્ટકટ ચૂંટવા ટૅપ કરી રાખો."
23 | "એક શૉર્ટકટ ચૂંટવા અથવા કોઈ કસ્ટમ ક્રિયાઓનો ઉપયોગ કરવા માટે બે વાર ટૅપ કરી રાખો."
24 | "શૉર્ટકટ"
25 | "%1$s શૉર્ટકટ"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-hi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "शॉर्टकट चुनने के लिए छूकर रखें."
23 | "शॉर्टकट चुनने के लिए डबल टैप करके रखें या कस्टम कार्रवाइयों का उपयोग करें."
24 | "शॉर्टकट"
25 | "%1$s शॉर्टकट"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-in/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Tap lama untuk memilih pintasan."
23 | "Tap dua kali & tahan untuk memilih pintasan atau menggunakan tindakan khusus."
24 | "Pintasan"
25 | "Pintasan %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-is/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Haltu fingri á flýtileið til að grípa hana."
23 | "Ýttu tvisvar og haltu fingri á flýtileið til að grípa hana eða notaðu sérsniðnar aðgerðir."
24 | "Flýtileiðir"
25 | "%1$s flýtileiðir"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "ショートカットを追加するには押し続けます。"
23 | "ダブルタップ後に押し続けてショートカットを選択するか、カスタム操作を使用してください。"
24 | "ショートカット"
25 | "「%1$s」のショートカット"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ka/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "შეეხეთ და დააყოვნეთ მალსახმობის ასარჩევად."
23 | "ორმაგად შეეხეთ და გეჭიროთ მალსახმობის ასარჩევად ან მორგებული მოქმედებების გამოსაყენებლად."
24 | "მალსახმობები"
25 | "%1$s-ის მალსახმობები"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-kk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Таңбашаны таңдау үшін оны түртіп, ұстап тұрыңыз."
23 | "Таңбашаны таңдау немесе арнаулы әрекеттерді пайдалану үшін екі рет түртіп, ұстап тұрыңыз."
24 | "Таңбашалар"
25 | "%1$s таңбаша"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-km/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-ky/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Кыска жолду тандоо үчүн басып туруңуз."
23 | "Кыска жолду тандоо үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз."
24 | "Кыска жолдор"
25 | "%1$s кыска жол"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-lo-rLA/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "ແຕະຄ້າງໄວ້ເພື່ອຮັບປຸ່ມລັດ."
23 | "ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຮັບປຸ່ມລັດ ຫຼື ໃຊ້ຄຳສັ່ງແບບກຳນົດເອງ."
24 | "ປຸ່ມລັດ"
25 | "ປຸ່ມລັດ %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-lo/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "ແຕະຄ້າງໄວ້ເພື່ອຮັບປຸ່ມລັດ."
23 | "ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຮັບປຸ່ມລັດ ຫຼື ໃຊ້ຄຳສັ່ງແບບກຳນົດເອງ."
24 | "ປຸ່ມລັດ"
25 | "ປຸ່ມລັດ %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-mk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Допрете двапати и задржете за да изберете кратенка."
23 | "Допрете двапати и задржете за да изберете кратенка или да користите приспособени дејства."
24 | "Кратенки"
25 | "Кратенки за %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-mn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Товчлол авах бол удаан дарна уу."
23 | "Товчлол авах болон тохируулсан үйлдлийг ашиглахын тулд хоёр товшоод хүлээнэ үү."
24 | "Товчлол"
25 | "%1$s-н товчлол"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-mr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "शॉर्टकट निवडण्यासाठी स्पर्श करा आणि धरून ठेवा."
23 | "शॉर्टकट निवडण्यासाठी किंवा कस्टम क्रिया वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा."
24 | "शॉर्टकट"
25 | "%1$s शॉर्टकट"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ms/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Sentuh & tahan untuk mengambil pintasan."
23 | "Ketik dua kali & tahan untuk mengambil pintasan atau menggunakan tindakan tersuai."
24 | "Pintasan"
25 | "Pintasan %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-nb/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Trykk og hold for å velge en snarvei."
23 | "Dobbelttrykk og hold for å velge en snarvei eller bruke tilpassede handlinger."
24 | "Snarveier"
25 | "%1$s-snarveier"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-ne/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "कुनै सटकर्ट छनौट गर्न छोइराख्नुहोस्।"
23 | "कुनै सर्टकट छनौट गर्न दुईपटक ट्याप गरेर होल्ड गर्नुहोस् वा रोजेका कारबाहीहरू प्रयोग गर्नुहोस्।"
24 | "सर्टकटहरू"
25 | "%1$s सर्टकटहरू"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-pa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "ਕੋਈ ਸ਼ਾਰਟਕੱਟ ਚੁਣਨ ਲਈ ਸਪੱਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾ ਕੇ ਰੱਖੋ।"
23 | "ਕੋਈ ਸ਼ਾਰਟਕੱਟ ਚੁਣਨ ਲਈ ਡਬਲ-ਟੈਪ ਕਰੋ ਅਤੇ ਦਬਾ ਕੇ ਰੱਖੋ ਜਾਂ ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਕਾਰਵਾਈਆਂ ਵਰਤੋ।"
24 | "ਸ਼ਾਰਟਕੱਟ"
25 | "%1$s ਸ਼ਾਰਟਕੱਟ"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Kliknij i przytrzymaj, by wybrać skrót."
23 | "Kliknij dwukrotnie i przytrzymaj, by wybrać skrót lub użyć działań niestandardowych."
24 | "Skróty"
25 | "%1$s – skróty"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-pt/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Toque e segure para selecionar um atalho."
23 | "Toque duas vezes na tela e segure para selecionar um atalho ou usar ações personalizadas."
24 | "Atalhos"
25 | "Atalhos do app %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-si-rLK/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "කෙටි මගක් තෝරා ගැනීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න."
23 | "විජට් එකක් තෝරා ගැනීමට හෝ අභිරුචි භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න."
24 | "කෙටි මං"
25 | "කෙටි මං %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-si/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "කෙටි මගක් තෝරා ගැනීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න."
23 | "විජට් එකක් තෝරා ගැනීමට හෝ අභිරුචි භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න."
24 | "කෙටි මං"
25 | "කෙටි මං %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-sk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Skratku pridáte pridržaním."
23 | "Skratku pridáte dvojitým klepnutím a pridržaním alebo pomocou vlastných akcií."
24 | "Skratky"
25 | "Skratky aplikácie %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-sl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Pridržite bližnjico, da jo izberete."
23 | "Dvakrat se dotaknite bližnjice in jo pridržite, da jo izberete, ali pa uporabite dejanja po meri."
24 | "Bližnjice"
25 | "Bližnjice za %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-sr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Додирните и задржите да бисте изабрали пречицу."
23 | "Двапут додирните и задржите да бисте изабрали пречицу или користите прилагођене радње."
24 | "Пречице"
25 | "Пречице за %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-sw/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Gusa na ushikilie ili uchague njia ya mkato."
23 | "Gonga mara mbili na ushikilie ile uchague njia ya mkato au utumie vitendo maalum."
24 | "Njia za mkato"
25 | "Njia za mkato za %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-th/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "แตะค้างไว้เพื่อเลือกทางลัด"
23 | "แตะสองครั้งค้างไว้เพื่อเลือกทางลัดหรือใช้การกระทำที่กำหนดเอง"
24 | "ทางลัด"
25 | "ทางลัด %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-tr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Kısayol seçmek için dokunun ve basılı tutun."
23 | "Bir kısayolu seçmek veya özel işlemleri kullanmak için iki kez dokunun ve basılı tutun."
24 | "Kısayollar"
25 | "%1$s kısayolları"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-uk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Натисніть і утримуйте, щоб вибрати ярлик."
23 | "Двічі натисніть і утримуйте, щоб вибрати ярлик, або виконайте іншу дію."
24 | "Ярлики"
25 | "Ярлики додатка %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/go/res/values-v26/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | false
21 |
--------------------------------------------------------------------------------
/go/res/values-vi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
22 | "Chạm và giữ để chọn lối tắt."
23 | "Nhấn đúp và giữ để chọn lối tắt hoặc sử dụng hành động tùy chỉnh."
24 | "Lối tắt"
25 | "Lối tắt %1$s"
26 |
27 |
--------------------------------------------------------------------------------
/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/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 | 60dp
20 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/go/src_flags/com/android/launcher3/config/FeatureFlags.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.config;
18 |
19 | /**
20 | * Defines a set of flags used to control various launcher behaviors
21 | */
22 | public final class FeatureFlags extends BaseFlags {
23 |
24 | private FeatureFlags() {}
25 |
26 | // Features to control Launcher3Go behavior
27 | public static final boolean GO_DISABLE_WIDGETS = true;
28 | public static final boolean LAUNCHER3_SPRING_ICONS = false;
29 | }
30 |
--------------------------------------------------------------------------------
/libs/freeme-framework.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/libs/freeme-framework.jar
--------------------------------------------------------------------------------
/proto_overrides/launcher_log_extension.proto:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2017 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | syntax = "proto2";
17 |
18 | option java_package = "com.android.launcher3.userevent";
19 | option java_outer_classname = "LauncherLogExtensions";
20 |
21 | package userevent;
22 |
23 | //
24 | // Use this to add any app specific extensions to the proto.
25 | //
26 | message LauncherEventExtension {
27 | }
28 |
29 | message TargetExtension {
30 | }
31 |
--------------------------------------------------------------------------------
/res/anim/no_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 |
--------------------------------------------------------------------------------
/res/animator/overview_button_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | -
20 |
25 |
26 |
27 | -
28 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/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/drawable-hdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-hdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-hdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-hdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-hdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-hdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-hdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-mdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-mdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-mdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-mdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-mdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-mdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-v24/ic_info_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
20 |
--------------------------------------------------------------------------------
/res/drawable-v24/ic_remove_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
20 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xhdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xhdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xhdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xhdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xhdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xhdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_allapps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxhdpi/ic_allapps.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_allapps_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxhdpi/ic_allapps_pressed.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxhdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxhdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxhdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxhdpi/workspace_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/ic_widget_resize_handle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxxhdpi/ic_widget_resize_handle.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/widget_resize_frame.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxxhdpi/widget_resize_frame.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/widget_resize_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxxhdpi/widget_resize_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/workspace_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/drawable-xxxhdpi/workspace_bg.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_celllayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
22 | -
23 |
24 |
27 |
28 |
29 |
30 | -
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/res/drawable/deep_shortcuts_drag_handle.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
23 |
24 |
28 |
--------------------------------------------------------------------------------
/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_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/ic_widget.xml:
--------------------------------------------------------------------------------
1 |
16 |
21 |
26 |
27 |
--------------------------------------------------------------------------------
/res/drawable/pending_widget_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
20 |
--------------------------------------------------------------------------------
/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/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/all_apps_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
28 |
29 |
--------------------------------------------------------------------------------
/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_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
23 |
30 |
31 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/res/layout/notification_pref_warning.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
24 |
--------------------------------------------------------------------------------
/res/layout/page_indicator.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
22 |
28 |
29 |
--------------------------------------------------------------------------------
/res/layout/popup_container.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
28 |
29 |
--------------------------------------------------------------------------------
/res/layout/search_container_workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
24 |
25 |
30 |
--------------------------------------------------------------------------------
/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_dummy_widget.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
22 |
23 |
28 |
29 |
34 |
35 |
--------------------------------------------------------------------------------
/res/layout/zzz_weight_watcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/res/mipmap-hdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-hdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-hdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-hdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-mdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-mdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-mdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-mdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-xhdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-xhdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-xhdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-xhdpi/ic_launcher_home_foreground.png
--------------------------------------------------------------------------------
/res/mipmap-xxhdpi/ic_launcher_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-xxhdpi/ic_launcher_home.png
--------------------------------------------------------------------------------
/res/mipmap-xxhdpi/ic_launcher_home_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GregGe/Launcher3/23c948db6164cba7a58daf1286585fbae5f7767f/res/mipmap-xxhdpi/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-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/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-v19/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
25 |
26 |
--------------------------------------------------------------------------------
/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
28 |
29 |
--------------------------------------------------------------------------------
/res/values-v26/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | true
21 |
22 | false
23 |
--------------------------------------------------------------------------------
/res/values-v26/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
24 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/values/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | false
21 |
22 | true
23 |
--------------------------------------------------------------------------------
/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/xml/backupscheme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
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 |
6 | public class AppFilter {
7 |
8 | public static AppFilter newInstance(Context context) {
9 | return Utilities.getOverrideObject(AppFilter.class, context, R.string.app_filter_class);
10 | }
11 |
12 | public boolean shouldShowApp(ComponentName app) {
13 | return true;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/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/ItemInfoWithIcon.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 | import android.graphics.Bitmap;
20 |
21 | /**
22 | * Represents an ItemInfo which also holds an icon.
23 | */
24 | public abstract class ItemInfoWithIcon extends ItemInfo {
25 |
26 | /**
27 | * A bitmap version of the application icon.
28 | */
29 | public Bitmap iconBitmap;
30 |
31 | /**
32 | * Indicates whether we're using a low res icon
33 | */
34 | public boolean usingLowResIcon;
35 |
36 | protected ItemInfoWithIcon() { }
37 |
38 | protected ItemInfoWithIcon(ItemInfoWithIcon info) {
39 | super(info);
40 | iconBitmap = info.iconBitmap;
41 | usingLowResIcon = info.usingLowResIcon;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/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/LauncherFiles.java:
--------------------------------------------------------------------------------
1 | package com.android.launcher3;
2 |
3 | import java.util.Arrays;
4 | import java.util.Collections;
5 | import java.util.List;
6 |
7 | /**
8 | * Central list of files the Launcher writes to the application data directory.
9 | *
10 | * To add a new Launcher file, create a String constant referring to the filename, and add it to
11 | * ALL_FILES, as shown below.
12 | */
13 | public class LauncherFiles {
14 |
15 | private static final String XML = ".xml";
16 |
17 | public static final String LAUNCHER_DB = "launcher.db";
18 | public static final String SHARED_PREFERENCES_KEY = "com.android.launcher3.prefs";
19 | public static final String MANAGED_USER_PREFERENCES_KEY = "com.android.launcher3.managedusers.prefs";
20 | // This preference file is not backed up to cloud.
21 | public static final String DEVICE_PREFERENCES_KEY = "com.android.launcher3.device.prefs";
22 |
23 | public static final String WIDGET_PREVIEWS_DB = "widgetpreviews.db";
24 | public static final String APP_ICONS_DB = "app_icons.db";
25 |
26 | public static final List ALL_FILES = Collections.unmodifiableList(Arrays.asList(
27 | LAUNCHER_DB,
28 | SHARED_PREFERENCES_KEY + XML,
29 | WIDGET_PREVIEWS_DB,
30 | MANAGED_USER_PREFERENCES_KEY + XML,
31 | DEVICE_PREFERENCES_KEY + XML,
32 | APP_ICONS_DB));
33 | }
34 |
--------------------------------------------------------------------------------
/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/PendingAddItemInfo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 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.ComponentName;
20 |
21 | /**
22 | * Meta data that is used for deferred binding.
23 | * e.g., this object is used to pass information on draggable targets when they are dropped onto
24 | * the workspace from another container.
25 | */
26 | public class PendingAddItemInfo extends ItemInfo {
27 |
28 | /**
29 | * The component that will be created.
30 | */
31 | public ComponentName componentName;
32 |
33 | @Override
34 | protected String dumpProperties() {
35 | return super.dumpProperties() + " componentName=" + componentName;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/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/UserManagerCompatVN.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.N)
25 | public class UserManagerCompatVN extends UserManagerCompatVM {
26 |
27 | UserManagerCompatVN(Context context) {
28 | super(context);
29 | }
30 |
31 | @Override
32 | public boolean isQuietModeEnabled(UserHandle user) {
33 | return mUserManager.isQuietModeEnabled(user);
34 | }
35 |
36 | @Override
37 | public boolean isUserUnlocked(UserHandle user) {
38 | return mUserManager.isUserUnlocked(user);
39 | }
40 | }
41 |
42 |
--------------------------------------------------------------------------------
/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/model/PackageItemInfo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 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.model;
18 |
19 | import com.android.launcher3.ItemInfoWithIcon;
20 |
21 | /**
22 | * Represents a {@link Package} in the widget tray section.
23 | */
24 | public class PackageItemInfo extends ItemInfoWithIcon {
25 |
26 | /**
27 | * Package name of the {@link PackageItemInfo}.
28 | */
29 | public String packageName;
30 |
31 | public PackageItemInfo(String packageName) {
32 | this.packageName = packageName;
33 | }
34 |
35 | @Override
36 | protected String dumpProperties() {
37 | return super.dumpProperties() + " packageName=" + packageName;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/com/android/launcher3/shortcuts/ShortcutKey.java:
--------------------------------------------------------------------------------
1 | package com.android.launcher3.shortcuts;
2 |
3 | import android.content.ComponentName;
4 | import android.content.Intent;
5 | import android.os.UserHandle;
6 |
7 | import com.android.launcher3.ItemInfo;
8 | import com.android.launcher3.util.ComponentKey;
9 |
10 | /**
11 | * A key that uniquely identifies a shortcut using its package, id, and user handle.
12 | */
13 | public class ShortcutKey extends ComponentKey {
14 |
15 | public ShortcutKey(String packageName, UserHandle user, String id) {
16 | // Use the id as the class name.
17 | super(new ComponentName(packageName, id), user);
18 | }
19 |
20 | public String getId() {
21 | return componentName.getClassName();
22 | }
23 |
24 | public static ShortcutKey fromInfo(ShortcutInfoCompat shortcutInfo) {
25 | return new ShortcutKey(shortcutInfo.getPackage(), shortcutInfo.getUserHandle(),
26 | shortcutInfo.getId());
27 | }
28 |
29 | public static ShortcutKey fromIntent(Intent intent, UserHandle user) {
30 | String shortcutId = intent.getStringExtra(
31 | ShortcutInfoCompat.EXTRA_SHORTCUT_ID);
32 | return new ShortcutKey(intent.getPackage(), user, shortcutId);
33 | }
34 |
35 | public static ShortcutKey fromItemInfo(ItemInfo info) {
36 | return fromIntent(info.getIntent(), info.user);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/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/android/launcher3/widget/WidgetsRowViewHolder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 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.widget;
17 |
18 | import android.support.v7.widget.RecyclerView.ViewHolder;
19 | import android.view.ViewGroup;
20 |
21 | import com.android.launcher3.BubbleTextView;
22 | import com.android.launcher3.R;
23 |
24 | public class WidgetsRowViewHolder extends ViewHolder {
25 |
26 | public final ViewGroup cellContainer;
27 | public final BubbleTextView title;
28 |
29 | public WidgetsRowViewHolder(ViewGroup v) {
30 | super(v);
31 |
32 | cellContainer = (ViewGroup) v.findViewById(R.id.widgets_cell_list);
33 | title = (BubbleTextView) v.findViewById(R.id.section);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/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.android.launcher3";
24 | }
25 |
--------------------------------------------------------------------------------
/src_flags/com/android/launcher3/config/FeatureFlags.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 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.config;
18 |
19 | /**
20 | * Defines a set of flags used to control various launcher behaviors
21 | */
22 | public final class FeatureFlags extends BaseFlags {
23 |
24 | private FeatureFlags() {}
25 | }
26 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------