diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index f4abbf69..6b93a7ba 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -830,6 +830,8 @@ AdvSceneSwitcher.item.nameReserved="Name reserved!" AdvSceneSwitcher.macroSegmentSelection.invalid="Invalid selection!" +AdvSceneSwitcher.validation.text.maxLength="Only %1 characters are allowed in this field!" + AdvSceneSwitcher.variable.select="--select variable--" AdvSceneSwitcher.variable.add="Add new variable" AdvSceneSwitcher.variable.configure="Configure variable settings" diff --git a/src/macro-external/twitch/macro-action-twitch.cpp b/src/macro-external/twitch/macro-action-twitch.cpp index 172f20cf..d3b0b55f 100644 --- a/src/macro-external/twitch/macro-action-twitch.cpp +++ b/src/macro-external/twitch/macro-action-twitch.cpp @@ -352,6 +352,7 @@ MacroActionTwitchEdit::MacroActionTwitchEdit( _markerDescription->setMaxLength(140); _announcementMessage->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + _announcementMessage->setMaxLength(500); auto spinBox = _duration->SpinBox(); spinBox->setSuffix("s"); diff --git a/src/utils/resizing-text-edit.cpp b/src/utils/resizing-text-edit.cpp index 5cac67ea..dbf0024a 100644 --- a/src/utils/resizing-text-edit.cpp +++ b/src/utils/resizing-text-edit.cpp @@ -1,5 +1,8 @@ #include "resizing-text-edit.hpp" +#include +#include + namespace advss { ResizingPlainTextEdit::ResizingPlainTextEdit(QWidget *parent, @@ -13,6 +16,18 @@ ResizingPlainTextEdit::ResizingPlainTextEdit(QWidget *parent, { QWidget::connect(this, SIGNAL(textChanged()), this, SLOT(ResizeTexteditArea())); + QWidget::connect(this, SIGNAL(textChanged()), this, + SLOT(PreventExceedingMaxLength())); +} + +int ResizingPlainTextEdit::maxLength() +{ + return _maxLength; +} + +void ResizingPlainTextEdit::setMaxLength(int maxLength) +{ + _maxLength = maxLength; } void ResizingPlainTextEdit::ResizeTexteditArea() @@ -32,4 +47,19 @@ void ResizingPlainTextEdit::ResizeTexteditArea() updateGeometry(); } +void ResizingPlainTextEdit::PreventExceedingMaxLength() +{ + auto plainText = QPlainTextEdit::toPlainText(); + + if (_maxLength > -1 && plainText.length() > _maxLength) { + QPlainTextEdit::setPlainText(plainText.left(_maxLength)); + QPlainTextEdit::moveCursor(QTextCursor::End); + + DisplayMessage( + QString(obs_module_text( + "AdvSceneSwitcher.validation.text.maxLength")) + .arg(QString::number(_maxLength))); + } +} + } // namespace advss diff --git a/src/utils/resizing-text-edit.hpp b/src/utils/resizing-text-edit.hpp index 8507cc7b..5701013c 100644 --- a/src/utils/resizing-text-edit.hpp +++ b/src/utils/resizing-text-edit.hpp @@ -10,13 +10,18 @@ public: const int minLines = 3, const int paddingLines = 2); virtual ~ResizingPlainTextEdit(){}; + int maxLength(); + void setMaxLength(int maxLength); + private slots: void ResizeTexteditArea(); + void PreventExceedingMaxLength(); private: const int _scrollAt; const int _minLines; const int _paddingLines; + int _maxLength = -1; }; } // namespace advss diff --git a/src/utils/variable-line-edit.cpp b/src/utils/variable-line-edit.cpp index 05d4c466..59df32f2 100644 --- a/src/utils/variable-line-edit.cpp +++ b/src/utils/variable-line-edit.cpp @@ -1,6 +1,7 @@ #include "variable-line-edit.hpp" #include +#include namespace advss { @@ -8,6 +9,9 @@ VariableLineEdit::VariableLineEdit(QWidget *parent) : QLineEdit(parent) { QLineEdit::setToolTip( obs_module_text("AdvSceneSwitcher.tooltip.availableVariables")); + + QWidget::connect(this, SIGNAL(inputRejected()), this, + SLOT(DisplayValidationMessages())); } void VariableLineEdit::setText(const QString &string) @@ -27,4 +31,16 @@ void VariableLineEdit::setToolTip(const QString &string) obs_module_text("AdvSceneSwitcher.tooltip.availableVariables")); } +void VariableLineEdit::DisplayValidationMessages() +{ + int maxLength = QLineEdit::maxLength(); + + if (QLineEdit::text().length() == maxLength) { + DisplayMessage( + QString(obs_module_text( + "AdvSceneSwitcher.validation.text.maxLength")) + .arg(QString::number(maxLength))); + } +} + } // namespace advss diff --git a/src/utils/variable-line-edit.hpp b/src/utils/variable-line-edit.hpp index 64db4017..a3d6a423 100644 --- a/src/utils/variable-line-edit.hpp +++ b/src/utils/variable-line-edit.hpp @@ -13,6 +13,9 @@ public: void setText(const StringVariable &); void setToolTip(const QString &string); +private slots: + void DisplayValidationMessages(); + private: };