summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/WallpaperHandler.java
diff options
context:
space:
mode:
authorBijan Amirzada <bijana@codeaurora.org>2014-02-26 17:08:10 -0800
committerBijan Amirzada <bijana@codeaurora.org>2014-03-04 14:03:36 -0800
commit69b30beb16df7916c7679ed69d70e3ebcdeb2085 (patch)
tree9b81f4a397f041deb5f1ef54e91b92666712b385 /src/com/android/browser/WallpaperHandler.java
parent43555c9eb09b318276231eb31dab79f9f41f128c (diff)
downloadandroid_packages_apps_Gello-69b30beb16df7916c7679ed69d70e3ebcdeb2085.tar.gz
android_packages_apps_Gello-69b30beb16df7916c7679ed69d70e3ebcdeb2085.tar.bz2
android_packages_apps_Gello-69b30beb16df7916c7679ed69d70e3ebcdeb2085.zip
Copy of new files from 1599
Modified folder structure - added swe folder Change-Id: I2b48a1635ad0a6406398aa9f1021a1f43baebeef
Diffstat (limited to 'src/com/android/browser/WallpaperHandler.java')
-rw-r--r--src/com/android/browser/WallpaperHandler.java198
1 files changed, 0 insertions, 198 deletions
diff --git a/src/com/android/browser/WallpaperHandler.java b/src/com/android/browser/WallpaperHandler.java
deleted file mode 100644
index 0c60664e..00000000
--- a/src/com/android/browser/WallpaperHandler.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2010 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.browser;
-
-import android.app.ProgressDialog;
-import android.app.WallpaperManager;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.util.Log;
-import android.view.MenuItem;
-import android.view.MenuItem.OnMenuItemClickListener;
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * Handle setWallpaper requests
- *
- */
-public class WallpaperHandler extends Thread
- implements OnMenuItemClickListener, DialogInterface.OnCancelListener {
-
- private static final String LOGTAG = "WallpaperHandler";
- // This should be large enough for BitmapFactory to decode the header so
- // that we can mark and reset the input stream to avoid duplicate network i/o
- private static final int BUFFER_SIZE = 128 * 1024;
-
- private Context mContext;
- private String mUrl;
- private ProgressDialog mWallpaperProgress;
- private boolean mCanceled = false;
-
- public WallpaperHandler(Context context, String url) {
- mContext = context;
- mUrl = url;
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- mCanceled = true;
- }
-
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- if (mUrl != null && getState() == State.NEW) {
- // The user may have tried to set a image with a large file size as
- // their background so it may take a few moments to perform the
- // operation.
- // Display a progress spinner while it is working.
- mWallpaperProgress = new ProgressDialog(mContext);
- mWallpaperProgress.setIndeterminate(true);
- mWallpaperProgress.setMessage(mContext.getResources()
- .getText(R.string.progress_dialog_setting_wallpaper));
- mWallpaperProgress.setCancelable(true);
- mWallpaperProgress.setOnCancelListener(this);
- mWallpaperProgress.show();
- start();
- }
- return true;
- }
-
- @Override
- public void run() {
- WallpaperManager wm = WallpaperManager.getInstance(mContext);
- Drawable oldWallpaper = wm.getDrawable();
- InputStream inputstream = null;
- try {
- // TODO: This will cause the resource to be downloaded again, when
- // we should in most cases be able to grab it from the cache. To fix
- // this we should query WebCore to see if we can access a cached
- // version and instead open an input stream on that. This pattern
- // could also be used in the download manager where the same problem
- // exists.
- inputstream = openStream();
- if (inputstream != null) {
- if (!inputstream.markSupported()) {
- inputstream = new BufferedInputStream(inputstream, BUFFER_SIZE);
- }
- inputstream.mark(BUFFER_SIZE);
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- // We give decodeStream a wrapped input stream so it doesn't
- // mess with our mark (currently it sets a mark of 1024)
- BitmapFactory.decodeStream(
- new BufferedInputStream(inputstream), null, options);
- int maxWidth = wm.getDesiredMinimumWidth();
- int maxHeight = wm.getDesiredMinimumHeight();
- // Give maxWidth and maxHeight some leeway
- maxWidth *= 1.25;
- maxHeight *= 1.25;
- int bmWidth = options.outWidth;
- int bmHeight = options.outHeight;
-
- int scale = 1;
- while (bmWidth > maxWidth || bmHeight > maxHeight) {
- scale <<= 1;
- bmWidth >>= 1;
- bmHeight >>= 1;
- }
- options.inJustDecodeBounds = false;
- options.inSampleSize = scale;
- try {
- inputstream.reset();
- } catch (IOException e) {
- // BitmapFactory read more than we could buffer
- // Re-open the stream
- inputstream.close();
- inputstream = openStream();
- }
- Bitmap scaledWallpaper = BitmapFactory.decodeStream(inputstream,
- null, options);
- if (scaledWallpaper != null) {
- wm.setBitmap(scaledWallpaper);
- } else {
- Log.e(LOGTAG, "Unable to set new wallpaper, " +
- "decodeStream returned null.");
- }
- }
- } catch (IOException e) {
- Log.e(LOGTAG, "Unable to set new wallpaper");
- // Act as though the user canceled the operation so we try to
- // restore the old wallpaper.
- mCanceled = true;
- } finally {
- if (inputstream != null) {
- try {
- inputstream.close();
- } catch (IOException e) {
- // Ignore
- }
- }
- }
-
- if (mCanceled) {
- // Restore the old wallpaper if the user cancelled whilst we were
- // setting
- // the new wallpaper.
- int width = oldWallpaper.getIntrinsicWidth();
- int height = oldWallpaper.getIntrinsicHeight();
- Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
- Canvas canvas = new Canvas(bm);
- oldWallpaper.setBounds(0, 0, width, height);
- oldWallpaper.draw(canvas);
- canvas.setBitmap(null);
- try {
- wm.setBitmap(bm);
- } catch (IOException e) {
- Log.e(LOGTAG, "Unable to restore old wallpaper.");
- }
- mCanceled = false;
- }
-
- if (mWallpaperProgress.isShowing()) {
- mWallpaperProgress.dismiss();
- }
- }
-
- /**
- * Opens the input stream for the URL that the class should
- * use to set the wallpaper. Abstracts the difference between
- * standard URLs and data URLs.
- * @return An open InputStream for the data at the URL
- * @throws IOException if there is an error opening the URL stream
- * @throws MalformedURLException if the URL is malformed
- */
- private InputStream openStream() throws IOException, MalformedURLException {
- InputStream inputStream = null;
- if (DataUri.isDataUri(mUrl)) {
- DataUri dataUri = new DataUri(mUrl);
- inputStream = new ByteArrayInputStream(dataUri.getData());
- } else {
- URL url = new URL(mUrl);
- inputStream = url.openStream();
- }
- return inputStream;
- }
-}