summaryrefslogtreecommitdiffstats
path: root/src/com/android/wallpaper/livepicker
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2010-12-01 17:00:10 -0800
committerAdam Lesinski <adamlesinski@google.com>2010-12-03 15:58:36 -0800
commit494767f1f8a29d2197837463fb6477646e682478 (patch)
treee5e7a9516ca9915d4fb0d9f514447740675053b9 /src/com/android/wallpaper/livepicker
parent2a0932d0c10f620f70617702386aa3b3af03a63c (diff)
downloadandroid_packages_wallpapers_LivePicker-494767f1f8a29d2197837463fb6477646e682478.tar.gz
android_packages_wallpapers_LivePicker-494767f1f8a29d2197837463fb6477646e682478.tar.bz2
android_packages_wallpapers_LivePicker-494767f1f8a29d2197837463fb6477646e682478.zip
Updated the LivePicker for tablet UI
- Basic UI for the new LivePicker. Missing small tweaks Change-Id: I5d48e5ea5afc7feccf5f35124b944283060685df
Diffstat (limited to 'src/com/android/wallpaper/livepicker')
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java100
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java69
2 files changed, 140 insertions, 29 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);
+ }
}
}
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java b/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java
index 87e0384..6c07dcd 100644
--- a/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java
+++ b/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java
@@ -55,13 +55,29 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
private final LayoutInflater mInflater;
private final PackageManager mPackageManager;
- private List<LiveWallpaperInfo> mWallpapers = new ArrayList<LiveWallpaperInfo>();
+ private List<LiveWallpaperInfo> mWallpapers;
+ @SuppressWarnings("unchecked")
public LiveWallpaperListAdapter(Context context) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mPackageManager = context.getPackageManager();
- new LiveWallpaperEnumerator(context).execute();
+ List<ResolveInfo> list = mPackageManager.queryIntentServices(
+ new Intent(WallpaperService.SERVICE_INTERFACE),
+ PackageManager.GET_META_DATA);
+
+ mWallpapers = generatePlaceholderViews(list.size());
+
+ new LiveWallpaperEnumerator(context).execute(list);
+ }
+
+ private List<LiveWallpaperInfo> generatePlaceholderViews(int amount) {
+ ArrayList<LiveWallpaperInfo> list = new ArrayList<LiveWallpaperInfo>(amount);
+ for (int i = 0; i < amount; i++) {
+ LiveWallpaperInfo info = new LiveWallpaperInfo();
+ list.add(info);
+ }
+ return list;
}
public int getCount() {
@@ -85,7 +101,7 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
convertView = mInflater.inflate(R.layout.live_wallpaper_entry, parent, false);
holder = new ViewHolder();
- holder.title = (TextView) convertView.findViewById(R.id.title_author);
+ holder.title = (TextView) convertView.findViewById(R.id.title);
holder.description = (TextView) convertView.findViewById(R.id.description);
holder.thumbnail = (ImageView) convertView.findViewById(R.id.thumbnail);
convertView.setTag(holder);
@@ -94,15 +110,28 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
}
LiveWallpaperInfo wallpaperInfo = mWallpapers.get(position);
- holder.thumbnail.setImageDrawable(wallpaperInfo.thumbnail);
- holder.title.setText(wallpaperInfo.info.loadLabel(mPackageManager));
- try {
- holder.description.setVisibility(View.VISIBLE);
- holder.description.setText(Html.fromHtml(
- wallpaperInfo.info.loadDescription(mPackageManager).toString()));
- } catch (Resources.NotFoundException e) {
- holder.description.setVisibility(View.GONE);
+ if (holder.thumbnail != null) {
+ holder.thumbnail.setImageDrawable(wallpaperInfo.thumbnail);
}
+
+ if (holder.title != null && wallpaperInfo.info != null) {
+ holder.title.setText(wallpaperInfo.info.loadLabel(mPackageManager));
+ if (holder.thumbnail == null) {
+ holder.title.setCompoundDrawablesWithIntrinsicBounds(null, wallpaperInfo.thumbnail,
+ null, null);
+ }
+ }
+
+ if (holder.description != null && wallpaperInfo.info != null) {
+ try {
+ holder.description.setVisibility(View.VISIBLE);
+ holder.description.setText(Html.fromHtml(
+ wallpaperInfo.info.loadDescription(mPackageManager).toString()));
+ } catch (Resources.NotFoundException e) {
+ holder.description.setVisibility(View.GONE);
+ }
+ }
+
return convertView;
}
@@ -118,21 +147,22 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
ImageView thumbnail;
}
- private class LiveWallpaperEnumerator extends AsyncTask<Void, LiveWallpaperInfo, Void> {
+ private class LiveWallpaperEnumerator extends
+ AsyncTask<List<ResolveInfo>, LiveWallpaperInfo, Void> {
private Context mContext;
+ private int mWallpaperPosition;
public LiveWallpaperEnumerator(Context context) {
super();
mContext = context;
+ mWallpaperPosition = 0;
}
@Override
- protected Void doInBackground(Void... params) {
+ protected Void doInBackground(List<ResolveInfo>... params) {
final PackageManager packageManager = mContext.getPackageManager();
- List<ResolveInfo> list = packageManager.queryIntentServices(
- new Intent(WallpaperService.SERVICE_INTERFACE),
- PackageManager.GET_META_DATA);
+ List<ResolveInfo> list = params[0];
final Resources res = mContext.getResources();
BitmapDrawable galleryIcon = (BitmapDrawable) res.getDrawable(
@@ -214,7 +244,12 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
@Override
protected void onProgressUpdate(LiveWallpaperInfo...infos) {
for (LiveWallpaperInfo info : infos) {
- mWallpapers.add(info);
+ if (mWallpaperPosition < mWallpapers.size()) {
+ mWallpapers.set(mWallpaperPosition, info);
+ } else {
+ mWallpapers.add(info);
+ }
+ mWallpaperPosition++;
LiveWallpaperListAdapter.this.notifyDataSetChanged();
}
}