Skip to content

Commit 261ba91

Browse files
committed
支持歌单多选导入
1 parent 6bfdb79 commit 261ba91

File tree

1 file changed

+43
-28
lines changed

1 file changed

+43
-28
lines changed

app/src/main/java/remix/myplayer/ui/activity/SettingActivity.kt

+43-28
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.annotation.SuppressLint
55
import android.app.Activity
66
import android.content.Context
77
import android.content.Intent
8+
import android.content.Intent.EXTRA_ALLOW_MULTIPLE
89
import android.content.SharedPreferences
910
import android.graphics.drawable.GradientDrawable
1011
import android.net.Uri
@@ -869,6 +870,7 @@ class SettingActivity : ToolbarActivity(), ColorChooserDialog.ColorCallback,
869870
.itemsCallback { _, _, select, _ ->
870871
if (select == 0) {
871872
val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
873+
putExtra(EXTRA_ALLOW_MULTIPLE, true)
872874
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension("m3u")
873875
addCategory(Intent.CATEGORY_OPENABLE)
874876
}
@@ -1340,37 +1342,50 @@ class SettingActivity : ToolbarActivity(), ColorChooserDialog.ColorCallback,
13401342
}
13411343
REQUEST_IMPORT_PLAYLIST -> {
13421344
if (resultCode == Activity.RESULT_OK) {
1343-
data?.data?.let { uri ->
1345+
if (data?.data != null) {
1346+
val uri = data.data ?: return
13441347
DatabaseRepository
1345-
.getInstance()
1346-
.getAllPlaylist()
1347-
.compose(applySingleScheduler())
1348-
.subscribe { playlists ->
1349-
getBaseDialog(this)
1350-
.title(R.string.add_to_playlist)
1351-
.items(playlists.map { it.name })
1352-
.itemsCallback { _, _, _, text ->
1353-
disposables.add(importM3UFile(this, uri, text.toString(), false))
1354-
}
1355-
.neutralText(R.string.create_playlist)
1356-
.onNeutral { _, _ ->
1357-
val m3uFile = DocumentFile.fromSingleUri(this, uri)
1358-
getBaseDialog(this)
1359-
.title(R.string.new_playlist)
1360-
.positiveText(R.string.create)
1361-
.negativeText(R.string.cancel)
1362-
.content(R.string.input_playlist_name)
1363-
.input(null, m3uFile?.name?.removeSuffix(".m3u")) { _, input ->
1364-
if (playlists.map { it.name }.contains(input.toString())) {
1365-
ToastUtil.show(this, R.string.playlist_already_exist)
1366-
} else if (!input.isNullOrBlank()){
1367-
disposables.add(importM3UFile(this, uri, input.toString(), true))
1368-
}
1369-
}
1370-
.show()
1348+
.getInstance()
1349+
.getAllPlaylist()
1350+
.compose(applySingleScheduler())
1351+
.subscribe { playlists ->
1352+
getBaseDialog(this)
1353+
.title(R.string.add_to_playlist)
1354+
.items(playlists.map { it.name })
1355+
.itemsCallback { _, _, _, text ->
1356+
disposables.add(importM3UFile(this, uri, text.toString(), false))
1357+
}
1358+
.neutralText(R.string.create_playlist)
1359+
.onNeutral { _, _ ->
1360+
val m3uFile = DocumentFile.fromSingleUri(this, uri)
1361+
getBaseDialog(this)
1362+
.title(R.string.new_playlist)
1363+
.positiveText(R.string.create)
1364+
.negativeText(R.string.cancel)
1365+
.content(R.string.input_playlist_name)
1366+
.input(null, m3uFile?.name?.removeSuffix(".m3u")) { _, input ->
1367+
if (playlists.map { it.name }.contains(input.toString())) {
1368+
ToastUtil.show(this, R.string.playlist_already_exist)
1369+
} else if (!input.isNullOrBlank()){
1370+
disposables.add(importM3UFile(this, uri, input.toString(), true))
1371+
}
13711372
}
13721373
.show()
1373-
}
1374+
}
1375+
.show()
1376+
}
1377+
} else {
1378+
// 多个按顺序直接导入
1379+
data?.clipData?.let { clipData ->
1380+
val pairs = ArrayList<Pair<Uri, DocumentFile>>()
1381+
for (i in 0 until clipData.itemCount) {
1382+
val uri = clipData.getItemAt(i).uri
1383+
pairs.add(Pair(uri, DocumentFile.fromSingleUri(this, uri) ?: continue))
1384+
}
1385+
pairs.forEach {
1386+
importM3UFile(this, it.first, it.second.name ?: "unknown", true)
1387+
}
1388+
}
13741389
}
13751390
}
13761391
}

0 commit comments

Comments
 (0)