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..8657a8f 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 -> @@ -52,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/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 @@ - + + 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" /> + + + +