pass an OutputStream to exporter, not a file

This commit is contained in:
tibbi 2020-03-17 00:00:16 +01:00
parent 21232c339b
commit 655d3eedcc
3 changed files with 60 additions and 63 deletions

View File

@ -796,7 +796,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
if (events.isEmpty()) { if (events.isEmpty()) {
toast(R.string.no_entries_for_exporting) toast(R.string.no_entries_for_exporting)
} else { } else {
IcsExporter().exportEvents(this, file, events, true) { getFileOutputStream(file.toFileDirItem(this), true) {
IcsExporter().exportEvents(this, it, events, true) {
toast(when (it) { toast(when (it) {
IcsExporter.ExportResult.EXPORT_OK -> R.string.exporting_successful IcsExporter.ExportResult.EXPORT_OK -> R.string.exporting_successful
IcsExporter.ExportResult.EXPORT_PARTIAL -> R.string.exporting_some_entries_failed IcsExporter.ExportResult.EXPORT_PARTIAL -> R.string.exporting_some_entries_failed
@ -808,6 +809,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
} }
} }
}
private fun launchSettings() { private fun launchSettings() {
startActivity(Intent(applicationContext, SettingsActivity::class.java)) startActivity(Intent(applicationContext, SettingsActivity::class.java))

View File

@ -8,9 +8,7 @@ import com.simplemobiletools.calendar.pro.helpers.*
import com.simplemobiletools.calendar.pro.models.Event import com.simplemobiletools.calendar.pro.models.Event
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.hideKeyboard import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.extensions.sharePathIntent
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.models.RadioItem
import java.io.File import java.io.File
@ -26,12 +24,14 @@ fun BaseSimpleActivity.shareEvents(ids: List<Long>) {
} }
val events = eventsDB.getEventsWithIds(ids) as ArrayList<Event> val events = eventsDB.getEventsWithIds(ids) as ArrayList<Event>
IcsExporter().exportEvents(this, file, events, false) { getFileOutputStream(file.toFileDirItem(this), true) {
IcsExporter().exportEvents(this, it, events, false) {
if (it == IcsExporter.ExportResult.EXPORT_OK) { if (it == IcsExporter.ExportResult.EXPORT_OK) {
sharePathIntent(file.absolutePath, BuildConfig.APPLICATION_ID) sharePathIntent(file.absolutePath, BuildConfig.APPLICATION_ID)
} }
} }
} }
}
} }
fun BaseSimpleActivity.getTempFile(): File? { fun BaseSimpleActivity.getTempFile(): File? {

View File

@ -7,13 +7,11 @@ import com.simplemobiletools.calendar.pro.helpers.IcsExporter.ExportResult.*
import com.simplemobiletools.calendar.pro.models.CalDAVCalendar import com.simplemobiletools.calendar.pro.models.CalDAVCalendar
import com.simplemobiletools.calendar.pro.models.Event import com.simplemobiletools.calendar.pro.models.Event
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.getFileOutputStream
import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.extensions.writeLn import com.simplemobiletools.commons.extensions.writeLn
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.FileDirItem
import java.io.BufferedWriter import java.io.BufferedWriter
import java.io.File import java.io.OutputStream
class IcsExporter { class IcsExporter {
enum class ExportResult { enum class ExportResult {
@ -24,12 +22,10 @@ class IcsExporter {
private var eventsFailed = 0 private var eventsFailed = 0
private var calendars = ArrayList<CalDAVCalendar>() private var calendars = ArrayList<CalDAVCalendar>()
fun exportEvents(activity: BaseSimpleActivity, file: File, events: ArrayList<Event>, showExportingToast: Boolean, callback: (result: ExportResult) -> Unit) { fun exportEvents(activity: BaseSimpleActivity, outputStream: OutputStream?, events: ArrayList<Event>, showExportingToast: Boolean, callback: (result: ExportResult) -> Unit) {
val fileDirItem = FileDirItem(file.absolutePath, file.name) if (outputStream == null) {
activity.getFileOutputStream(fileDirItem, true) {
if (it == null) {
callback(EXPORT_FAIL) callback(EXPORT_FAIL)
return@getFileOutputStream return
} }
ensureBackgroundThread { ensureBackgroundThread {
@ -38,7 +34,7 @@ class IcsExporter {
activity.toast(R.string.exporting) activity.toast(R.string.exporting)
} }
it.bufferedWriter().use { out -> outputStream.bufferedWriter().use { out ->
out.writeLn(BEGIN_CALENDAR) out.writeLn(BEGIN_CALENDAR)
out.writeLn(CALENDAR_PRODID) out.writeLn(CALENDAR_PRODID)
out.writeLn(CALENDAR_VERSION) out.writeLn(CALENDAR_VERSION)
@ -79,7 +75,6 @@ class IcsExporter {
}) })
} }
} }
}
private fun fillReminders(event: Event, out: BufferedWriter) { private fun fillReminders(event: Event, out: BufferedWriter) {
event.getReminders().forEach { event.getReminders().forEach {