diff options
Diffstat (limited to 'src')
4 files changed, 47 insertions, 162 deletions
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java b/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java index d8de4e1..9dd29c4 100644 --- a/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java +++ b/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java @@ -16,39 +16,25 @@ package com.android.wallpaper.livepicker; -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.app.Fragment; +import android.app.ListActivity; import android.app.WallpaperInfo; -import android.os.Bundle; -import android.content.DialogInterface; import android.content.Intent; -import android.util.Log; -import android.view.LayoutInflater; +import android.os.Bundle; import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.BaseAdapter; +import android.widget.ListView; -public class LiveWallpaperActivity extends Activity { - private static final String LOG_TAG = "LiveWallpapersPicker"; +public class LiveWallpaperActivity extends ListActivity { private static final int REQUEST_PREVIEW = 100; + private LiveWallpaperListAdapter mAdapter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.live_wallpaper_base); - Fragment fragmentView = getFragmentManager().findFragmentById(R.id.live_wallpaper_fragment); - if (fragmentView == null) { - /* When the screen is XLarge, the fragment is not included in the layout, so show it - * as a dialog - */ - DialogFragment fragment = WallpaperDialog.newInstance(); - fragment.show(getFragmentManager(), "dialog"); - } + mAdapter = new LiveWallpaperListAdapter(this); + setListAdapter(mAdapter); } @Override @@ -60,91 +46,16 @@ public class LiveWallpaperActivity extends Activity { } } - public static class WallpaperDialog extends DialogFragment implements - AdapterView.OnItemClickListener{ - private static final String EMBEDDED_KEY = "com.android.wallpaper.livepicker." - + "LiveWallpaperActivity$WallpaperDialog.EMBEDDED_KEY"; - private LiveWallpaperListAdapter mAdapter; - private boolean mEmbedded; - - public static WallpaperDialog newInstance() { - WallpaperDialog dialog = new WallpaperDialog(); - dialog.setCancelable(true); - return dialog; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (savedInstanceState != null && savedInstanceState.containsKey(EMBEDDED_KEY)) { - mEmbedded = savedInstanceState.getBoolean(EMBEDDED_KEY); - } else { - mEmbedded = isInLayout(); - } - } - - @Override - public void onSaveInstanceState(Bundle outState) { - outState.putBoolean(EMBEDDED_KEY, mEmbedded); - } - - @Override - public void onDismiss(DialogInterface dialog) { - /* On orientation changes, the dialog is effectively "dismissed" so this is called - * when the activity is no longer associated with this dying dialog fragment. We - * should just safely ignore this case by checking if getActivity() returns null - */ - Activity activity = getActivity(); - if (activity != null) { - activity.finish(); - } - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - final int contentInset = getResources().getDimensionPixelSize( - R.dimen.dialog_content_inset); - View view = generateView(getActivity().getLayoutInflater(), null); - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - 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 this fragment is embedded in the layout of this activity, then we should - * generate a view to display. Otherwise, a dialog will be created in - * onCreateDialog() - */ - if (mEmbedded) { - return generateView(inflater, container); - } - return null; - } - - @SuppressWarnings("unchecked") - private View generateView(LayoutInflater inflater, ViewGroup container) { - View layout = inflater.inflate(R.layout.live_wallpaper_list, container, false); - - mAdapter = new LiveWallpaperListAdapter(getActivity()); - 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(getActivity(), REQUEST_PREVIEW, intent, info); + @Override + protected void onListItemClick(ListView l, View v, int position, long id) { + LiveWallpaperListAdapter.LiveWallpaperInfo wallpaperInfo = + (LiveWallpaperListAdapter.LiveWallpaperInfo) mAdapter.getItem(position); + final WallpaperInfo info = wallpaperInfo.info; + if (info != null) { + Intent preview = new Intent(this, LiveWallpaperPreview.class); + preview.putExtra(LiveWallpaperPreview.EXTRA_LIVE_WALLPAPER_INFO, info); + startActivityForResult(preview, REQUEST_PREVIEW); } } + } diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperChange.java b/src/com/android/wallpaper/livepicker/LiveWallpaperChange.java index 586bdb0..efaf563 100644 --- a/src/com/android/wallpaper/livepicker/LiveWallpaperChange.java +++ b/src/com/android/wallpaper/livepicker/LiveWallpaperChange.java @@ -16,32 +16,26 @@ package com.android.wallpaper.livepicker; -import java.io.IOException; -import java.util.List; - -import org.xmlpull.v1.XmlPullParserException; - -import android.app.Activity; import android.app.WallpaperInfo; import android.app.WallpaperManager; -import android.os.Bundle; -import android.os.Parcelable; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; -import android.content.pm.ServiceInfo; +import android.os.Parcelable; import android.service.wallpaper.WallpaperService; import android.util.Log; -public class LiveWallpaperChange extends Activity { +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.util.List; + +public class LiveWallpaperChange extends LiveWallpaperPreview { private static final String TAG = "CHANGE_LIVE_WALLPAPER"; @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - + protected void init() { Parcelable obj = getIntent().getParcelableExtra( WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT); if (obj == null || !(obj instanceof ComponentName)) { @@ -63,21 +57,16 @@ public class LiveWallpaperChange extends Activity { for (int i=0; i<list.size(); i++) { ResolveInfo ri = list.get(i); if (ri.serviceInfo.name.equals(comp.getClassName())) { - WallpaperInfo info = null; + WallpaperInfo info; try { info = new WallpaperInfo(this, ri); - } catch (XmlPullParserException e) { - Log.w(TAG, "Bad wallpaper " + ri.serviceInfo, e); - finish(); - return; - } catch (IOException e) { + } catch (XmlPullParserException|IOException e) { Log.w(TAG, "Bad wallpaper " + ri.serviceInfo, e); finish(); return; } - Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE); - intent.setClassName(info.getPackageName(), info.getServiceName()); - LiveWallpaperPreview.showPreview(this, 0, intent, info); + + initUI(info); return; } } @@ -86,13 +75,4 @@ public class LiveWallpaperChange extends Activity { Log.w(TAG, "Not a live wallpaper: " + comp); finish(); } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - - // forward result code - setResult(resultCode); - finish(); - } } diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java b/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java index e526f9e..b245fb6 100644 --- a/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java +++ b/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java @@ -127,7 +127,6 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter public class LiveWallpaperInfo { public Drawable thumbnail; public WallpaperInfo info; - public Intent intent; } private class ViewHolder { @@ -185,8 +184,6 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter } LiveWallpaperInfo wallpaper = new LiveWallpaperInfo(); - wallpaper.intent = new Intent(WallpaperService.SERVICE_INTERFACE); - wallpaper.intent.setClassName(info.getPackageName(), info.getServiceName()); wallpaper.info = info; Drawable thumb = info.loadThumbnail(packageManager); diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java b/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java index 31fff0f..2f32e36 100644 --- a/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java +++ b/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java @@ -34,6 +34,7 @@ import android.os.RemoteException; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.Bundle; +import android.service.wallpaper.WallpaperService; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; @@ -46,9 +47,7 @@ import android.util.Log; import android.widget.TextView; public class LiveWallpaperPreview extends Activity { - static final String EXTRA_LIVE_WALLPAPER_INTENT = "android.live_wallpaper.intent"; - static final String EXTRA_LIVE_WALLPAPER_SETTINGS = "android.live_wallpaper.settings"; - static final String EXTRA_LIVE_WALLPAPER_PACKAGE = "android.live_wallpaper.package"; + static final String EXTRA_LIVE_WALLPAPER_INFO = "android.live_wallpaper.info"; private static final String LOG_TAG = "LiveWallpaperPreview"; @@ -58,40 +57,38 @@ public class LiveWallpaperPreview extends Activity { private String mSettings; private String mPackageName; private Intent mWallpaperIntent; + private View mView; private Dialog mDialog; - static void showPreview(Activity activity, int code, Intent intent, WallpaperInfo info) { - if (info == null) { - Log.w(LOG_TAG, "Failure showing preview", new Throwable()); - return; - } - Intent preview = new Intent(activity, LiveWallpaperPreview.class); - preview.putExtra(EXTRA_LIVE_WALLPAPER_INTENT, intent); - preview.putExtra(EXTRA_LIVE_WALLPAPER_SETTINGS, info.getSettingsActivity()); - preview.putExtra(EXTRA_LIVE_WALLPAPER_PACKAGE, info.getPackageName()); - activity.startActivityForResult(preview, code); - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + init(); + } + protected void init() { Bundle extras = getIntent().getExtras(); - mWallpaperIntent = (Intent) extras.get(EXTRA_LIVE_WALLPAPER_INTENT); - if (mWallpaperIntent == null) { + WallpaperInfo info = extras.getParcelable(EXTRA_LIVE_WALLPAPER_INFO); + if (info == null) { setResult(RESULT_CANCELED); finish(); } + initUI(info); + } + + protected void initUI(WallpaperInfo info) { + mSettings = info.getSettingsActivity(); + mPackageName = info.getPackageName(); + mWallpaperIntent = new Intent(WallpaperService.SERVICE_INTERFACE) + .setClassName(info.getPackageName(), info.getServiceName()); + final ActionBar actionBar = getActionBar(); actionBar.setCustomView(R.layout.live_wallpaper_preview); mView = actionBar.getCustomView(); - mSettings = extras.getString(EXTRA_LIVE_WALLPAPER_SETTINGS); - mPackageName = extras.getString(EXTRA_LIVE_WALLPAPER_PACKAGE); mWallpaperManager = WallpaperManager.getInstance(this); - mWallpaperConnection = new WallpaperConnection(mWallpaperIntent); } |