Skip to content

Commit 95b72b8

Browse files
committed
Add drag-and-drop support for TEXT/CSV files
1 parent b0d3758 commit 95b72b8

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,7 @@ open class DeckPicker :
660660

661661
try {
662662
// Intent is nullable because `clip.getItemAt(0).intent` always returns null
663-
ImportUtils.FileImporter().handleContentProviderFile(this, uri)
663+
ImportUtils.FileImporter().handleContentProviderFile(this, uri, Intent().setData(uri))
664664
onResume()
665665
} catch (e: Exception) {
666666
Timber.w(e)

AnkiDroid/src/main/java/com/ichi2/utils/ImportUtils.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.ichi2.anki.R
3333
import com.ichi2.anki.dialogs.DialogHandler
3434
import com.ichi2.anki.dialogs.DialogHandlerMessage
3535
import com.ichi2.anki.dialogs.ImportDialog
36+
import com.ichi2.anki.onSelectedCsvForImport
3637
import com.ichi2.anki.showImportDialog
3738
import com.ichi2.annotations.NeedsTest
3839
import com.ichi2.compat.CompatHelper
@@ -99,6 +100,9 @@ object ImportUtils {
99100
fun isFileAValidDeck(fileName: String): Boolean =
100101
FileImporter.hasExtension(fileName, "apkg") || FileImporter.hasExtension(fileName, "colpkg")
101102

103+
fun isFileValidTextOrCsv(fileName: String): Boolean =
104+
FileImporter.hasExtension(fileName, "txt") || FileImporter.hasExtension(fileName, "csv")
105+
102106
@SuppressWarnings("WeakerAccess")
103107
open class FileImporter {
104108
/**
@@ -200,7 +204,10 @@ object ImportUtils {
200204
}
201205
}
202206
val tempOutDir: String
203-
if (!isValidPackageName(filename)) {
207+
if (isFileValidTextOrCsv(filename)) {
208+
(context as Activity).onSelectedCsvForImport(intent!!)
209+
return ImportResult.fromSuccess()
210+
} else if (!isValidPackageName(filename)) {
204211
return if (isAnkiDatabase(filename)) {
205212
// .anki2 files aren't supported by Anki Desktop, we should eventually support them, because we can
206213
// but for now, show a "nice" error.
@@ -242,6 +249,7 @@ object ImportUtils {
242249
return when {
243250
isDeckPackage(fileName) -> true
244251
isCollectionPackage(fileName) -> true
252+
isFileValidTextOrCsv(fileName.toString()) -> true
245253
else -> false
246254
}
247255
}

0 commit comments

Comments
 (0)