package org.openintents.shopping.widgets; import android.app.ListActivity; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import java.util.List; import org.openintents.shopping.R; import org.openintents.shopping.library.provider.ShoppingContract; import org.openintents.shopping.library.provider.ShoppingContract.Lists; import org.openintents.shopping.ui.PreferenceActivity; public class CheckItemsWidgetConfig extends ListActivity { private final static String PREFS = "check_items_widget"; private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setResult(RESULT_CANCELED); Cursor cursor = managedQuery(ShoppingContract.Lists.CONTENT_URI, new String[]{Lists._ID, Lists.NAME}, null, null, PreferenceActivity.getShoppingListSortOrderFromPrefs(this)); setListAdapter(new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, new String[]{Lists.NAME}, new int[]{android.R.id.text1})); Bundle extras = getIntent().getExtras(); if (extras != null) { mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { finish(); } setTitle(R.string.widget_choose_a_list); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { SharedPreferences sharedPreferences = getSharedPreferences(PREFS, 0); SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences .edit(); sharedPreferencesEditor.putLong(String.valueOf(mAppWidgetId), id); sharedPreferencesEditor.commit(); Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); updateWidgets(); finish(); } private void updateWidgets() { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); int[] a = appWidgetManager.getAppWidgetIds(new ComponentName( getPackageName(), CheckItemsWidget.class.getName())); List<AppWidgetProviderInfo> b = appWidgetManager .getInstalledProviders(); for (AppWidgetProviderInfo i : b) { if (i.provider.getPackageName().equals(getPackageName())) { a = appWidgetManager.getAppWidgetIds(i.provider); new CheckItemsWidget().onUpdate(this, appWidgetManager, a); } } } }