cchat-gtk/internal/ui/messages/container/cozy/message_collapsed.go

53 lines
1.3 KiB
Go
Raw Normal View History

2020-06-07 04:27:28 +00:00
package cozy
import (
"github.com/diamondburned/cchat-gtk/internal/ui/messages/container"
"github.com/diamondburned/cchat-gtk/internal/ui/messages/message"
)
// Collapsed is a message that follows after FullMessage. It does not show
2020-06-07 04:27:28 +00:00
// the header, and the avatar is invisible.
type CollapsedMessage struct {
// Author is still updated normally.
*message.State
}
// WrapCollapsedMessage wraps the given message state to be a collapsed message.
func WrapCollapsedMessage(gc *message.State) *CollapsedMessage {
// Set Content's padding accordingly to FullMessage's main box.
2021-05-05 03:30:50 +00:00
gc.Content.SetMarginStart(container.ColumnSpacing*2 + AvatarSize)
gc.Content.SetMarginEnd(container.ColumnSpacing)
gc.PackStart(gc.Content, true, true, 0)
gc.SetClass("cozy-collapsed")
return &CollapsedMessage{
2021-05-05 03:30:50 +00:00
State: gc,
}
}
func (c *CollapsedMessage) Revert() *message.State {
c.ClearBox()
2021-05-05 03:30:50 +00:00
c.Content.SetMarginStart(0)
c.Content.SetMarginEnd(0)
return c.Unwrap()
}
type collapsed interface {
collapsed()
}
func (c *CollapsedMessage) collapsed() {}
type CollapsedSendingMessage struct {
2020-06-29 02:55:13 +00:00
*CollapsedMessage
message.Presender
}
func WrapCollapsedSendingMessage(pstate *message.PresendState) *CollapsedSendingMessage {
return &CollapsedSendingMessage{
CollapsedMessage: WrapCollapsedMessage(pstate.State),
Presender: pstate,
}
2020-06-07 04:27:28 +00:00
}