diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed37e81..c149bde 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,6 +38,7 @@
+
() {
+
+ enum class Requester {
+ UserPost, SquadPost
+ }
+ override fun createIntent(context: Context, input: Requester): Intent {
+ return Intent(context, ImageChooserActivity::class.java).apply {
+ putExtra(ImageChooserActivity.INPUT_EXTRA, input)
+ }
+ }
+
+ override fun parseResult(resultCode: Int, intent: Intent?): Image? {
+ if(resultCode != Activity.RESULT_OK) { return null }
+
+ return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
+ intent?.getSerializableExtra(ImageChooserActivity.OUTPUT_EXTRA_IMAGE) as Image?
+ } else {
+ intent?.getSerializableExtra(ImageChooserActivity.OUTPUT_EXTRA_IMAGE, Image::class.java)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/markdown/Generators.kt b/app/src/main/java/com/isolaatti/markdown/Generators.kt
new file mode 100644
index 0000000..36533f3
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/markdown/Generators.kt
@@ -0,0 +1,14 @@
+package com.isolaatti.markdown
+
+object Generators {
+ fun generateImage(url: String): String {
+ // TODO: normalize input text to avoid conflicts with markdown syntax
+ return ""
+ }
+
+
+ fun generateLink(text: String, url: String): String {
+ // TODO: normalize input text to avoid conflicts with markdown syntax
+ return "[${text}]($url)"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/markdown/Wrapper.kt b/app/src/main/java/com/isolaatti/markdown/Wrapper.kt
new file mode 100644
index 0000000..3e72a3d
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/markdown/Wrapper.kt
@@ -0,0 +1,5 @@
+package com.isolaatti.markdown
+
+interface Wrapper {
+ val symbol: String
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/markdown/Wrappers.kt b/app/src/main/java/com/isolaatti/markdown/Wrappers.kt
new file mode 100644
index 0000000..cb770ec
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/markdown/Wrappers.kt
@@ -0,0 +1,13 @@
+package com.isolaatti.markdown
+
+object Wrappers {
+ val boldWrapper = object: Wrapper {
+ override val symbol: String
+ get() = "**"
+ }
+
+ val italicsWrapper = object: Wrapper {
+ override val symbol: String
+ get() = "*"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt b/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt
index 48efb7d..c15c977 100644
--- a/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt
+++ b/app/src/main/java/com/isolaatti/posting/posts/ui/MarkdownEditingFragment.kt
@@ -1,16 +1,21 @@
package com.isolaatti.posting.posts.ui
import android.os.Bundle
+import android.util.Log
import android.view.ActionMode
import android.view.LayoutInflater
import android.view.Menu
+import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
+import com.isolaatti.R
import com.isolaatti.databinding.FragmentMarkdownEditingBinding
+import com.isolaatti.images.image_chooser.ui.ImageChooserActivity
+import com.isolaatti.images.image_chooser.ui.ImageChooserContract
import com.isolaatti.posting.posts.presentation.CreatePostViewModel
import dagger.hilt.EntryPoint
@@ -18,6 +23,10 @@ class MarkdownEditingFragment : Fragment(){
private lateinit var binding: FragmentMarkdownEditingBinding
private val viewModel: CreatePostViewModel by activityViewModels()
+ private val imageChooserLauncher = registerForActivityResult(ImageChooserContract()) { image ->
+ Log.d("MarkdownEditingFragment", "$image")
+ }
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -32,6 +41,7 @@ class MarkdownEditingFragment : Fragment(){
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ binding.filledTextField.editText?.setText(viewModel.content)
binding.filledTextField.requestFocus()
binding.filledTextField.editText?.doOnTextChanged { text, _, _, _ ->
// make better validation :)
@@ -49,7 +59,7 @@ class MarkdownEditingFragment : Fragment(){
}
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
- return true
+ return false
}
override fun onDestroyActionMode(mode: ActionMode?) {
@@ -59,6 +69,7 @@ class MarkdownEditingFragment : Fragment(){
binding.filledTextField.editText?.customInsertionActionModeCallback = object: ActionMode.Callback {
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
+ MenuInflater(requireContext()).inflate(R.menu.contextual_menu_post_content, menu)
return true
}
@@ -67,7 +78,13 @@ class MarkdownEditingFragment : Fragment(){
}
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
- return true
+ if(item?.itemId == R.id.add_image_here_menu_item) {
+ insertImage()
+ mode?.finish()
+ return true
+ }
+
+ return false
}
override fun onDestroyActionMode(mode: ActionMode?) {
@@ -80,4 +97,8 @@ class MarkdownEditingFragment : Fragment(){
binding.filledTextField.editText?.setText(it.content)
}
}
+
+ private fun insertImage() {
+ imageChooserLauncher.launch(ImageChooserContract.Requester.UserPost)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_image_chooser.xml b/app/src/main/res/layout/activity_image_chooser.xml
new file mode 100644
index 0000000..63d12a4
--- /dev/null
+++ b/app/src/main/res/layout/activity_image_chooser.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/contextual_menu_post_content.xml b/app/src/main/res/menu/contextual_menu_post_content.xml
new file mode 100644
index 0000000..5ff2e4e
--- /dev/null
+++ b/app/src/main/res/menu/contextual_menu_post_content.xml
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6031f4b..a9dde6d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -127,4 +127,5 @@
Deleting, please wait…
Markdown
Preview
+ Add image here
\ No newline at end of file