mirror of
https://github.com/uowuo/abaddon.git
synced 2024-09-20 23:11:51 +00:00
a little reformat
This commit is contained in:
parent
af6c76fcda
commit
49c6bda67b
|
@ -59,16 +59,9 @@ ChatMessageItemContainer *ChatMessageItemContainer::FromMessage(Snowflake id) {
|
||||||
const auto last3 = a.ProxyURL.substr(a.ProxyURL.length() - 3);
|
const auto last3 = a.ProxyURL.substr(a.ProxyURL.length() - 3);
|
||||||
if (last3 == "png" || last3 == "jpg") {
|
if (last3 == "png" || last3 == "jpg") {
|
||||||
auto *widget = container->CreateImageComponent(a);
|
auto *widget = container->CreateImageComponent(a);
|
||||||
auto *ev = Gtk::manage(new Gtk::EventBox);
|
container->m_main->add(*widget);
|
||||||
ev->add(*widget);
|
|
||||||
container->AttachGuildMenuHandler(ev);
|
|
||||||
container->AddClickHandler(ev, a.URL);
|
|
||||||
container->m_main->add(*ev);
|
|
||||||
container->HandleImage(a, widget, a.ProxyURL);
|
|
||||||
} else {
|
} else {
|
||||||
auto *widget = container->CreateAttachmentComponent(a);
|
auto *widget = container->CreateAttachmentComponent(a);
|
||||||
container->AttachGuildMenuHandler(widget);
|
|
||||||
container->AddClickHandler(widget, a.URL);
|
|
||||||
container->m_main->add(*widget);
|
container->m_main->add(*widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +69,7 @@ ChatMessageItemContainer *ChatMessageItemContainer::FromMessage(Snowflake id) {
|
||||||
// only 1?
|
// only 1?
|
||||||
if (data->Stickers.has_value()) {
|
if (data->Stickers.has_value()) {
|
||||||
const auto &sticker = data->Stickers.value()[0];
|
const auto &sticker = data->Stickers.value()[0];
|
||||||
// todo: lottie
|
// todo: lottie, proper apng
|
||||||
if (sticker.FormatType == StickerFormatType::PNG || sticker.FormatType == StickerFormatType::APNG) {
|
if (sticker.FormatType == StickerFormatType::PNG || sticker.FormatType == StickerFormatType::APNG) {
|
||||||
auto *widget = container->CreateStickerComponent(sticker);
|
auto *widget = container->CreateStickerComponent(sticker);
|
||||||
container->m_main->add(*widget);
|
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);
|
Gtk::EventBox *ev = Gtk::manage(new Gtk::EventBox);
|
||||||
ev->set_can_focus(true);
|
ev->set_can_focus(true);
|
||||||
Gtk::Box *main = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
|
Gtk::Box *main = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
|
||||||
|
@ -346,42 +339,39 @@ Gtk::EventBox *ChatMessageItemContainer::CreateEmbedComponent(const Message *dat
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
|
||||||
Gtk::Image *ChatMessageItemContainer::CreateImageComponent(const AttachmentData &data) {
|
Gtk::Widget *ChatMessageItemContainer::CreateImageComponent(const AttachmentData &data) {
|
||||||
int w, h;
|
int w, h;
|
||||||
GetImageDimensions(data.Width, data.Height, 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);
|
Gtk::Image *widget = Gtk::manage(new Gtk::Image);
|
||||||
|
ev->add(*widget);
|
||||||
widget->set_halign(Gtk::ALIGN_START);
|
widget->set_halign(Gtk::ALIGN_START);
|
||||||
widget->set_size_request(w, h);
|
widget->set_size_request(w, h);
|
||||||
|
|
||||||
// clang-format off
|
AttachGuildMenuHandler(ev);
|
||||||
const auto url = data.URL;
|
AddClickHandler(ev, data.URL);
|
||||||
widget->signal_button_press_event().connect([url](GdkEventButton *event) -> bool {
|
HandleImage(data, widget, data.ProxyURL);
|
||||||
if (event->type == Gdk::BUTTON_PRESS && event->button == GDK_BUTTON_PRIMARY) {
|
|
||||||
LaunchBrowser(url);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}, false);
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
return widget;
|
return ev;
|
||||||
}
|
}
|
||||||
|
|
||||||
Gtk::Box *ChatMessageItemContainer::CreateAttachmentComponent(const AttachmentData &data) {
|
Gtk::Widget *ChatMessageItemContainer::CreateAttachmentComponent(const AttachmentData &data) {
|
||||||
auto *box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL));
|
|
||||||
auto *ev = Gtk::manage(new Gtk::EventBox);
|
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
|
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);
|
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 *box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL));
|
||||||
auto *imgw = Gtk::manage(new Gtk::Image);
|
auto *imgw = Gtk::manage(new Gtk::Image);
|
||||||
|
box->add(*imgw);
|
||||||
auto &img = Abaddon::Get().GetImageManager();
|
auto &img = Abaddon::Get().GetImageManager();
|
||||||
|
|
||||||
if (data.FormatType == StickerFormatType::PNG || data.FormatType == StickerFormatType::APNG) {
|
if (data.FormatType == StickerFormatType::PNG || data.FormatType == StickerFormatType::APNG) {
|
||||||
|
@ -392,7 +382,7 @@ Gtk::Box *ChatMessageItemContainer::CreateStickerComponent(const Sticker &data)
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
|
|
||||||
box->add(*imgw);
|
AttachGuildMenuHandler(box);
|
||||||
return box;
|
return box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -745,8 +735,8 @@ ChatMessageItemContainer::type_signal_image_load ChatMessageItemContainer::signa
|
||||||
return m_signal_image_load;
|
return m_signal_image_load;
|
||||||
}
|
}
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
void ChatMessageItemContainer::AttachGuildMenuHandler(Gtk::Widget *widget) {
|
void ChatMessageItemContainer::AttachGuildMenuHandler(Gtk::Widget *widget) {
|
||||||
|
// clang-format off
|
||||||
widget->signal_button_press_event().connect([this](GdkEventButton *event) -> bool {
|
widget->signal_button_press_event().connect([this](GdkEventButton *event) -> bool {
|
||||||
if (event->type == GDK_BUTTON_PRESS && event->button == GDK_BUTTON_SECONDARY) {
|
if (event->type == GDK_BUTTON_PRESS && event->button == GDK_BUTTON_SECONDARY) {
|
||||||
ShowMenu(reinterpret_cast<GdkEvent*>(event));
|
ShowMenu(reinterpret_cast<GdkEvent*>(event));
|
||||||
|
@ -755,8 +745,8 @@ void ChatMessageItemContainer::AttachGuildMenuHandler(Gtk::Widget *widget) {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}, false);
|
}, false);
|
||||||
|
// clang-format on
|
||||||
}
|
}
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
ChatMessageHeader::ChatMessageHeader(const Message *data) {
|
ChatMessageHeader::ChatMessageHeader(const Message *data) {
|
||||||
UserID = data->Author.ID;
|
UserID = data->Author.ID;
|
||||||
|
|
|
@ -21,10 +21,10 @@ protected:
|
||||||
void AddClickHandler(Gtk::Widget *widget, std::string);
|
void AddClickHandler(Gtk::Widget *widget, std::string);
|
||||||
Gtk::TextView *CreateTextComponent(const Message *data); // Message.Content
|
Gtk::TextView *CreateTextComponent(const Message *data); // Message.Content
|
||||||
void UpdateTextComponent(Gtk::TextView *tv);
|
void UpdateTextComponent(Gtk::TextView *tv);
|
||||||
Gtk::EventBox *CreateEmbedComponent(const Message *data); // Message.Embeds[0]
|
Gtk::Widget *CreateEmbedComponent(const Message *data); // Message.Embeds[0]
|
||||||
Gtk::Image *CreateImageComponent(const AttachmentData &data);
|
Gtk::Widget *CreateImageComponent(const AttachmentData &data);
|
||||||
Gtk::Box *CreateAttachmentComponent(const AttachmentData &data); // non-image attachments
|
Gtk::Widget *CreateAttachmentComponent(const AttachmentData &data); // non-image attachments
|
||||||
Gtk::Box *CreateStickerComponent(const Sticker &data);
|
Gtk::Widget *CreateStickerComponent(const Sticker &data);
|
||||||
void HandleImage(const AttachmentData &data, Gtk::Image *img, std::string url);
|
void HandleImage(const AttachmentData &data, Gtk::Image *img, std::string url);
|
||||||
|
|
||||||
static Glib::ustring GetText(const Glib::RefPtr<Gtk::TextBuffer> &buf);
|
static Glib::ustring GetText(const Glib::RefPtr<Gtk::TextBuffer> &buf);
|
||||||
|
@ -37,6 +37,7 @@ protected:
|
||||||
void HandleChannelMentions(Gtk::TextView *tv);
|
void HandleChannelMentions(Gtk::TextView *tv);
|
||||||
bool OnClickChannel(GdkEventButton *ev);
|
bool OnClickChannel(GdkEventButton *ev);
|
||||||
|
|
||||||
|
// reused for images and links
|
||||||
Gtk::Menu m_link_menu;
|
Gtk::Menu m_link_menu;
|
||||||
Gtk::MenuItem *m_link_menu_copy;
|
Gtk::MenuItem *m_link_menu_copy;
|
||||||
|
|
||||||
|
@ -64,13 +65,14 @@ protected:
|
||||||
void on_menu_edit_message();
|
void on_menu_edit_message();
|
||||||
void on_menu_copy_content();
|
void on_menu_copy_content();
|
||||||
|
|
||||||
|
Gtk::EventBox *m_ev;
|
||||||
Gtk::Box *m_main;
|
Gtk::Box *m_main;
|
||||||
Gtk::Label *m_attrib_label = nullptr;
|
Gtk::Label *m_attrib_label = nullptr;
|
||||||
Gtk::Image *m_embed_img = nullptr; // yes this is hacky no i dont care (for now)
|
Gtk::Image *m_embed_img = nullptr; // yes this is hacky no i dont care (for now)
|
||||||
std::string m_embed_imgurl;
|
std::string m_embed_imgurl;
|
||||||
|
|
||||||
Gtk::TextView *m_text_component = nullptr;
|
Gtk::TextView *m_text_component = nullptr;
|
||||||
Gtk::EventBox *m_embed_component = nullptr;
|
Gtk::Widget *m_embed_component = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef sigc::signal<void, std::string> type_signal_image_load;
|
typedef sigc::signal<void, std::string> type_signal_image_load;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user