mirror of
https://github.com/celisej567/abaddon.git
synced 2026-09-06 20:15:19 +03:00
show pinned message events
This commit is contained in:
@@ -395,8 +395,15 @@ ChatMessageUserEventItem::ChatMessageUserEventItem(const Message *data) {
|
||||
set_hexpand(true);
|
||||
m_label->set_halign(Gtk::ALIGN_START);
|
||||
m_label->set_use_markup();
|
||||
if (data->Type == MessageType::GUILD_MEMBER_JOIN)
|
||||
m_label->set_markup("<span color='#999999'><i>[user joined]</i></span>");
|
||||
switch (data->Type) {
|
||||
case MessageType::GUILD_MEMBER_JOIN:
|
||||
m_label->set_markup("<span color='#999999'><i>[user joined]</i></span>");
|
||||
break;
|
||||
case MessageType::CHANNEL_PINNED_MESSAGE:
|
||||
m_label->set_markup("<span color='#999999'><i>[message pinned]</i></span>");
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
add(*m_label);
|
||||
show_all();
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ enum class ChatDisplayType {
|
||||
Embed,
|
||||
Image,
|
||||
GuildMemberJoin,
|
||||
ChannelPinnedMessage,
|
||||
};
|
||||
|
||||
// contains the username and timestamp, chat items get stuck into its box
|
||||
|
||||
@@ -89,6 +89,8 @@ ChatDisplayType ChatWindow::GetMessageDisplayType(const Message *data) {
|
||||
return ChatDisplayType::Embed;
|
||||
else if (data->Type == MessageType::GUILD_MEMBER_JOIN)
|
||||
return ChatDisplayType::GuildMemberJoin;
|
||||
else if (data->Type == MessageType::CHANNEL_PINNED_MESSAGE)
|
||||
return ChatDisplayType::ChannelPinnedMessage;
|
||||
|
||||
return ChatDisplayType::Unknown;
|
||||
}
|
||||
@@ -97,19 +99,25 @@ ChatMessageItem *ChatWindow::CreateMessageComponent(const Message *data) {
|
||||
auto type = GetMessageDisplayType(data);
|
||||
ChatMessageItem *widget = nullptr;
|
||||
|
||||
if (type == ChatDisplayType::Text) {
|
||||
widget = Gtk::manage(new ChatMessageTextItem(data));
|
||||
switch (type) {
|
||||
case ChatDisplayType::Text: {
|
||||
widget = Gtk::manage(new ChatMessageTextItem(data));
|
||||
|
||||
widget->signal_action_message_delete().connect([this](Snowflake channel_id, Snowflake id) {
|
||||
m_signal_action_message_delete.emit(channel_id, id);
|
||||
});
|
||||
widget->signal_action_message_edit().connect([this](Snowflake channel_id, Snowflake id) {
|
||||
m_signal_action_message_edit.emit(channel_id, id);
|
||||
});
|
||||
} else if (type == ChatDisplayType::Embed) {
|
||||
widget = Gtk::manage(new ChatMessageEmbedItem(data));
|
||||
} else if (type == ChatDisplayType::GuildMemberJoin) {
|
||||
widget = Gtk::manage(new ChatMessageUserEventItem(data));
|
||||
widget->signal_action_message_delete().connect([this](Snowflake channel_id, Snowflake id) {
|
||||
m_signal_action_message_delete.emit(channel_id, id);
|
||||
});
|
||||
widget->signal_action_message_edit().connect([this](Snowflake channel_id, Snowflake id) {
|
||||
m_signal_action_message_edit.emit(channel_id, id);
|
||||
});
|
||||
} break;
|
||||
case ChatDisplayType::Embed: {
|
||||
widget = Gtk::manage(new ChatMessageEmbedItem(data));
|
||||
} break;
|
||||
case ChatDisplayType::GuildMemberJoin:
|
||||
case ChatDisplayType::ChannelPinnedMessage: {
|
||||
widget = Gtk::manage(new ChatMessageUserEventItem(data));
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (widget == nullptr) return nullptr;
|
||||
|
||||
Reference in New Issue
Block a user