From c6e2f266a11c7d2f2c025fc2f75ce38223a4bac2 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Wed, 26 Aug 2020 01:46:43 -0400 Subject: make chat message components their own subclass of ListBoxRow --- components/chatmessage.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 components/chatmessage.cpp (limited to 'components/chatmessage.cpp') diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp new file mode 100644 index 0000000..0736d28 --- /dev/null +++ b/components/chatmessage.cpp @@ -0,0 +1,48 @@ +#include "chatmessage.hpp" + +ChatMessageTextItem::ChatMessageTextItem(const MessageData *data) { + auto *main_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); + auto *sub_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL)); + auto *meta_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); + auto *author = Gtk::manage(new Gtk::Label); + auto *timestamp = Gtk::manage(new Gtk::Label); + auto *text = Gtk::manage(new Gtk::TextView); + + text->set_can_focus(false); + text->set_editable(false); + text->set_wrap_mode(Gtk::WRAP_WORD_CHAR); + text->set_halign(Gtk::ALIGN_FILL); + text->set_hexpand(true); + text->get_buffer()->set_text(data->Content); + text->show(); + + author->set_markup("" + Glib::Markup::escape_text(data->Author.Username) + ""); + author->set_single_line_mode(true); + author->set_line_wrap(false); + author->set_ellipsize(Pango::ELLIPSIZE_END); + author->set_xalign(0.f); + author->show(); + + timestamp->set_text(data->Timestamp); + timestamp->set_opacity(0.5); + timestamp->set_single_line_mode(true); + timestamp->set_margin_start(12); + timestamp->show(); + + main_box->set_hexpand(true); + main_box->set_vexpand(true); + main_box->show(); + + meta_box->show(); + sub_box->show(); + + meta_box->add(*author); + meta_box->add(*timestamp); + sub_box->add(*meta_box); + sub_box->add(*text); + main_box->add(*sub_box); + add(*main_box); + set_margin_bottom(8); + + show(); +} -- cgit v1.2.3