refactored EnumFlags

This commit is contained in:
fourtf
2018-08-07 07:55:31 +02:00
parent bfa75330a4
commit 381177dd24
24 changed files with 422 additions and 394 deletions
+21 -22
View File
@@ -18,12 +18,12 @@ EmotePopup::EmotePopup()
this->viewEmotes_ = new ChannelView();
this->viewEmojis_ = new ChannelView();
this->viewEmotes_->setOverrideFlags(MessageElement::Flags(
MessageElement::Default | MessageElement::AlwaysShow |
MessageElement::EmoteImages));
this->viewEmojis_->setOverrideFlags(MessageElement::Flags(
MessageElement::Default | MessageElement::AlwaysShow |
MessageElement::EmoteImages));
this->viewEmotes_->setOverrideFlags(MessageElementFlags{
MessageElementFlag::Default, MessageElementFlag::AlwaysShow,
MessageElementFlag::EmoteImages});
this->viewEmojis_->setOverrideFlags(MessageElementFlags{
MessageElementFlag::Default, MessageElementFlag::AlwaysShow,
MessageElementFlag::EmoteImages});
this->viewEmotes_->setEnableScrollingToBottom(false);
this->viewEmojis_->setEnableScrollingToBottom(false);
@@ -63,20 +63,20 @@ void EmotePopup::loadChannel(ChannelPtr _channel)
// TITLE
MessageBuilder builder1;
builder1.emplace<TextElement>(title, MessageElement::Text);
builder1.emplace<TextElement>(title, MessageElementFlag::Text);
builder1->flags |= Message::Centered;
builder1->flags.set(MessageFlag::Centered);
emoteChannel->addMessage(builder1.release());
// EMOTES
MessageBuilder builder2;
builder2->flags |= Message::Centered;
builder2->flags |= Message::DisableCompactEmotes;
builder2->flags.set(MessageFlag::Centered);
builder2->flags.set(MessageFlag::DisableCompactEmotes);
for (auto emote : map) {
builder2
.emplace<EmoteElement>(emote.second,
MessageElement::Flags::AlwaysShow)
MessageElementFlag::AlwaysShow)
->setLink(Link(Link::InsertText, emote.first.string));
}
@@ -103,21 +103,21 @@ void EmotePopup::loadChannel(ChannelPtr _channel)
setText = set->text;
}
builder1.emplace<TextElement>(setText, MessageElement::Text);
builder1.emplace<TextElement>(setText, MessageElementFlag::Text);
builder1->flags |= Message::Centered;
builder1->flags.set(MessageFlag::Centered);
emoteChannel->addMessage(builder1.release());
// EMOTES
MessageBuilder builder2;
builder2->flags |= Message::Centered;
builder2->flags |= Message::DisableCompactEmotes;
builder2->flags.set(MessageFlag::Centered);
builder2->flags.set(MessageFlag::DisableCompactEmotes);
for (const auto &emote : set->emotes) {
builder2
.emplace<EmoteElement>(
app->emotes->twitch.getOrCreateEmote(emote.id, emote.name),
MessageElement::Flags::AlwaysShow)
MessageElementFlag::AlwaysShow)
->setLink(Link(Link::InsertText, emote.name.string));
}
@@ -146,19 +146,18 @@ void EmotePopup::loadEmojis()
// title
MessageBuilder builder1;
builder1.emplace<TextElement>("emojis", MessageElement::Text);
builder1->flags |= Message::Centered;
builder1.emplace<TextElement>("emojis", MessageElementFlag::Text);
builder1->flags.set(MessageFlag::Centered);
emojiChannel->addMessage(builder1.release());
// emojis
MessageBuilder builder;
builder->flags |= Message::Centered;
builder->flags |= Message::DisableCompactEmotes;
builder->flags.set(MessageFlag::Centered);
builder->flags.set(MessageFlag::DisableCompactEmotes);
emojis.each([&builder](const auto &key, const auto &value) {
builder
.emplace<EmoteElement>(value->emote,
MessageElement::Flags::AlwaysShow)
.emplace<EmoteElement>(value->emote, MessageElementFlag::AlwaysShow)
->setLink(
Link(Link::Type::InsertText, ":" + value->shortCodes[0] + ":"));
});
+2 -2
View File
@@ -173,11 +173,11 @@ void LogsPopup::getOverrustleLogs()
MessageBuilder builder;
builder.emplace<TimestampElement>(timeStamp);
builder.emplace<TextElement>(this->userName_,
MessageElement::Username,
MessageElementFlag::Username,
MessageColor::System);
builder.emplace<TextElement>(
singleMessage.value("text").toString(),
MessageElement::Text, MessageColor::Text);
MessageElementFlag::Text, MessageColor::Text);
messages.push_back(builder.release());
}
}
+24 -25
View File
@@ -34,7 +34,7 @@
namespace chatterino {
namespace {
void addEmoteContextMenuItems(const Emote &emote,
MessageElement::Flags creatorFlags, QMenu &menu)
MessageElementFlags creatorFlags, QMenu &menu)
{
auto openAction = menu.addAction("Open");
auto openMenu = new QMenu;
@@ -83,9 +83,9 @@ void addEmoteContextMenuItems(const Emote &emote,
});
};
if (creatorFlags & MessageElement::Flags::BttvEmote) {
if (creatorFlags.has(MessageElementFlag::BttvEmote)) {
addPageLink("BTTV");
} else if (creatorFlags & MessageElement::Flags::FfzEmote) {
} else if (creatorFlags.has(MessageElementFlag::FfzEmote)) {
addPageLink("FFZ");
}
}
@@ -252,7 +252,7 @@ void ChannelView::actuallyLayoutMessages(bool causedByScrollbar)
size_t start = size_t(this->scrollBar_.getCurrentValue());
int layoutWidth = this->getLayoutWidth();
MessageElement::Flags flags = this->getFlags();
MessageElementFlags flags = this->getFlags();
// layout the visible messages in the view
if (messagesSnapshot.getLength() > start) {
@@ -387,12 +387,12 @@ bool ChannelView::getEnableScrollingToBottom() const
return this->enableScrollingToBottom_;
}
void ChannelView::setOverrideFlags(boost::optional<MessageElement::Flags> value)
void ChannelView::setOverrideFlags(boost::optional<MessageElementFlags> value)
{
this->overrideFlags_ = value;
}
const boost::optional<MessageElement::Flags> &ChannelView::getOverrideFlags()
const boost::optional<MessageElementFlags> &ChannelView::getOverrideFlags()
const
{
return this->overrideFlags_;
@@ -423,7 +423,7 @@ void ChannelView::setChannel(ChannelPtr newChannel)
auto messageRef = new MessageLayout(message);
if (this->lastMessageHasAlternateBackground_) {
messageRef->flags |= MessageLayout::AlternateBackground;
messageRef->flags.set(MessageLayoutFlag::AlternateBackground);
}
this->lastMessageHasAlternateBackground_ =
!this->lastMessageHasAlternateBackground_;
@@ -443,8 +443,8 @@ void ChannelView::setChannel(ChannelPtr newChannel)
// }
}
if (!(message->flags & Message::DoNotTriggerNotification)) {
if (message->flags & Message::Highlighted) {
if (!message->flags.has(MessageFlag::DoNotTriggerNotification)) {
if (message->flags.has(MessageFlag::Highlighted)) {
this->tabHighlightRequested.invoke(
HighlightState::Highlighted);
} else {
@@ -521,8 +521,8 @@ void ChannelView::setChannel(ChannelPtr newChannel)
}
const auto &message = snapshot[index];
if (message->flags & MessageLayout::AlternateBackground) {
newItem->flags |= MessageLayout::AlternateBackground;
if (message->flags.has(MessageLayoutFlag::AlternateBackground)) {
newItem->flags.set(MessageLayoutFlag::AlternateBackground);
}
this->scrollBar_.replaceHighlight(
@@ -540,7 +540,7 @@ void ChannelView::setChannel(ChannelPtr newChannel)
auto messageRef = new MessageLayout(snapshot[i]);
if (this->lastMessageHasAlternateBackground_) {
messageRef->flags |= MessageLayout::AlternateBackground;
messageRef->flags.set(MessageLayoutFlag::AlternateBackground);
}
this->lastMessageHasAlternateBackground_ =
!this->lastMessageHasAlternateBackground_;
@@ -613,7 +613,7 @@ void ChannelView::setSelection(const SelectionItem &start,
this->selectionChanged.invoke();
}
MessageElement::Flags ChannelView::getFlags() const
MessageElementFlags ChannelView::getFlags() const
{
auto app = getApp();
@@ -621,17 +621,16 @@ MessageElement::Flags ChannelView::getFlags() const
return this->overrideFlags_.get();
}
MessageElement::Flags flags = app->windows->getWordFlags();
MessageElementFlags flags = app->windows->getWordFlags();
Split *split = dynamic_cast<Split *>(this->parentWidget());
if (split != nullptr) {
if (split->getModerationMode()) {
flags =
MessageElement::Flags(flags | MessageElement::ModeratorTools);
flags.set(MessageElementFlag::ModeratorTools);
}
if (this->channel_ == app->twitch.server->mentionsChannel) {
flags = MessageElement::Flags(flags | MessageElement::ChannelName);
flags.set(MessageElementFlag::ChannelName);
}
}
@@ -870,7 +869,7 @@ void ChannelView::mouseMoveEvent(QMouseEvent *event)
}
// message under cursor is collapsed
if (layout->flags & MessageLayout::Collapsed) {
if (layout->flags.has(MessageLayoutFlag::Collapsed)) {
this->setCursor(Qt::PointingHandCursor);
tooltipWidget->hide();
return;
@@ -941,7 +940,7 @@ void ChannelView::mousePressEvent(QMouseEvent *event)
this->lastPressPosition_ = event->screenPos();
this->isMouseDown_ = true;
if (layout->flags & MessageLayout::Collapsed) {
if (layout->flags.has(MessageLayoutFlag::Collapsed)) {
return;
}
@@ -1010,9 +1009,9 @@ void ChannelView::mouseReleaseEvent(QMouseEvent *event)
}
// message under cursor is collapsed
if (layout->flags & MessageLayout::Collapsed) {
layout->flags |= MessageLayout::Expanded;
layout->flags |= MessageLayout::RequiresLayout;
if (layout->flags.has(MessageLayoutFlag::Collapsed)) {
layout->flags.set(MessageLayoutFlag::Expanded);
layout->flags.set(MessageLayoutFlag::RequiresLayout);
this->layoutMessages();
return;
@@ -1081,8 +1080,8 @@ void ChannelView::addContextMenuItems(
menu->clear();
// Emote actions
if (creatorFlags & (MessageElement::Flags::EmoteImages |
MessageElement::Flags::EmojiImage)) {
if (creatorFlags.hasAny({MessageElementFlag::EmoteImages,
MessageElementFlag::EmojiImage})) {
const auto emoteElement = dynamic_cast<const EmoteElement *>(&creator);
if (emoteElement)
addEmoteContextMenuItems(*emoteElement->getEmote(), creatorFlags,
@@ -1147,7 +1146,7 @@ void ChannelView::mouseDoubleClickEvent(QMouseEvent *event)
}
// message under cursor is collapsed
if (layout->flags & MessageLayout::Collapsed) {
if (layout->flags.has(MessageLayoutFlag::Collapsed)) {
return;
}
+4 -4
View File
@@ -36,8 +36,8 @@ public:
void clearSelection();
void setEnableScrollingToBottom(bool);
bool getEnableScrollingToBottom() const;
void setOverrideFlags(boost::optional<MessageElement::Flags> value);
const boost::optional<MessageElement::Flags> &getOverrideFlags() const;
void setOverrideFlags(boost::optional<MessageElementFlags> value);
const boost::optional<MessageElementFlags> &getOverrideFlags() const;
void pause(int msecTimeout);
void updateLastReadMessage();
@@ -83,7 +83,7 @@ private:
void drawMessages(QPainter &painter);
void setSelection(const SelectionItem &start, const SelectionItem &end);
MessageElement::Flags getFlags() const;
MessageElementFlags getFlags() const;
bool isPaused();
void handleMouseClick(QMouseEvent *event,
@@ -107,7 +107,7 @@ private:
int messagesAddedSinceSelectionPause_ = 0;
QTimer pauseTimeout_;
boost::optional<MessageElement::Flags> overrideFlags_;
boost::optional<MessageElementFlags> overrideFlags_;
MessageLayoutPtr lastReadMessage_;
LimitedQueueSnapshot<MessageLayoutPtr> snapshot_;
+13 -13
View File
@@ -322,24 +322,24 @@ ChannelPtr LookPage::createPreviewChannel()
{
MessageBuilder builder;
builder.emplace<TimestampElement>(QTime(8, 13, 42));
builder.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->twitch.moderator), MessageElement::BadgeChannelAuthority);
builder.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->twitch.subscriber), MessageElement::BadgeSubscription);
builder.emplace<TextElement>("username1:", MessageElement::Username, QColor("#0094FF"), FontStyle::ChatMediumBold);
builder.emplace<TextElement>("This is a preview message", MessageElement::Text);
builder.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->pajaDank), MessageElement::Flags::AlwaysShow);
builder.emplace<TextElement>("@fourtf", TextElement::BoldUsername, MessageColor::Text, FontStyle::ChatMediumBold);
builder.emplace<TextElement>("@fourtf", TextElement::NonBoldUsername);
builder.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->twitch.moderator), MessageElementFlag::BadgeChannelAuthority);
builder.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->twitch.subscriber), MessageElementFlag::BadgeSubscription);
builder.emplace<TextElement>("username1:", MessageElementFlag::Username, QColor("#0094FF"), FontStyle::ChatMediumBold);
builder.emplace<TextElement>("This is a preview message", MessageElementFlag::Text);
builder.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->pajaDank), MessageElementFlag::AlwaysShow);
builder.emplace<TextElement>("@fourtf", MessageElementFlag::BoldUsername, MessageColor::Text, FontStyle::ChatMediumBold);
builder.emplace<TextElement>("@fourtf", MessageElementFlag::NonBoldUsername);
channel->addMessage(builder.release());
}
{
MessageBuilder message;
message.emplace<TimestampElement>(QTime(8, 15, 21));
message.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->twitch.broadcaster), MessageElement::BadgeChannelAuthority);
message.emplace<TextElement>("username2:", MessageElement::Username, QColor("#FF6A00"), FontStyle::ChatMediumBold);
message.emplace<TextElement>("This is another one", MessageElement::Text);
// message.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->ppHop), MessageElement::BttvEmote);
message.emplace<TextElement>("www.fourtf.com", MessageElement::LowercaseLink, MessageColor::Link)->setLink(Link(Link::Url, "https://www.fourtf.com"));
message.emplace<TextElement>("wWw.FoUrTf.CoM", MessageElement::OriginalLink, MessageColor::Link)->setLink(Link(Link::Url, "https://www.fourtf.com"));
message.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->twitch.broadcaster), MessageElementFlag::BadgeChannelAuthority);
message.emplace<TextElement>("username2:", MessageElementFlag::Username, QColor("#FF6A00"), FontStyle::ChatMediumBold);
message.emplace<TextElement>("This is another one", MessageElementFlag::Text);
// message.emplace<ImageElement>(Image::fromNonOwningPixmap(&getApp()->resources->ppHop), MessageElementFlag::BttvEmote);
message.emplace<TextElement>("www.fourtf.com", MessageElementFlag::LowercaseLink, MessageColor::Link)->setLink(Link(Link::Url, "https://www.fourtf.com"));
message.emplace<TextElement>("wWw.FoUrTf.CoM", MessageElementFlag::OriginalLink, MessageColor::Link)->setLink(Link(Link::Url, "https://www.fourtf.com"));
channel->addMessage(message.release());
}
// clang-format on