From 44b7989f50d458a8d60024f29e225e40a106d927 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Sun, 30 Aug 2020 20:24:02 -0400 Subject: add MESSAGE_UPDATE --- components/chatmessage.cpp | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'components/chatmessage.cpp') diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp index 6ac4a99..c7cf21b 100644 --- a/components/chatmessage.cpp +++ b/components/chatmessage.cpp @@ -104,6 +104,8 @@ void ChatMessageItem::AddMenuItem(Gtk::MenuItem *item) { } ChatMessageTextItem::ChatMessageTextItem(const MessageData *data) { + m_content = data->Content; + set_can_focus(false); set_editable(false); set_wrap_mode(Gtk::WRAP_WORD_CHAR); @@ -118,14 +120,38 @@ ChatMessageTextItem::ChatMessageTextItem(const MessageData *data) { m_menu_copy_content->signal_activate().connect(sigc::mem_fun(*this, &ChatMessageTextItem::on_menu_copy_content)); } +void ChatMessageTextItem::EditContent(std::string content) { + m_content = content; + get_buffer()->set_text(content); + UpdateAttributes(); +} + void ChatMessageTextItem::on_menu_copy_content() { - auto *data = m_abaddon->GetDiscordClient().GetMessage(ID); - Gtk::Clipboard::get()->set_text(data->Content); + Gtk::Clipboard::get()->set_text(m_content); } void ChatMessageTextItem::MarkAsDeleted() { + m_was_deleted = true; + UpdateAttributes(); +} + +void ChatMessageTextItem::MarkAsEdited() { + m_was_edited = true; + UpdateAttributes(); +} + +void ChatMessageTextItem::UpdateAttributes() { + bool deleted = m_was_deleted; + bool edited = m_was_edited && !m_was_deleted; + auto buf = get_buffer(); + buf->set_text(m_content); Gtk::TextBuffer::iterator start, end; buf->get_bounds(start, end); - buf->insert_markup(end, " [deleted]"); + + if (deleted) { + buf->insert_markup(end, " [deleted]"); + } else if (edited) { + buf->insert_markup(end, " [edited]"); + } } -- cgit v1.2.3