/* * 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.settings; import android.app.LauncherActivity; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; import android.gadget.GadgetProviderInfo; import android.gadget.GadgetManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.util.Log; import java.text.Collator; import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class GadgetPickActivity extends LauncherActivity { private static final String TAG = "GadgetPickActivity"; GadgetManager mGadgetManager; int mGadgetId; public GadgetPickActivity() { mGadgetManager = GadgetManager.getInstance(this); } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); Bundle extras = getIntent().getExtras(); mGadgetId = extras.getInt(GadgetManager.EXTRA_GADGET_ID); setResultData(RESULT_CANCELED); } @Override public void onListItemClick(ListView l, View v, int position, long id) { Intent intent = intentForPosition(position); int result; try { mGadgetManager.bindGadgetId(mGadgetId, intent.getComponent()); result = RESULT_OK; } catch (IllegalArgumentException e) { // This is thrown if they're already bound, or otherwise somehow // bogus. Set the result to canceled, and exit. The app *should* // clean up at this point. We could pass the error along, but // it's not clear that that's useful -- the gadget will simply not // appear. result = RESULT_CANCELED; } setResultData(result); finish(); } @Override public List makeListItems() { List installed = mGadgetManager.getInstalledProviders(); PackageManager pm = getPackageManager(); Drawable defaultIcon = null; IconResizer resizer = new IconResizer(); ArrayList result = new ArrayList(); final int N = installed.size(); for (int i=0; i() { Collator mCollator = Collator.getInstance(); public int compare(ListItem lhs, ListItem rhs) { return mCollator.compare(lhs.label, rhs.label); } }); return result; } void setResultData(int code) { Intent result = new Intent(); result.putExtra(GadgetManager.EXTRA_GADGET_ID, mGadgetId); setResult(code, result); } }