blob: 6618cca781b89e7adaa3269d18a498bd6800186c [file] [log] [blame]
Adam Cohen9211d422014-10-07 18:14:53 -07001package com.android.launcher3;
2
3import android.content.ComponentName;
4import android.content.Intent;
5import android.graphics.Rect;
6import android.os.Bundle;
7import android.view.Menu;
8import android.view.View;
Adam Cohenc2d6e892014-10-16 09:49:24 -07009import android.view.ViewGroup;
Winson Chungef7f8742015-06-04 17:18:17 -070010import com.android.launcher3.allapps.AllAppsSearchBarController;
Winson Chung6b1c73f2015-06-18 11:38:42 -070011import com.android.launcher3.util.ComponentKey;
Adam Cohen9211d422014-10-07 18:14:53 -070012
13import java.io.FileDescriptor;
14import java.io.PrintWriter;
15import java.util.ArrayList;
Winson Chung4ac30062015-05-08 17:34:17 -070016import java.util.List;
Adam Cohen9211d422014-10-07 18:14:53 -070017
18/**
19 * LauncherCallbacks is an interface used to extend the Launcher activity. It includes many hooks
20 * in order to add additional functionality. Some of these are very general, and give extending
21 * classes the ability to react to Activity life-cycle or specific user interactions. Others
22 * are more specific and relate to replacing parts of the application, for example, the search
23 * interface or the wallpaper picker.
24 */
25public interface LauncherCallbacks {
26
27 /*
28 * Activity life-cycle methods. These methods are triggered after
29 * the code in the corresponding Launcher method is executed.
30 */
31 public void preOnCreate();
32 public void onCreate(Bundle savedInstanceState);
33 public void preOnResume();
34 public void onResume();
35 public void onStart();
36 public void onStop();
37 public void onPause();
38 public void onDestroy();
39 public void onSaveInstanceState(Bundle outState);
40 public void onPostCreate(Bundle savedInstanceState);
41 public void onNewIntent(Intent intent);
42 public void onActivityResult(int requestCode, int resultCode, Intent data);
Dave Hawkey3a43ed62015-06-26 10:27:47 -060043 public void onRequestPermissionsResult(int requestCode, String[] permissions,
44 int[] grantResults);
Adam Cohen9211d422014-10-07 18:14:53 -070045 public void onWindowFocusChanged(boolean hasFocus);
46 public boolean onPrepareOptionsMenu(Menu menu);
47 public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args);
48 public void onHomeIntent();
49 public boolean handleBackPressed();
Robert Kozikowski67c30862015-03-30 23:46:46 +010050 public void onTrimMemory(int level);
Adam Cohen9211d422014-10-07 18:14:53 -070051
52 /*
53 * Extension points for providing custom behavior on certain user interactions.
54 */
55 public void onLauncherProviderChange();
56 public void finishBindingItems(final boolean upgradePath);
57 public void onClickAllAppsButton(View v);
58 public void bindAllApplications(ArrayList<AppInfo> apps);
59 public void onClickFolderIcon(View v);
60 public void onClickAppShortcut(View v);
Winson Chung8f1eff72015-05-28 17:33:40 -070061 @Deprecated
Adam Cohen9211d422014-10-07 18:14:53 -070062 public void onClickPagedViewIcon(View v);
63 public void onClickWallpaperPicker(View v);
64 public void onClickSettingsButton(View v);
65 public void onClickAddWidgetButton(View v);
66 public void onPageSwitch(View newPage, int newPageIndex);
67 public void onWorkspaceLockedChanged();
68 public void onDragStarted(View view);
69 public void onInteractionBegin();
70 public void onInteractionEnd();
71
72 /*
73 * Extension points for replacing the search experience
74 */
Winson Chungb1777442015-06-16 13:35:04 -070075 @Deprecated
Adam Cohen9211d422014-10-07 18:14:53 -070076 public boolean forceDisableVoiceButtonProxy();
77 public boolean providesSearch();
78 public boolean startSearch(String initialQuery, boolean selectInitialQuery,
79 Bundle appSearchData, Rect sourceBounds);
Winson Chungb1777442015-06-16 13:35:04 -070080 @Deprecated
Adam Cohen9211d422014-10-07 18:14:53 -070081 public void startVoice();
82 public boolean hasCustomContentToLeft();
83 public void populateCustomContentContainer();
84 public View getQsbBar();
85
86 /*
87 * Extensions points for adding / replacing some other aspects of the Launcher experience.
88 */
89 public Intent getFirstRunActivity();
90 public boolean hasFirstRunActivity();
91 public boolean hasDismissableIntroScreen();
92 public View getIntroScreen();
93 public boolean shouldMoveToDefaultScreenOnHomeIntent();
94 public boolean hasSettings();
Winson Chungef7f8742015-06-04 17:18:17 -070095 @Deprecated
Adam Cohen9211d422014-10-07 18:14:53 -070096 public ComponentName getWallpaperPickerComponent();
97 public boolean overrideWallpaperDimensions();
98 public boolean isLauncherPreinstalled();
Winson Chungef7f8742015-06-04 17:18:17 -070099 public AllAppsSearchBarController getAllAppsSearchBarController();
Winson Chung6b1c73f2015-06-18 11:38:42 -0700100 public List<ComponentKey> getPredictedApps();
Adam Cohen9211d422014-10-07 18:14:53 -0700101
Adam Cohenc2d6e892014-10-16 09:49:24 -0700102 /**
103 * Returning true will immediately result in a call to {@link #setLauncherOverlayView(ViewGroup,
104 * com.android.launcher3.Launcher.LauncherOverlayCallbacks)}.
105 *
106 * @return true if this launcher extension will provide an overlay
107 */
108 public boolean hasLauncherOverlay();
109
110 /**
111 * Handshake to establish an overlay relationship
112 *
Adam Cohena6d04922014-10-23 17:28:30 -0700113 * @param container Full screen overlay ViewGroup into which custom views can be placed.
Adam Cohenc2d6e892014-10-16 09:49:24 -0700114 * @param callbacks A set of callbacks provided by Launcher in relation to the overlay
115 * @return an interface used to make requests and notify the Launcher in relation to the overlay
116 */
Adam Cohena6d04922014-10-23 17:28:30 -0700117 public Launcher.LauncherOverlay setLauncherOverlayView(InsettableFrameLayout container,
Adam Cohenc2d6e892014-10-16 09:49:24 -0700118 Launcher.LauncherOverlayCallbacks callbacks);
119
Winson Chung0f785722015-04-08 10:27:49 -0700120 /**
Jun Mukai8af0cd82015-05-12 12:32:12 -0700121 * Sets the callbacks to allow reacting the actions of search overlays of the launcher.
122 *
123 * @param callbacks A set of callbacks to the Launcher, is actually a LauncherSearchCallback,
124 * but for implementation purposes is passed around as an object.
125 */
126 public void setLauncherSearchCallback(Object callbacks);
Adam Cohen9211d422014-10-07 18:14:53 -0700127}