|
|
|
@ -16,7 +16,6 @@ import android.provider.OpenableColumns
|
|
|
|
|
import android.util.Log
|
|
|
|
|
import android.view.Menu
|
|
|
|
|
import android.view.MenuItem
|
|
|
|
|
import android.view.Window
|
|
|
|
|
import android.view.WindowInsets
|
|
|
|
|
import android.view.WindowManager
|
|
|
|
|
import android.webkit.ConsoleMessage
|
|
|
|
@ -67,8 +66,8 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
{
|
|
|
|
|
className: "editor-statusbar-left",
|
|
|
|
|
onUpdate: (el) => {
|
|
|
|
|
el.innerHTML = "<i class=\"fa fa-circle\"></i>"
|
|
|
|
|
}
|
|
|
|
|
el.innerHTML = saveStatus()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
className: "displayName",
|
|
|
|
@ -953,7 +952,6 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
selectFileForSaveAs()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
catch (e: Exception) {
|
|
|
|
|
Log.d(javaClass.simpleName, "Problem with accessing file\n${e.stackTraceToString()}")
|
|
|
|
|
this.runOnUiThread(
|
|
|
|
@ -969,8 +967,19 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
this. runOnUiThread({
|
|
|
|
|
this.runOnUiThread({
|
|
|
|
|
webView.evaluateJavascript("getValue();") {
|
|
|
|
|
if (it == "") {
|
|
|
|
|
return@evaluateJavascript
|
|
|
|
|
} else if (it == "null") {
|
|
|
|
|
Toast.makeText(
|
|
|
|
|
this,
|
|
|
|
|
"Problem with file buffer. Please reopen manually.",
|
|
|
|
|
Toast.LENGTH_LONG
|
|
|
|
|
).show()
|
|
|
|
|
openFile()
|
|
|
|
|
return@evaluateJavascript
|
|
|
|
|
}
|
|
|
|
|
mdeValue =
|
|
|
|
|
metaData.toString() + URLDecoder.decode(it.removeSurrounding("\""))
|
|
|
|
|
if (mdeValue.length.toLong() == textFile.statSize) {
|
|
|
|
@ -985,7 +994,10 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
Log.d(javaClass.simpleName, "File saved: ${thisFileUri}")
|
|
|
|
|
textFile.close()
|
|
|
|
|
this@MainActivity.runOnUiThread {
|
|
|
|
|
webView.evaluateJavascript("easyMDE.codemirror.doc.markClean();", {})
|
|
|
|
|
webView.evaluateJavascript(
|
|
|
|
|
"easyMDE.codemirror.doc.markClean();" +
|
|
|
|
|
"easyMDE.updateStatusBar(\"editor-statusbar-left\",saveStatus());"
|
|
|
|
|
, {})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
@ -1037,6 +1049,13 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun checkURIResource(context: Context, uri: Uri?): Boolean {
|
|
|
|
|
val cursor = context.contentResolver.query(uri!!, null, null, null, null)
|
|
|
|
|
val doesExist = cursor != null && cursor.moveToFirst()
|
|
|
|
|
cursor?.close()
|
|
|
|
|
return doesExist
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Throws(IOException::class)
|
|
|
|
|
private fun readFile(uri: Uri) {
|
|
|
|
|
//TODO: Which permissions are really needed?
|
|
|
|
@ -1068,6 +1087,19 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
CoroutineScope(Dispatchers.Main).launch {
|
|
|
|
|
withContext(Dispatchers.IO) {
|
|
|
|
|
try {
|
|
|
|
|
if (!checkURIResource(applicationContext, uri)) {
|
|
|
|
|
Log.d(javaClass.simpleName, "URI unavailable")
|
|
|
|
|
this@MainActivity.runOnUiThread({
|
|
|
|
|
Toast.makeText(
|
|
|
|
|
this@MainActivity,
|
|
|
|
|
"URI check failed\n" +
|
|
|
|
|
"Better open from another storage location\n" ,
|
|
|
|
|
Toast.LENGTH_LONG
|
|
|
|
|
).show()
|
|
|
|
|
})
|
|
|
|
|
thisFileUri = null
|
|
|
|
|
return@withContext
|
|
|
|
|
}
|
|
|
|
|
contentResolver.openInputStream(uri)?.use { inputStream ->
|
|
|
|
|
BufferedReader(InputStreamReader(inputStream)).use { reader ->
|
|
|
|
|
var i = ""
|
|
|
|
@ -1096,8 +1128,10 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
this@MainActivity.runOnUiThread({
|
|
|
|
|
Toast.makeText(
|
|
|
|
|
this@MainActivity,
|
|
|
|
|
"File not found during reading.\n$e",
|
|
|
|
|
Toast.LENGTH_LONG
|
|
|
|
|
"File not found during reading.\n" +
|
|
|
|
|
"Current Buffer is not connected to any file now.\n" +
|
|
|
|
|
"Save with other file name or open another.",
|
|
|
|
|
Toast.LENGTH_LONG
|
|
|
|
|
).show()
|
|
|
|
|
})
|
|
|
|
|
thisFileUri = null
|
|
|
|
@ -1136,6 +1170,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
val script = "if (typeof easyMDE !== 'undefined') {" +
|
|
|
|
|
"easyMDE.codemirror.doc.setValue(`${mdeValue}`);" +
|
|
|
|
|
"easyMDE.codemirror.doc.markClean();" +
|
|
|
|
|
"easyMDE.updateStatusBar(\"editor-statusbar-left\",saveStatus());" +
|
|
|
|
|
"easyMDE.codemirror.focus();" +
|
|
|
|
|
"easyMDE.codemirror.doc.setCursor(JSON.parse(`${metaData.cursor}`));" +
|
|
|
|
|
"pasteText();" +
|
|
|
|
@ -1145,7 +1180,6 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
webView.evaluateJavascript(script, {
|
|
|
|
|
thisFileUri = uri
|
|
|
|
|
Log.d(javaClass.simpleName,"File read: ${thisFileUri}")
|
|
|
|
|
saveFile()
|
|
|
|
|
})
|
|
|
|
|
webView.requestFocus()
|
|
|
|
|
})
|
|
|
|
@ -1154,6 +1188,7 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun saveMetaToSharedPrefs() {
|
|
|
|
|
if (thisFileUri == null) return
|
|
|
|
|
Log.d(javaClass.simpleName, "saving to shared prefs cursor: ${metaData.cursor} in file: ${thisFileUri}")
|
|
|
|
|
getSharedPreferences("prefs", Context.MODE_PRIVATE)
|
|
|
|
|
.edit().apply {
|
|
|
|
@ -1186,7 +1221,6 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
|
|
|
|
|
override fun onPause() {
|
|
|
|
|
super.onPause()
|
|
|
|
|
/*outState.putString("test", "onSaveInstanceState-String")*/
|
|
|
|
|
saveFile()
|
|
|
|
|
webView.evaluateJavascript("easyMDE.codemirror.doc.getCursor();") {
|
|
|
|
|
metaData.cursor=it
|
|
|
|
@ -1198,11 +1232,6 @@ class MainActivity : AppCompatActivity() {
|
|
|
|
|
|
|
|
|
|
override protected fun onRestoreInstanceState(savedInstanceState: Bundle) {
|
|
|
|
|
super.onRestoreInstanceState(savedInstanceState)
|
|
|
|
|
/* findViewById<TextView>(R.id.edittext_lifecycle).text = savedInstanceState.getString("test")*/
|
|
|
|
|
/*webView.evaluateJavascript("getValue();", ValueCallback<String>() {
|
|
|
|
|
saveFile(it)
|
|
|
|
|
})*/
|
|
|
|
|
|
|
|
|
|
Log.i(javaClass.simpleName, "\"onRestoreInstanceState\" durchlaufen")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|