6 #include <QKeySequence>
8 #include <QRegularExpression>
10 #include <QStringBuilder>
13 #include "ui_settingstextmessagestyle.h"
26 connect(ui->pb_Font, &QPushButton::released,
this, &CSettingsTextMessageStyle::changeFont);
27 connect(ui->pb_Style, &QPushButton::released,
this, &CSettingsTextMessageStyle::changeStyle);
45 static const QStringList empty({
"",
"",
"" });
49 void CSettingsTextMessageStyle::changeFont()
51 if (!m_fontSettingsDialog)
57 const QDialog::DialogCode r =
static_cast<QDialog::DialogCode
>(m_fontSettingsDialog->exec());
58 if (r == QDialog::Accepted)
61 this->setFontFamilySizeStyle(familySizeStyle);
66 void CSettingsTextMessageStyle::changeStyle()
68 if (!m_textEditDialog)
70 m_textEditDialog =
new CTextEditDialog(
this);
71 m_textEditDialog->resize(400, 300);
74 m_textEditDialog->
textEdit()->setPlainText(m_style);
75 const QDialog::DialogCode r =
static_cast<QDialog::DialogCode
>(m_textEditDialog->exec());
76 if (r == QDialog::Accepted)
78 m_style = m_textEditDialog->
textEdit()->toPlainText();
83 bool CSettingsTextMessageStyle::setFontFamilySizeStyle(
const QStringList &familySizeStlye)
85 if (familySizeStlye.size() != 3) {
return false; }
86 static const QString f(
"font-family: \"%1\"; font-size: %2; font-style: %3");
88 const QString tableStyle =
89 u
"table { " % f.arg(familySizeStlye.at(0), familySizeStlye.at(1), familySizeStlye.at(2)) % u
" }";
90 this->replaceTableStyle(tableStyle);
94 void CSettingsTextMessageStyle::replaceTableStyle(
const QString &newTableStyle)
96 QString style = m_style;
97 thread_local
const QRegularExpression re(
"table\\s*\\{.*\\}");
98 style.replace(re, newTableStyle);
104 if (this->changeFontSize(
false)) { emit this->
changed(); }
109 if (this->changeFontSize(
true)) { emit this->
changed(); }
112 bool CSettingsTextMessageStyle::changeFontSize(
bool increase)
114 QString style = m_style;
115 thread_local
const QRegularExpression re(
"table\\s*\\{.*:\\s*(\\d{1,2}).*\\}");
116 const QRegularExpressionMatch match = re.match(style);
117 const QStringList matches = match.capturedTexts();
118 if (matches.size() != 2) {
return false; }
121 int ptSize = matches.last().toInt(&ok);
122 if (!ok) {
return false; }
126 if (ptSize > 16) {
return false; }
131 if (ptSize < 6) {
return false; }
134 const QString pt = QString::number(ptSize) % u
"pt";
135 QString tableStyle = matches.front();
136 thread_local
const QRegularExpression rePt(
"\\d{1,2}pt");
137 tableStyle.replace(rePt, pt);
138 this->replaceTableStyle(tableStyle);
void setWithColorSelection(bool withColor)
With color selection.
QStringList getFamilySizeStyle() const
Family, size and style.
virtual ~CSettingsTextMessageStyle()
Destructor.
CSettingsTextMessageStyle(QWidget *parent=nullptr)
Constructor.
QStringList getFamilySizeStyle() const
Fmily, size and style.
void fontSizeMinus()
Font size.
void changed()
Font or style changed from within the component.
void resetStyle()
Reset style.
void fontSizePlus()
Font size.
QTextEdit * textEdit() const
Access to text edit.
High level reusable GUI components.