diff options
Diffstat (limited to 'components/chatwindow.cpp')
-rw-r--r-- | components/chatwindow.cpp | 62 |
1 files changed, 10 insertions, 52 deletions
diff --git a/components/chatwindow.cpp b/components/chatwindow.cpp index ee88ae3..23631dd 100644 --- a/components/chatwindow.cpp +++ b/components/chatwindow.cpp @@ -55,7 +55,7 @@ ChatWindow::ChatWindow() { m_main->add(*m_entry_scroll); } -void ChatWindow::SetAbaddon(Abaddon* ptr) { +void ChatWindow::SetAbaddon(Abaddon *ptr) { m_abaddon = ptr; } @@ -71,61 +71,19 @@ Snowflake ChatWindow::GetActiveChannel() const { return m_active_channel; } -Gtk::ListBoxRow *ChatWindow::CreateChatEntryComponentText(const MessageData *data) { - auto *row = Gtk::manage(new Gtk::ListBoxRow); - 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("<span weight=\"bold\">" + Glib::Markup::escape_text(data->Author.Username) + "</span>"); - 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); - row->add(*main_box); - row->set_margin_bottom(8); - - row->show(); - - return row; +ChatMessageItem *ChatWindow::CreateChatEntryComponentText(const MessageData *data) { + return Gtk::manage(new ChatMessageTextItem(data)); } -Gtk::ListBoxRow *ChatWindow::CreateChatEntryComponent(const MessageData *data) { +ChatMessageItem *ChatWindow::CreateChatEntryComponent(const MessageData *data) { + ChatMessageItem *item = nullptr; if (data->Type == MessageType::DEFAULT && data->Content.size() > 0) - return CreateChatEntryComponentText(data); + item = CreateChatEntryComponentText(data); - return nullptr; + if (item != nullptr) + item->ID = data->ID; + + return item; } bool ChatWindow::on_key_press_event(GdkEventKey *e) { |