diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-30 20:24:02 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-30 20:24:02 -0400 |
commit | 44b7989f50d458a8d60024f29e225e40a106d927 (patch) | |
tree | 24bafb2f31d12b36ce488cee351f335015e5bd20 /components/chatmessage.cpp | |
parent | 4e7e5a30632b76ccc53255532ba9a6549084e498 (diff) | |
download | abaddon-portaudio-44b7989f50d458a8d60024f29e225e40a106d927.tar.gz abaddon-portaudio-44b7989f50d458a8d60024f29e225e40a106d927.zip |
add MESSAGE_UPDATE
Diffstat (limited to 'components/chatmessage.cpp')
-rw-r--r-- | components/chatmessage.cpp | 32 |
1 files changed, 29 insertions, 3 deletions
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, "<span color='#ff0000'> [deleted]</span>"); + + if (deleted) { + buf->insert_markup(end, "<span color='#ff0000'> [deleted]</span>"); + } else if (edited) { + buf->insert_markup(end, "<span color='#999999'> [edited]</span>"); + } } |