aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRohit Yengisetty <rohit@cyngn.com>2015-02-18 10:21:33 -0800
committerMatt Garnes <matt@cyngn.com>2015-02-19 02:07:15 +0000
commit70b420be1ef26cfaa9f14f069a3388bdaab44786 (patch)
treedc72af52e3fbaba6a391d66e6e82b504302e4572 /src
parentfe783402bb7f5c80345d485cbd2525330b59008e (diff)
downloadandroid_packages_apps_CMFileManager-70b420be1ef26cfaa9f14f069a3388bdaab44786.tar.gz
android_packages_apps_CMFileManager-70b420be1ef26cfaa9f14f069a3388bdaab44786.tar.bz2
android_packages_apps_CMFileManager-70b420be1ef26cfaa9f14f069a3388bdaab44786.zip
CM File Manager - Intent to open video files will have a playlist attached
In SearchActivity, intent to open video files will have an extra added with the list of all videos in the search results. Change-Id: Ibf48e74fd9f43ee3ac60575bad6c8f9fe1ec70ee
Diffstat (limited to 'src')
-rw-r--r--src/com/cyanogenmod/filemanager/activities/SearchActivity.java59
-rw-r--r--src/com/cyanogenmod/filemanager/adapters/SearchResultAdapter.java2
-rw-r--r--src/com/cyanogenmod/filemanager/model/FileSystemObject.java15
3 files changed, 75 insertions, 1 deletions
diff --git a/src/com/cyanogenmod/filemanager/activities/SearchActivity.java b/src/com/cyanogenmod/filemanager/activities/SearchActivity.java
index b632c78e..c7772361 100644
--- a/src/com/cyanogenmod/filemanager/activities/SearchActivity.java
+++ b/src/com/cyanogenmod/filemanager/activities/SearchActivity.java
@@ -20,6 +20,7 @@ import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.SearchManager;
+import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
@@ -28,6 +29,7 @@ import android.content.IntentFilter;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.PorterDuff;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.preference.PreferenceActivity;
@@ -1026,7 +1028,42 @@ public class SearchActivity extends Activity
fso = symlink.getLinkRef();
}
- // Open the file with the preferred registered app
+ // special treatment for video files
+ // all of the video files in the current search will also be sent as an extra in the
+ // intent along with the item that was clicked
+ MimeTypeCategory fileCategory = MimeTypeHelper.getCategoryFromExt(this,
+ FileHelper.getExtension(fso));
+ if (fileCategory == MimeTypeCategory.VIDEO) {
+
+ ArrayList<FileSystemObject> filteredList = filterSearchResults(fileCategory);
+ ArrayList<Uri> uris = new ArrayList<Uri>(filteredList.size());
+
+ for (FileSystemObject f : filteredList) {
+ uris.add(f.getFileUri());
+ }
+
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setDataAndType(fso.getFileUri(), MimeTypeHelper.getMimeType(this, fso));
+ if (filteredList.size() > 1) {
+ intent.putParcelableArrayListExtra("EXTRA_FILE_LIST", uris);
+ }
+
+ if (DEBUG) {
+ Log.i(TAG, "video intent : " + intent);
+ }
+
+ try {
+ startActivity(intent);
+ } catch(ActivityNotFoundException e) {
+ Log.e(TAG, "ActivityNotFoundException when opening a video file");
+ Toast.makeText(this, R.string.activity_not_found_exception, Toast.LENGTH_SHORT);
+ }
+
+ return;
+ }
+
+ // for other files, open them with their preferred registered app
back(false, fso, false);
} catch (Throwable ex) {
@@ -1035,6 +1072,26 @@ public class SearchActivity extends Activity
}
/**
+ * Returns a subset of the search results falling into the given category
+ * @param category MimeTypeCategory
+ * @return list of FileSystemObjects that
+ */
+ private ArrayList<FileSystemObject> filterSearchResults(MimeTypeCategory category) {
+ ArrayList<FileSystemObject> filteredList = new ArrayList<FileSystemObject>();
+
+ if (mAdapter.getCount() < 1) return filteredList;
+
+ for (FileSystemObject fso : mAdapter.getFiles()) {
+ if (MimeTypeHelper.getCategoryFromExt(this, FileHelper.getExtension(fso))
+ == category) {
+ filteredList.add(fso);
+ }
+ }
+
+ return filteredList;
+ }
+
+ /**
* {@inheritDoc}
*/
@Override
diff --git a/src/com/cyanogenmod/filemanager/adapters/SearchResultAdapter.java b/src/com/cyanogenmod/filemanager/adapters/SearchResultAdapter.java
index 24b9f9d1..32775c8a 100644
--- a/src/com/cyanogenmod/filemanager/adapters/SearchResultAdapter.java
+++ b/src/com/cyanogenmod/filemanager/adapters/SearchResultAdapter.java
@@ -49,6 +49,7 @@ import com.cyanogenmod.filemanager.util.SearchHelper;
import java.io.File;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@@ -233,6 +234,7 @@ public class SearchResultAdapter extends ArrayAdapter<SearchResult> {
addAll(mNewItems);
sort(mSearchResultComparator);
mOriginalList.addAll(mNewItems); // cache files so enable mime type filtering later on
+ Collections.sort(mOriginalList, mSearchResultComparator);
// reset buffer
mNewItems.clear();
diff --git a/src/com/cyanogenmod/filemanager/model/FileSystemObject.java b/src/com/cyanogenmod/filemanager/model/FileSystemObject.java
index c87c07cc..578ea323 100644
--- a/src/com/cyanogenmod/filemanager/model/FileSystemObject.java
+++ b/src/com/cyanogenmod/filemanager/model/FileSystemObject.java
@@ -16,6 +16,8 @@
package com.cyanogenmod.filemanager.model;
+import android.content.ContentResolver;
+import android.net.Uri;
import com.cyanogenmod.filemanager.R;
import com.cyanogenmod.filemanager.util.FileHelper;
@@ -336,6 +338,19 @@ public abstract class FileSystemObject implements Serializable, Comparable<FileS
}
/**
+ * creates a file uri that references this FileSystemObject
+ * @return a file uri
+ */
+ public Uri getFileUri() {
+ Uri uri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_FILE)
+ .path(getFullPath())
+ .build();
+
+ return uri;
+ }
+
+ /**
* {@inheritDoc}
*/
@Override