diff options
Diffstat (limited to 'src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java')
-rw-r--r-- | src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java | 100 |
1 files changed, 88 insertions, 12 deletions
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java b/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java index ecfbdea..c96e18c 100644 --- a/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java +++ b/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java @@ -16,25 +16,46 @@ package com.android.wallpaper.livepicker; -import android.app.ListActivity; +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.app.FragmentTransaction; import android.app.WallpaperInfo; import android.os.Bundle; +import android.content.DialogInterface; import android.content.Intent; +import android.content.res.Configuration; +import android.util.Log; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.AdapterView; +import android.widget.BaseAdapter; -public class LiveWallpaperListActivity extends ListActivity implements - AdapterView.OnItemClickListener { +public class LiveWallpaperListActivity extends Activity { private static final String LOG_TAG = "LiveWallpapersPicker"; private static final int REQUEST_PREVIEW = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.live_wallpaper_list); + setContentView(R.layout.live_wallpaper_base); + ViewGroup baseView = (ViewGroup) findViewById(R.id.live_wallpaper_base_view); - setListAdapter(new LiveWallpaperListAdapter(this)); - getListView().setOnItemClickListener(this); + boolean isXLarge = (getResources().getConfiguration().screenLayout + & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE; + + DialogFragment fragment = new WallpaperDialogFragment(this, baseView, !isXLarge); + if (isXLarge) { + // When the screen is XLarge + fragment.show(getFragmentManager(), "dialog"); + } else { + // When the screen is normal. i.e: a phone + FragmentTransaction ft = getFragmentManager().openTransaction(); + ft.add(R.id.live_wallpaper_base_view, fragment); + ft.commit(); + } } @Override @@ -46,11 +67,66 @@ public class LiveWallpaperListActivity extends ListActivity implements } } - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - LiveWallpaperListAdapter.LiveWallpaperInfo wallpaperInfo = - (LiveWallpaperListAdapter.LiveWallpaperInfo) getListAdapter().getItem(position); - final Intent intent = wallpaperInfo.intent; - final WallpaperInfo info = wallpaperInfo.info; - LiveWallpaperPreview.showPreview(this, REQUEST_PREVIEW, intent, info); + private class WallpaperDialogFragment extends DialogFragment implements + AdapterView.OnItemClickListener{ + private Activity mActivity; + private LiveWallpaperListAdapter mAdapter; + private ViewGroup mBaseView; + private boolean mEmbedded; + + public WallpaperDialogFragment(Activity activity, ViewGroup baseView, boolean embedded) { + mActivity = activity; + mEmbedded = embedded; + mBaseView = baseView; + setCancelable(true); + } + + @Override + public void onDismiss(DialogInterface dialog) { + mActivity.finish(); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final int contentInset = getResources().getDimensionPixelSize( + R.dimen.dialog_content_inset); + View view = generateView(getLayoutInflater(), mBaseView); + + AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); + builder.setNegativeButton(R.string.wallpaper_cancel, null); + builder.setTitle(R.string.live_wallpaper_picker_title); + builder.setView(view, contentInset, contentInset, contentInset, contentInset); + return builder.create(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + if (mEmbedded) { + return generateView(inflater, container); + } + return super.onCreateView(inflater, container, savedInstanceState); + } + + @SuppressWarnings("unchecked") + private View generateView(LayoutInflater inflater, ViewGroup container) { + View layout = inflater.inflate(R.layout.live_wallpaper_list, container, false); + + mAdapter = new LiveWallpaperListAdapter(mActivity); + AdapterView<BaseAdapter> adapterView = + (AdapterView<BaseAdapter>) layout.findViewById(android.R.id.list); + adapterView.setAdapter(mAdapter); + adapterView.setOnItemClickListener(this); + adapterView.setEmptyView(layout.findViewById(android.R.id.empty)); + return layout; + } + + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + LiveWallpaperListAdapter.LiveWallpaperInfo wallpaperInfo = + (LiveWallpaperListAdapter.LiveWallpaperInfo) mAdapter.getItem(position); + final Intent intent = wallpaperInfo.intent; + final WallpaperInfo info = wallpaperInfo.info; + LiveWallpaperPreview.showPreview(mActivity, REQUEST_PREVIEW, intent, info); + } } } |