summaryrefslogtreecommitdiffstats
path: root/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java')
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java b/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java
new file mode 100644
index 0000000..130dcfa
--- /dev/null
+++ b/src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * 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.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.WallpaperInfo;
+import android.os.Bundle;
+import android.content.DialogInterface;
+import android.content.Intent;
+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 LiveWallpaperActivity 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_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");
+ }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (requestCode == REQUEST_PREVIEW) {
+ if (resultCode == RESULT_OK) finish();
+ }
+ }
+
+ public static class WallpaperDialog extends DialogFragment implements
+ AdapterView.OnItemClickListener{
+ private LiveWallpaperListAdapter mAdapter;
+
+ public static WallpaperDialog newInstance() {
+ WallpaperDialog dialog = new WallpaperDialog();
+ dialog.setCancelable(true);
+ return dialog;
+ }
+
+ @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 (isInLayout()) {
+ 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);
+ }
+ }
+}