mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-22 14:53:53 -07:00
[Messages] Add option to ignore private messages from non-buddy users (#6966)
* [Messages] Add option to ignore private messages from non-buddy users
* [Messages] Exclude Moderator/Admin from non-buddy ignore filter
Moderator and Admin messages should not be filtered out when the
'Ignore private messages from non-buddies' setting is enabled, to
ensure that important warnings from server staff reach users.
(cherry picked from commit 6d0a423dcf)
This commit is contained in:
parent
206e5a36de
commit
547d9ab88d
5 changed files with 30 additions and 3 deletions
|
|
@ -388,6 +388,7 @@ SettingsCache::SettingsCache()
|
||||||
|
|
||||||
ignoreUnregisteredUsers = settings->value("chat/ignore_unregistered", false).toBool();
|
ignoreUnregisteredUsers = settings->value("chat/ignore_unregistered", false).toBool();
|
||||||
ignoreUnregisteredUserMessages = settings->value("chat/ignore_unregistered_messages", false).toBool();
|
ignoreUnregisteredUserMessages = settings->value("chat/ignore_unregistered_messages", false).toBool();
|
||||||
|
ignoreNonBuddyUserMessages = settings->value("chat/ignore_nonbuddy_messages", false).toBool();
|
||||||
|
|
||||||
scaleCards = settings->value("cards/scaleCards", true).toBool();
|
scaleCards = settings->value("cards/scaleCards", true).toBool();
|
||||||
verticalCardOverlapPercent = settings->value("cards/verticalCardOverlapPercent", 33).toInt();
|
verticalCardOverlapPercent = settings->value("cards/verticalCardOverlapPercent", 33).toInt();
|
||||||
|
|
@ -1117,6 +1118,12 @@ void SettingsCache::setIgnoreUnregisteredUserMessages(QT_STATE_CHANGED_T _ignore
|
||||||
settings->setValue("chat/ignore_unregistered_messages", ignoreUnregisteredUserMessages);
|
settings->setValue("chat/ignore_unregistered_messages", ignoreUnregisteredUserMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setIgnoreNonBuddyUserMessages(QT_STATE_CHANGED_T _ignoreNonBuddyUserMessages)
|
||||||
|
{
|
||||||
|
ignoreNonBuddyUserMessages = static_cast<bool>(_ignoreNonBuddyUserMessages);
|
||||||
|
settings->setValue("chat/ignore_nonbuddy_messages", ignoreNonBuddyUserMessages);
|
||||||
|
}
|
||||||
|
|
||||||
void SettingsCache::setPixmapCacheSize(const int _pixmapCacheSize)
|
void SettingsCache::setPixmapCacheSize(const int _pixmapCacheSize)
|
||||||
{
|
{
|
||||||
pixmapCacheSize = _pixmapCacheSize;
|
pixmapCacheSize = _pixmapCacheSize;
|
||||||
|
|
|
||||||
|
|
@ -183,6 +183,7 @@ signals:
|
||||||
void soundThemeChanged();
|
void soundThemeChanged();
|
||||||
void ignoreUnregisteredUsersChanged();
|
void ignoreUnregisteredUsersChanged();
|
||||||
void ignoreUnregisteredUserMessagesChanged();
|
void ignoreUnregisteredUserMessagesChanged();
|
||||||
|
void ignoreNonBuddyUserMessagesChanged();
|
||||||
void pixmapCacheSizeChanged(int newSizeInMBs);
|
void pixmapCacheSizeChanged(int newSizeInMBs);
|
||||||
void networkCacheSizeChanged(int newSizeInMBs);
|
void networkCacheSizeChanged(int newSizeInMBs);
|
||||||
void redirectCacheTtlChanged(int newTtl);
|
void redirectCacheTtlChanged(int newTtl);
|
||||||
|
|
@ -294,6 +295,7 @@ private:
|
||||||
QString soundThemeName;
|
QString soundThemeName;
|
||||||
bool ignoreUnregisteredUsers;
|
bool ignoreUnregisteredUsers;
|
||||||
bool ignoreUnregisteredUserMessages;
|
bool ignoreUnregisteredUserMessages;
|
||||||
|
bool ignoreNonBuddyUserMessages;
|
||||||
QString picUrl;
|
QString picUrl;
|
||||||
QString picUrlFallback;
|
QString picUrlFallback;
|
||||||
QString clientID;
|
QString clientID;
|
||||||
|
|
@ -788,6 +790,10 @@ public:
|
||||||
{
|
{
|
||||||
return ignoreUnregisteredUserMessages;
|
return ignoreUnregisteredUserMessages;
|
||||||
}
|
}
|
||||||
|
[[nodiscard]] bool getIgnoreNonBuddyUserMessages() const
|
||||||
|
{
|
||||||
|
return ignoreNonBuddyUserMessages;
|
||||||
|
}
|
||||||
[[nodiscard]] int getPixmapCacheSize() const
|
[[nodiscard]] int getPixmapCacheSize() const
|
||||||
{
|
{
|
||||||
return pixmapCacheSize;
|
return pixmapCacheSize;
|
||||||
|
|
@ -1111,6 +1117,7 @@ public slots:
|
||||||
void setSoundThemeName(const QString &_soundThemeName);
|
void setSoundThemeName(const QString &_soundThemeName);
|
||||||
void setIgnoreUnregisteredUsers(QT_STATE_CHANGED_T _ignoreUnregisteredUsers);
|
void setIgnoreUnregisteredUsers(QT_STATE_CHANGED_T _ignoreUnregisteredUsers);
|
||||||
void setIgnoreUnregisteredUserMessages(QT_STATE_CHANGED_T _ignoreUnregisteredUserMessages);
|
void setIgnoreUnregisteredUserMessages(QT_STATE_CHANGED_T _ignoreUnregisteredUserMessages);
|
||||||
|
void setIgnoreNonBuddyUserMessages(QT_STATE_CHANGED_T _ignoreNonBuddyUserMessages);
|
||||||
void setPixmapCacheSize(const int _pixmapCacheSize);
|
void setPixmapCacheSize(const int _pixmapCacheSize);
|
||||||
void setCardImageCacheMethod(CardPictureLoaderCacheMethod::CacheMethod _cardImageCachingMethod);
|
void setCardImageCacheMethod(CardPictureLoaderCacheMethod::CacheMethod _cardImageCachingMethod);
|
||||||
void setNetworkCacheSizeInMB(const int _networkCacheSize);
|
void setNetworkCacheSizeInMB(const int _networkCacheSize);
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,14 @@ MessagesSettingsPage::MessagesSettingsPage()
|
||||||
|
|
||||||
ignoreUnregUsersMainChat.setChecked(SettingsCache::instance().getIgnoreUnregisteredUsers());
|
ignoreUnregUsersMainChat.setChecked(SettingsCache::instance().getIgnoreUnregisteredUsers());
|
||||||
ignoreUnregUserMessages.setChecked(SettingsCache::instance().getIgnoreUnregisteredUserMessages());
|
ignoreUnregUserMessages.setChecked(SettingsCache::instance().getIgnoreUnregisteredUserMessages());
|
||||||
|
ignoreNonBuddyUserMessages.setChecked(SettingsCache::instance().getIgnoreNonBuddyUserMessages());
|
||||||
|
|
||||||
connect(&ignoreUnregUsersMainChat, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
connect(&ignoreUnregUsersMainChat, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
&SettingsCache::setIgnoreUnregisteredUsers);
|
&SettingsCache::setIgnoreUnregisteredUsers);
|
||||||
connect(&ignoreUnregUserMessages, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
connect(&ignoreUnregUserMessages, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
&SettingsCache::setIgnoreUnregisteredUserMessages);
|
&SettingsCache::setIgnoreUnregisteredUserMessages);
|
||||||
|
connect(&ignoreNonBuddyUserMessages, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
|
||||||
|
&SettingsCache::setIgnoreNonBuddyUserMessages);
|
||||||
|
|
||||||
invertMentionForeground.setChecked(SettingsCache::instance().getChatMentionForeground());
|
invertMentionForeground.setChecked(SettingsCache::instance().getChatMentionForeground());
|
||||||
connect(&invertMentionForeground, &QCheckBox::QT_STATE_CHANGED, this, &MessagesSettingsPage::updateTextColor);
|
connect(&invertMentionForeground, &QCheckBox::QT_STATE_CHANGED, this, &MessagesSettingsPage::updateTextColor);
|
||||||
|
|
@ -62,9 +66,10 @@ MessagesSettingsPage::MessagesSettingsPage()
|
||||||
chatGrid->addWidget(&ignoreUnregUsersMainChat, 2, 0);
|
chatGrid->addWidget(&ignoreUnregUsersMainChat, 2, 0);
|
||||||
chatGrid->addWidget(&hexLabel, 1, 2);
|
chatGrid->addWidget(&hexLabel, 1, 2);
|
||||||
chatGrid->addWidget(&ignoreUnregUserMessages, 3, 0);
|
chatGrid->addWidget(&ignoreUnregUserMessages, 3, 0);
|
||||||
chatGrid->addWidget(&messagePopups, 4, 0);
|
chatGrid->addWidget(&ignoreNonBuddyUserMessages, 4, 0);
|
||||||
chatGrid->addWidget(&mentionPopups, 5, 0);
|
chatGrid->addWidget(&messagePopups, 5, 0);
|
||||||
chatGrid->addWidget(&roomHistory, 6, 0);
|
chatGrid->addWidget(&mentionPopups, 6, 0);
|
||||||
|
chatGrid->addWidget(&roomHistory, 7, 0);
|
||||||
chatGroupBox = new QGroupBox;
|
chatGroupBox = new QGroupBox;
|
||||||
chatGroupBox->setLayout(chatGrid);
|
chatGroupBox->setLayout(chatGrid);
|
||||||
|
|
||||||
|
|
@ -237,6 +242,7 @@ void MessagesSettingsPage::retranslateUi()
|
||||||
QString("<a href='%1'>%2</a>").arg(WIKI_CUSTOM_SHORTCUTS).arg(tr("How to use in-game message macros")));
|
QString("<a href='%1'>%2</a>").arg(WIKI_CUSTOM_SHORTCUTS).arg(tr("How to use in-game message macros")));
|
||||||
ignoreUnregUsersMainChat.setText(tr("Ignore chat room messages sent by unregistered users"));
|
ignoreUnregUsersMainChat.setText(tr("Ignore chat room messages sent by unregistered users"));
|
||||||
ignoreUnregUserMessages.setText(tr("Ignore private messages sent by unregistered users"));
|
ignoreUnregUserMessages.setText(tr("Ignore private messages sent by unregistered users"));
|
||||||
|
ignoreNonBuddyUserMessages.setText(tr("Ignore private messages sent by non-buddy users"));
|
||||||
invertMentionForeground.setText(tr("Invert text color"));
|
invertMentionForeground.setText(tr("Invert text color"));
|
||||||
invertHighlightForeground.setText(tr("Invert text color"));
|
invertHighlightForeground.setText(tr("Invert text color"));
|
||||||
messagePopups.setText(tr("Enable desktop notifications for private messages"));
|
messagePopups.setText(tr("Enable desktop notifications for private messages"));
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ private:
|
||||||
QCheckBox invertHighlightForeground;
|
QCheckBox invertHighlightForeground;
|
||||||
QCheckBox ignoreUnregUsersMainChat;
|
QCheckBox ignoreUnregUsersMainChat;
|
||||||
QCheckBox ignoreUnregUserMessages;
|
QCheckBox ignoreUnregUserMessages;
|
||||||
|
QCheckBox ignoreNonBuddyUserMessages;
|
||||||
QCheckBox messagePopups;
|
QCheckBox messagePopups;
|
||||||
QCheckBox mentionPopups;
|
QCheckBox mentionPopups;
|
||||||
QCheckBox roomHistory;
|
QCheckBox roomHistory;
|
||||||
|
|
|
||||||
|
|
@ -1019,6 +1019,12 @@ void TabSupervisor::processUserMessageEvent(const Event_UserMessage &event)
|
||||||
!userLevel.testFlag(ServerInfo_User::IsRegistered)) {
|
!userLevel.testFlag(ServerInfo_User::IsRegistered)) {
|
||||||
// Flags are additive, so reg/mod/admin are all IsRegistered
|
// Flags are additive, so reg/mod/admin are all IsRegistered
|
||||||
return;
|
return;
|
||||||
|
} else if (SettingsCache::instance().getIgnoreNonBuddyUserMessages() &&
|
||||||
|
!userListManager->isUserBuddy(senderName) && !userLevel.testFlag(ServerInfo_User::IsModerator) &&
|
||||||
|
!userLevel.testFlag(ServerInfo_User::IsAdmin)) {
|
||||||
|
// Ignore private messages from non-buddies
|
||||||
|
// Moderator/Admin messages are exempt to ensure warnings reach users
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tab = addMessageTab(QString::fromStdString(event.sender_name()), false);
|
tab = addMessageTab(QString::fromStdString(event.sender_name()), false);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue