Skip to content

Commit a09f605

Browse files
committed
fix #231, add helper function for un/hiding items
1 parent 463823e commit a09f605

File tree

4 files changed

+65
-1
lines changed

4 files changed

+65
-1
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ ext {
4545
}
4646

4747
dependencies {
48-
implementation 'com.simplemobiletools:commons:4.4.9'
48+
implementation 'com.simplemobiletools:commons:4.4.10'
4949

5050
implementation files('../libs/RootTools.jar')
5151

app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList<FileD
6666
findItem(R.id.cab_copy_path).isVisible = isOneItemSelected()
6767
findItem(R.id.cab_open_with).isVisible = isOneFileSelected()
6868
findItem(R.id.cab_set_as).isVisible = isOneFileSelected()
69+
70+
checkHideBtnVisibility(this)
6971
}
7072
}
7173

@@ -85,6 +87,8 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList<FileD
8587
R.id.cab_rename -> displayRenameDialog()
8688
R.id.cab_properties -> showProperties()
8789
R.id.cab_share -> shareFiles()
90+
R.id.cab_hide -> toggleFileVisibility(true)
91+
R.id.cab_unhide -> toggleFileVisibility(false)
8892
R.id.cab_copy_path -> copyPath()
8993
R.id.cab_set_as -> setAs()
9094
R.id.cab_open_with -> openWith()
@@ -123,6 +127,21 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList<FileD
123127

124128
private fun isOneFileSelected() = isOneItemSelected() && !fileDirItems[selectedPositions.first()].isDirectory
125129

130+
private fun checkHideBtnVisibility(menu: Menu) {
131+
var hiddenCnt = 0
132+
var unhiddenCnt = 0
133+
selectedPositions.mapNotNull { fileDirItems.getOrNull(it)?.name }.forEach {
134+
if (it.startsWith(".")) {
135+
hiddenCnt++
136+
} else {
137+
unhiddenCnt++
138+
}
139+
}
140+
141+
menu.findItem(R.id.cab_hide).isVisible = unhiddenCnt > 0
142+
menu.findItem(R.id.cab_unhide).isVisible = hiddenCnt > 0
143+
}
144+
126145
private fun confirmSelection() {
127146
if (selectedPositions.isNotEmpty()) {
128147
val paths = getSelectedMedia().filter { !it.isDirectory }.map { it.path } as ArrayList<String>
@@ -160,6 +179,18 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList<FileD
160179
activity.sharePaths(paths)
161180
}
162181

182+
private fun toggleFileVisibility(hide: Boolean) {
183+
Thread {
184+
getSelectedMedia().forEach {
185+
activity.toggleItemVisibility(it.path, hide)
186+
}
187+
activity.runOnUiThread {
188+
listener?.refreshItems()
189+
finishActMode()
190+
}
191+
}.start()
192+
}
193+
163194
private fun addFileUris(path: String, paths: ArrayList<String>) {
164195
if (activity.getIsPathDirectory(path)) {
165196
val shouldShowHidden = activity.config.shouldShowHidden

app/src/main/kotlin/com/simplemobiletools/filemanager/extensions/Activity.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.content.Intent
55
import android.net.Uri
66
import android.support.v4.content.FileProvider
77
import com.simplemobiletools.commons.R
8+
import com.simplemobiletools.commons.activities.BaseSimpleActivity
89
import com.simplemobiletools.commons.extensions.*
910
import com.simplemobiletools.commons.helpers.isNougatPlus
1011
import com.simplemobiletools.filemanager.BuildConfig
@@ -46,3 +47,25 @@ fun Activity.openPath(path: String, forceChooser: Boolean, openAsText: Boolean =
4647
fun Activity.setAs(path: String) {
4748
setAsIntent(path, BuildConfig.APPLICATION_ID)
4849
}
50+
51+
fun BaseSimpleActivity.toggleItemVisibility(oldPath: String, hide: Boolean, callback: ((newPath: String) -> Unit)? = null) {
52+
val path = oldPath.getParentPath()
53+
var filename = oldPath.getFilenameFromPath()
54+
if ((hide && filename.startsWith('.')) || (!hide && !filename.startsWith('.'))) {
55+
callback?.invoke(oldPath)
56+
return
57+
}
58+
59+
filename = if (hide) {
60+
".${filename.trimStart('.')}"
61+
} else {
62+
filename.substring(1, filename.length)
63+
}
64+
65+
val newPath = "$path/$filename"
66+
if (oldPath != newPath) {
67+
renameFile(oldPath, newPath) {
68+
callback?.invoke(newPath)
69+
}
70+
}
71+
}

app/src/main/res/menu/cab.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@
2121
android:icon="@drawable/ic_share"
2222
android:title="@string/share"
2323
app:showAsAction="ifRoom"/>
24+
<item
25+
android:id="@+id/cab_hide"
26+
android:icon="@drawable/ic_hide"
27+
android:title="@string/hide"
28+
app:showAsAction="ifRoom"/>
29+
<item
30+
android:id="@+id/cab_unhide"
31+
android:icon="@drawable/ic_unhide"
32+
android:title="@string/unhide"
33+
app:showAsAction="ifRoom"/>
2434
<item
2535
android:id="@+id/cab_copy_path"
2636
android:title="@string/copy_path"

0 commit comments

Comments
 (0)