Skip to content

Commit f9ff8f7

Browse files
committed
Feature Addition:
Specify Initial Directory for file browsing Show Only files with specific extension
1 parent bf28b2c commit f9ff8f7

File tree

6 files changed

+96
-5
lines changed

6 files changed

+96
-5
lines changed

filebrowser/src/main/java/com/aditya/filebrowser/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ public enum SELECTION_MODES {
4242

4343
public static final String APP_PREMISSION_KEY = "APP_PERMISSIONS";
4444
public static final String FILE_SELECTED_BROADCAST = "com.adityak.filebrowser.FILE_SELECTED_BROADCAST";
45-
public static final String BROADCAST_EXTRAS = "EXTRAS";
45+
public static final String INITIAL_DIRECTORY = "INITIAL_DIRECTORY";
46+
public static final String ALLOWED_FILE_EXTENSIONS = "ALLOWED_FILE_EXTENSIONS";
4647
public static final String BROADCAST_SELECTED_FILE = "BROADCAST_SELECTED_FILE";
4748
public static final String SELECTION_MODE = "SELECTION_MODE";
4849
public static final String SELECTED_ITEMS = "SELECTED_ITEMS";

filebrowser/src/main/java/com/aditya/filebrowser/FileBrowser.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import android.support.v7.app.AppCompatActivity;
1717
import android.support.v7.view.ActionMode;
1818
import android.support.v7.widget.LinearLayoutManager;
19-
import android.support.v7.widget.RecyclerView;
2019
import android.support.v7.widget.SearchView;
2120
import android.support.v7.widget.Toolbar;
2221
import android.view.Menu;
@@ -47,7 +46,10 @@
4746
import org.apache.commons.io.FilenameUtils;
4847

4948
import java.io.File;
49+
import java.util.Arrays;
50+
import java.util.HashSet;
5051
import java.util.List;
52+
import java.util.Set;
5153

5254

5355
public class FileBrowser extends AppCompatActivity implements OnFileChangedListener,IContextSwitcher {
@@ -77,6 +79,10 @@ public class FileBrowser extends AppCompatActivity implements OnFileChangedListe
7779
private SearchViewListener mSearchViewListener;
7880
private Handler mUIUpdateHandler;
7981
private List<FileItem> mFileList;
82+
83+
private String mInitialDirectory;
84+
private String mFilterFilesWithExtension;
85+
8086
@Override
8187
protected void onCreate(Bundle savedInstanceState) {
8288
super.onCreate(savedInstanceState);
@@ -92,6 +98,21 @@ protected void onCreate(Bundle savedInstanceState) {
9298
mUIUpdateHandler = new Handler(Looper.getMainLooper());
9399
io = new FileIO(mNavigationHelper,mUIUpdateHandler,mContext);
94100
op = Operations.getInstance(mContext);
101+
102+
//set file filter (i.e display files with the given extension)
103+
mFilterFilesWithExtension = getIntent().getStringExtra(Constants.ALLOWED_FILE_EXTENSIONS);
104+
if(mFilterFilesWithExtension!=null && !mFilterFilesWithExtension.isEmpty()) {
105+
String allowedFileExtension[] = mFilterFilesWithExtension.split(";");
106+
Set<String> allowedFilesFilter = new HashSet<String>(Arrays.asList(allowedFileExtension));
107+
mNavigationHelper.setAllowedFileExtensionFilter(allowedFilesFilter);
108+
}
109+
110+
//switch to initial directory if given
111+
mInitialDirectory = getIntent().getStringExtra(Constants.INITIAL_DIRECTORY);
112+
File initDir = new File(mInitialDirectory);
113+
if(mInitialDirectory!=null && !mInitialDirectory.isEmpty() && initDir.exists())
114+
mNavigationHelper.changeDirectory(initDir);
115+
95116
mFileList = mNavigationHelper.getFilesItemsInCurrentDirectory();
96117
}
97118

filebrowser/src/main/java/com/aditya/filebrowser/FileBrowserWithCustomHandler.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import android.support.v7.app.AppCompatActivity;
1616
import android.support.v7.view.ActionMode;
1717
import android.support.v7.widget.LinearLayoutManager;
18-
import android.support.v7.widget.RecyclerView;
1918
import android.support.v7.widget.SearchView;
2019
import android.support.v7.widget.Toolbar;
2120
import android.view.Menu;
@@ -44,7 +43,10 @@
4443
import org.apache.commons.io.FileUtils;
4544

4645
import java.io.File;
46+
import java.util.Arrays;
47+
import java.util.HashSet;
4748
import java.util.List;
49+
import java.util.Set;
4850

4951

5052
public class FileBrowserWithCustomHandler extends AppCompatActivity implements OnFileChangedListener,IContextSwitcher,SearchView.OnQueryTextListener {
@@ -75,6 +77,9 @@ public class FileBrowserWithCustomHandler extends AppCompatActivity implements O
7577
private Handler mUIUpdateHandler;
7678
private List<FileItem> mFileList;
7779

80+
private String mInitialDirectory;
81+
private String mFilterFilesWithExtension;
82+
7883
@Override
7984
protected void onCreate(Bundle savedInstanceState) {
8085
super.onCreate(savedInstanceState);
@@ -91,6 +96,21 @@ protected void onCreate(Bundle savedInstanceState) {
9196
io = new FileIO(mNavigationHelper,mUIUpdateHandler,mContext);
9297
op = Operations.getInstance(mContext);
9398
extras = getIntent().getExtras();
99+
100+
//set file filter (i.e display files with the given extension)
101+
mFilterFilesWithExtension = getIntent().getStringExtra(Constants.ALLOWED_FILE_EXTENSIONS);
102+
if(mFilterFilesWithExtension!=null && !mFilterFilesWithExtension.isEmpty()) {
103+
String allowedFileExtension[] = mFilterFilesWithExtension.split(";");
104+
Set<String> allowedFilesFilter = new HashSet<String>(Arrays.asList(allowedFileExtension));
105+
mNavigationHelper.setAllowedFileExtensionFilter(allowedFilesFilter);
106+
}
107+
108+
//switch to initial directory if given
109+
mInitialDirectory = getIntent().getStringExtra(Constants.INITIAL_DIRECTORY);
110+
File initDir = new File(mInitialDirectory);
111+
if(mInitialDirectory!=null && !mInitialDirectory.isEmpty() && initDir.exists())
112+
mNavigationHelper.changeDirectory(initDir);
113+
94114
mFileList = mNavigationHelper.getFilesItemsInCurrentDirectory();
95115
}
96116

filebrowser/src/main/java/com/aditya/filebrowser/FileChooser.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import android.support.v7.app.AppCompatActivity;
1212
import android.support.v7.view.ActionMode;
1313
import android.support.v7.widget.LinearLayoutManager;
14-
import android.support.v7.widget.RecyclerView;
1514
import android.support.v7.widget.SearchView;
1615
import android.support.v7.widget.Toolbar;
1716
import android.view.Menu;
@@ -39,7 +38,10 @@
3938

4039
import java.io.File;
4140
import java.util.ArrayList;
41+
import java.util.Arrays;
42+
import java.util.HashSet;
4243
import java.util.List;
44+
import java.util.Set;
4345

4446
/**
4547
* Created by Aditya on 4/17/2017.
@@ -74,6 +76,9 @@ public class FileChooser extends AppCompatActivity implements OnFileChangedListe
7476
private Handler mUIUpdateHandler;
7577
private List<FileItem> mFileList;
7678

79+
private String mInitialDirectory;
80+
private String mFilterFilesWithExtension;
81+
7782
@Override
7883
protected void onCreate(Bundle savedInstanceState) {
7984
super.onCreate(savedInstanceState);
@@ -90,6 +95,21 @@ protected void onCreate(Bundle savedInstanceState) {
9095
mUIUpdateHandler = new Handler(Looper.getMainLooper());
9196
io = new FileIO(mNavigationHelper,mUIUpdateHandler,mContext);
9297
op = Operations.getInstance(mContext);
98+
99+
//set file filter (i.e display files with the given extension)
100+
mFilterFilesWithExtension = getIntent().getStringExtra(Constants.ALLOWED_FILE_EXTENSIONS);
101+
if(mFilterFilesWithExtension!=null && !mFilterFilesWithExtension.isEmpty()) {
102+
String allowedFileExtension[] = mFilterFilesWithExtension.split(";");
103+
Set<String> allowedFilesFilter = new HashSet<String>(Arrays.asList(allowedFileExtension));
104+
mNavigationHelper.setAllowedFileExtensionFilter(allowedFilesFilter);
105+
}
106+
107+
//switch to initial directory if given
108+
mInitialDirectory = getIntent().getStringExtra(Constants.INITIAL_DIRECTORY);
109+
File initDir = new File(mInitialDirectory);
110+
if(mInitialDirectory!=null && !mInitialDirectory.isEmpty() && initDir.exists())
111+
mNavigationHelper.changeDirectory(initDir);
112+
93113
mFileList = mNavigationHelper.getFilesItemsInCurrentDirectory();
94114
}
95115

filebrowser/src/main/java/com/aditya/filebrowser/NavigationHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Arrays;
1919
import java.util.Comparator;
2020
import java.util.List;
21+
import java.util.Set;
2122

2223
/**
2324
* Created by Aditya on 4/18/2017.
@@ -35,6 +36,10 @@ public class NavigationHelper {
3536
this.mChangeDirectoryListeners = new ArrayList<>();
3637
}
3738

39+
public void setAllowedFileExtensionFilter(Set<String> allowedFileExtensions) {
40+
mFileNavigator.setAllowedFileExtensionFilter(allowedFileExtensions);
41+
}
42+
3843
public boolean navigateBack() {
3944

4045
File parent = mFileNavigator.getmCurrentNode().getParentFile();

filebrowser/src/main/java/com/aditya/filebrowser/fileoperations/FileNavigator.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22

33
import com.aditya.filebrowser.Constants;
44

5+
import org.apache.commons.io.FileUtils;
6+
import org.apache.commons.io.FilenameUtils;
7+
58
import java.io.File;
9+
import java.io.FilenameFilter;
610
import java.util.Arrays;
711
import java.util.List;
12+
import java.util.Set;
813

914
/**
1015
* Created by Aditya on 4/17/2017.
@@ -16,6 +21,8 @@ public class FileNavigator {
1621
private File mCurrentNode = Constants.internalStorageRoot;
1722
private File mRootNode = Constants.internalStorageRoot;
1823

24+
private Set<String> mAllowedFileExtensionFilter;
25+
1926
public static FileNavigator getInstance() {
2027
if(mNavigator==null) {
2128
mNavigator = new FileNavigator();
@@ -24,7 +31,19 @@ public static FileNavigator getInstance() {
2431
}
2532

2633
public File [] getFilesInCurrentDirectory() {
27-
return mCurrentNode.listFiles();
34+
if(mAllowedFileExtensionFilter!=null) {
35+
FilenameFilter fileNameFilter = new FilenameFilter() {
36+
@Override
37+
public boolean accept(File dir, String name) {
38+
if(mAllowedFileExtensionFilter.contains(FilenameUtils.getExtension(name)))
39+
return true;
40+
else
41+
return false;
42+
}
43+
};
44+
return mCurrentNode.listFiles(fileNameFilter);
45+
}
46+
return mCurrentNode.listFiles();
2847
}
2948

3049
private FileNavigator() {
@@ -39,6 +58,11 @@ public void setmCurrentNode(File mCurrentNode) {
3958
this.mCurrentNode = mCurrentNode;
4059
}
4160

61+
public void setAllowedFileExtensionFilter(Set<String> allowedFileExtensions) {
62+
this.mAllowedFileExtensionFilter = allowedFileExtensions;
63+
}
64+
65+
4266
public File getmRootNode() {
4367
return mRootNode;
4468
}

0 commit comments

Comments
 (0)