Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4408)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java

Issue 2810773002: Photo Picker Dialog: Recursively traverse the photo directories. (Closed)
Patch Set: Add todo Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
index 17dde3f751d184e8bdd61754dbf8f3b81d296824..6c73972eadb3c87da1d3b42c7a18259e2ac6809e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
@@ -10,7 +10,6 @@ import android.graphics.Rect;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
-import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@@ -21,14 +20,14 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
import org.chromium.ui.PhotoPickerListener;
-import java.util.ArrayList;
import java.util.List;
/**
* A class for keeping track of common data associated with showing photos in
* the photo picker, for example the RecyclerView and the bitmap caches.
*/
-public class PickerCategoryView extends RelativeLayout implements OnMenuItemClickListener {
+public class PickerCategoryView extends RelativeLayout
+ implements FileEnumWorkerTask.FilesEnumeratedCallback, OnMenuItemClickListener {
// The dialog that owns us.
private PhotoPickerDialog mDialog;
@@ -69,21 +68,14 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
// The size of the bitmaps (equal length for width and height).
private int mImageSize;
+ // A worker task for asynchronously enumerating files off the main thread.
+ private FileEnumWorkerTask mWorkerTask;
+
public PickerCategoryView(Context context) {
super(context);
postConstruction(context);
}
- public PickerCategoryView(Context context, AttributeSet attrs) {
- super(context, attrs);
- postConstruction(context);
- }
-
- public PickerCategoryView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- postConstruction(context);
- }
-
/**
* A helper function for initializing the PickerCategoryView.
* @param context The context to use.
@@ -120,6 +112,16 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
}
/**
+ * Cancels any outstanding requests.
+ */
+ public void onDialogDismissed() {
+ if (mWorkerTask != null) {
+ mWorkerTask.cancel(true);
+ mWorkerTask = null;
+ }
+ }
+
+ /**
* Initializes the PickerCategoryView object.
* @param dialog The dialog showing us.
* @param listener The listener who should be notified of actions.
@@ -134,6 +136,16 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
mListener = listener;
}
+ // FileEnumWorkerTask.FilesEnumeratedCallback:
+
+ @Override
+ public void filesEnumeratedCallback(List<PickerBitmap> files) {
+ mPickerBitmaps = files;
+ if (files != null && files.size() > 0) {
+ mPickerAdapter.notifyDataSetChanged();
+ }
+ }
+
// OnMenuItemClickListener:
@Override
@@ -203,15 +215,12 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
* Prepares bitmaps for loading.
*/
private void prepareBitmaps() {
- // TODO(finnur): Use worker thread to fetch bitmaps instead of hard-coding.
- mPickerBitmaps = new ArrayList<>();
- mPickerBitmaps.add(0, new PickerBitmap("", 0, PickerBitmap.GALLERY));
- mPickerBitmaps.add(0, new PickerBitmap("", 0, PickerBitmap.CAMERA));
- mPickerBitmaps.add(new PickerBitmap("foo/bar1.jpg", 1, PickerBitmap.PICTURE));
- mPickerBitmaps.add(new PickerBitmap("foo/bar2.jpg", 2, PickerBitmap.PICTURE));
- mPickerBitmaps.add(new PickerBitmap("foo/bar3.jpg", 3, PickerBitmap.PICTURE));
- mPickerBitmaps.add(new PickerBitmap("foo/bar4.jpg", 4, PickerBitmap.PICTURE));
- mPickerAdapter.notifyDataSetChanged();
+ if (mWorkerTask != null) {
+ mWorkerTask.cancel(true);
+ }
+
+ mWorkerTask = new FileEnumWorkerTask(this, new MimeTypeFileFilter("image/*"));
+ mWorkerTask.execute();
}
/**

Powered by Google App Engine
This is Rietveld 408576698