Skip to content

Commit 9f9b6a1

Browse files
committed
add Set As and Open With actionmenu items
1 parent 68f975a commit 9f9b6a1

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

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

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ import com.simplemobiletools.filemanager.BuildConfig
2727
import com.simplemobiletools.filemanager.R
2828
import com.simplemobiletools.filemanager.activities.SimpleActivity
2929
import com.simplemobiletools.filemanager.dialogs.CompressAsDialog
30-
import com.simplemobiletools.filemanager.extensions.config
31-
import com.simplemobiletools.filemanager.extensions.isPathOnRoot
32-
import com.simplemobiletools.filemanager.extensions.isZipFile
33-
import com.simplemobiletools.filemanager.extensions.shareUris
30+
import com.simplemobiletools.filemanager.extensions.*
3431
import com.stericson.RootTools.RootTools
3532
import kotlinx.android.synthetic.main.list_item.view.*
3633
import java.io.Closeable
@@ -111,6 +108,8 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
111108
R.id.cab_properties -> showProperties()
112109
R.id.cab_share -> shareFiles()
113110
R.id.cab_copy_path -> copyPath()
111+
R.id.cab_set_as -> setAs()
112+
R.id.cab_open_with -> openWith()
114113
R.id.cab_copy_to -> copyMoveTo(true)
115114
R.id.cab_move_to -> copyMoveTo(false)
116115
R.id.cab_compress -> compressSelection()
@@ -130,10 +129,14 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
130129
}
131130

132131
override fun onPrepareActionMode(actionMode: ActionMode?, menu: Menu): Boolean {
133-
menu.findItem(R.id.cab_rename).isVisible = selectedPositions.size <= 1
134-
menu.findItem(R.id.cab_decompress).isVisible = getSelectedMedia().map { it.path }.any { it.isZipFile() }
135-
menu.findItem(R.id.cab_confirm_selection).isVisible = isPickMultipleIntent
136-
menu.findItem(R.id.cab_copy_path).isVisible = selectedPositions.size <= 1
132+
menu.apply {
133+
findItem(R.id.cab_rename).isVisible = isOneItemSelected()
134+
findItem(R.id.cab_decompress).isVisible = getSelectedMedia().map { it.path }.any { it.isZipFile() }
135+
findItem(R.id.cab_confirm_selection).isVisible = isPickMultipleIntent
136+
findItem(R.id.cab_copy_path).isVisible = isOneItemSelected()
137+
findItem(R.id.cab_open_with).isVisible = isOneFileSelected()
138+
findItem(R.id.cab_set_as).isVisible = isOneFileSelected()
139+
}
137140
return true
138141
}
139142

@@ -145,6 +148,10 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
145148
selectedPositions.clear()
146149
actMode = null
147150
}
151+
152+
private fun isOneItemSelected() = selectedPositions.size == 1
153+
154+
private fun isOneFileSelected() = isOneItemSelected() && !mItems[selectedPositions.first()].isDirectory
148155
}
149156

150157
private fun confirmSelection() {
@@ -198,6 +205,16 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
198205
activity.toast(R.string.path_copied)
199206
}
200207

208+
private fun setAs() {
209+
val file = File(getSelectedMedia().first().path)
210+
activity.setAs(Uri.fromFile(file))
211+
}
212+
213+
private fun openWith() {
214+
val file = File(getSelectedMedia().first().path)
215+
activity.openFile(Uri.fromFile(file), true)
216+
}
217+
201218
private fun copyMoveTo(isCopyOperation: Boolean) {
202219
val files = ArrayList<File>()
203220
selectedPositions.forEach { files.add(File(mItems[it].path)) }

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.simplemobiletools.filemanager.extensions
33
import android.app.Activity
44
import android.net.Uri
55
import com.simplemobiletools.commons.extensions.openFile
6+
import com.simplemobiletools.commons.extensions.setAs
67
import com.simplemobiletools.commons.extensions.shareUri
78
import com.simplemobiletools.commons.extensions.shareUris
89
import com.simplemobiletools.filemanager.BuildConfig
@@ -24,3 +25,7 @@ fun Activity.shareUris(uris: ArrayList<Uri>) {
2425
fun Activity.openFile(uri: Uri, forceChooser: Boolean) {
2526
openFile(uri, forceChooser, BuildConfig.APPLICATION_ID)
2627
}
28+
29+
fun Activity.setAs(uri: Uri) {
30+
setAs(uri, BuildConfig.APPLICATION_ID)
31+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@
2525
android:id="@+id/cab_copy_path"
2626
android:title="@string/copy_path"
2727
app:showAsAction="never"/>
28+
<item
29+
android:id="@+id/cab_set_as"
30+
android:title="@string/set_as"
31+
app:showAsAction="never"/>
32+
<item
33+
android:id="@+id/cab_open_with"
34+
android:title="@string/open_with"
35+
app:showAsAction="never"/>
2836
<item
2937
android:id="@+id/cab_copy_to"
3038
android:title="@string/copy_to"

0 commit comments

Comments
 (0)