diff options
-rwxr-xr-x[-rw-r--r--] | src/com/android/gallery3d/app/AlbumSetDataLoader.java | 18 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/gallery3d/app/AlbumSetPage.java | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/gallery3d/app/TimeLineDataLoader.java | 17 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/gallery3d/app/TimeLinePage.java | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/gallery3d/ui/SelectionManager.java | 45 |
5 files changed, 73 insertions, 9 deletions
diff --git a/src/com/android/gallery3d/app/AlbumSetDataLoader.java b/src/com/android/gallery3d/app/AlbumSetDataLoader.java index 909d9109c..e52b433d4 100644..100755 --- a/src/com/android/gallery3d/app/AlbumSetDataLoader.java +++ b/src/com/android/gallery3d/app/AlbumSetDataLoader.java @@ -28,6 +28,7 @@ import com.android.gallery3d.data.MediaSet; import com.android.gallery3d.data.Path; import com.android.gallery3d.ui.SynchronizedHandler; +import java.util.ArrayList; import java.util.Arrays; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -66,7 +67,7 @@ public class AlbumSetDataLoader { private long mSourceVersion = MediaObject.INVALID_DATA_VERSION; private int mSize; - private DataListener mDataListener; + private ArrayList<DataListener> mDataListener = new ArrayList<>(); private LoadingListener mLoadingListener; private ReloadTask mReloadTask; @@ -224,7 +225,11 @@ public class AlbumSetDataLoader { } public void setModelListener(DataListener listener) { - mDataListener = listener; + mDataListener.add(listener); + } + + public void removeModelListener(DataListener listener) { + mDataListener.remove(listener); } public void setLoadingListener(LoadingListener listener) { @@ -287,7 +292,10 @@ public class AlbumSetDataLoader { mSourceVersion = info.version; if (mSize != info.size) { mSize = info.size; - if (mDataListener != null) mDataListener.onSizeChanged(mSize); + if (mDataListener != null) + for (DataListener l : mDataListener) { + l.onSizeChanged(mSize); + } if (mContentEnd > mSize) mContentEnd = mSize; if (mActiveEnd > mSize) mActiveEnd = mSize; } @@ -303,7 +311,9 @@ public class AlbumSetDataLoader { mTotalCount[pos] = info.totalCount; if (mDataListener != null && info.index >= mActiveStart && info.index < mActiveEnd) { - mDataListener.onContentChanged(info.index); + for (DataListener l : mDataListener) { + l.onContentChanged(info.index); + } } } return null; diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index ec75d2aa8..580cd0961 100644..100755 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -523,6 +523,7 @@ public class AlbumSetPage extends ActivityState implements mSelectionManager.setSourceMediaSet(mMediaSet); mAlbumSetDataAdapter = new AlbumSetDataLoader( mActivity, mMediaSet, DATA_CACHE_SIZE); + mSelectionManager.setAlbumSetDataLoader(mAlbumSetDataAdapter); mAlbumSetDataAdapter.setLoadingListener(new MyLoadingListener()); mAlbumSetView.setModel(mAlbumSetDataAdapter); } diff --git a/src/com/android/gallery3d/app/TimeLineDataLoader.java b/src/com/android/gallery3d/app/TimeLineDataLoader.java index 8fcc4dfde..590910375 100644..100755 --- a/src/com/android/gallery3d/app/TimeLineDataLoader.java +++ b/src/com/android/gallery3d/app/TimeLineDataLoader.java @@ -68,7 +68,7 @@ public class TimeLineDataLoader { private final Handler mMainHandler; private int mSize = 0; - private DataListener mDataListener; + private ArrayList<DataListener> mDataListener = new ArrayList<>(); private MySourceListener mSourceListener = new MySourceListener(); private LoadingListener mLoadingListener; @@ -240,7 +240,11 @@ public class TimeLineDataLoader { } public void setDataListener(DataListener listener) { - mDataListener = listener; + mDataListener.add(listener); + } + + public void removeDataListener(DataListener listener) { + mDataListener.remove(listener); } public void setLoadingListener(LoadingListener listener) { @@ -313,7 +317,10 @@ public class TimeLineDataLoader { mSourceVersion = info.version; if (mSize != info.size) { mSize = info.size; - if (mDataListener != null) mDataListener.onSizeChanged(); + if (mDataListener != null) + for (DataListener l : mDataListener) { + l.onSizeChanged(); + } if (mContentEnd > mSize) mContentEnd = mSize; if (mActiveEnd > mSize) mActiveEnd = mSize; } @@ -341,7 +348,9 @@ public class TimeLineDataLoader { mItemVersion[index] = itemVersion; mData[index] = updateItem; if (mDataListener != null && i >= mActiveStart && i < mActiveEnd) { - mDataListener.onContentChanged(i); + for (DataListener l : mDataListener) { + l.onContentChanged(i); + } } } } diff --git a/src/com/android/gallery3d/app/TimeLinePage.java b/src/com/android/gallery3d/app/TimeLinePage.java index 9da003eb9..978909849 100644..100755 --- a/src/com/android/gallery3d/app/TimeLinePage.java +++ b/src/com/android/gallery3d/app/TimeLinePage.java @@ -544,6 +544,7 @@ public class TimeLinePage extends ActivityState implements } mAlbumDataAdapter = new TimeLineDataLoader(mActivity, mMediaSet); mSelectionManager.setSourceMediaSet(mMediaSet); + mSelectionManager.setTimeLineDataLoader(mAlbumDataAdapter); //mSelectionManager.setAlbumDataAdapter(mAlbumDataAdapter); mAlbumDataAdapter.setLoadingListener(new MyLoadingListener()); mAlbumView.setModel(mAlbumDataAdapter); diff --git a/src/com/android/gallery3d/ui/SelectionManager.java b/src/com/android/gallery3d/ui/SelectionManager.java index 85616263c..da61bf19c 100644..100755 --- a/src/com/android/gallery3d/ui/SelectionManager.java +++ b/src/com/android/gallery3d/ui/SelectionManager.java @@ -17,6 +17,9 @@ package com.android.gallery3d.ui; import com.android.gallery3d.app.AbstractGalleryActivity; +import com.android.gallery3d.app.AlbumSetDataLoader; +import com.android.gallery3d.app.TimeLineDataLoader; +import com.android.gallery3d.data.ContentListener; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaObject; @@ -27,7 +30,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Set; -public class SelectionManager { +public class SelectionManager implements TimeLineDataLoader.DataListener, AlbumSetDataLoader.DataListener{ @SuppressWarnings("unused") private static final String TAG = "SelectionManager"; @@ -47,6 +50,26 @@ public class SelectionManager { /** mTotalSelectable is the count of items * exclude not selectable such as Title item in TimeLine. */ private int mTotalSelectable; + private TimeLineDataLoader mTimeLineDataLoader; + private AlbumSetDataLoader mAlbumSetDataLoader; + + @Override + public void onContentChanged(int index) { + } + + @Override + public void onSizeChanged(int size) { + if (mInverseSelection) { + selectAll(); + } + } + + @Override + public void onSizeChanged() { + if (mInverseSelection) { + selectAll(); + } + } public interface SelectionListener { public void onSelectionModeChange(int mode); @@ -99,6 +122,12 @@ public class SelectionManager { mInSelectionMode = true; if (mListener != null) mListener.onSelectionModeChange(ENTER_SELECTION_MODE); + if (mAlbumSetDataLoader != null) { + mAlbumSetDataLoader.setModelListener(this); + } + if (mTimeLineDataLoader != null) { + mTimeLineDataLoader.setDataListener(this); + } } public void leaveSelectionMode() { @@ -108,6 +137,12 @@ public class SelectionManager { mInverseSelection = false; mClickedSet.clear(); if (mListener != null) mListener.onSelectionModeChange(LEAVE_SELECTION_MODE); + if (mAlbumSetDataLoader != null) { + mAlbumSetDataLoader.removeModelListener(this); + } + if (mTimeLineDataLoader != null) { + mTimeLineDataLoader.removeDataListener(this); + } } public boolean isItemSelected(Path itemId) { @@ -293,4 +328,12 @@ public class SelectionManager { mSourceMediaSet = set; mTotal = -1; } + + public void setTimeLineDataLoader(TimeLineDataLoader loader) { + mTimeLineDataLoader = loader; + } + + public void setAlbumSetDataLoader(AlbumSetDataLoader loader) { + mAlbumSetDataLoader = loader; + } } |