summaryrefslogtreecommitdiffstats
path: root/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java')
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java100
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);
+ }
}
}