diff --git a/src/blackgui/components/settingstextmessagestyle.cpp b/src/blackgui/components/settingstextmessagestyle.cpp index 6ddb7b998..45627adfd 100644 --- a/src/blackgui/components/settingstextmessagestyle.cpp +++ b/src/blackgui/components/settingstextmessagestyle.cpp @@ -12,11 +12,17 @@ #include "settingsfontdialog.h" #include "texteditdialog.h" #include "settingstextmessagestyle.h" +#include "blackgui/shortcut.h" #include #include #include #include +#include +#include + +#include + namespace BlackGui { @@ -32,6 +38,12 @@ namespace BlackGui connect(ui->pb_Style, &QPushButton::released, this, &CSettingsTextMessageStyle::changeStyle); connect(ui->pb_Reset, &QPushButton::released, this, &CSettingsTextMessageStyle::resetStyle); connect(ui->pb_Reset, &QPushButton::released, this, &CSettingsTextMessageStyle::changed); + connect(ui->pb_FontMinus, &QPushButton::released, this, &CSettingsTextMessageStyle::fontSizeMinus); + connect(ui->pb_FontPlus, &QPushButton::released, this, &CSettingsTextMessageStyle::fontSizePlus); + +// QShortcut *sc = new QShortcut(CShortcut::keyFontMinus(), this); +// sc->setContext(Qt::WidgetWithChildrenShortcut); +// QObject::connect(sc, &QShortcut::activatedAmbiguously, this, &CSettingsTextMessageStyle::fontSizePlus); } CSettingsTextMessageStyle::~CSettingsTextMessageStyle() @@ -84,13 +96,62 @@ namespace BlackGui if (familySizeStlye.size() != 3) { return false; } static const QString f("font-family: \"%1\"; font-size: %2; font-style: %3"); - QString style = m_style; const QString tableStyle = QStringLiteral("table { ") % f.arg(familySizeStlye.at(0), familySizeStlye.at(1), familySizeStlye.at(2)) % QStringLiteral(" }"); + this->replaceTableStyle(tableStyle); + return true; + } + void CSettingsTextMessageStyle::replaceTableStyle(const QString &newTableStyle) + { + QString style = m_style; thread_local const QRegularExpression re("table\\s*\\{.*\\}"); - style.replace(re, tableStyle); - + style.replace(re, newTableStyle); m_style = style; + } + + void CSettingsTextMessageStyle::fontSizeMinus() + { + if (this->changeFontSize(false)) + { + emit this->changed(); + } + } + + void CSettingsTextMessageStyle::fontSizePlus() + { + if (this->changeFontSize(true)) + { + emit this->changed(); + } + } + + bool CSettingsTextMessageStyle::changeFontSize(bool increase) + { + QString style = m_style; + thread_local const QRegularExpression re("table\\s*\\{.*:\\s*(\\d{1,2}).*\\}"); + const QRegularExpressionMatch match = re.match(style); + const QStringList matches = match.capturedTexts(); + if (matches.size() != 2) { return false; } + + bool ok; + int ptSize = matches.last().toInt(&ok); + if (!ok) { return false; } + if (increase) + { + ptSize++; + if (ptSize > 16) { return false; } + } + else + { + ptSize--; + if (ptSize < 6) { return false; } + } + + const QString pt = QString::number(ptSize) % "pt"; + QString tableStyle = matches.front(); + thread_local const QRegularExpression rePt("\\d{1,2}pt"); + tableStyle.replace(rePt, pt); + this->replaceTableStyle(tableStyle); return true; } } // ns diff --git a/src/blackgui/components/settingstextmessagestyle.h b/src/blackgui/components/settingstextmessagestyle.h index bae69946c..e95b5297c 100644 --- a/src/blackgui/components/settingstextmessagestyle.h +++ b/src/blackgui/components/settingstextmessagestyle.h @@ -45,6 +45,11 @@ namespace BlackGui //! Style void setStyle(const QString &style) { m_style = style; } + //! Font size @{ + void fontSizeMinus(); + void fontSizePlus(); + //! @} + //! Reset style void resetStyle() { m_style.clear(); } @@ -66,6 +71,12 @@ namespace BlackGui //! Update the font part bool setFontFamilySizeStyle(const QStringList &familySizeStlye); + + //! Replace the table style in style + void replaceTableStyle(const QString &newTableStyle); + + //! Increase/decrease font size + bool changeFontSize(bool increase); }; } // ns } // ns diff --git a/src/blackgui/components/settingstextmessagestyle.ui b/src/blackgui/components/settingstextmessagestyle.ui index 77f21ac26..0a5f41a08 100644 --- a/src/blackgui/components/settingstextmessagestyle.ui +++ b/src/blackgui/components/settingstextmessagestyle.ui @@ -2,16 +2,8 @@ CSettingsTextMessageStyle - - - 0 - 0 - 301 - 26 - - - Frame + Text message style @@ -27,17 +19,32 @@ 3 - - - Qt::Horizontal + + + font enlarge (plus) - - - 40 - 20 - + + + - + + + :/pastel/icons/pastel/16/font-enlarge.png:/pastel/icons/pastel/16/font-enlarge.png + + + + + + + font shrink (minus) + + + - + + + + :/pastel/icons/pastel/16/font-shrink.png:/pastel/icons/pastel/16/font-shrink.png + + @@ -62,6 +69,15 @@ - + + pb_FontPlus + pb_FontMinus + pb_Reset + pb_Style + pb_Font + + + +