blob: d8de4e176d401df5b2eb1b07469d66dd54319155 [file] [log] [blame]
/*
* 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 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);
}
}
}