diff --git a/.travis.yml b/.travis.yml index 02b389b0..01f9dc83 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,5 +26,6 @@ script: - python2 app/src/test/shell/test.py after_failure: +- adb logcat -d -b main,system,events,crash - cat app/build/reports/findbugs/findbugs.html - cat app/build/reports/tests/debug/index.html diff --git a/app/build.gradle b/app/build.gradle index 1c152097..802589f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,6 +54,7 @@ dependencies { compile 'commons-io:commons-io:2.5' compile group: 'com.google.guava', name: 'guava', version: '20.0' compile 'com.nononsenseapps:filepicker:4.2.1' + implementation 'com.simplecityapps:recyclerview-fastscroll:1.0.9' implementation group: 'org.javatuples', name: 'javatuples', version: '1.2' implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.11.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d20ec42a..d0d86ea2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,7 +27,7 @@ diff --git a/app/src/main/java/protect/videotranscoder/activity/MainActivity.java b/app/src/main/java/protect/videotranscoder/activity/MainActivity.java index c04631bf..c7115746 100644 --- a/app/src/main/java/protect/videotranscoder/activity/MainActivity.java +++ b/app/src/main/java/protect/videotranscoder/activity/MainActivity.java @@ -71,6 +71,7 @@ import protect.videotranscoder.media.MediaContainer; import protect.videotranscoder.media.MediaInfo; import protect.videotranscoder.media.VideoCodec; +import protect.videotranscoder.picker.FastScrollerFilePickerActivity; import protect.videotranscoder.service.FFmpegProcessService; import protect.videotranscoder.service.MessageId; @@ -497,7 +498,7 @@ public void onClick(DialogInterface dialog, int which) */ private void selectVideo() { - Intent i = new Intent(this, FilePickerActivity.class); + Intent i = new Intent(this, FastScrollerFilePickerActivity.class); i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false); i.putExtra(FilePickerActivity.EXTRA_ALLOW_CREATE_DIR, false); @@ -1433,6 +1434,7 @@ private void displayAboutDialog() .put("javatuples", "https://www.javatuples.org/") .put("jackson-databind", "https://github.com/FasterXML/jackson-databind") .put("ACRA", "https://github.com/ACRA/acra") + .put("RecyclerView-FastScroll", "https://github.com/timusus/RecyclerView-FastScroll") .build(); final Map USED_ASSETS = ImmutableMap.of diff --git a/app/src/main/java/protect/videotranscoder/picker/FastScrollerFilePickerActivity.java b/app/src/main/java/protect/videotranscoder/picker/FastScrollerFilePickerActivity.java new file mode 100644 index 00000000..18498d99 --- /dev/null +++ b/app/src/main/java/protect/videotranscoder/picker/FastScrollerFilePickerActivity.java @@ -0,0 +1,41 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package protect.videotranscoder.picker; + +import android.os.Environment; +import android.support.annotation.Nullable; + +import com.nononsenseapps.filepicker.AbstractFilePickerActivity; +import com.nononsenseapps.filepicker.AbstractFilePickerFragment; + +import java.io.File; + +/** + * All this class does is return a suitable fragment. + */ +public class FastScrollerFilePickerActivity extends AbstractFilePickerActivity { + + public FastScrollerFilePickerActivity() { + super(); + } + + @Override + protected AbstractFilePickerFragment getFragment(@Nullable String startPath, int mode, boolean allowMultiple, boolean allowCreateDir, boolean allowExistingFile, boolean singleClick) + { + return getFragment(startPath, mode, allowMultiple, allowCreateDir); + } + + protected AbstractFilePickerFragment getFragment( + @Nullable final String startPath, final int mode, final boolean allowMultiple, + final boolean allowCreateDir) { + AbstractFilePickerFragment fragment = new FastScrollerFilePickerFragment(); + // startPath is allowed to be null. In that case, default folder should be SD-card and not "/" + fragment.setArgs(startPath != null ? startPath : Environment.getExternalStorageDirectory().getPath(), + mode, allowMultiple, allowCreateDir, true, false); + return fragment; + } +} \ No newline at end of file diff --git a/app/src/main/java/protect/videotranscoder/picker/FastScrollerFilePickerFragment.java b/app/src/main/java/protect/videotranscoder/picker/FastScrollerFilePickerFragment.java new file mode 100644 index 00000000..d2e180c9 --- /dev/null +++ b/app/src/main/java/protect/videotranscoder/picker/FastScrollerFilePickerFragment.java @@ -0,0 +1,16 @@ +package protect.videotranscoder.picker; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.nononsenseapps.filepicker.FilePickerFragment; + +import protect.videotranscoder.R; + +public class FastScrollerFilePickerFragment extends FilePickerFragment { + @Override + protected View inflateRootView(LayoutInflater inflater, ViewGroup container) { + return inflater.inflate(R.layout.fragment_fastscrollerfilepicker, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_fastscrollerfilepicker.xml b/app/src/main/res/layout/fragment_fastscrollerfilepicker.xml new file mode 100644 index 00000000..36cf5496 --- /dev/null +++ b/app/src/main/res/layout/fragment_fastscrollerfilepicker.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + +