diff options
author | Adam Lesinski <adamlesinski@google.com> | 2010-12-06 15:42:03 -0800 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2010-12-06 17:25:39 -0800 |
commit | d6bb51406fa63d93bf634b64e9f115e49a9c9c29 (patch) | |
tree | cbfb62607f9795300d6ea5e3b1f65492faa8891e /src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java | |
parent | 0ab0466df1edeb03700069a9989bf1ee30ce8fdf (diff) | |
download | android_packages_wallpapers_LivePicker-d6bb51406fa63d93bf634b64e9f115e49a9c9c29.tar.gz android_packages_wallpapers_LivePicker-d6bb51406fa63d93bf634b64e9f115e49a9c9c29.tar.bz2 android_packages_wallpapers_LivePicker-d6bb51406fa63d93bf634b64e9f115e49a9c9c29.zip |
Fixed bug in orientation change
-The Fragment was missing an empty public constructor
b/3257935
-Restructured some of the logic determining whether to
show a dialog or an embedded view
Change-Id: I42295ef88cd800b775ea6970c59c34cb46ca17d5
Diffstat (limited to 'src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java')
-rw-r--r-- | src/com/android/wallpaper/livepicker/LiveWallpaperActivity.java | 132 |
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); + } + } +} |