blob: d8128d6e51c7342aeffff0c143800683cee5fd50 [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;
Adam Cohen9211d422014-10-07 18:14:53 -070010
11import java.io.FileDescriptor;
12import java.io.PrintWriter;
13import java.util.ArrayList;
14
15/**
16 * LauncherCallbacks is an interface used to extend the Launcher activity. It includes many hooks
17 * in order to add additional functionality. Some of these are very general, and give extending
18 * classes the ability to react to Activity life-cycle or specific user interactions. Others
19 * are more specific and relate to replacing parts of the application, for example, the search
20 * interface or the wallpaper picker.
21 */
22public interface LauncherCallbacks {
23
24 /*
25 * Activity life-cycle methods. These methods are triggered after
26 * the code in the corresponding Launcher method is executed.
27 */
28 public void preOnCreate();
29 public void onCreate(Bundle savedInstanceState);
30 public void preOnResume();
31 public void onResume();
32 public void onStart();
33 public void onStop();
34 public void onPause();
35 public void onDestroy();
36 public void onSaveInstanceState(Bundle outState);
37 public void onPostCreate(Bundle savedInstanceState);
38 public void onNewIntent(Intent intent);
39 public void onActivityResult(int requestCode, int resultCode, Intent data);
40 public void onWindowFocusChanged(boolean hasFocus);
41 public boolean onPrepareOptionsMenu(Menu menu);
42 public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args);
43 public void onHomeIntent();
44 public boolean handleBackPressed();
Robert Kozikowski67c30862015-03-30 23:46:46 +010045 public void onTrimMemory(int level);
Adam Cohen9211d422014-10-07 18:14:53 -070046
47 /*
48 * Extension points for providing custom behavior on certain user interactions.
49 */
50 public void onLauncherProviderChange();
51 public void finishBindingItems(final boolean upgradePath);
52 public void onClickAllAppsButton(View v);
53 public void bindAllApplications(ArrayList<AppInfo> apps);
54 public void onClickFolderIcon(View v);
55 public void onClickAppShortcut(View v);
56 public void onClickPagedViewIcon(View v);
57 public void onClickWallpaperPicker(View v);
58 public void onClickSettingsButton(View v);
59 public void onClickAddWidgetButton(View v);
60 public void onPageSwitch(View newPage, int newPageIndex);
61 public void onWorkspaceLockedChanged();
62 public void onDragStarted(View view);
63 public void onInteractionBegin();
64 public void onInteractionEnd();
65
66 /*
67 * Extension points for replacing the search experience
68 */
69 public boolean forceDisableVoiceButtonProxy();
70 public boolean providesSearch();
71 public boolean startSearch(String initialQuery, boolean selectInitialQuery,
72 Bundle appSearchData, Rect sourceBounds);
73 public void startVoice();
74 public boolean hasCustomContentToLeft();
75 public void populateCustomContentContainer();
76 public View getQsbBar();
77
78 /*
79 * Extensions points for adding / replacing some other aspects of the Launcher experience.
80 */
81 public Intent getFirstRunActivity();
82 public boolean hasFirstRunActivity();
83 public boolean hasDismissableIntroScreen();
84 public View getIntroScreen();
85 public boolean shouldMoveToDefaultScreenOnHomeIntent();
86 public boolean hasSettings();
87 public ComponentName getWallpaperPickerComponent();
88 public boolean overrideWallpaperDimensions();
89 public boolean isLauncherPreinstalled();
90
Adam Cohenc2d6e892014-10-16 09:49:24 -070091 /**
92 * Returning true will immediately result in a call to {@link #setLauncherOverlayView(ViewGroup,
93 * com.android.launcher3.Launcher.LauncherOverlayCallbacks)}.
94 *
95 * @return true if this launcher extension will provide an overlay
96 */
97 public boolean hasLauncherOverlay();
98
99 /**
100 * Handshake to establish an overlay relationship
101 *
Adam Cohena6d04922014-10-23 17:28:30 -0700102 * @param container Full screen overlay ViewGroup into which custom views can be placed.
Adam Cohenc2d6e892014-10-16 09:49:24 -0700103 * @param callbacks A set of callbacks provided by Launcher in relation to the overlay
104 * @return an interface used to make requests and notify the Launcher in relation to the overlay
105 */
Adam Cohena6d04922014-10-23 17:28:30 -0700106 public Launcher.LauncherOverlay setLauncherOverlayView(InsettableFrameLayout container,
Adam Cohenc2d6e892014-10-16 09:49:24 -0700107 Launcher.LauncherOverlayCallbacks callbacks);
108
Adam Cohen9211d422014-10-07 18:14:53 -0700109}