Loading packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +16 −12 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import android.view.View; import android.view.ViewStub; import com.android.internal.logging.MetricsLogger; import com.android.systemui.R; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.AppWidgetProviderChangedEvent; import com.android.systemui.recents.misc.Console; import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.recents.misc.SystemServicesProxy; Loading @@ -45,14 +47,12 @@ import com.android.systemui.recents.views.RecentsView; import com.android.systemui.recents.views.SystemBarScrimViews; import com.android.systemui.recents.views.ViewAnimation; import java.lang.ref.WeakReference; import java.util.ArrayList; /** * The main Recents activity that is started from AlternateRecentsComponent. */ public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks, RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks { public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks { public final static int EVENT_BUS_PRIORITY = Recents.EVENT_BUS_PRIORITY + 1; Loading Loading @@ -322,6 +322,10 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Register this activity with the event bus EventBus.getDefault().register(this, EVENT_BUS_PRIORITY); // For the non-primary user, ensure that the SystemServicesProxy and configuration is // initialized RecentsTaskLoader.initialize(this); Loading Loading @@ -442,6 +446,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView // Stop listening for widget package changes if there was one bound mAppWidgetHost.stopListening(); EventBus.getDefault().unregister(this); } public void onEnterAnimationTriggered() { Loading @@ -451,16 +456,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView mRecentsView.startEnterRecentsAnimation(ctx); if (mSearchWidgetInfo != null) { final WeakReference<RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks> cbRef = new WeakReference<RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks>( RecentsActivity.this); ctx.postAnimationTrigger.addLastDecrementRunnable(new Runnable() { @Override public void run() { // Start listening for widget package changes if there is one bound RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks cb = cbRef.get(); if (cb != null) { mAppWidgetHost.startListening(cb); if (mAppWidgetHost != null) { mAppWidgetHost.startListening(); } } }); Loading Loading @@ -577,10 +578,13 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView mAfterPauseRunnable = r; } /**** RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks Implementation ****/ /**** EventBus events ****/ @Override public void refreshSearchWidgetView() { public final void onBusEvent(AppWidgetProviderChangedEvent event) { refreshSearchWidgetView(); } private void refreshSearchWidgetView() { if (mSearchWidgetInfo != null) { SystemServicesProxy ssp = RecentsTaskLoader.getInstance().getSystemServicesProxy(); int searchWidgetId = ssp.getSearchAppWidgetId(this); Loading packages/SystemUI/src/com/android/systemui/recents/RecentsAppWidgetHost.java +6 −13 Original line number Diff line number Diff line Loading @@ -20,24 +20,19 @@ import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetProviderInfo; import android.content.Context; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.AppWidgetProviderChangedEvent; /** Our special app widget host for the Search widget */ public class RecentsAppWidgetHost extends AppWidgetHost { /* Callbacks to notify when an app package changes */ interface RecentsAppWidgetHostCallbacks { void refreshSearchWidgetView(); } RecentsAppWidgetHostCallbacks mCb; boolean mIsListening; public RecentsAppWidgetHost(Context context, int hostId) { super(context, hostId); } public void startListening(RecentsAppWidgetHostCallbacks cb) { mCb = cb; public void startListening() { if (!mIsListening) { mIsListening = true; super.startListening(); Loading @@ -47,11 +42,9 @@ public class RecentsAppWidgetHost extends AppWidgetHost { @Override public void stopListening() { if (mIsListening) { mIsListening = false; super.stopListening(); } // Ensure that we release any references to the callbacks mCb = null; mIsListening = false; } @Override Loading @@ -66,8 +59,8 @@ public class RecentsAppWidgetHost extends AppWidgetHost { @Override protected void onProviderChanged(int appWidgetId, AppWidgetProviderInfo appWidgetInfo) { super.onProviderChanged(appWidgetId, appWidgetInfo); if (mIsListening && mCb != null) { mCb.refreshSearchWidgetView(); if (mIsListening) { EventBus.getDefault().send(new AppWidgetProviderChangedEvent()); } } } packages/SystemUI/src/com/android/systemui/recents/events/activity/AppWidgetProviderChangedEvent.java 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.recents.events.activity; import com.android.systemui.recents.RecentsAppWidgetHost; import com.android.systemui.recents.events.EventBus; /** * This is sent by the {@link RecentsAppWidgetHost} whenever the search provider widget changes, and * subscribers can update accordingly. */ public class AppWidgetProviderChangedEvent extends EventBus.Event { // Simple event } Loading
packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +16 −12 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import android.view.View; import android.view.ViewStub; import com.android.internal.logging.MetricsLogger; import com.android.systemui.R; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.AppWidgetProviderChangedEvent; import com.android.systemui.recents.misc.Console; import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.recents.misc.SystemServicesProxy; Loading @@ -45,14 +47,12 @@ import com.android.systemui.recents.views.RecentsView; import com.android.systemui.recents.views.SystemBarScrimViews; import com.android.systemui.recents.views.ViewAnimation; import java.lang.ref.WeakReference; import java.util.ArrayList; /** * The main Recents activity that is started from AlternateRecentsComponent. */ public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks, RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks { public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks { public final static int EVENT_BUS_PRIORITY = Recents.EVENT_BUS_PRIORITY + 1; Loading Loading @@ -322,6 +322,10 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Register this activity with the event bus EventBus.getDefault().register(this, EVENT_BUS_PRIORITY); // For the non-primary user, ensure that the SystemServicesProxy and configuration is // initialized RecentsTaskLoader.initialize(this); Loading Loading @@ -442,6 +446,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView // Stop listening for widget package changes if there was one bound mAppWidgetHost.stopListening(); EventBus.getDefault().unregister(this); } public void onEnterAnimationTriggered() { Loading @@ -451,16 +456,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView mRecentsView.startEnterRecentsAnimation(ctx); if (mSearchWidgetInfo != null) { final WeakReference<RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks> cbRef = new WeakReference<RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks>( RecentsActivity.this); ctx.postAnimationTrigger.addLastDecrementRunnable(new Runnable() { @Override public void run() { // Start listening for widget package changes if there is one bound RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks cb = cbRef.get(); if (cb != null) { mAppWidgetHost.startListening(cb); if (mAppWidgetHost != null) { mAppWidgetHost.startListening(); } } }); Loading Loading @@ -577,10 +578,13 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView mAfterPauseRunnable = r; } /**** RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks Implementation ****/ /**** EventBus events ****/ @Override public void refreshSearchWidgetView() { public final void onBusEvent(AppWidgetProviderChangedEvent event) { refreshSearchWidgetView(); } private void refreshSearchWidgetView() { if (mSearchWidgetInfo != null) { SystemServicesProxy ssp = RecentsTaskLoader.getInstance().getSystemServicesProxy(); int searchWidgetId = ssp.getSearchAppWidgetId(this); Loading
packages/SystemUI/src/com/android/systemui/recents/RecentsAppWidgetHost.java +6 −13 Original line number Diff line number Diff line Loading @@ -20,24 +20,19 @@ import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetProviderInfo; import android.content.Context; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.AppWidgetProviderChangedEvent; /** Our special app widget host for the Search widget */ public class RecentsAppWidgetHost extends AppWidgetHost { /* Callbacks to notify when an app package changes */ interface RecentsAppWidgetHostCallbacks { void refreshSearchWidgetView(); } RecentsAppWidgetHostCallbacks mCb; boolean mIsListening; public RecentsAppWidgetHost(Context context, int hostId) { super(context, hostId); } public void startListening(RecentsAppWidgetHostCallbacks cb) { mCb = cb; public void startListening() { if (!mIsListening) { mIsListening = true; super.startListening(); Loading @@ -47,11 +42,9 @@ public class RecentsAppWidgetHost extends AppWidgetHost { @Override public void stopListening() { if (mIsListening) { mIsListening = false; super.stopListening(); } // Ensure that we release any references to the callbacks mCb = null; mIsListening = false; } @Override Loading @@ -66,8 +59,8 @@ public class RecentsAppWidgetHost extends AppWidgetHost { @Override protected void onProviderChanged(int appWidgetId, AppWidgetProviderInfo appWidgetInfo) { super.onProviderChanged(appWidgetId, appWidgetInfo); if (mIsListening && mCb != null) { mCb.refreshSearchWidgetView(); if (mIsListening) { EventBus.getDefault().send(new AppWidgetProviderChangedEvent()); } } }
packages/SystemUI/src/com/android/systemui/recents/events/activity/AppWidgetProviderChangedEvent.java 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.recents.events.activity; import com.android.systemui.recents.RecentsAppWidgetHost; import com.android.systemui.recents.events.EventBus; /** * This is sent by the {@link RecentsAppWidgetHost} whenever the search provider widget changes, and * subscribers can update accordingly. */ public class AppWidgetProviderChangedEvent extends EventBus.Event { // Simple event }