Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ public class FileExplorerFragment extends Fragment implements FileExplorerRecy
private String thumbnailServerAuth;
private int thumbnailServerPort;
private boolean wrapFilenames;
private boolean showHiddenFiles;
private MenuItem menuShowHiddenFiles;
private SharedPreferences.OnSharedPreferenceChangeListener prefChangeListener;

/**
Expand Down Expand Up @@ -247,6 +249,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
};
sharedPreferences.registerOnSharedPreferenceChangeListener(prefChangeListener);
wrapFilenames = sharedPreferences.getBoolean(getString(R.string.pref_key_wrap_filenames), true);
showHiddenFiles = sharedPreferences.getBoolean(getString(R.string.pref_key_show_hidden_files), false);

if (goToDefaultSet) {
startAtRoot = sharedPreferences.getBoolean(getString(R.string.pref_key_start_at_root), false);
Expand Down Expand Up @@ -295,7 +298,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
fetchDirectoryTask = new FetchDirectoryContent().execute();
swipeRefreshLayout.setRefreshing(true);
} else {
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
}
}

Expand Down Expand Up @@ -587,6 +590,8 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menuLink = menu.findItem(R.id.action_link);
menuHttpServe = menu.findItem(R.id.action_serve);
menuEmptyTrash = menu.findItem(R.id.action_empty_trash);
menuShowHiddenFiles = menu.findItem(R.id.action_show_hidden_files);
menuShowHiddenFiles.setChecked(showHiddenFiles);

if (!remote.hasTrashCan()) {
menu.findItem(R.id.action_empty_trash).setVisible(false);
Expand Down Expand Up @@ -654,6 +659,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.action_go_to:
showSFTPgoToDialog();
return true;
case R.id.action_show_hidden_files:
toggleShowHiddenFiles();
return true;
case android.R.id.home:
if (isInMoveMode) {
cancelMoveClicked();
Expand Down Expand Up @@ -714,6 +722,34 @@ private void emptyTrash() {
.show();
}

private void toggleShowHiddenFiles() {
showHiddenFiles = !showHiddenFiles;
menuShowHiddenFiles.setChecked(showHiddenFiles);

// Save the preference
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
sharedPreferences.edit().putBoolean(getString(R.string.pref_key_show_hidden_files), showHiddenFiles).apply();

// Refresh the current directory view
if (fetchDirectoryTask != null) {
fetchDirectoryTask.cancel(true);
}
fetchDirectoryTask = new FetchDirectoryContent(true).execute();
}

private List<FileItem> filterHiddenFiles(List<FileItem> fileItems) {
if (showHiddenFiles || fileItems == null) {
return fileItems;
}
List<FileItem> filteredList = new ArrayList<>();
for (FileItem item : fileItems) {
if (!item.getName().startsWith(".")) {
filteredList.add(item);
}
}
return filteredList;
}

private void showSFTPgoToDialog() {
GoToDialog goToDialog = new GoToDialog();
goToDialog.show(getChildFragmentManager(), "go to dialog");
Expand Down Expand Up @@ -865,7 +901,7 @@ public void afterTextChanged(Editable s) {
}

private void searchDirContent(String search) {
List<FileItem> content = directoryObject.getDirectoryContent();
List<FileItem> content = filterHiddenFiles(directoryObject.getDirectoryContent());
List<FileItem> currentShown = recyclerViewAdapter.getCurrentContent();
List<FileItem> results = new ArrayList<>();

Expand Down Expand Up @@ -910,7 +946,7 @@ private void cancelMoveClicked() {
}
if (directoryObject.isPathInCache(moveStartPath)) {
directoryObject.restoreFromCache(moveStartPath);
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
} else {
directoryObject.setPath(moveStartPath);
recyclerViewAdapter.clear();
Expand Down Expand Up @@ -1039,7 +1075,7 @@ private void sortSelected(int sortById, int sortOrderId) {
}
recyclerViewAdapter.updateSortedData(sortedSearch);
} else {
recyclerViewAdapter.updateSortedData(directoryContent);
recyclerViewAdapter.updateSortedData(filterHiddenFiles(directoryContent));
}
if (sortOrder > 0) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
Expand Down Expand Up @@ -1152,7 +1188,7 @@ public boolean onBackButtonPressed() {
swipeRefreshLayout.setRefreshing(true);
directoryObject.restoreFromCache(path);
sortDirectory();
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
if (directoryPosition.containsKey(directoryObject.getCurrentPath())) {
int position = directoryPosition.get(directoryObject.getCurrentPath());
recyclerViewLinearLayoutManager.scrollToPositionWithOffset(position, 10);
Expand All @@ -1161,7 +1197,7 @@ public boolean onBackButtonPressed() {
} else if (directoryObject.isPathInCache(path)) {
directoryObject.restoreFromCache(path);
sortDirectory();
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
if (directoryPosition.containsKey(directoryObject.getCurrentPath())) {
int position = directoryPosition.get(directoryObject.getCurrentPath());
recyclerViewLinearLayoutManager.scrollToPositionWithOffset(position, 10);
Expand Down Expand Up @@ -1207,12 +1243,12 @@ public void onDirectoryClicked(FileItem fileItem, int position) {
swipeRefreshLayout.setRefreshing(true);
directoryObject.restoreFromCache(fileItem.getPath());
sortDirectory();
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
fetchDirectoryTask = new FetchDirectoryContent(true).execute();
} else if (directoryObject.isPathInCache(fileItem.getPath())) {
directoryObject.restoreFromCache(fileItem.getPath());
sortDirectory();
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
swipeRefreshLayout.setRefreshing(false);
} else {
directoryObject.setPath(fileItem.getPath());
Expand Down Expand Up @@ -1386,7 +1422,7 @@ public void onBreadCrumbClicked(String path) {
swipeRefreshLayout.setRefreshing(true);
directoryObject.restoreFromCache(path);
sortDirectory();
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
if (directoryPosition.containsKey(directoryObject.getCurrentPath())) {
int position = directoryPosition.get(directoryObject.getCurrentPath());
recyclerViewLinearLayoutManager.scrollToPositionWithOffset(position, 10);
Expand All @@ -1395,7 +1431,7 @@ public void onBreadCrumbClicked(String path) {
} else if (directoryObject.isPathInCache(path)) {
directoryObject.restoreFromCache(path);
sortDirectory();
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(filterHiddenFiles(directoryObject.getDirectoryContent()));
if (directoryPosition.containsKey(directoryObject.getCurrentPath())) {
int position = directoryPosition.get(directoryObject.getCurrentPath());
recyclerViewLinearLayoutManager.scrollToPositionWithOffset(position, 10);
Expand Down Expand Up @@ -1667,10 +1703,11 @@ protected void onPostExecute(List<FileItem> fileItems) {
searchDirContent(searchString);
} else {
if (recyclerViewAdapter != null) {
List<FileItem> displayContent = filterHiddenFiles(directoryObject.getDirectoryContent());
if (silentFetch) {
recyclerViewAdapter.updateData(directoryObject.getDirectoryContent());
recyclerViewAdapter.updateData(displayContent);
} else {
recyclerViewAdapter.newData(directoryObject.getDirectoryContent());
recyclerViewAdapter.newData(displayContent);
}
}
}
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/menu/file_explorer_folder_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@
android:title="@string/sync"
app:showAsAction="never" />

<item
android:id="@+id/action_show_hidden_files"
android:title="@string/show_hidden_files"
android:checkable="true"
app:showAsAction="never" />

<item
android:id="@+id/action_empty_trash"
android:title="@string/empty_trash"
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/prefkeys.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,5 @@
<string name="pref_key_renamed_remote_prefix" translatable="false">remote_name_%1$s</string>
<string name="pref_key_local_alias_remotes" translatable="false">local_alias_remotes</string>
<string name="pref_key_refresh_local_aliases" translatable="false">refresh_local_aliases</string>
<string name="pref_key_show_hidden_files" translatable="false">pref_key_show_hidden_files</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@
<string name="delete_remote_title">Delete remote?</string>
<string name="rename_remote">Rename Remote</string>
<string name="empty_trash">Empty trash</string>
<string name="show_hidden_files">Show hidden files</string>
<string name="trash_emptied">Trash emptied</string>
<string name="error_emptying_trash">Error emptying trash</string>
<string name="file_options_content_description">File options</string>
Expand Down