summaryrefslogtreecommitdiffstats
path: root/core/java/android/gadget/GadgetHost.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/gadget/GadgetHost.java')
-rw-r--r--core/java/android/gadget/GadgetHost.java249
1 files changed, 0 insertions, 249 deletions
diff --git a/core/java/android/gadget/GadgetHost.java b/core/java/android/gadget/GadgetHost.java
deleted file mode 100644
index 3d88b58..0000000
--- a/core/java/android/gadget/GadgetHost.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (C) 2006 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 android.gadget;
-
-import android.content.Context;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.widget.RemoteViews;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import com.android.internal.gadget.IGadgetHost;
-import com.android.internal.gadget.IGadgetService;
-
-/**
- * GadgetHost provides the interaction with the Gadget Service for apps,
- * like the home screen, that want to embed gadgets in their UI.
- */
-public class GadgetHost {
-
- static final int HANDLE_UPDATE = 1;
- static final int HANDLE_PROVIDER_CHANGED = 2;
-
- static Object sServiceLock = new Object();
- static IGadgetService sService;
-
- Context mContext;
- String mPackageName;
-
- class Callbacks extends IGadgetHost.Stub {
- public void updateGadget(int gadgetId, RemoteViews views) {
- Message msg = mHandler.obtainMessage(HANDLE_UPDATE);
- msg.arg1 = gadgetId;
- msg.obj = views;
- msg.sendToTarget();
- }
-
- public void providerChanged(int gadgetId, GadgetProviderInfo info) {
- Message msg = mHandler.obtainMessage(HANDLE_PROVIDER_CHANGED);
- msg.arg1 = gadgetId;
- msg.obj = info;
- msg.sendToTarget();
- }
- }
-
- class UpdateHandler extends Handler {
- public UpdateHandler(Looper looper) {
- super(looper);
- }
-
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case HANDLE_UPDATE: {
- updateGadgetView(msg.arg1, (RemoteViews)msg.obj);
- break;
- }
- case HANDLE_PROVIDER_CHANGED: {
- onProviderChanged(msg.arg1, (GadgetProviderInfo)msg.obj);
- break;
- }
- }
- }
- }
-
- Handler mHandler;
-
- int mHostId;
- Callbacks mCallbacks = new Callbacks();
- HashMap<Integer,GadgetHostView> mViews = new HashMap();
-
- public GadgetHost(Context context, int hostId) {
- mContext = context;
- mHostId = hostId;
- mHandler = new UpdateHandler(context.getMainLooper());
- synchronized (sServiceLock) {
- if (sService == null) {
- IBinder b = ServiceManager.getService(Context.GADGET_SERVICE);
- sService = IGadgetService.Stub.asInterface(b);
- }
- }
- }
-
- /**
- * Start receiving onGadgetChanged calls for your gadgets. Call this when your activity
- * becomes visible, i.e. from onStart() in your Activity.
- */
- public void startListening() {
- int[] updatedIds = null;
- ArrayList<RemoteViews> updatedViews = new ArrayList();
-
- try {
- if (mPackageName == null) {
- mPackageName = mContext.getPackageName();
- }
- updatedIds = sService.startListening(mCallbacks, mPackageName, mHostId, updatedViews);
- }
- catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
-
- final int N = updatedIds.length;
- for (int i=0; i<N; i++) {
- updateGadgetView(updatedIds[i], updatedViews.get(i));
- }
- }
-
- /**
- * Stop receiving onGadgetChanged calls for your gadgets. Call this when your activity is
- * no longer visible, i.e. from onStop() in your Activity.
- */
- public void stopListening() {
- try {
- sService.stopListening(mHostId);
- }
- catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
- }
-
- /**
- * Get a gadgetId for a host in the calling process.
- *
- * @return a gadgetId
- */
- public int allocateGadgetId() {
- try {
- if (mPackageName == null) {
- mPackageName = mContext.getPackageName();
- }
- return sService.allocateGadgetId(mPackageName, mHostId);
- }
- catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
- }
-
- /**
- * Stop listening to changes for this gadget.
- */
- public void deleteGadgetId(int gadgetId) {
- synchronized (mViews) {
- mViews.remove(gadgetId);
- try {
- sService.deleteGadgetId(gadgetId);
- }
- catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
- }
- }
-
- /**
- * Remove all records about this host from the gadget manager.
- * <ul>
- * <li>Call this when initializing your database, as it might be because of a data wipe.</li>
- * <li>Call this to have the gadget manager release all resources associated with your
- * host. Any future calls about this host will cause the records to be re-allocated.</li>
- * </ul>
- */
- public void deleteHost() {
- try {
- sService.deleteHost(mHostId);
- }
- catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
- }
-
- /**
- * Remove all records about all hosts for your package.
- * <ul>
- * <li>Call this when initializing your database, as it might be because of a data wipe.</li>
- * <li>Call this to have the gadget manager release all resources associated with your
- * host. Any future calls about this host will cause the records to be re-allocated.</li>
- * </ul>
- */
- public static void deleteAllHosts() {
- try {
- sService.deleteAllHosts();
- }
- catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
- }
-
- public final GadgetHostView createView(Context context, int gadgetId,
- GadgetProviderInfo gadget) {
- GadgetHostView view = onCreateView(context, gadgetId, gadget);
- view.setGadget(gadgetId, gadget);
- synchronized (mViews) {
- mViews.put(gadgetId, view);
- }
- RemoteViews views = null;
- try {
- views = sService.getGadgetViews(gadgetId);
- } catch (RemoteException e) {
- throw new RuntimeException("system server dead?", e);
- }
- view.updateGadget(views);
- return view;
- }
-
- /**
- * Called to create the GadgetHostView. Override to return a custom subclass if you
- * need it. {@more}
- */
- protected GadgetHostView onCreateView(Context context, int gadgetId,
- GadgetProviderInfo gadget) {
- return new GadgetHostView(context);
- }
-
- /**
- * Called when the gadget provider for a gadget has been upgraded to a new apk.
- */
- protected void onProviderChanged(int gadgetId, GadgetProviderInfo gadget) {
- }
-
- void updateGadgetView(int gadgetId, RemoteViews views) {
- GadgetHostView v;
- synchronized (mViews) {
- v = mViews.get(gadgetId);
- }
- if (v != null) {
- v.updateGadget(views);
- }
- }
-}
-
-