Fix signal connection nodiscard warnings (#4818)

This commit is contained in:
pajlada
2023-09-16 13:52:51 +02:00
committed by GitHub
parent 2d5f078306
commit 8fe3af3522
40 changed files with 709 additions and 554 deletions
+124 -123
View File
@@ -44,43 +44,45 @@ using namespace chatterino;
// 5 minutes
constexpr const uint64_t THUMBNAIL_MAX_AGE_MS = 5ULL * 60 * 1000;
auto formatRoomMode(TwitchChannel &channel) -> QString
auto formatRoomModeUnclean(
const SharedAccessGuard<const TwitchChannel::RoomModes> &modes) -> QString
{
QString text;
if (modes->r9k)
{
auto modes = channel.accessRoomModes();
if (modes->r9k)
text += "r9k, ";
}
if (modes->slowMode > 0)
{
text += QString("slow(%1), ").arg(localizeNumbers(modes->slowMode));
}
if (modes->emoteOnly)
{
text += "emote, ";
}
if (modes->submode)
{
text += "sub, ";
}
if (modes->followerOnly != -1)
{
if (modes->followerOnly != 0)
{
text += "r9k, ";
text += QString("follow(%1m), ")
.arg(localizeNumbers(modes->followerOnly));
}
if (modes->slowMode > 0)
else
{
text += QString("slow(%1), ").arg(localizeNumbers(modes->slowMode));
}
if (modes->emoteOnly)
{
text += "emote, ";
}
if (modes->submode)
{
text += "sub, ";
}
if (modes->followerOnly != -1)
{
if (modes->followerOnly != 0)
{
text += QString("follow(%1m), ")
.arg(localizeNumbers(modes->followerOnly));
}
else
{
text += QString("follow, ");
}
text += QString("follow, ");
}
}
return text;
}
void cleanRoomModeText(QString &text, bool hasModRights)
{
if (text.length() > 2)
{
text = text.mid(0, text.size() - 2);
@@ -97,12 +99,10 @@ auto formatRoomMode(TwitchChannel &channel) -> QString
}
}
if (text.isEmpty() && channel.hasModRights())
if (text.isEmpty() && hasModRights)
{
return "none";
text = "none";
}
return text;
}
auto formatTooltip(const TwitchChannel::StreamStatus &s, QString thumbnail)
@@ -231,13 +231,16 @@ SplitHeader::SplitHeader(Split *split)
this->handleChannelChanged();
this->updateModerationModeIcon();
this->split_->focused.connect([this]() {
// The lifetime of these signals are tied to the lifetime of the Split.
// Since the SplitHeader is owned by the Split, they will always be destroyed
// at the same time.
std::ignore = this->split_->focused.connect([this]() {
this->themeChangedEvent();
});
this->split_->focusLost.connect([this]() {
std::ignore = this->split_->focusLost.connect([this]() {
this->themeChangedEvent();
});
this->split_->channelChanged.connect([this]() {
std::ignore = this->split_->channelChanged.connect([this]() {
this->handleChannelChanged();
});
@@ -257,6 +260,8 @@ SplitHeader::SplitHeader(Split *split)
void SplitHeader::initializeLayout()
{
assert(this->layout() == nullptr);
auto *layout = makeLayout<QHBoxLayout>({
// space
makeWidget<BaseWidget>([](auto w) {
@@ -277,7 +282,6 @@ void SplitHeader::initializeLayout()
this->modeButton_ = makeWidget<EffectLabel>([&](auto w) {
w->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
w->hide();
this->initializeModeSignals(*w);
w->setMenu(this->createChatModeMenu());
}),
// moderator
@@ -573,43 +577,23 @@ std::unique_ptr<QMenu> SplitHeader::createChatModeMenu()
{
auto menu = std::make_unique<QMenu>();
auto *setSub = new QAction("Subscriber only", this);
auto *setEmote = new QAction("Emote only", this);
auto *setSlow = new QAction("Slow", this);
auto *setR9k = new QAction("R9K", this);
auto *setFollowers = new QAction("Followers only", this);
this->modeActionSetSub = new QAction("Subscriber only", this);
this->modeActionSetEmote = new QAction("Emote only", this);
this->modeActionSetSlow = new QAction("Slow", this);
this->modeActionSetR9k = new QAction("R9K", this);
this->modeActionSetFollowers = new QAction("Followers only", this);
setFollowers->setCheckable(true);
setSub->setCheckable(true);
setEmote->setCheckable(true);
setSlow->setCheckable(true);
setR9k->setCheckable(true);
this->modeActionSetFollowers->setCheckable(true);
this->modeActionSetSub->setCheckable(true);
this->modeActionSetEmote->setCheckable(true);
this->modeActionSetSlow->setCheckable(true);
this->modeActionSetR9k->setCheckable(true);
menu->addAction(setEmote);
menu->addAction(setSub);
menu->addAction(setSlow);
menu->addAction(setR9k);
menu->addAction(setFollowers);
this->managedConnections_.managedConnect(
this->modeUpdateRequested_,
[this, setSub, setEmote, setSlow, setR9k, setFollowers]() {
auto *twitchChannel =
dynamic_cast<TwitchChannel *>(this->split_->getChannel().get());
if (twitchChannel == nullptr)
{
this->modeButton_->hide();
return;
}
auto roomModes = twitchChannel->accessRoomModes();
setR9k->setChecked(roomModes->r9k);
setSlow->setChecked(roomModes->slowMode > 0);
setEmote->setChecked(roomModes->emoteOnly);
setSub->setChecked(roomModes->submode);
setFollowers->setChecked(roomModes->followerOnly != -1);
});
menu->addAction(this->modeActionSetEmote);
menu->addAction(this->modeActionSetSub);
menu->addAction(this->modeActionSetSlow);
menu->addAction(this->modeActionSetR9k);
menu->addAction(this->modeActionSetFollowers);
auto execCommand = [this](const QString &command) {
auto text = getApp()->getCommands()->execCommand(
@@ -622,44 +606,44 @@ std::unique_ptr<QMenu> SplitHeader::createChatModeMenu()
action->setChecked(!action->isChecked());
};
QObject::connect(setSub, &QAction::triggered, this,
[setSub, toggle]() mutable {
toggle("/subscribers", setSub);
QObject::connect(this->modeActionSetSub, &QAction::triggered, this,
[this, toggle]() mutable {
toggle("/subscribers", this->modeActionSetSub);
});
QObject::connect(setEmote, &QAction::triggered, this,
[setEmote, toggle]() mutable {
toggle("/emoteonly", setEmote);
QObject::connect(this->modeActionSetEmote, &QAction::triggered, this,
[this, toggle]() mutable {
toggle("/emoteonly", this->modeActionSetEmote);
});
QObject::connect(
setSlow, &QAction::triggered, this, [setSlow, this, execCommand]() {
if (!setSlow->isChecked())
{
execCommand("/slowoff");
setSlow->setChecked(false);
return;
};
auto ok = bool();
auto seconds =
QInputDialog::getInt(this, "", "Seconds:", 10, 0, 500, 1, &ok,
Qt::FramelessWindowHint);
if (ok)
{
execCommand(QString("/slow %1").arg(seconds));
}
else
{
setSlow->setChecked(false);
}
});
QObject::connect(this->modeActionSetSlow, &QAction::triggered, this,
[this, execCommand]() {
if (!this->modeActionSetSlow->isChecked())
{
execCommand("/slowoff");
this->modeActionSetSlow->setChecked(false);
return;
};
auto ok = bool();
auto seconds = QInputDialog::getInt(
this, "", "Seconds:", 10, 0, 500, 1, &ok,
Qt::FramelessWindowHint);
if (ok)
{
execCommand(QString("/slow %1").arg(seconds));
}
else
{
this->modeActionSetSlow->setChecked(false);
}
});
QObject::connect(setFollowers, &QAction::triggered, this,
[setFollowers, this, execCommand]() {
if (!setFollowers->isChecked())
QObject::connect(this->modeActionSetFollowers, &QAction::triggered, this,
[this, execCommand]() {
if (!this->modeActionSetFollowers->isChecked())
{
execCommand("/followersoff");
setFollowers->setChecked(false);
this->modeActionSetFollowers->setChecked(false);
return;
};
auto ok = bool();
@@ -673,13 +657,13 @@ std::unique_ptr<QMenu> SplitHeader::createChatModeMenu()
}
else
{
setFollowers->setChecked(false);
this->modeActionSetFollowers->setChecked(false);
}
});
QObject::connect(setR9k, &QAction::triggered, this,
[setR9k, toggle]() mutable {
toggle("/r9kbeta", setR9k);
QObject::connect(this->modeActionSetR9k, &QAction::triggered, this,
[this, toggle]() mutable {
toggle("/r9kbeta", this->modeActionSetR9k);
});
return menu;
@@ -687,30 +671,47 @@ std::unique_ptr<QMenu> SplitHeader::createChatModeMenu()
void SplitHeader::updateRoomModes()
{
this->modeUpdateRequested_.invoke();
}
assert(this->modeButton_ != nullptr);
void SplitHeader::initializeModeSignals(EffectLabel &label)
{
this->modeUpdateRequested_.connect([this, &label] {
if (auto *twitchChannel =
dynamic_cast<TwitchChannel *>(this->split_->getChannel().get()))
// Update the mode button
if (auto *twitchChannel =
dynamic_cast<TwitchChannel *>(this->split_->getChannel().get()))
{
this->modeButton_->setEnable(twitchChannel->hasModRights());
QString text;
{
label.setEnable(twitchChannel->hasModRights());
auto roomModes = twitchChannel->accessRoomModes();
text = formatRoomModeUnclean(roomModes);
// set the label text
auto text = formatRoomMode(*twitchChannel);
// Set menu action
this->modeActionSetR9k->setChecked(roomModes->r9k);
this->modeActionSetSlow->setChecked(roomModes->slowMode > 0);
this->modeActionSetEmote->setChecked(roomModes->emoteOnly);
this->modeActionSetSub->setChecked(roomModes->submode);
this->modeActionSetFollowers->setChecked(roomModes->followerOnly !=
-1);
}
cleanRoomModeText(text, twitchChannel->hasModRights());
if (!text.isEmpty())
{
label.getLabel().setText(text);
label.show();
return;
}
// set the label text
if (!text.isEmpty())
{
this->modeButton_->getLabel().setText(text);
this->modeButton_->show();
}
else
{
this->modeButton_->hide();
}
label.hide();
});
// Update the mode button menu actions
}
else
{
this->modeButton_->hide();
}
}
void SplitHeader::resetThumbnail()