Skip to content

Add option to hide hidden files #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Dec 6, 2019
Merged
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
4 changes: 3 additions & 1 deletion Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Step 2. Add the dependency
properties.error_dir = new File(DialogConfigs.DEFAULT_DIR);
properties.offset = new File(DialogConfigs.DEFAULT_DIR);
properties.extensions = null;
properties.show_hidden_files = false;
```

3. Next create an instance of `FilePickerDialog`, and pass `Context` and `DialogProperties` references as parameters. Optional: You can change the title of dialog. Default is current directory name. Set the positive button string. Default is Select. Set the negative button string. Defalut is Cancel.
Expand Down Expand Up @@ -132,7 +133,8 @@ Marshmallow and above requests for the permission on runtime. You should overrid
app:root_dir="/sdcard"
app:selection_mode="multi_mode"
app:selection_type="dir_select"
app:extensions="txt:pdf:"/>
app:extensions="txt:pdf:"
app:show_hidden_files="false"/>
```

2. Implement [Preference.OnPreferenceChangeListener](https://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html) to class requiring selected values and `Override` `onPreferenceChange(Preference, Object)` method. Check for preference key using [Preference](https://developer.android.com/reference/android/preference/Preference.html) reference.
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.android.tools.build:gradle:3.5.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'

// NOTE: Do not place your application dependencies here; they belong
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public class DialogProperties {
public File error_dir;
public File offset;
public String[] extensions;
public boolean show_hidden_files;

public DialogProperties() {
selection_mode = DialogConfigs.SINGLE_MODE;
Expand All @@ -20,5 +21,6 @@ public DialogProperties() {
error_dir = new File(DialogConfigs.DEFAULT_DIR);
offset = new File(DialogConfigs.DEFAULT_DIR);
extensions = null;
show_hidden_files = false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import android.content.Context;
import android.content.pm.PackageManager;

import com.developer.filepicker.model.FileListItem;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -23,11 +25,11 @@ public static boolean checkStorageAccessPermissions(Context context) {
}
}

public static ArrayList<FileListItem> prepareFileListEntries(ArrayList<FileListItem> internalList, File inter, ExtensionFilter filter) {
public static ArrayList<FileListItem> prepareFileListEntries(ArrayList<FileListItem> internalList, File inter, ExtensionFilter filter, boolean show_hidden_files) {
try {

for (File name : inter.listFiles(filter)) {
if (name.canRead()) {
if(name.getName().startsWith(".") && !show_hidden_files) continue;
FileListItem item = new FileListItem();
item.setFilename(name.getName());
item.setDirectory(name.isDirectory());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.developer.filepicker.R;
import com.developer.filepicker.controller.DialogSelectionListener;
import com.developer.filepicker.controller.NotifyItemChecked;
Expand All @@ -25,6 +26,7 @@
import com.developer.filepicker.utils.ExtensionFilter;
import com.developer.filepicker.utils.Utility;
import com.developer.filepicker.widget.MaterialCheckbox;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -209,7 +211,7 @@ protected void onStart() {
dname.setText(currLoc.getName());
dir_path.setText(currLoc.getAbsolutePath());
setTitle();
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter);
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter, properties.show_hidden_files);
mFileListAdapter.notifyDataSetChanged();
listView.setOnItemClickListener(this);
}
Expand Down Expand Up @@ -240,7 +242,7 @@ public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
parent.setTime(currLoc.lastModified());
internalList.add(parent);
}
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter);
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter, properties.show_hidden_files);
mFileListAdapter.notifyDataSetChanged();
} else {
Toast.makeText(context, R.string.error_dir_access, Toast.LENGTH_SHORT).show();
Expand Down Expand Up @@ -422,7 +424,7 @@ public void onBackPressed() {
parent.setTime(currLoc.lastModified());
internalList.add(parent);
}
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter);
internalList = Utility.prepareFileListEntries(internalList, currLoc, filter, properties.show_hidden_files);
mFileListAdapter.notifyDataSetChanged();
}
setTitle();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.View;

import com.developer.filepicker.R;
import com.developer.filepicker.controller.DialogSelectionListener;
import com.developer.filepicker.model.DialogConfigs;
import com.developer.filepicker.model.DialogProperties;

import java.io.File;

/**
Expand Down Expand Up @@ -72,7 +74,7 @@ protected Parcelable onSaveInstanceState() {

@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state == null || !(state instanceof SavedState)) {
if (!(state instanceof SavedState)) {
super.onRestoreInstanceState(state);
return;
}
Expand Down Expand Up @@ -188,6 +190,9 @@ else if (attr == R.styleable.FilePickerPreference_extensions) {
else if (attr == R.styleable.FilePickerPreference_title_text) {
titleText=tarr.getString(R.styleable.FilePickerPreference_title_text);
}
else if (attr == R.styleable.FilePickerPreference_show_hidden_files) {
properties.show_hidden_files = tarr.getBoolean(R.styleable.FilePickerPreference_show_hidden_files, false);
}
}
tarr.recycle();
}
Expand Down
4 changes: 4 additions & 0 deletions library/src/main/res/values/attrs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,9 @@
name="title_text"
format="string"/>

<attr
name="show_hidden_files"
format="boolean"/>

</declare-styleable>
</resources>
2 changes: 1 addition & 1 deletion library/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
<string name="label_parent_directory">Parent Directory</string>
<string name="last_edit">Last edited: </string>
<string name="error_dir_access">Directory cannot be accessed</string>
<string name="label_parent_dir" translatable="false">...</string>
<string name="label_parent_dir" translatable="false">..</string>
</resources>
2 changes: 1 addition & 1 deletion sample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':library')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
}
1 change: 1 addition & 0 deletions sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:requestLegacyExternalStorage="true"
tools:ignore="AllowBackup,GoogleAppIndexingWarning">

<activity android:name="com.developer.filepicker.file.MainActivity">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,21 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.developer.filepicker.controller.DialogSelectionListener;
import com.developer.filepicker.model.DialogConfigs;
import com.developer.filepicker.model.DialogProperties;
Expand Down Expand Up @@ -89,6 +91,7 @@ public void onCheckedChanged(RadioGroup group, int checkedId) {
final EditText extension = findViewById(R.id.extensions);
final EditText root = findViewById(R.id.root);
final EditText offset = findViewById(R.id.offset);
final CheckBox show_hidden_files = findViewById(R.id.show_hidden_files);
Button apply = findViewById(R.id.apply);
Button showDialog = findViewById(R.id.show_dialog);
apply.setOnClickListener(new View.OnClickListener() {
Expand Down Expand Up @@ -141,6 +144,8 @@ public void onClick(View view) {
properties.offset=new File(DialogConfigs.DEFAULT_DIR);
}

properties.show_hidden_files = show_hidden_files.isChecked();

//Setting Alternative Directory, in case root is not accessible.This will be
//used.

Expand Down
7 changes: 7 additions & 0 deletions sample/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,13 @@
android:layout_marginTop="@dimen/activity_vertical_margin"
android:hint="@string/hint_offset"
android:id="@+id/offset" />

<androidx.appcompat.widget.AppCompatCheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:id="@+id/show_hidden_files"
android:text="@string/show_hidden_files"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>

Expand Down
1 change: 1 addition & 0 deletions sample/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@
<string name="label_directory">Directory</string>
<string name="label_files_and_directories">Files and Directories</string>
<string name="label_extensions">Filter Extensions(Seperate with Commas, Don\'t use dots)</string>
<string name="show_hidden_files">Show hidden files</string>
</resources>