summaryrefslogtreecommitdiff
path: root/Juick/Storage/ImageCache.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Juick/Storage/ImageCache.cs')
-rw-r--r--Juick/Storage/ImageCache.cs160
1 files changed, 0 insertions, 160 deletions
diff --git a/Juick/Storage/ImageCache.cs b/Juick/Storage/ImageCache.cs
deleted file mode 100644
index e45dc62..0000000
--- a/Juick/Storage/ImageCache.cs
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2010 Andreas Saudemont (andreas.saudemont@gmail.com)
-//
-// 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.
-
-using System;
-using System.Windows;
-using System.Windows.Media;
-
-namespace Kawagoe.Storage
-{
- /// <summary>
- /// Defines the base clase for image cache implementations.
- /// </summary>
- public abstract class ImageCache
- {
- /// <summary>
- /// The name of the default image cache.
- /// </summary>
- public const string DefaultImageCacheName = "default";
-
- private static ImageCache _defaultImageCache = null;
- private static object _defaultImageCacheLock = new object();
-
- /// <summary>
- /// The default image cache.
- /// If not set explicitely, a <see cref="PersistentImageCache"/> instance is used by default.
- /// </summary>
- public static ImageCache Default
- {
- get
- {
- if (!Deployment.Current.Dispatcher.CheckAccess())
- {
- throw new UnauthorizedAccessException("invalid cross-thread access");
- }
- lock (_defaultImageCacheLock)
- {
- if (_defaultImageCache == null)
- {
- _defaultImageCache = new PersistentImageCache(DefaultImageCacheName);
- }
- return _defaultImageCache;
- }
- }
- set
- {
- if (!Deployment.Current.Dispatcher.CheckAccess())
- {
- throw new UnauthorizedAccessException("invalid cross-thread access");
- }
- lock (_defaultImageCacheLock)
- {
- _defaultImageCache = value;
- }
- }
- }
-
- /// <summary>
- /// Initializes a new <see cref="ImageCache"/> instance.
- /// </summary>
- protected ImageCache(string name)
- {
- if (string.IsNullOrEmpty(name))
- {
- throw new ArgumentException();
- }
- Name = name;
- }
-
- /// <summary>
- /// The name of the image cache.
- /// </summary>
- protected string Name
- {
- get;
- private set;
- }
-
- /// <summary>
- /// Retrieves the source for the image with the specified URI from the cache, downloading it
- /// if needed.
- /// </summary>
- /// <param name="imageUri">The URI of the image. Must be an absolute URI.</param>
- /// <returns>An ImageSource object, or <c>null</c> if <paramref name="imageUri"/> is <c>null</c> or not an absolute URI.</returns>
- /// <exception cref="UnauthorizedAccessException">The method is not called in the UI thread.</exception>
- public ImageSource Get(Uri imageUri)
- {
- if (!Deployment.Current.Dispatcher.CheckAccess())
- {
- throw new UnauthorizedAccessException("invalid cross-thread access");
- }
- if (imageUri == null || !imageUri.IsAbsoluteUri)
- {
- return null;
- }
- return GetInternal(imageUri);
- }
-
- /// <summary>
- /// Retrieves the source for the image with the specified URI from the cache, downloading it
- /// if needed.
- /// </summary>
- /// <param name="imageUriString">The URI of the image. Must be an absolute URI.</param>
- /// <returns>An ImageSource object, or <c>null</c> if <paramref name="imageUriString"/> is <c>null</c>,
- /// the empty string, or not an absolute URI.</returns>
- /// <exception cref="UnauthorizedAccessException">The method is not called in the UI thread.</exception>
- public ImageSource Get(string imageUriString)
- {
- if (!Deployment.Current.Dispatcher.CheckAccess())
- {
- throw new UnauthorizedAccessException("invalid cross-thread access");
- }
- if (string.IsNullOrEmpty(imageUriString))
- {
- return null;
- }
- Uri imageUri;
- try
- {
- imageUri = new Uri(imageUriString, UriKind.Absolute);
- }
- catch (Exception)
- {
- return null;
- }
- return Get(imageUri);
- }
-
- /// <summary>
- /// The actual implementation of <see cref="ImageCache.Get"/>.
- /// </summary>
- protected abstract ImageSource GetInternal(Uri imageUri);
-
- /// <summary>
- /// Deletes all the images from the cache.
- /// This method can block the current thread for a long time; it is advised to call it from
- /// a background thread.
- /// </summary>
- public abstract void Clear();
-
- /// <summary>
- /// Overrides object.ToString().
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return string.Format("ImageCache:{0}", Name);
- }
- }
-}