| /* |
| * Copyright (C) 2008 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.gadgethost; |
| |
| import android.app.Activity; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.gadget.GadgetHost; |
| import android.gadget.GadgetHostView; |
| import android.gadget.GadgetInfo; |
| import android.gadget.GadgetManager; |
| import android.os.Bundle; |
| import android.util.Log; |
| import android.view.ContextMenu; |
| import android.view.View; |
| import android.widget.LinearLayout; |
| |
| public class GadgetHostActivity extends Activity |
| { |
| static final String TAG = "GadgetHostActivity"; |
| |
| static final int DISCOVER_GADGET_REQUEST = 1; |
| |
| GadgetManager mGadgetManager; |
| GadgetContainerView mGadgetContainer; |
| |
| public GadgetHostActivity() { |
| mGadgetManager = GadgetManager.getInstance(this); |
| } |
| |
| @Override |
| public void onCreate(Bundle icicle) { |
| super.onCreate(icicle); |
| setContentView(R.layout.gadget_host); |
| |
| findViewById(R.id.add_gadget).setOnClickListener(mOnClickListener); |
| mGadgetContainer = (GadgetContainerView)findViewById(R.id.gadget_container); |
| } |
| |
| View.OnClickListener mOnClickListener = new View.OnClickListener() { |
| public void onClick(View v) { |
| discoverGadget(DISCOVER_GADGET_REQUEST); |
| } |
| }; |
| |
| void discoverGadget(int requestCode) { |
| Intent intent = new Intent(GadgetManager.GADGET_PICK_ACTION); |
| startActivityForResult(intent, requestCode); |
| } |
| |
| void handleGadgetPickResult(int resultCode, Intent data) { |
| if (resultCode == RESULT_OK) { |
| Bundle extras = data.getExtras(); |
| int gadgetId = extras.getInt(GadgetManager.EXTRA_GADGET_ID); |
| GadgetInfo gadget = mGadgetManager.getGadgetInfo(gadgetId); |
| |
| if (gadget.configure != null) { |
| // configure the gadget if we should |
| |
| // TODO: start the activity. Watch for a cancel result. If it returns |
| // RESULT_CANCELED, then remove the gadget. |
| } else { |
| // just add it as is |
| addGadgetView(gadgetId, gadget); |
| } |
| } |
| } |
| |
| void addGadgetView(int gadgetId, GadgetInfo gadget) { |
| // Inflate the gadget's RemoteViews |
| GadgetHostView view = mHost.createView(this, gadgetId, gadget); |
| |
| // Add it to the list |
| LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( |
| 65, // LinearLayout.LayoutParams.WRAP_CONTENT, |
| LinearLayout.LayoutParams.WRAP_CONTENT); |
| mGadgetContainer.addView(view, layoutParams); |
| } |
| |
| protected void onActivityResult(int requestCode, int resultCode, Intent data) { |
| switch (requestCode) { |
| case DISCOVER_GADGET_REQUEST: |
| handleGadgetPickResult(resultCode, data); |
| break; |
| } |
| } |
| |
| protected void onStart() { |
| super.onStart(); |
| mHost.startListening(); |
| } |
| |
| protected void onStop() { |
| super.onStop(); |
| mHost.stopListening(); |
| } |
| |
| class MyGadgetView extends GadgetHostView { |
| MyGadgetView() { |
| super(GadgetHostActivity.this); |
| } |
| |
| public void createContextMenu(ContextMenu menu) { |
| menu.add("Delete"); |
| } |
| } |
| |
| GadgetHost mHost = new GadgetHost(this, 0) { |
| protected GadgetHostView onCreateView(Context context, int gadgetId, GadgetInfo gadget) { |
| return new MyGadgetView(); |
| } |
| }; |
| |
| } |
| |
| |