From a88bd4ac160edd2654d7fe37068fd9fe33b7530d Mon Sep 17 00:00:00 2001 From: zeyus Date: Wed, 27 Dec 2023 10:39:46 +0100 Subject: [PATCH 1/2] Update gradle, kotlin. --- .idea/.name | 1 + .idea/compiler.xml | 2 +- .idea/gradle.xml | 2 +- .idea/kotlinc.xml | 6 ++++++ .idea/misc.xml | 2 +- .idea/vcs.xml | 2 +- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 3 +-- build.gradle | 6 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- 10 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/kotlinc.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..5d279b9 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Markdown-Widget \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8..b589d56 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 526b4c2..ae388c2 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -7,13 +7,13 @@ - diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..7e340a7 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 5ba69b0..e50919e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -14,7 +14,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 8f818eb..8f4b54f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,6 +36,7 @@ android { packagingOptions { resources.excludes.add("META-INF/*") } + namespace 'ch.tiim.markdown_widget' } android.applicationVariants.all { variant -> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ebbba00..0dfb1d5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + Date: Wed, 27 Dec 2023 13:16:51 +0100 Subject: [PATCH 2/2] Added widget background color selector, added custom CSS. --- app/build.gradle | 1 + .../ch/tiim/markdown_widget/MainActivity.kt | 1 - .../markdown_widget/MarkdownFileWidget.kt | 5 +- .../MarkdownFileWidgetConfigureActivity.kt | 34 +++++++++++++- .../ch/tiim/markdown_widget/MarkdownParser.kt | 8 ++-- .../tiim/markdown_widget/MarkdownRenderer.kt | 16 ++++--- app/src/main/res/drawable/textborder.xml | 4 ++ .../layout/markdown_file_widget_configure.xml | 47 +++++++++++++++++++ settings.gradle | 3 +- 9 files changed, 103 insertions(+), 16 deletions(-) create mode 100644 app/src/main/res/drawable/textborder.xml diff --git a/app/build.gradle b/app/build.gradle index 8f4b54f..8657a8f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'com.vladsch.flexmark:flexmark-all:0.64.0' + implementation 'com.github.Dhaval2404:ColorPicker:2.3' testImplementation 'junit:junit:4.13.2' diff --git a/app/src/main/java/ch/tiim/markdown_widget/MainActivity.kt b/app/src/main/java/ch/tiim/markdown_widget/MainActivity.kt index 670ad69..5317ba0 100644 --- a/app/src/main/java/ch/tiim/markdown_widget/MainActivity.kt +++ b/app/src/main/java/ch/tiim/markdown_widget/MainActivity.kt @@ -5,7 +5,6 @@ import android.net.Uri import android.os.Bundle import android.view.View import android.widget.Button -import android.widget.ImageView import android.widget.LinearLayout import androidx.appcompat.app.AppCompatActivity diff --git a/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidget.kt b/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidget.kt index b7a9288..bd2a604 100644 --- a/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidget.kt +++ b/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidget.kt @@ -10,6 +10,7 @@ import android.content.Intent import android.content.res.Configuration.ORIENTATION_PORTRAIT import android.content.res.Resources import android.database.Cursor +import android.graphics.Color import android.net.Uri import android.os.Bundle import android.os.Handler @@ -85,6 +86,8 @@ class MarkdownFileWidget : AppWidgetProvider() { val tapBehavior = loadPref(context, appWidgetId, PREF_BEHAVIOUR, TAP_BEHAVIOUR_DEFAULT_APP) val fileUri = Uri.parse(loadPref(context, appWidgetId, PREF_FILE, "")) + var bgColor = loadPref(context, appWidgetId, PREF_BGCOLOR, Color.WHITE.toString()).toInt() + var customCSS = loadPref(context, appWidgetId, PREF_CSS, "") val s = loadMarkdown(context, fileUri) @@ -94,7 +97,7 @@ class MarkdownFileWidget : AppWidgetProvider() { s ) ) { - cachedMarkdown.put(appWidgetId, MarkdownRenderer(context, width, height, s)) + cachedMarkdown.put(appWidgetId, MarkdownRenderer(context, width, height, s, bgColor, customCSS)) } val md = cachedMarkdown[appWidgetId] diff --git a/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidgetConfigureActivity.kt b/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidgetConfigureActivity.kt index 28d5fd7..84804e8 100644 --- a/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidgetConfigureActivity.kt +++ b/app/src/main/java/ch/tiim/markdown_widget/MarkdownFileWidgetConfigureActivity.kt @@ -7,6 +7,7 @@ import android.content.ContentResolver import android.content.Context import android.content.Intent import android.content.pm.PackageManager +import android.graphics.Color import android.net.Uri import android.os.Bundle import android.view.View @@ -14,9 +15,13 @@ import android.webkit.MimeTypeMap import android.widget.EditText import android.widget.RadioGroup import android.widget.RemoteViews +import android.widget.TextView import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import ch.tiim.markdown_widget.databinding.MarkdownFileWidgetConfigureBinding +import com.github.dhaval2404.colorpicker.ColorPickerDialog +import com.github.dhaval2404.colorpicker.model.ColorShape +import com.github.dhaval2404.colorpicker.model.ColorSwatch /** * The configuration screen for the [MarkdownFileWidget] AppWidget. @@ -29,11 +34,16 @@ private const val ACTIVITY_RESULT_BROWSE = 1 internal const val PREF_FILE = "filepath" internal const val PREF_BEHAVIOUR = "behaviour" +internal const val PREF_BGCOLOR = "bgcolor" +internal const val PREF_CSS = "customcss" class MarkdownFileWidgetConfigureActivity : Activity() { private var appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID private lateinit var inputFilePath: EditText private lateinit var radioGroup: RadioGroup + private lateinit var selectedColor: TextView + private lateinit var customCSS: EditText + private val onBrowse = View.OnClickListener { // Workaround for https://github.com/Tiim/Android-Markdown-Widget/issues/14: // Check if MIME-Type "text/markdown" is known. Otherwise fall back to @@ -66,6 +76,20 @@ class MarkdownFileWidgetConfigureActivity : Activity() { } } + private val onPickColor = View.OnClickListener{ + val context = this@MarkdownFileWidgetConfigureActivity + ColorPickerDialog + .Builder(this) + .setTitle("Pick Background Color") + .setColorShape(ColorShape.SQAURE) + .setDefaultColor(R.color.white) + .setColorListener { color, _ -> + savePref(context, appWidgetId, "bgcolor", color.toString()) + selectedColor.setBackgroundColor(color) + } + .show() + } + private val onAddWidget = View.OnClickListener { val context = this@MarkdownFileWidgetConfigureActivity @@ -73,6 +97,9 @@ class MarkdownFileWidgetConfigureActivity : Activity() { val widgetText = inputFilePath.text.toString() savePref(context, appWidgetId, "filepath" , widgetText) + val customCssText = customCSS.text.toString() + savePref(context, appWidgetId, "customcss" , customCssText) + val rID = radioGroup.checkedRadioButtonId val tapBehaviour = when (rID) { R.id.radio_noop -> { @@ -87,7 +114,6 @@ class MarkdownFileWidgetConfigureActivity : Activity() { } savePref(context, appWidgetId, "behaviour", tapBehaviour) - // It is the responsibility of the configuration activity to update the app widget val appWidgetManager = AppWidgetManager.getInstance(context) @@ -114,10 +140,14 @@ class MarkdownFileWidgetConfigureActivity : Activity() { inputFilePath = binding.inputFile radioGroup = binding.radiogroup + binding.bgcolorButton.setOnClickListener(onPickColor) binding.addButton.setOnClickListener(onAddWidget) binding.btnBrowse.setOnClickListener(onBrowse) binding.radioDefaultApp.isSelected = true - + selectedColor = binding.selectedColor + selectedColor.setBackgroundColor(Color.WHITE) + selectedColor.setOnClickListener(onPickColor) + customCSS = binding.customCSS // Find the widget id from the intent. val intent = intent diff --git a/app/src/main/java/ch/tiim/markdown_widget/MarkdownParser.kt b/app/src/main/java/ch/tiim/markdown_widget/MarkdownParser.kt index 92357eb..2955d7e 100644 --- a/app/src/main/java/ch/tiim/markdown_widget/MarkdownParser.kt +++ b/app/src/main/java/ch/tiim/markdown_widget/MarkdownParser.kt @@ -49,12 +49,12 @@ class MarkdownParser(private val theme:String) { - - ${theme} - + - ${html} + $html """ } diff --git a/app/src/main/java/ch/tiim/markdown_widget/MarkdownRenderer.kt b/app/src/main/java/ch/tiim/markdown_widget/MarkdownRenderer.kt index 924c521..93720ea 100644 --- a/app/src/main/java/ch/tiim/markdown_widget/MarkdownRenderer.kt +++ b/app/src/main/java/ch/tiim/markdown_widget/MarkdownRenderer.kt @@ -15,9 +15,9 @@ import kotlin.math.max private const val TAG = "MarkdownRenderer" -class MarkdownRenderer(private val context: Context, private val width: Int, private val height: Int, private val data: String, private val onReady: ((Bitmap) -> Unit) = {}) { +class MarkdownRenderer(private val context: Context, private val width: Int, private val height: Int, private val data: String, private val bgColor: Int = Color.WHITE, private val customCSS: String = "", private val onReady: ((Bitmap) -> Unit) = {}) { - private val mdParser = MarkdownParser("") + private val mdParser = MarkdownParser(customCSS) val webView = WebView(context); private val bitmap = Bitmap.createBitmap(max(width, 100), max(height, 100), Bitmap.Config.ARGB_8888) private val canvas = Canvas(bitmap) @@ -25,11 +25,12 @@ class MarkdownRenderer(private val context: Context, private val width: Int, pri init { val html = getHtml(data); - prepareWebView(html) + prepareWebView(html, bgColor) } private fun prepareWebView( - html: String + html: String, + bgColor: Int = Color.WHITE ) { webView.webViewClient = object: WebViewClient() { override fun onPageFinished(view: WebView?, url: String?) { @@ -47,12 +48,13 @@ class MarkdownRenderer(private val context: Context, private val width: Int, pri } } webView.layout(0, 0, width, height) - webView.setBackgroundColor(Color.WHITE) + + webView.setBackgroundColor(bgColor) //webView.setBackgroundColor(Color.MAGENTA) val encodedHtml = Base64.encodeToString(html.toByteArray(), Base64.DEFAULT) webView.loadData(encodedHtml, "text/html", "base64") - webView.isDrawingCacheEnabled = true - webView.buildDrawingCache() + // webView.isDrawingCacheEnabled = true + // webView.buildDrawingCache() } fun isReady():Boolean { diff --git a/app/src/main/res/drawable/textborder.xml b/app/src/main/res/drawable/textborder.xml new file mode 100644 index 0000000..ff0d6ee --- /dev/null +++ b/app/src/main/res/drawable/textborder.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/markdown_file_widget_configure.xml b/app/src/main/res/layout/markdown_file_widget_configure.xml index 0142b88..1107ed8 100644 --- a/app/src/main/res/layout/markdown_file_widget_configure.xml +++ b/app/src/main/res/layout/markdown_file_widget_configure.xml @@ -47,6 +47,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + +