Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81245668 authored by cketti's avatar cketti
Browse files

Add message detail bottom sheet

This commit is mainly about the bottom sheet mechanics of showing the toolbar when it is expanded. A place holder layout is used for the bottom sheet content.
parent ef111af4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ dependencies {
    implementation project(":app:autodiscovery:api")
    implementation project(":app:autodiscovery:providersxml")
    implementation project(":mail:common")
    implementation project(":ui-utils:ToolbarBottomSheet")

    //TODO: Remove AccountSetupIncoming's dependency on these
    compileOnly project(":mail:protocols:imap")
+36 −0
Original line number Diff line number Diff line
package com.fsck.k9.ui.messageview

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import app.k9mail.ui.utils.bottomsheet.ToolbarBottomSheetDialogFragment
import com.fsck.k9.ui.R

class MessageBottomSheet : ToolbarBottomSheetDialogFragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.message_bottom_sheet, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val dialog = checkNotNull(dialog)
        dialog.isDismissWithAnimation = true

        val toolbar = checkNotNull(toolbar)
        toolbar.apply {
            title = "Message details"
            navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_close)

            setNavigationOnClickListener {
                dismiss()
            }
        }
    }
}
+6 −0
Original line number Diff line number Diff line
package com.fsck.k9.ui.messageview

fun interface MessageHeaderOnMenuItemClickListener {
interface MessageHeaderClickListener {
    fun onParticipantsContainerClick()
    fun onMenuItemClick(itemId: Int)
}
+2 −2
Original line number Diff line number Diff line
@@ -228,8 +228,8 @@ public class MessageTopView extends LinearLayout {
        mHeaderContainer.setOnFlagListener(listener);
    }

    public void setOnMenuItemClickListener(MessageHeaderOnMenuItemClickListener listener) {
        mHeaderContainer.setOnMenuItemClickListener(listener);
    public void setMessageHeaderClickListener(MessageHeaderClickListener listener) {
        mHeaderContainer.setMessageHeaderClickListener(listener);
    }

    private void hideHeaderView() {
+16 −9
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ class MessageViewFragment :
            onToggleFlagged()
        }

        messageTopView.setOnMenuItemClickListener(::onReplyMenuItemClicked)
        messageTopView.setMessageHeaderClickListener(messageHeaderClickListener)

        messageTopView.setOnDownloadButtonClickListener {
            onDownloadButtonClicked()
@@ -380,7 +380,13 @@ class MessageViewFragment :
        messageTopView.setSubject(displaySubject)
    }

    private fun onReplyMenuItemClicked(itemId: Int) {
    private val messageHeaderClickListener = object : MessageHeaderClickListener {
        override fun onParticipantsContainerClick() {
            val messageBottomSheet = MessageBottomSheet()
            messageBottomSheet.show(childFragmentManager, "message_details")
        }

        override fun onMenuItemClick(itemId: Int) {
            when (itemId) {
                R.id.reply -> onReply()
                R.id.reply_all -> onReplyAll()
@@ -390,6 +396,7 @@ class MessageViewFragment :
                else -> error("Missing handler for reply menu item $itemId")
            }
        }
    }

    private fun onDownloadButtonClicked() {
        messageTopView.disableDownloadButton()
Loading