summaryrefslogtreecommitdiffstats
path: root/src/com/android/photos/data/MediaSetLoader.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2013-02-15 14:32:08 -0800
committerJohn Reck <jreck@google.com>2013-02-22 15:09:35 -0800
commit608ef5cf3a15f235aa7b6d80924edbdb0fda365b (patch)
treefd5dbfe11a54c6d6fa4759a54464a69f1bad7e18 /src/com/android/photos/data/MediaSetLoader.java
parentf3e14d196191672129e2897e25627cc41f5f6534 (diff)
downloadandroid_packages_apps_Snap-608ef5cf3a15f235aa7b6d80924edbdb0fda365b.tar.gz
android_packages_apps_Snap-608ef5cf3a15f235aa7b6d80924edbdb0fda365b.tar.bz2
android_packages_apps_Snap-608ef5cf3a15f235aa7b6d80924edbdb0fda365b.zip
Start of photos
Change-Id: Id53dd96d8873e0fe6c2685e07cd7bdc0cde7ea75
Diffstat (limited to 'src/com/android/photos/data/MediaSetLoader.java')
-rw-r--r--src/com/android/photos/data/MediaSetLoader.java89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/com/android/photos/data/MediaSetLoader.java b/src/com/android/photos/data/MediaSetLoader.java
new file mode 100644
index 000000000..4afb7d922
--- /dev/null
+++ b/src/com/android/photos/data/MediaSetLoader.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2013 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.photos.data;
+
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+
+import com.android.gallery3d.data.ContentListener;
+import com.android.gallery3d.data.DataManager;
+import com.android.gallery3d.data.MediaSet;
+import com.android.gallery3d.data.MediaSet.SyncListener;
+import com.android.gallery3d.util.Future;
+
+/**
+ * Proof of concept, don't use
+ */
+public class MediaSetLoader extends AsyncTaskLoader<MediaSet> {
+
+ private static final SyncListener sNullListener = new SyncListener() {
+ @Override
+ public void onSyncDone(MediaSet mediaSet, int resultCode) {
+ }
+ };
+
+ private MediaSet mMediaSet;
+ private Future<Integer> mSyncTask = null;
+ private ContentListener mObserver = new ContentListener() {
+ @Override
+ public void onContentDirty() {
+ onContentChanged();
+ }
+ };
+
+ public MediaSetLoader(Context context, String path) {
+ super(context);
+ mMediaSet = DataManager.from(getContext()).getMediaSet(path);
+ }
+
+ @Override
+ protected void onStartLoading() {
+ super.onStartLoading();
+ mMediaSet.addContentListener(mObserver);
+ mSyncTask = mMediaSet.requestSync(sNullListener);
+ forceLoad();
+ }
+
+ @Override
+ protected boolean onCancelLoad() {
+ if (mSyncTask != null) {
+ mSyncTask.cancel();
+ mSyncTask = null;
+ }
+ return super.onCancelLoad();
+ }
+
+ @Override
+ protected void onStopLoading() {
+ super.onStopLoading();
+ cancelLoad();
+ mMediaSet.removeContentListener(mObserver);
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+ onStopLoading();
+ }
+
+ @Override
+ public MediaSet loadInBackground() {
+ mMediaSet.loadIfDirty();
+ return mMediaSet;
+ }
+
+}