Allow subclassing Launcher
Changes included:
- Make Launcher not final
- Add some new methods as hooks for subclasses
- Allow Launcher to intercept Workspace touch events
Change-Id: I9a2b628c853394a3b237a384336e1b9e5c2382ec
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index be83ee0..f7b6c5a 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -115,7 +115,7 @@
/**
* Default launcher application.
*/
-public final class Launcher extends Activity
+public class Launcher extends Activity
implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks,
View.OnTouchListener {
static final String TAG = "Launcher";
@@ -564,6 +564,10 @@
}
}
+ public LayoutInflater getInflater() {
+ return mInflater;
+ }
+
public DragLayer getDragLayer() {
return mDragLayer;
}
@@ -1430,7 +1434,7 @@
return mModel;
}
- void closeSystemDialogs() {
+ public void closeSystemDialogs() {
getWindow().closeAllPanels();
// Whatever we were doing is hereby canceled.
@@ -1629,14 +1633,20 @@
sourceBounds = mSearchDropTargetBar.getSearchBarBounds();
}
+ startSearch(initialQuery, selectInitialQuery,
+ appSearchData, sourceBounds);
+ }
+
+ public void startSearch(String initialQuery,
+ boolean selectInitialQuery, Bundle appSearchData, Rect sourceBounds) {
startGlobalSearch(initialQuery, selectInitialQuery,
- appSearchData, sourceBounds);
+ appSearchData, sourceBounds);
}
/**
* Starts the global search activity. This code is a copied from SearchManager
*/
- public void startGlobalSearch(String initialQuery,
+ private void startGlobalSearch(String initialQuery,
boolean selectInitialQuery, Bundle appSearchData, Rect sourceBounds) {
final SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
@@ -2060,6 +2070,10 @@
public void onClickVoiceButton(View v) {
v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+ startVoice();
+ }
+
+ public void startVoice() {
try {
final SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
@@ -2883,6 +2897,11 @@
// Send an accessibility event to announce the context change
getWindow().getDecorView()
.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+
+ onWorkspaceShown();
+ }
+
+ public void onWorkspaceShown() {
}
void showAllApps(boolean animated) {
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index b4dc7d3..d600e9e 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -663,6 +663,11 @@
}
}
}
+
+ if (mLauncher != null && mLauncher.onTouch(this, ev)) {
+ return true;
+ }
+
return super.onInterceptTouchEvent(ev);
}