From 2a54bddced9e4b135bf629e9948abff5e12141cd Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Thu, 14 Mar 2013 14:24:15 -0700 Subject: [PATCH] Removed an unused file and changed an attribution link --- .../andlib/service/HttpRestClient.java | 3 +- .../todoroo/andlib/utility/ImageLoader.java | 229 ------------------ 2 files changed, 1 insertion(+), 231 deletions(-) delete mode 100644 api/src/com/todoroo/andlib/utility/ImageLoader.java diff --git a/api/src/com/todoroo/andlib/service/HttpRestClient.java b/api/src/com/todoroo/andlib/service/HttpRestClient.java index 1b1ee2680..df55d8e76 100644 --- a/api/src/com/todoroo/andlib/service/HttpRestClient.java +++ b/api/src/com/todoroo/andlib/service/HttpRestClient.java @@ -45,8 +45,7 @@ import android.util.Log; * RestClient allows Android to consume web requests. *

* Portions by Praeda: - * http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple - * -restful-client-at-android/ + * http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/ * * @author Tim Su * diff --git a/api/src/com/todoroo/andlib/utility/ImageLoader.java b/api/src/com/todoroo/andlib/utility/ImageLoader.java deleted file mode 100644 index 077cb545a..000000000 --- a/api/src/com/todoroo/andlib/utility/ImageLoader.java +++ /dev/null @@ -1,229 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.andlib.utility; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.util.HashMap; -import java.util.Stack; - -import android.app.Activity; -import android.content.Context; -import android.net.Uri; -import android.text.TextUtils; -import android.util.Log; -import android.widget.ImageView; - -import com.todoroo.astrid.api.R; - -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you 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. - */ - -public class ImageLoader { - - // the simplest in-memory cache implementation. This should be replaced with - // something like SoftReference or BitmapOptions.inPurgeable(since 1.6) - private final HashMap cache = new HashMap(); - - private File cacheDir; - - public ImageLoader(Context context) { - // Make the background thread low priority. This way it will not affect - // the UI performance - photoLoaderThread.setPriority(Thread.NORM_PRIORITY - 1); - - // Find the dir to save cached images - if (android.os.Environment.getExternalStorageState().equals( - android.os.Environment.MEDIA_MOUNTED)) - cacheDir = new File( - android.os.Environment.getExternalStorageDirectory(), - "Android/data/com.todoroo.astrid/cache/"); //$NON-NLS-1$ - else - cacheDir = context.getCacheDir(); - if (!cacheDir.exists()) - cacheDir.mkdirs(); - } - - final int stub_id = R.drawable.image_placeholder; - - public void displayImage(String url, ImageView imageView) { - if (cache.containsKey(url)) - imageView.setImageURI(cache.get(url)); - else { - queuePhoto(url, imageView); - imageView.setImageResource(stub_id); - } - } - - private void queuePhoto(String url, ImageView imageView) { - // This ImageView may be used for other images before. So there may be - // some old tasks in the queue. We need to discard them. - photosQueue.Clean(imageView); - PhotoToLoad p = new PhotoToLoad(url, imageView); - synchronized (photosQueue.photosToLoad) { - photosQueue.photosToLoad.push(p); - photosQueue.photosToLoad.notifyAll(); - } - - // start thread if it's not started yet - if (photoLoaderThread.getState() == Thread.State.NEW) - photoLoaderThread.start(); - } - - private Uri getUri(String url) { - if(!TextUtils.isEmpty(url) && url.contains("://")) { //$NON-NLS-1$ - // identify images by hashcode. Not a perfect solution. - String filename = String.valueOf(url.hashCode()); - File f = new File(cacheDir, filename); - - // from SD cache - if (f.exists()) { - Uri b = Uri.fromFile(f); - System.out.println(f.toString()); - return b; - } - - // from web - try { - Uri bitmap = null; - InputStream is = new URL(url).openStream(); - OutputStream os = new FileOutputStream(f); - AndroidUtilities.copyStream(is, os); - os.close(); - bitmap = Uri.fromFile(f); - System.out.println(f.toString()); - return bitmap; - } catch (Exception e) { - Log.e("imagel-loader", "Unable to get URL", e); //$NON-NLS-1$ //$NON-NLS-2$ - return null; - } - } else { - return null; - } - } - - // Task for the queue - private class PhotoToLoad { - public String url; - public ImageView imageView; - - public PhotoToLoad(String u, ImageView i) { - url = u; - imageView = i; - imageView.setTag(url); - } - } - - PhotosQueue photosQueue = new PhotosQueue(); - - public void stopThread() { - photoLoaderThread.interrupt(); - } - - // stores list of photos to download - class PhotosQueue { - private final Stack photosToLoad = new Stack(); - - // removes all instances of this ImageView - public void Clean(ImageView image) { - for (int j = 0; j < photosToLoad.size();) { - if (photosToLoad.get(j).imageView == image) - photosToLoad.remove(j); - else - ++j; - } - } - } - - class PhotosLoader extends Thread { - @Override - public void run() { - try { - while (true) { - // thread waits until there are any images to load in the - // queue - if (photosQueue.photosToLoad.size() == 0) - synchronized (photosQueue.photosToLoad) { - photosQueue.photosToLoad.wait(); - } - if (photosQueue.photosToLoad.size() != 0) { - PhotoToLoad photoToLoad; - synchronized (photosQueue.photosToLoad) { - photoToLoad = photosQueue.photosToLoad.pop(); - } - Uri bmp = getUri(photoToLoad.url); - cache.put(photoToLoad.url, bmp); - if (((String) photoToLoad.imageView.getTag()).equals(photoToLoad.url)) { - UriDisplayer bd = new UriDisplayer(bmp, - photoToLoad.imageView); - Activity a = (Activity) photoToLoad.imageView.getContext(); - a.runOnUiThread(bd); - } - } - if (Thread.interrupted()) - break; - } - } catch (InterruptedException e) { - // allow thread to exit - } - } - } - - PhotosLoader photoLoaderThread = new PhotosLoader(); - - class UriDisplayer implements Runnable { - Uri uri; - ImageView imageView; - - public UriDisplayer(Uri u, ImageView i) { - uri = u; - imageView = i; - } - - public void run() { - if(uri == null) - return; - - File f = new File(uri.getPath()); - if (f.exists()) { - imageView.setImageURI(Uri.parse(f.toString())); - } else { - imageView.setImageResource(stub_id); - } - - } - } - - public void clearCache() { - // clear memory cache - cache.clear(); - - // clear SD cache - File[] files = cacheDir.listFiles(); - for (File f : files) - f.delete(); - } - -} \ No newline at end of file