Implement "hide empty input" option

Fixes #144
This commit is contained in:
Rasmus Karlsson 2017-12-17 16:19:16 +01:00
parent ef9aedb2cd
commit 151ff057a6
3 changed files with 30 additions and 0 deletions

View file

@ -198,6 +198,11 @@ void SplitInput::clearSelection()
this->textInput.setTextCursor(c);
}
QString SplitInput::getInputText() const
{
return this->textInput.toPlainText();
}
void SplitInput::refreshTheme()
{
QPalette palette;
@ -213,6 +218,8 @@ void SplitInput::editTextChanged()
{
QString text = this->textInput.toPlainText();
this->textChanged.invoke(text);
text = text.trimmed();
static QRegularExpression spaceRegex("\\s\\s+");
text = text.replace(spaceRegex, " ");

View file

@ -26,6 +26,9 @@ public:
SplitInput(Split *_chatWidget);
void clearSelection();
QString getInputText() const;
pajlada::Signals::Signal<const QString &> textChanged;
protected:
virtual void paintEvent(QPaintEvent *) override;

View file

@ -96,6 +96,26 @@ Split::Split(ChannelManager &_channelManager, SplitContainer *parent)
this->input.clearSelection();
}
});
this->input.textChanged.connect([this](const QString &newText) {
if (!SettingsManager::getInstance().hideEmptyInput) {
return;
}
if (newText.length() == 0) {
this->input.hide();
} else if (this->input.isHidden()) {
this->input.show();
}
});
SettingsManager::getInstance().hideEmptyInput.connect([this](const bool &hideEmptyInput, auto) {
if (hideEmptyInput && this->input.getInputText().length() == 0) {
this->input.hide();
} else {
this->input.show();
}
});
}
Split::~Split()