diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c42fee0d..1104ba86 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -201,7 +201,8 @@ android:name=".others.imagesearch.ImageSearchActivity" android:parentActivityName=".MainActivity" /> + android:name=".util.MarkdownCreatorActivity" + android:windowSoftInputMode="adjustResize" /> <-", 3), + QUOTE("> ", 2), + CODE("`", 1); + } @OptIn(DelicateCoroutinesApi::class) override fun onCreate(savedInstanceState: Bundle?) { @@ -36,11 +55,15 @@ class MarkdownCreatorActivity : AppCompatActivity() { binding.markdownCreatorToolbar.updateLayoutParams { topMargin = statusBarHeight } - binding.buttonContainer.updateLayoutParams { + binding.markdownOptionsContainer.updateLayoutParams { bottomMargin += navBarHeight } setContentView(binding.root) + val params = binding.createButton.layoutParams as ViewGroup.MarginLayoutParams + params.marginEnd = 16 * resources.displayMetrics.density.toInt() + binding.createButton.layoutParams = params + if (intent.hasExtra("type")) { type = intent.getStringExtra("type")!! } else { @@ -67,17 +90,12 @@ class MarkdownCreatorActivity : AppCompatActivity() { text = ping ?: "" binding.editText.setText(text) binding.editText.addTextChangedListener { - if (!binding.markdownCreatorPreviewCheckbox.isChecked) { + if (!isPreviewMode) { text = it.toString() } } previewMarkdown(false) - binding.markdownCreatorPreviewCheckbox.setOnClickListener { - previewMarkdown(binding.markdownCreatorPreviewCheckbox.isChecked) - } - binding.cancelButton.setOnClickListener { - onBackPressedDispatcher.onBackPressed() - } + binding.markdownCreatorBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() } @@ -87,10 +105,10 @@ class MarkdownCreatorActivity : AppCompatActivity() { toast(getString(R.string.cannot_be_empty)) return@setOnClickListener } - AlertDialogBuilder(this).apply { + AlertDialog.Builder(this).apply { setTitle(R.string.warning) setMessage(R.string.post_to_anilist_warning) - setPosButton(R.string.ok) { + setPositiveButton(R.string.ok) { _, _ -> launchIO { val editId = intent.getIntExtra("edit", -1) val isEdit = editId != -1 @@ -113,14 +131,45 @@ class MarkdownCreatorActivity : AppCompatActivity() { finish() } } - setNeutralButton(R.string.open_rules) { + setNeutralButton(R.string.open_rules) { _, _ -> openLinkInBrowser("https://anilist.co/forum/thread/14") } - setNegButton(R.string.cancel) + setNegativeButton(R.string.cancel, null) }.show() } + binding.createButton.setOnLongClickListener { + isPreviewMode = !isPreviewMode + previewMarkdown(isPreviewMode) + if (isPreviewMode) { + toast("Preview enabled") + } else { + toast("Preview disabled") + } + true + } binding.editText.requestFocus() + setupMarkdownButtons() + } + + private fun setupMarkdownButtons() { + binding.formatBold.setOnClickListener { applyMarkdownFormat(MarkdownFormat.BOLD) } + binding.formatItalic.setOnClickListener { applyMarkdownFormat(MarkdownFormat.ITALIC) } + binding.formatStrikethrough.setOnClickListener { applyMarkdownFormat(MarkdownFormat.STRIKETHROUGH) } + } + + private fun applyMarkdownFormat(format: MarkdownFormat) { + val start = binding.editText.selectionStart + val end = binding.editText.selectionEnd + + if (start == end) { + binding.editText.text?.insert(start, format.syntax) + binding.editText.setSelection(start + format.selectionOffset) + } else { + binding.editText.text?.insert(end, format.syntax) + binding.editText.text?.insert(start, format.syntax) + binding.editText.setSelection(end + format.syntax.length, end + format.syntax.length) + } } private fun previewMarkdown(preview: Boolean) { diff --git a/app/src/main/res/drawable/format_align_center_24.xml b/app/src/main/res/drawable/format_align_center_24.xml new file mode 100644 index 00000000..c174a0ea --- /dev/null +++ b/app/src/main/res/drawable/format_align_center_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/format_bold_24.xml b/app/src/main/res/drawable/format_bold_24.xml new file mode 100644 index 00000000..c640aaaa --- /dev/null +++ b/app/src/main/res/drawable/format_bold_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/format_italic_24.xml b/app/src/main/res/drawable/format_italic_24.xml new file mode 100644 index 00000000..7f9ea8f9 --- /dev/null +++ b/app/src/main/res/drawable/format_italic_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/format_list_bulleted_24.xml b/app/src/main/res/drawable/format_list_bulleted_24.xml new file mode 100644 index 00000000..d2558d85 --- /dev/null +++ b/app/src/main/res/drawable/format_list_bulleted_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/format_list_numbered_24.xml b/app/src/main/res/drawable/format_list_numbered_24.xml new file mode 100644 index 00000000..bc344d32 --- /dev/null +++ b/app/src/main/res/drawable/format_list_numbered_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/format_quote_24.xml b/app/src/main/res/drawable/format_quote_24.xml new file mode 100644 index 00000000..74ecc150 --- /dev/null +++ b/app/src/main/res/drawable/format_quote_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/format_strikethrough_24.xml b/app/src/main/res/drawable/format_strikethrough_24.xml new file mode 100644 index 00000000..a7556219 --- /dev/null +++ b/app/src/main/res/drawable/format_strikethrough_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_markdown_creator.xml b/app/src/main/res/layout/activity_markdown_creator.xml index 87af585d..d7523dca 100644 --- a/app/src/main/res/layout/activity_markdown_creator.xml +++ b/app/src/main/res/layout/activity_markdown_creator.xml @@ -1,107 +1,133 @@ - - - - - - - - - - - - + android:fitsSystemWindows="false"> + android:layout_height="match_parent" + android:orientation="vertical" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> -