export is implemented, import is broken

This commit is contained in:
denizk0461
2023-11-08 10:59:47 +01:00
parent c9698e5f93
commit 554ec6478c
3 changed files with 94 additions and 2 deletions
@@ -1,14 +1,21 @@
package com.denizd.textbasic.fragment package com.denizd.textbasic.fragment
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Environment
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageButton import android.widget.ImageButton
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.transition.TransitionManager import androidx.transition.TransitionManager
@@ -19,12 +26,23 @@ import com.denizd.textbasic.databinding.FragmentSettingsNewBinding
import com.denizd.textbasic.db.QuoteStorage import com.denizd.textbasic.db.QuoteStorage
import com.denizd.textbasic.sheet.TextSheet import com.denizd.textbasic.sheet.TextSheet
import com.denizd.textbasic.util.getConstrast import com.denizd.textbasic.util.getConstrast
import com.denizd.textbasic.util.showSnackBar
import com.denizd.textbasic.util.viewBinding import com.denizd.textbasic.util.viewBinding
import com.denizd.textbasic.widget.CanvasText import com.denizd.textbasic.widget.CanvasText
import com.google.gson.Gson
import com.skydoves.colorpickerview.ColorEnvelope import com.skydoves.colorpickerview.ColorEnvelope
import com.skydoves.colorpickerview.ColorPickerDialog import com.skydoves.colorpickerview.ColorPickerDialog
import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener 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.Calendar
import java.util.Date
import java.util.Locale
class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { 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 val binding: FragmentSettingsNewBinding by viewBinding(FragmentSettingsNewBinding::bind)
private lateinit var resultIntent: ActivityResultLauncher<Intent>
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) 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 // Set click listener for showing licences dialogue
binding.buttonLicences.setOnClickListener { binding.buttonLicences.setOnClickListener {
openBottomSheet( openBottomSheet(
@@ -262,6 +312,23 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
updatePreview() 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) { private fun setGravityButtons(buttons: List<ImageButton>, gravity: Int) {
val transparent = context.getColor(android.R.color.transparent) val transparent = context.getColor(android.R.color.transparent)
@@ -374,10 +441,31 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
.show() .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() { private fun updatePreview() {
val bitmap = CanvasText.drawText(context, true) val bitmap = CanvasText.drawText(context, true)
binding.textPreview.setImageBitmap(bitmap) binding.textPreview.setImageBitmap(bitmap)
} }
} }
+1
View File
@@ -72,6 +72,7 @@
<string name="sheet_licences_header">Lizenzen</string> <string name="sheet_licences_header">Lizenzen</string>
<string name="settings_misc_app_version">App-Version</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="edit">Text bearbeiten</string>
<string name="nav_items_entries">Einträge</string> <string name="nav_items_entries">Einträge</string>
+3
View File
@@ -73,6 +73,9 @@
<string name="settings_misc_app_version">App Version</string> <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="edit">Edit Text</string>
<string name="nav_items_entries">Entries</string> <string name="nav_items_entries">Entries</string>
<string name="guide">Guide</string> <string name="guide">Guide</string>