Archived
export is implemented, import is broken
This commit is contained in:
@@ -1,14 +1,21 @@
|
||||
package com.denizd.textbasic.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.ColorStateList
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageButton
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.transition.TransitionManager
|
||||
@@ -19,12 +26,23 @@ import com.denizd.textbasic.databinding.FragmentSettingsNewBinding
|
||||
import com.denizd.textbasic.db.QuoteStorage
|
||||
import com.denizd.textbasic.sheet.TextSheet
|
||||
import com.denizd.textbasic.util.getConstrast
|
||||
import com.denizd.textbasic.util.showSnackBar
|
||||
import com.denizd.textbasic.util.viewBinding
|
||||
import com.denizd.textbasic.widget.CanvasText
|
||||
import com.google.gson.Gson
|
||||
import com.skydoves.colorpickerview.ColorEnvelope
|
||||
import com.skydoves.colorpickerview.ColorPickerDialog
|
||||
import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener
|
||||
import java.io.BufferedWriter
|
||||
import java.io.File
|
||||
import java.io.FileReader
|
||||
import java.io.FileWriter
|
||||
import java.io.IOException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
|
||||
|
||||
@@ -32,6 +50,8 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
|
||||
|
||||
private val binding: FragmentSettingsNewBinding by viewBinding(FragmentSettingsNewBinding::bind)
|
||||
|
||||
private lateinit var resultIntent: ActivityResultLauncher<Intent>
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
@@ -236,6 +256,36 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
|
||||
}
|
||||
}
|
||||
|
||||
binding.buttonImport.setOnClickListener {
|
||||
importFile()
|
||||
}
|
||||
|
||||
resultIntent = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
||||
try {
|
||||
if (result.resultCode == Activity.RESULT_OK) {
|
||||
val data = result.data
|
||||
data?.let {
|
||||
it.data?.let { u ->
|
||||
// val s = BufferedReader(FileReader(File(u.path ?: throw IllegalArgumentException()))).readLines().joinToString()
|
||||
val a = Gson().fromJson(FileReader(getFile(getApplicationContext(), u)), Array<String>::class.java)
|
||||
Log.d("TAGSARELOST", a[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: IllegalArgumentException) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
binding.buttonExport.setOnClickListener {
|
||||
val date = SimpleDateFormat("yyyyMMddHHmmss", Locale.ROOT).format(Date(System.currentTimeMillis())).run {
|
||||
this.substring(0, 8) + "T" + this.substring(8)
|
||||
}
|
||||
val fileName = getString(R.string.export_file_name, date)
|
||||
Log.d("TAGSARELOST", fileName)
|
||||
createFile(fileName, "hello test")
|
||||
}
|
||||
|
||||
// Set click listener for showing licences dialogue
|
||||
binding.buttonLicences.setOnClickListener {
|
||||
openBottomSheet(
|
||||
@@ -262,6 +312,23 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
|
||||
updatePreview()
|
||||
}
|
||||
|
||||
@Throws(IOException::class)
|
||||
fun getFile(context: Context, uri: Uri): File {
|
||||
val destinationFilename =
|
||||
File(context.filesDir.path + File.separatorChar + queryName(context, uri))
|
||||
try {
|
||||
context.contentResolver.openInputStream(uri).use { ins ->
|
||||
createFileFromStream(
|
||||
ins,
|
||||
destinationFilename
|
||||
)
|
||||
}
|
||||
} catch (ex: Exception) {
|
||||
ex.printStackTrace()
|
||||
}
|
||||
return destinationFilename
|
||||
}
|
||||
|
||||
private fun setGravityButtons(buttons: List<ImageButton>, gravity: Int) {
|
||||
val transparent = context.getColor(android.R.color.transparent)
|
||||
|
||||
@@ -374,10 +441,31 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun importFile() {
|
||||
var intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE)
|
||||
intent.type = "application/json"
|
||||
intent = Intent.createChooser(intent, "Choose file")
|
||||
resultIntent.launch(intent)
|
||||
}
|
||||
|
||||
private fun createFile(fileName: String, content: String) {
|
||||
val path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
|
||||
try {
|
||||
val writer = BufferedWriter(FileWriter(File(path, fileName)))
|
||||
writer.write(content)
|
||||
writer.close()
|
||||
context.theme.showSnackBar(
|
||||
binding.coordinatorLayout,
|
||||
getString(R.string.settings_fragment_export_successful, fileName),
|
||||
)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updatePreview() {
|
||||
|
||||
val bitmap = CanvasText.drawText(context, true)
|
||||
|
||||
binding.textPreview.setImageBitmap(bitmap)
|
||||
}
|
||||
}
|
||||
@@ -72,6 +72,7 @@
|
||||
<string name="sheet_licences_header">Lizenzen</string>
|
||||
|
||||
<string name="settings_misc_app_version">App-Version</string>
|
||||
<string name="settings_fragment_export_successful">Zum Dokumenten-Ordner exportiert: %s</string>
|
||||
|
||||
<string name="edit">Text bearbeiten</string>
|
||||
<string name="nav_items_entries">Einträge</string>
|
||||
|
||||
@@ -73,6 +73,9 @@
|
||||
|
||||
<string name="settings_misc_app_version">App Version</string>
|
||||
|
||||
<string name="export_file_name" translatable="false">textbasic_export_%s.json</string>
|
||||
<string name="settings_fragment_export_successful">Exported to Documents folder: %s</string>
|
||||
|
||||
<string name="edit">Edit Text</string>
|
||||
<string name="nav_items_entries">Entries</string>
|
||||
<string name="guide">Guide</string>
|
||||
|
||||
Reference in New Issue
Block a user