added settings to mention users with ,

This commit is contained in:
fourtf 2019-08-21 01:08:15 +02:00
parent b84c3ac3be
commit b513caf572
5 changed files with 25 additions and 5 deletions

View file

@ -77,7 +77,7 @@ int CompletionModel::rowCount(const QModelIndex &) const
return this->items_.size(); return this->items_.size();
} }
void CompletionModel::refresh(const QString &prefix) void CompletionModel::refresh(const QString &prefix, bool isFirstWord)
{ {
std::function<void(const QString &, TaggedString::Type)> addString; std::function<void(const QString &, TaggedString::Type)> addString;
if (getSettings()->prefixOnlyEmoteCompletion) if (getSettings()->prefixOnlyEmoteCompletion)
@ -120,6 +120,9 @@ void CompletionModel::refresh(const QString &prefix)
auto usernames = channel->accessChatters(); auto usernames = channel->accessChatters();
QString usernamePrefix = prefix; QString usernamePrefix = prefix;
QString usernamePostfix =
isFirstWord && getSettings()->mentionUsersWithComma ? ","
: QString();
if (usernamePrefix.startsWith("@")) if (usernamePrefix.startsWith("@"))
{ {
@ -127,7 +130,8 @@ void CompletionModel::refresh(const QString &prefix)
for (const auto &name : for (const auto &name :
usernames->subrange(Prefix(usernamePrefix))) usernames->subrange(Prefix(usernamePrefix)))
{ {
addString("@" + name, TaggedString::Type::Username); addString("@" + name + usernamePostfix,
TaggedString::Type::Username);
} }
} }
else else
@ -135,7 +139,8 @@ void CompletionModel::refresh(const QString &prefix)
for (const auto &name : for (const auto &name :
usernames->subrange(Prefix(usernamePrefix))) usernames->subrange(Prefix(usernamePrefix)))
{ {
addString(name, TaggedString::Type::Username); addString(name + usernamePostfix,
TaggedString::Type::Username);
} }
} }
} }

View file

@ -47,7 +47,7 @@ public:
virtual QVariant data(const QModelIndex &index, int) const override; virtual QVariant data(const QModelIndex &index, int) const override;
virtual int rowCount(const QModelIndex &) const override; virtual int rowCount(const QModelIndex &) const override;
void refresh(const QString &prefix); void refresh(const QString &prefix, bool isFirstWord = false);
private: private:
TaggedString createUser(const QString &str); TaggedString createUser(const QString &str);

View file

@ -104,6 +104,8 @@ public:
BoolSetting pauseChatOnHover = {"/behaviour/pauseChatHover", false}; BoolSetting pauseChatOnHover = {"/behaviour/pauseChatHover", false};
BoolSetting autorun = {"/behaviour/autorun", false}; BoolSetting autorun = {"/behaviour/autorun", false};
BoolSetting mentionUsersWithComma = {"/behaviour/mentionUsersWithComma",
true};
/// Commands /// Commands
BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false}; BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false};

View file

@ -102,6 +102,17 @@ void ResizingTextEdit::keyPressEvent(QKeyEvent *event)
} }
QString currentCompletionPrefix = this->textUnderCursor(); QString currentCompletionPrefix = this->textUnderCursor();
bool isFirstWord = [&] {
QString plainText = this->toPlainText();
for (int i = this->textCursor().position(); i >= 0; i--)
{
if (plainText[i] == ' ')
{
return false;
}
}
return true;
}();
// check if there is something to complete // check if there is something to complete
if (currentCompletionPrefix.size() <= 1) if (currentCompletionPrefix.size() <= 1)
@ -117,7 +128,7 @@ void ResizingTextEdit::keyPressEvent(QKeyEvent *event)
// First type pressing tab after modifying a message, we refresh our // First type pressing tab after modifying a message, we refresh our
// completion model // completion model
this->completer_->setModel(completionModel); this->completer_->setModel(completionModel);
completionModel->refresh(currentCompletionPrefix); completionModel->refresh(currentCompletionPrefix, isFirstWord);
this->completionInProgress_ = true; this->completionInProgress_ = true;
this->completer_->setCompletionPrefix(currentCompletionPrefix); this->completer_->setCompletionPrefix(currentCompletionPrefix);
this->completer_->complete(); this->completer_->complete();

View file

@ -262,6 +262,8 @@ void GeneralPage::initLayout(SettingsLayout &layout)
layout.addCheckbox("Show stream title", s.headerStreamTitle); layout.addCheckbox("Show stream title", s.headerStreamTitle);
layout.addTitle("Miscellaneous"); layout.addTitle("Miscellaneous");
layout.addCheckbox("Mention users with a comma (User,)",
s.mentionUsersWithComma);
layout.addCheckbox("Show joined users (< 1000 chatters)", s.showJoins); layout.addCheckbox("Show joined users (< 1000 chatters)", s.showJoins);
layout.addCheckbox("Show parted users (< 1000 chatters)", s.showParts); layout.addCheckbox("Show parted users (< 1000 chatters)", s.showParts);
layout.addCheckbox("Lowercase domains", s.lowercaseDomains); layout.addCheckbox("Lowercase domains", s.lowercaseDomains);