/* * Copyright (C) 2010 Florian Sundermann * * 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.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; public class PickWidgetDialog { AlertDialog fDialog; private final AppWidgetPickActivity fOwner; private class ClickListener implements DialogInterface.OnClickListener { public ClickListener() { } @Override public void onClick(DialogInterface dialog, int which) { SubItem subItem = PickWidgetDialog.this.fItemAdapter.getItem(which); PickWidgetDialog.this.fDialog.dismiss(); PickWidgetDialog.this.showDialog(subItem); } } private class CancelListener implements OnCancelListener { private final boolean fCancelOwner; public CancelListener(boolean cancelOwner) { fCancelOwner = cancelOwner; } @Override public void onCancel(DialogInterface dialog) { if (fCancelOwner) { PickWidgetDialog.this.fOwner.setResult(AppWidgetPickActivity.RESULT_CANCELED); PickWidgetDialog.this.fOwner.finish(); } else { PickWidgetDialog.this.showDialog(null); } } } public PickWidgetDialog(AppWidgetPickActivity owner) { fOwner = owner; } ItemAdapter fItemAdapter; public void showDialog(SubItem subItem) { if (subItem == null || subItem instanceof Item) { AlertDialog.Builder ab = new AlertDialog.Builder(fOwner); if (subItem == null) { ab.setTitle(fOwner.getString(R.string.widget_picker_title)); fItemAdapter = new ItemAdapter(fOwner, 0, fOwner.getItems()); ab.setAdapter(fItemAdapter, new ClickListener()); } else { Item itm = (Item)subItem; if (itm.getItems().size() == 1) { fOwner.finishOk(itm.getItems().get(0)); return; } ab.setTitle(subItem.getName()); fItemAdapter = new ItemAdapter(fOwner, 0, itm.getItems()); ab.setAdapter(fItemAdapter, new ClickListener()); } ab.setOnCancelListener(new CancelListener(subItem == null)); fDialog = ab.create(); fDialog.show(); } else fOwner.finishOk(subItem); } }