Archived
export is implemented, import is broken
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user