summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/data/ClusterAlbumSet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/data/ClusterAlbumSet.java')
-rw-r--r--src/com/android/gallery3d/data/ClusterAlbumSet.java159
1 files changed, 0 insertions, 159 deletions
diff --git a/src/com/android/gallery3d/data/ClusterAlbumSet.java b/src/com/android/gallery3d/data/ClusterAlbumSet.java
deleted file mode 100644
index cb212ba36..000000000
--- a/src/com/android/gallery3d/data/ClusterAlbumSet.java
+++ /dev/null
@@ -1,159 +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.gallery3d.data;
-
-import android.content.Context;
-import android.net.Uri;
-
-import com.android.gallery3d.app.GalleryApp;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-
-public class ClusterAlbumSet extends MediaSet implements ContentListener {
- @SuppressWarnings("unused")
- private static final String TAG = "ClusterAlbumSet";
- private GalleryApp mApplication;
- private MediaSet mBaseSet;
- private int mKind;
- private ArrayList<ClusterAlbum> mAlbums = new ArrayList<ClusterAlbum>();
- private boolean mFirstReloadDone;
-
- public ClusterAlbumSet(Path path, GalleryApp application,
- MediaSet baseSet, int kind) {
- super(path, INVALID_DATA_VERSION);
- mApplication = application;
- mBaseSet = baseSet;
- mKind = kind;
- baseSet.addContentListener(this);
- }
-
- @Override
- public MediaSet getSubMediaSet(int index) {
- return mAlbums.get(index);
- }
-
- @Override
- public int getSubMediaSetCount() {
- return mAlbums.size();
- }
-
- @Override
- public String getName() {
- return mBaseSet.getName();
- }
-
- @Override
- public long reload() {
- if (mBaseSet.reload() > mDataVersion) {
- if (mFirstReloadDone) {
- updateClustersContents();
- } else {
- updateClusters();
- mFirstReloadDone = true;
- }
- mDataVersion = nextVersionNumber();
- }
- return mDataVersion;
- }
-
- @Override
- public void onContentDirty() {
- notifyContentChanged();
- }
-
- private void updateClusters() {
- mAlbums.clear();
- Clustering clustering;
- Context context = mApplication.getAndroidContext();
- switch (mKind) {
- case ClusterSource.CLUSTER_ALBUMSET_TIME:
- clustering = new TimeClustering(context);
- break;
- case ClusterSource.CLUSTER_ALBUMSET_LOCATION:
- clustering = new LocationClustering(context);
- break;
- case ClusterSource.CLUSTER_ALBUMSET_TAG:
- clustering = new TagClustering(context);
- break;
- case ClusterSource.CLUSTER_ALBUMSET_FACE:
- clustering = new FaceClustering(context);
- break;
- default: /* CLUSTER_ALBUMSET_SIZE */
- clustering = new SizeClustering(context);
- break;
- }
-
- clustering.run(mBaseSet);
- int n = clustering.getNumberOfClusters();
- DataManager dataManager = mApplication.getDataManager();
- for (int i = 0; i < n; i++) {
- Path childPath;
- String childName = clustering.getClusterName(i);
- if (mKind == ClusterSource.CLUSTER_ALBUMSET_TAG) {
- childPath = mPath.getChild(Uri.encode(childName));
- } else if (mKind == ClusterSource.CLUSTER_ALBUMSET_SIZE) {
- long minSize = ((SizeClustering) clustering).getMinSize(i);
- childPath = mPath.getChild(minSize);
- } else {
- childPath = mPath.getChild(i);
- }
-
- ClusterAlbum album;
- synchronized (DataManager.LOCK) {
- album = (ClusterAlbum) dataManager.peekMediaObject(childPath);
- if (album == null) {
- album = new ClusterAlbum(childPath, dataManager, this);
- }
- }
- album.setMediaItems(clustering.getCluster(i));
- album.setName(childName);
- album.setCoverMediaItem(clustering.getClusterCover(i));
- mAlbums.add(album);
- }
- }
-
- private void updateClustersContents() {
- final HashSet<Path> existing = new HashSet<Path>();
- mBaseSet.enumerateTotalMediaItems(new MediaSet.ItemConsumer() {
- @Override
- public void consume(int index, MediaItem item) {
- existing.add(item.getPath());
- }
- });
-
- int n = mAlbums.size();
-
- // The loop goes backwards because we may remove empty albums from
- // mAlbums.
- for (int i = n - 1; i >= 0; i--) {
- ArrayList<Path> oldPaths = mAlbums.get(i).getMediaItems();
- ArrayList<Path> newPaths = new ArrayList<Path>();
- int m = oldPaths.size();
- for (int j = 0; j < m; j++) {
- Path p = oldPaths.get(j);
- if (existing.contains(p)) {
- newPaths.add(p);
- }
- }
- mAlbums.get(i).setMediaItems(newPaths);
- if (newPaths.isEmpty()) {
- mAlbums.remove(i);
- }
- }
- }
-}