summaryrefslogtreecommitdiffstats
path: root/tests/GadgetHost/src/com/android/gadgethost/GadgetHostActivity.java
blob: 323141e8bb372072ade89412a311a2df71adb941 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * 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) {
        // TODO: Remove this hard-coded value when the GadgetInfo is real.
        gadget.initialLayout = R.layout.test_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();
        }
    };

}