mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
Add a setting for the timeout stack style:
"Stack" is the default behaviour, it will search 20 messages up and 5 seconds back in time to stack the timeout. "Stack sparingly" will try to do the same, but only if the user has not typed a message inbetween the this and the last timeout. Fixes #1157
This commit is contained in:
parent
ba1a56c3b7
commit
954b1b138a
4 changed files with 29 additions and 0 deletions
|
@ -6,6 +6,7 @@
|
||||||
#include "messages/MessageBuilder.hpp"
|
#include "messages/MessageBuilder.hpp"
|
||||||
#include "singletons/Emotes.hpp"
|
#include "singletons/Emotes.hpp"
|
||||||
#include "singletons/Logging.hpp"
|
#include "singletons/Logging.hpp"
|
||||||
|
#include "singletons/Settings.hpp"
|
||||||
#include "singletons/WindowManager.hpp"
|
#include "singletons/WindowManager.hpp"
|
||||||
|
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
|
@ -102,6 +103,9 @@ void Channel::addOrReplaceTimeout(MessagePtr message)
|
||||||
|
|
||||||
QTime minimumTime = QTime::currentTime().addSecs(-5);
|
QTime minimumTime = QTime::currentTime().addSecs(-5);
|
||||||
|
|
||||||
|
auto timeoutStackStyle = static_cast<TimeoutStackStyle>(
|
||||||
|
getSettings()->timeoutStackStyle.getValue());
|
||||||
|
|
||||||
for (int i = snapshotLength - 1; i >= end; --i)
|
for (int i = snapshotLength - 1; i >= end; --i)
|
||||||
{
|
{
|
||||||
auto &s = snapshot[i];
|
auto &s = snapshot[i];
|
||||||
|
@ -117,6 +121,16 @@ void Channel::addOrReplaceTimeout(MessagePtr message)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (timeoutStackStyle == TimeoutStackStyle::DontStackBeyondUserMessage)
|
||||||
|
{
|
||||||
|
if (s->loginName == message->timeoutUser &&
|
||||||
|
s->flags.hasNone({MessageFlag::Disabled, MessageFlag::Timeout,
|
||||||
|
MessageFlag::Untimeout}))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (s->flags.has(MessageFlag::Timeout) &&
|
if (s->flags.has(MessageFlag::Timeout) &&
|
||||||
s->timeoutUser == message->timeoutUser) //
|
s->timeoutUser == message->timeoutUser) //
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,13 @@ using MessagePtr = std::shared_ptr<const Message>;
|
||||||
enum class MessageFlag : uint32_t;
|
enum class MessageFlag : uint32_t;
|
||||||
using MessageFlags = FlagsEnum<MessageFlag>;
|
using MessageFlags = FlagsEnum<MessageFlag>;
|
||||||
|
|
||||||
|
enum class TimeoutStackStyle : int {
|
||||||
|
StackHard = 0,
|
||||||
|
DontStackBeyondUserMessage = 1,
|
||||||
|
|
||||||
|
Default = StackHard,
|
||||||
|
};
|
||||||
|
|
||||||
class Channel : public std::enable_shared_from_this<Channel>
|
class Channel : public std::enable_shared_from_this<Channel>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "BaseSettings.hpp"
|
#include "BaseSettings.hpp"
|
||||||
|
|
||||||
|
#include "common/Channel.hpp"
|
||||||
#include "controllers/highlights/HighlightPhrase.hpp"
|
#include "controllers/highlights/HighlightPhrase.hpp"
|
||||||
#include "controllers/moderationactions/ModerationAction.hpp"
|
#include "controllers/moderationactions/ModerationAction.hpp"
|
||||||
#include "singletons/Toasts.hpp"
|
#include "singletons/Toasts.hpp"
|
||||||
|
@ -129,6 +130,9 @@ public:
|
||||||
|
|
||||||
/// Moderation
|
/// Moderation
|
||||||
QStringSetting timeoutAction = {"/moderation/timeoutAction", "Disable"};
|
QStringSetting timeoutAction = {"/moderation/timeoutAction", "Disable"};
|
||||||
|
IntSetting timeoutStackStyle = {
|
||||||
|
"/moderation/timeoutStackStyle",
|
||||||
|
static_cast<int>(TimeoutStackStyle::Default)};
|
||||||
|
|
||||||
/// Highlighting
|
/// Highlighting
|
||||||
// BoolSetting enableHighlights = {"/highlighting/enabled", true};
|
// BoolSetting enableHighlights = {"/highlighting/enabled", true};
|
||||||
|
|
|
@ -217,6 +217,10 @@ void GeneralPage::initLayout(SettingsLayout &layout)
|
||||||
// layout.addDropdown("Last read message style", {"Default"});
|
// layout.addDropdown("Last read message style", {"Default"});
|
||||||
layout.addCheckbox("Hide moderated messages", s.hideModerated);
|
layout.addCheckbox("Hide moderated messages", s.hideModerated);
|
||||||
layout.addCheckbox("Hide moderation messages", s.hideModerationActions);
|
layout.addCheckbox("Hide moderation messages", s.hideModerationActions);
|
||||||
|
layout.addDropdown<int>(
|
||||||
|
"Timeout stacking style", {"Stack", "Stack sparingly"},
|
||||||
|
s.timeoutStackStyle, [](int index) { return index; },
|
||||||
|
[](auto args) { return args.index; }, false);
|
||||||
|
|
||||||
layout.addTitle("Emotes");
|
layout.addTitle("Emotes");
|
||||||
layout.addDropdown<float>(
|
layout.addDropdown<float>(
|
||||||
|
|
Loading…
Reference in a new issue