diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index 1df60b4bf..9216ef820 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -55,7 +55,6 @@ import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagMetadata; import com.todoroo.astrid.data.User; import com.todoroo.astrid.helper.AsyncImageView; -import com.todoroo.astrid.helper.ImageDiskCache; import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; @@ -374,7 +373,7 @@ public class TagSettingsActivity extends SherlockFragmentActivity { private void saveTagPictureLocally(Bitmap bitmap) { if (bitmap == null) return; try { - String tagPicture = ImageDiskCache.getPictureHash(tagData); + String tagPicture = RemoteModel.PictureHelper.getPictureHash(tagData); imageCache.put(tagPicture, bitmap); tagData.setValue(TagData.PICTURE, tagPicture); } diff --git a/astrid/src/com/todoroo/astrid/helper/ImageDiskCache.java b/astrid/src/com/todoroo/astrid/helper/ImageDiskCache.java deleted file mode 100644 index cd7f0dbc9..000000000 --- a/astrid/src/com/todoroo/astrid/helper/ImageDiskCache.java +++ /dev/null @@ -1,213 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.helper; -/* - * Copyright (C) 2011 MIT Mobile Experience Lab - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -import java.io.File; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Date; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Bitmap.CompressFormat; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.text.TextUtils; -import android.util.Log; - -import com.todoroo.andlib.service.ContextManager; -import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.astrid.data.TagData; -import com.todoroo.astrid.data.UserActivity; - -/** - *

- * An image download-and-cacher that also knows how to efficiently generate - * thumbnails of various sizes. - *

- * - *

- * The cache is shared with the entire process, so make sure you - * {@link #registerOnImageLoadListener(OnImageLoadListener)} and - * {@link #unregisterOnImageLoadListener(OnImageLoadListener)} any load - * listeners in your activities. - *

- * - * @author Steve Pomeroy - * - */ -@SuppressWarnings("nls") -public class ImageDiskCache extends DiskCache { - private static final String TAG = ImageDiskCache.class.getSimpleName(); - public static final String CACHED_IDENTIFIER = "cached::"; - - static final boolean DEBUG = false; - - - private long mIDCounter = 0; - - private static ImageDiskCache mInstance; - - - private final CompressFormat mCompressFormat; - private final int mQuality; - - public static ImageDiskCache getInstance() { - if (mInstance == null) { - mInstance = new ImageDiskCache(ContextManager.getContext().getCacheDir(), CompressFormat.JPEG, 85); - } - return mInstance; - } - - public static ImageDiskCache getInstance(Context context) { - if (mInstance == null) { - mInstance = new ImageDiskCache(context.getCacheDir(), CompressFormat.JPEG, 85); - } - return mInstance; - } - - private ImageDiskCache(File file, CompressFormat format, int quality) { - super(file, null, getExtension(format)); - - mCompressFormat = format; - mQuality = quality; - } - private static String getExtension(CompressFormat format) { - String extension; - switch (format) { - case JPEG: - extension = ".jpg"; - break; - - case PNG: - extension = ".png"; - break; - - default: - throw new IllegalArgumentException(); - } - - return extension; - } - - /** - * If loading a number of images where you don't have a unique ID to - * represent the individual load, this can be used to generate a sequential - * ID. - * - * @return a new unique ID - */ - public synchronized long getNewID() { - return mIDCounter++; - } - - @Override - protected Bitmap fromDisk(String key, InputStream in) { - - if (DEBUG) { - Log.d(TAG, "disk cache hit"); - } - try { - final Bitmap image = BitmapFactory.decodeStream(in); - return image; - - } catch (final OutOfMemoryError oom) { - return null; - } - } - - @Override - protected void toDisk(String key, Bitmap image, OutputStream out) { - if (DEBUG) { - Log.d(TAG, "cache write for key " + key); - } - if (image != null) { - if (!image.compress(mCompressFormat, mQuality, out)) { - Log.e(TAG, "error writing compressed image to disk for key " - + key); - } - } else { - Log.e(TAG, "attempting to write null image to cache"); - } - } - - - /** - * @param uri - * the image uri - * @return a key unique to the given uri - */ - public String getKey(Uri uri) { - return uri.toString(); - } - - - /** - * Returns an opaque cache key representing the given uri, width and height. - * - * @param uri - * an image uri - * @param width - * the desired image max width - * @param height - * the desired image max height - * @return a cache key unique to the given parameters - */ - public String getKey(Uri uri, int width, int height) { - return uri.buildUpon() - .appendQueryParameter("width", String.valueOf(width)) - .appendQueryParameter("height", String.valueOf(height)).build() - .toString(); - } - - - - /** - * Cancels all the asynchronous image loads. - * Note: currently does not function properly. - * - */ - public void cancelLoads() { - // TODO actually make it possible to cancel tasks - } - - @Override - public boolean contains(String key) { - return !TextUtils.isEmpty(key) && key.startsWith(CACHED_IDENTIFIER) && super.contains(key); - } - - public static String getPictureHash(UserActivity update) { - return String.format("%s%s%s", CACHED_IDENTIFIER, update.getValue(UserActivity.TARGET_ID), update.getValue(UserActivity.CREATED_AT)); - } - - - public static String getPictureHash(TagData tagData) { - long tag_date = 0; - if (tagData.containsValue(TagData.CREATION_DATE)) { - tag_date = tagData.getValue(TagData.CREATION_DATE); - } - if (tag_date == 0) { - tag_date = DateUtilities.dateToUnixtime(new Date()); - } - return String.format("%s%s%s", CACHED_IDENTIFIER,tagData.getValue(TagData.NAME), tag_date); - } -}