diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-11-06 02:36:08 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-11-06 02:36:08 -0500 |
commit | 49c6bda67b7f4af5f28a9ad02a0cb98f7e535be1 (patch) | |
tree | a782b20c0ee56aa9d7eb02abe68f1cfcc6dc1d2b /components | |
parent | af6c76fcdac4ef2d1ad11913a7e8613ce78c40bc (diff) | |
download | abaddon-portaudio-49c6bda67b7f4af5f28a9ad02a0cb98f7e535be1.tar.gz abaddon-portaudio-49c6bda67b7f4af5f28a9ad02a0cb98f7e535be1.zip |
a little reformat
Diffstat (limited to 'components')
-rw-r--r-- | components/chatmessage.cpp | 54 | ||||
-rw-r--r-- | components/chatmessage.hpp | 12 |
2 files changed, 29 insertions, 37 deletions
diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp index 7d049dd..e9aaa6c 100644 --- a/components/chatmessage.cpp +++ b/components/chatmessage.cpp @@ -59,16 +59,9 @@ ChatMessageItemContainer *ChatMessageItemContainer::FromMessage(Snowflake id) { const auto last3 = a.ProxyURL.substr(a.ProxyURL.length() - 3); if (last3 == "png" || last3 == "jpg") { auto *widget = container->CreateImageComponent(a); - auto *ev = Gtk::manage(new Gtk::EventBox); - ev->add(*widget); - container->AttachGuildMenuHandler(ev); - container->AddClickHandler(ev, a.URL); - container->m_main->add(*ev); - container->HandleImage(a, widget, a.ProxyURL); + container->m_main->add(*widget); } else { auto *widget = container->CreateAttachmentComponent(a); - container->AttachGuildMenuHandler(widget); - container->AddClickHandler(widget, a.URL); container->m_main->add(*widget); } } @@ -76,7 +69,7 @@ ChatMessageItemContainer *ChatMessageItemContainer::FromMessage(Snowflake id) { // only 1? if (data->Stickers.has_value()) { const auto &sticker = data->Stickers.value()[0]; - // todo: lottie + // todo: lottie, proper apng if (sticker.FormatType == StickerFormatType::PNG || sticker.FormatType == StickerFormatType::APNG) { auto *widget = container->CreateStickerComponent(sticker); container->m_main->add(*widget); @@ -207,7 +200,7 @@ void ChatMessageItemContainer::UpdateTextComponent(Gtk::TextView *tv) { } } -Gtk::EventBox *ChatMessageItemContainer::CreateEmbedComponent(const Message *data) { +Gtk::Widget *ChatMessageItemContainer::CreateEmbedComponent(const Message *data) { Gtk::EventBox *ev = Gtk::manage(new Gtk::EventBox); ev->set_can_focus(true); Gtk::Box *main = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL)); @@ -346,42 +339,39 @@ Gtk::EventBox *ChatMessageItemContainer::CreateEmbedComponent(const Message *dat return ev; } -Gtk::Image *ChatMessageItemContainer::CreateImageComponent(const AttachmentData &data) { +Gtk::Widget *ChatMessageItemContainer::CreateImageComponent(const AttachmentData &data) { int w, h; GetImageDimensions(data.Width, data.Height, w, h); - auto &im = Abaddon::Get().GetImageManager(); + Gtk::EventBox *ev = Gtk::manage(new Gtk::EventBox); Gtk::Image *widget = Gtk::manage(new Gtk::Image); + ev->add(*widget); widget->set_halign(Gtk::ALIGN_START); widget->set_size_request(w, h); - // clang-format off - const auto url = data.URL; - widget->signal_button_press_event().connect([url](GdkEventButton *event) -> bool { - if (event->type == Gdk::BUTTON_PRESS && event->button == GDK_BUTTON_PRIMARY) { - LaunchBrowser(url); - return false; - } - return true; - }, false); - // clang-format on + AttachGuildMenuHandler(ev); + AddClickHandler(ev, data.URL); + HandleImage(data, widget, data.ProxyURL); - return widget; + return ev; } -Gtk::Box *ChatMessageItemContainer::CreateAttachmentComponent(const AttachmentData &data) { - auto *box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); +Gtk::Widget *ChatMessageItemContainer::CreateAttachmentComponent(const AttachmentData &data) { auto *ev = Gtk::manage(new Gtk::EventBox); auto *btn = Gtk::manage(new Gtk::Label(data.Filename + " " + HumanReadableBytes(data.Bytes))); // Gtk::LinkButton flat out doesn't work :D - box->get_style_context()->add_class("message-attachment-box"); + ev->get_style_context()->add_class("message-attachment-box"); ev->add(*btn); - box->add(*ev); - return box; + + AttachGuildMenuHandler(ev); + AddClickHandler(ev, data.URL); + + return ev; } -Gtk::Box *ChatMessageItemContainer::CreateStickerComponent(const Sticker &data) { +Gtk::Widget *ChatMessageItemContainer::CreateStickerComponent(const Sticker &data) { auto *box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); auto *imgw = Gtk::manage(new Gtk::Image); + box->add(*imgw); auto &img = Abaddon::Get().GetImageManager(); if (data.FormatType == StickerFormatType::PNG || data.FormatType == StickerFormatType::APNG) { @@ -392,7 +382,7 @@ Gtk::Box *ChatMessageItemContainer::CreateStickerComponent(const Sticker &data) // clang-format on } - box->add(*imgw); + AttachGuildMenuHandler(box); return box; } @@ -745,8 +735,8 @@ ChatMessageItemContainer::type_signal_image_load ChatMessageItemContainer::signa return m_signal_image_load; } -// clang-format off void ChatMessageItemContainer::AttachGuildMenuHandler(Gtk::Widget *widget) { + // clang-format off widget->signal_button_press_event().connect([this](GdkEventButton *event) -> bool { if (event->type == GDK_BUTTON_PRESS && event->button == GDK_BUTTON_SECONDARY) { ShowMenu(reinterpret_cast<GdkEvent*>(event)); @@ -755,8 +745,8 @@ void ChatMessageItemContainer::AttachGuildMenuHandler(Gtk::Widget *widget) { return false; }, false); + // clang-format on } -// clang-format on ChatMessageHeader::ChatMessageHeader(const Message *data) { UserID = data->Author.ID; diff --git a/components/chatmessage.hpp b/components/chatmessage.hpp index dda6264..7e145a8 100644 --- a/components/chatmessage.hpp +++ b/components/chatmessage.hpp @@ -21,10 +21,10 @@ protected: void AddClickHandler(Gtk::Widget *widget, std::string); Gtk::TextView *CreateTextComponent(const Message *data); // Message.Content void UpdateTextComponent(Gtk::TextView *tv); - Gtk::EventBox *CreateEmbedComponent(const Message *data); // Message.Embeds[0] - Gtk::Image *CreateImageComponent(const AttachmentData &data); - Gtk::Box *CreateAttachmentComponent(const AttachmentData &data); // non-image attachments - Gtk::Box *CreateStickerComponent(const Sticker &data); + Gtk::Widget *CreateEmbedComponent(const Message *data); // Message.Embeds[0] + Gtk::Widget *CreateImageComponent(const AttachmentData &data); + Gtk::Widget *CreateAttachmentComponent(const AttachmentData &data); // non-image attachments + Gtk::Widget *CreateStickerComponent(const Sticker &data); void HandleImage(const AttachmentData &data, Gtk::Image *img, std::string url); static Glib::ustring GetText(const Glib::RefPtr<Gtk::TextBuffer> &buf); @@ -37,6 +37,7 @@ protected: void HandleChannelMentions(Gtk::TextView *tv); bool OnClickChannel(GdkEventButton *ev); + // reused for images and links Gtk::Menu m_link_menu; Gtk::MenuItem *m_link_menu_copy; @@ -64,13 +65,14 @@ protected: void on_menu_edit_message(); void on_menu_copy_content(); + Gtk::EventBox *m_ev; Gtk::Box *m_main; Gtk::Label *m_attrib_label = nullptr; Gtk::Image *m_embed_img = nullptr; // yes this is hacky no i dont care (for now) std::string m_embed_imgurl; Gtk::TextView *m_text_component = nullptr; - Gtk::EventBox *m_embed_component = nullptr; + Gtk::Widget *m_embed_component = nullptr; public: typedef sigc::signal<void, std::string> type_signal_image_load; |