/* * Copyright (C) 2011 The original author or authors. * * 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.zapta.apps.maniana.settings; import android.content.Context; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import com.zapta.apps.maniana.R; import com.zapta.apps.maniana.annotations.ActivityScope; import com.zapta.apps.maniana.util.PopupsTracker; import com.zapta.apps.maniana.util.TrackableDialogPopup; /** * Dialog to select one of a few thumbnails (e.g. theme selection) * * @author Tal Dayan */ @ActivityScope public class ThumbnailSelector<T extends Thumbnail> extends TrackableDialogPopup { public interface ThumbnailSelectorListener<T extends Thumbnail> { void onThumbnailSelection(T thumbnail); } private final T[] mThumbnails; private final ThumbnailSelectorListener<T> mListener; public ThumbnailSelector(Context context, T[] thumbnails, PopupsTracker parentPopupTracker, ThumbnailSelectorListener<T> listener) { super(context, parentPopupTracker); mThumbnails = thumbnails; mListener = listener; requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.thumbnail_selector_layout); ListView listView = (ListView) findViewById(R.id.selector_list); listView.setAdapter(new ThumbnailSelectorAdapter<T>(context, thumbnails, 0xff444444)); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { handleItemClick(position); } }); } private final void handleItemClick(int index) { dismiss(); mListener.onThumbnailSelection(mThumbnails[index]); } }