From 08e9d2f0efa0f90b27b1aefe4d319296964dcfdb Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Sat, 29 Aug 2020 22:45:27 -0400 Subject: rework chat components to make more sense --- components/chatmessage.cpp | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) (limited to 'components/chatmessage.cpp') diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp index 048d725..29b2ac6 100644 --- a/components/chatmessage.cpp +++ b/components/chatmessage.cpp @@ -1,20 +1,13 @@ #include "chatmessage.hpp" -ChatMessageTextItem::ChatMessageTextItem(const MessageData *data) { +ChatMessageContainer::ChatMessageContainer(const MessageData *data) { + UserID = data->Author.ID; + m_main_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); - m_sub_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL)); + m_content_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL)); m_meta_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); m_author = Gtk::manage(new Gtk::Label); m_timestamp = Gtk::manage(new Gtk::Label); - m_text = Gtk::manage(new Gtk::TextView); - - m_text->set_can_focus(false); - m_text->set_editable(false); - m_text->set_wrap_mode(Gtk::WRAP_WORD_CHAR); - m_text->set_halign(Gtk::ALIGN_FILL); - m_text->set_hexpand(true); - m_text->get_buffer()->set_text(data->Content); - m_text->show(); m_author->set_markup("" + Glib::Markup::escape_text(data->Author.Username) + ""); m_author->set_single_line_mode(true); @@ -39,32 +32,38 @@ ChatMessageTextItem::ChatMessageTextItem(const MessageData *data) { m_meta_box->set_can_focus(false); m_meta_box->show(); - m_sub_box->set_can_focus(false); - m_sub_box->show(); + m_content_box->set_can_focus(false); + m_content_box->show(); m_meta_box->add(*m_author); m_meta_box->add(*m_timestamp); - m_sub_box->add(*m_meta_box); - m_sub_box->add(*m_text); - m_main_box->add(*m_sub_box); + m_content_box->add(*m_meta_box); + m_main_box->add(*m_content_box); add(*m_main_box); set_margin_bottom(8); show(); } -void ChatMessageTextItem::AppendNewContent(std::string content) { - auto buf = m_text->get_buffer(); - buf->set_text(buf->get_text() + "\n" + content); +void ChatMessageContainer::AddNewContent(Gtk::Widget *widget, bool prepend) { + if (prepend) + m_content_box->pack_end(*widget); + else + m_content_box->pack_start(*widget); } -void ChatMessageTextItem::PrependNewContent(std::string content) { - auto buf = m_text->get_buffer(); - buf->set_text(content + "\n" + buf->get_text()); +ChatMessageTextItem::ChatMessageTextItem(const MessageData *data) { + set_can_focus(false); + set_editable(false); + set_wrap_mode(Gtk::WRAP_WORD_CHAR); + set_halign(Gtk::ALIGN_FILL); + set_hexpand(true); + get_buffer()->set_text(data->Content); + show(); } void ChatMessageTextItem::MarkAsDeleted() { - auto buf = m_text->get_buffer(); + auto buf = get_buffer(); Gtk::TextBuffer::iterator start, end; buf->get_bounds(start, end); buf->insert_markup(end, " [deleted]"); -- cgit v1.2.3