Skip to content

Commit 732fca7

Browse files
committed
add file sharing
1 parent 6e88949 commit 732fca7

File tree

2 files changed

+35
-71
lines changed

2 files changed

+35
-71
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.simplemobiletools.filemanager.adapters
22

3+
import android.content.Intent
4+
import android.net.Uri
35
import android.support.v7.view.ActionMode
46
import android.support.v7.widget.RecyclerView
57
import android.view.*
@@ -13,6 +15,7 @@ import com.simplemobiletools.filemanager.R
1315
import com.simplemobiletools.filemanager.activities.SimpleActivity
1416
import com.simplemobiletools.filepicker.extensions.formatSize
1517
import com.simplemobiletools.filepicker.extensions.isGif
18+
import com.simplemobiletools.filepicker.extensions.toast
1619
import com.simplemobiletools.filepicker.models.FileDirItem
1720
import com.simplemobiletools.fileproperties.dialogs.PropertiesDialog
1821
import kotlinx.android.synthetic.main.list_item.view.*
@@ -40,6 +43,10 @@ class ItemsAdapter(val activity: SimpleActivity, val mItems: List<FileDirItem>,
4043
showProperties()
4144
true
4245
}
46+
R.id.cab_share -> {
47+
shareFiles()
48+
true
49+
}
4350
else -> false
4451
}
4552
}
@@ -70,6 +77,33 @@ class ItemsAdapter(val activity: SimpleActivity, val mItems: List<FileDirItem>,
7077
}
7178
}
7279

80+
private fun shareFiles() {
81+
val selectedItems = getSelectedMedia().filterNot { it.isDirectory }
82+
val uris = ArrayList<Uri>(selectedItems.size)
83+
selectedItems.mapTo(uris) { Uri.fromFile(File(it.path)) }
84+
85+
if (uris.isEmpty()) {
86+
activity.toast(R.string.no_files_selected)
87+
return
88+
}
89+
90+
val shareTitle = activity.resources.getString(R.string.share_via)
91+
Intent().apply {
92+
action = Intent.ACTION_SEND_MULTIPLE
93+
putExtra(Intent.EXTRA_SUBJECT, activity.resources.getString(R.string.shared_files))
94+
putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
95+
type = "*/*"
96+
activity.startActivity(Intent.createChooser(this, shareTitle))
97+
}
98+
}
99+
100+
private fun getSelectedMedia(): List<FileDirItem> {
101+
val positions = multiSelector.selectedPositions
102+
val selectedMedia = ArrayList<FileDirItem>(positions.size)
103+
positions.forEach { selectedMedia.add(mItems[it]) }
104+
return selectedMedia
105+
}
106+
73107
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
74108
val view = LayoutInflater.from(parent?.context).inflate(R.layout.list_item, parent, false)
75109
return ViewHolder(activity, view, itemClick)

app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import com.simplemobiletools.filepicker.asynctasks.CopyMoveTask
2424
import com.simplemobiletools.filepicker.extensions.*
2525
import com.simplemobiletools.filepicker.models.FileDirItem
2626
import com.simplemobiletools.filepicker.views.RecyclerViewDivider
27-
import com.simplemobiletools.fileproperties.dialogs.PropertiesDialog
2827
import kotlinx.android.synthetic.main.items_fragment.*
2928
import java.io.File
3029
import java.util.*
@@ -179,26 +178,7 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
179178
return type + "/*"
180179
}
181180

182-
/*override fun onItemCheckedStateChanged(mode: ActionMode, position: Int, id: Long, checked: Boolean) {
183-
if (checked) {
184-
mSelectedItemsCnt++
185-
} else {
186-
mSelectedItemsCnt--
187-
}
188-
189-
if (mSelectedItemsCnt > 0) {
190-
mode.title = mSelectedItemsCnt.toString()
191-
}
192-
193-
mode.invalidate()
194-
}
195-
196-
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
197-
mode.menuInflater.inflate(R.menu.cab, menu)
198-
return true
199-
}
200-
201-
override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
181+
/*override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
202182
val menuItem = menu.findItem(R.id.cab_rename)
203183
menuItem.isVisible = mSelectedItemsCnt == 1
204184
return true
@@ -210,8 +190,6 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
210190
displayRenameDialog()
211191
mode.finish()
212192
}
213-
R.id.cab_properties -> displayPropertiesDialog()
214-
R.id.cab_share -> shareFiles()
215193
R.id.cab_copy -> {
216194
displayCopyDialog()
217195
mode.finish()
@@ -226,54 +204,6 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
226204
return true
227205
}*/
228206

229-
private fun shareFiles() {
230-
val itemIndexes = getSelectedItemIndexes()
231-
if (itemIndexes.isEmpty())
232-
return
233-
234-
val uris = ArrayList<Uri>(itemIndexes.size)
235-
itemIndexes.map { File(mItems[it].path) }
236-
.filterNot { it.isDirectory }
237-
.mapTo(uris) { Uri.fromFile(it) }
238-
239-
if (uris.isEmpty()) {
240-
context.toast(R.string.no_files_selected)
241-
return
242-
}
243-
244-
val shareTitle = resources.getString(R.string.share_via)
245-
Intent().apply {
246-
action = Intent.ACTION_SEND_MULTIPLE
247-
putExtra(Intent.EXTRA_SUBJECT, resources.getString(R.string.shared_files))
248-
putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
249-
type = "*/*"
250-
startActivity(Intent.createChooser(this, shareTitle))
251-
}
252-
}
253-
254-
private fun displayPropertiesDialog() {
255-
val itemIndexes = getSelectedItemIndexes()
256-
if (itemIndexes.isEmpty())
257-
return
258-
259-
if (itemIndexes.size == 1) {
260-
showOneItemProperties()
261-
} else {
262-
showMultipleItemProperties(itemIndexes)
263-
}
264-
}
265-
266-
private fun showOneItemProperties() {
267-
val item = getSelectedItem() ?: return
268-
PropertiesDialog(activity, item.path, mConfig.showHidden)
269-
}
270-
271-
private fun showMultipleItemProperties(itemIndexes: List<Int>) {
272-
val paths = ArrayList<String>(itemIndexes.size)
273-
itemIndexes.mapTo(paths) { mItems[it].path }
274-
PropertiesDialog(activity, paths, mConfig.showHidden)
275-
}
276-
277207
private fun displayRenameDialog() {
278208
val item = getSelectedItem() ?: return
279209

0 commit comments

Comments
 (0)