diff --git a/app/build.gradle b/app/build.gradle index cd2c5321..ddda6e7f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,7 +45,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:4.4.9' + implementation 'com.simplemobiletools:commons:4.4.10' implementation files('../libs/RootTools.jar') diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt index 868d65fa..9d567337 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt @@ -66,6 +66,8 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList displayRenameDialog() R.id.cab_properties -> showProperties() R.id.cab_share -> shareFiles() + R.id.cab_hide -> toggleFileVisibility(true) + R.id.cab_unhide -> toggleFileVisibility(false) R.id.cab_copy_path -> copyPath() R.id.cab_set_as -> setAs() R.id.cab_open_with -> openWith() @@ -123,6 +127,21 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList 0 + menu.findItem(R.id.cab_unhide).isVisible = hiddenCnt > 0 + } + private fun confirmSelection() { if (selectedPositions.isNotEmpty()) { val paths = getSelectedMedia().filter { !it.isDirectory }.map { it.path } as ArrayList @@ -160,6 +179,18 @@ class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList) { if (activity.getIsPathDirectory(path)) { val shouldShowHidden = activity.config.shouldShowHidden diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/extensions/Activity.kt index fd379f3f..dbf0d57d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/extensions/Activity.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.net.Uri import android.support.v4.content.FileProvider import com.simplemobiletools.commons.R +import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.isNougatPlus import com.simplemobiletools.filemanager.BuildConfig @@ -46,3 +47,25 @@ fun Activity.openPath(path: String, forceChooser: Boolean, openAsText: Boolean = fun Activity.setAs(path: String) { setAsIntent(path, BuildConfig.APPLICATION_ID) } + +fun BaseSimpleActivity.toggleItemVisibility(oldPath: String, hide: Boolean, callback: ((newPath: String) -> Unit)? = null) { + val path = oldPath.getParentPath() + var filename = oldPath.getFilenameFromPath() + if ((hide && filename.startsWith('.')) || (!hide && !filename.startsWith('.'))) { + callback?.invoke(oldPath) + return + } + + filename = if (hide) { + ".${filename.trimStart('.')}" + } else { + filename.substring(1, filename.length) + } + + val newPath = "$path/$filename" + if (oldPath != newPath) { + renameFile(oldPath, newPath) { + callback?.invoke(newPath) + } + } +} diff --git a/app/src/main/res/menu/cab.xml b/app/src/main/res/menu/cab.xml index bb7d1188..a49ccdc7 100644 --- a/app/src/main/res/menu/cab.xml +++ b/app/src/main/res/menu/cab.xml @@ -21,6 +21,16 @@ android:icon="@drawable/ic_share" android:title="@string/share" app:showAsAction="ifRoom"/> + +