diff --git a/src/libs/vtools/dialogs/support/dialogeditlabel.cpp b/src/libs/vtools/dialogs/support/dialogeditlabel.cpp index 14a29f957..b0a9a65e2 100644 --- a/src/libs/vtools/dialogs/support/dialogeditlabel.cpp +++ b/src/libs/vtools/dialogs/support/dialogeditlabel.cpp @@ -58,7 +58,8 @@ DialogEditLabel::DialogEditLabel(QWidget *parent) connect(ui->toolButtonTextLeft, &QToolButton::toggled, this, &DialogEditLabel::SaveTextFormating); connect(ui->toolButtonTextCenter, &QToolButton::toggled, this, &DialogEditLabel::SaveTextFormating); connect(ui->toolButtonTextRight, &QToolButton::toggled, this, &DialogEditLabel::SaveTextFormating); - connect(ui->listWidget, &QListWidget::itemSelectionChanged, this, &DialogEditLabel::ShowLineDetails); + connect(ui->listWidgetEdit, &QListWidget::itemSelectionChanged, this, &DialogEditLabel::ShowLineDetails); + connect(ui->tabWidget, &QTabWidget::currentChanged, this, &DialogEditLabel::TabChanged); connect(ui->toolButtonNewLabel, &QToolButton::clicked, this, &DialogEditLabel::NewTemplate); connect(ui->toolButtonExportLabel, &QToolButton::clicked, this, &DialogEditLabel::ExportTemplate); connect(ui->toolButtonImportLabel, &QToolButton::clicked, this, &DialogEditLabel::ImportTemplate); @@ -78,14 +79,13 @@ DialogEditLabel::~DialogEditLabel() //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::ShowLineDetails() { - if (ui->listWidget->count() > 0) + if (ui->listWidgetEdit->count() > 0) { - const QListWidgetItem *line = ui->listWidget->currentItem(); + const QListWidgetItem *line = ui->listWidgetEdit->currentItem(); if (line) { ui->lineEditLine->blockSignals(true); ui->lineEditLine->setText(line->text()); - ui->lineEditLine->setFocus(); ui->lineEditLine->blockSignals(false); const QFont lineFont = line->font(); @@ -135,28 +135,28 @@ void DialogEditLabel::ShowLineDetails() //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::AddLine() { - int row = ui->listWidget->currentRow(); - ui->listWidget->insertItem(++row, new QListWidgetItem(tr(""))); - ui->listWidget->setCurrentRow(row); + int row = ui->listWidgetEdit->currentRow(); + ui->listWidgetEdit->insertItem(++row, new QListWidgetItem(tr(""))); + ui->listWidgetEdit->setCurrentRow(row); } //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::RemoveLine() { - ui->listWidget->blockSignals(true); - QListWidgetItem *curLine = ui->listWidget->takeItem(ui->listWidget->currentRow()); + ui->listWidgetEdit->blockSignals(true); + QListWidgetItem *curLine = ui->listWidgetEdit->takeItem(ui->listWidgetEdit->currentRow()); if (curLine) { delete curLine; } - ui->listWidget->blockSignals(false); + ui->listWidgetEdit->blockSignals(false); ShowLineDetails(); } //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::SaveLineText(const QString &text) { - QListWidgetItem *curLine = ui->listWidget->currentItem(); + QListWidgetItem *curLine = ui->listWidgetEdit->currentItem(); if (curLine) { curLine->setText(text); @@ -166,7 +166,7 @@ void DialogEditLabel::SaveLineText(const QString &text) //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::SaveFontStyle(bool checked) { - QListWidgetItem *curLine = ui->listWidget->currentItem(); + QListWidgetItem *curLine = ui->listWidgetEdit->currentItem(); if (curLine) { QFont lineFont = curLine->font(); @@ -191,7 +191,7 @@ void DialogEditLabel::SaveFontStyle(bool checked) //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::SaveTextFormating(bool checked) { - QListWidgetItem *curLine = ui->listWidget->currentItem(); + QListWidgetItem *curLine = ui->listWidgetEdit->currentItem(); if (curLine) { QToolButton *button = qobject_cast(sender()); @@ -254,7 +254,7 @@ void DialogEditLabel::SaveTextFormating(bool checked) //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::NewTemplate() { - if (ui->listWidget->count() > 0) + if (ui->listWidgetEdit->count() > 0) { const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Create new template"), tr("Creating new template will overwrite the current, do " @@ -266,9 +266,9 @@ void DialogEditLabel::NewTemplate() } } - ui->listWidget->blockSignals(true); - ui->listWidget->clear(); - ui->listWidget->blockSignals(false); + ui->listWidgetEdit->blockSignals(true); + ui->listWidgetEdit->clear(); + ui->listWidgetEdit->blockSignals(false); ShowLineDetails(); } @@ -333,7 +333,7 @@ void DialogEditLabel::ExportTemplate() //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::ImportTemplate() { - if (ui->listWidget->count() > 0) + if (ui->listWidgetEdit->count() > 0) { const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Import template"), tr("Import template will overwrite the current, do " @@ -358,7 +358,7 @@ void DialogEditLabel::ImportTemplate() { VLabelTemplate ltemplate; ltemplate.setXMLContent(VLabelTemplateConverter(fileName).Convert()); - InitLines(ltemplate.ReadLines()); + InitEditLines(ltemplate.ReadLines()); } catch (VException &e) { @@ -378,10 +378,26 @@ void DialogEditLabel::InsertPlaceholder() } } +//--------------------------------------------------------------------------------------------------------------------- +void DialogEditLabel::TabChanged(int index) +{ + if (index == ui->tabWidget->indexOf(ui->tabPreview)) + { + ui->toolButtonNewLabel->setDisabled(true); + ui->toolButtonImportLabel->setDisabled(true); + InitPreviewLines(PrepareLines()); + } + else + { + ui->toolButtonNewLabel->setEnabled(ui->listWidgetEdit->count() > 0); + ui->toolButtonImportLabel->setEnabled(true); + } +} + //--------------------------------------------------------------------------------------------------------------------- void DialogEditLabel::SetupControls() { - const bool enabled = ui->listWidget->count() > 0; + const bool enabled = ui->listWidgetEdit->count() > 0; if (not enabled) { @@ -426,14 +442,26 @@ void DialogEditLabel::InitPlaceholders() m_placeholders.insert("%date%", qMakePair(tr("Date"), locale.toString(QDate::currentDate(), "dd MMMM yyyy"))); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogEditLabel::ReplacePlaceholders(QString line) const +{ + auto i = m_placeholders.constBegin(); + while (i != m_placeholders.constEnd()) + { + line.replace(i.key(), i.value().second); + ++i; + } + return line; +} + //--------------------------------------------------------------------------------------------------------------------- QVector DialogEditLabel::PrepareLines() const { QVector lines; - for (int i=0; ilistWidget->count(); ++i) + for (int i=0; ilistWidgetEdit->count(); ++i) { - const QListWidgetItem *lineItem = ui->listWidget->item(i); + const QListWidgetItem *lineItem = ui->listWidgetEdit->item(i); if (lineItem) { VLabelTemplateLine line; @@ -452,10 +480,10 @@ QVector DialogEditLabel::PrepareLines() const } //--------------------------------------------------------------------------------------------------------------------- -void DialogEditLabel::InitLines(const QVector &lines) +void DialogEditLabel::InitEditLines(const QVector &lines) { - ui->listWidget->blockSignals(true); - ui->listWidget->clear(); + ui->listWidgetEdit->blockSignals(true); + ui->listWidgetEdit->clear(); int row = -1; @@ -469,13 +497,39 @@ void DialogEditLabel::InitLines(const QVector &lines) font.setItalic(lines.at(i).italic); item->setFont(font); - ui->listWidget->insertItem(++row, item); + ui->listWidgetEdit->insertItem(++row, item); } - ui->listWidget->blockSignals(false); + ui->listWidgetEdit->blockSignals(false); - if (ui->listWidget->count() > 0) + if (ui->listWidgetEdit->count() > 0) { - ui->listWidget->setCurrentRow(0); + ui->listWidgetEdit->setCurrentRow(0); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogEditLabel::InitPreviewLines(const QVector &lines) +{ + ui->listWidgetPreview->clear(); + + int row = -1; + + for (int i=0; isetTextAlignment(lines.at(i).alignment); + + QFont font = item->font(); + font.setBold(lines.at(i).bold); + font.setItalic(lines.at(i).italic); + item->setFont(font); + + ui->listWidgetPreview->insertItem(++row, item); + } + + if (ui->listWidgetPreview->count() > 0) + { + ui->listWidgetPreview->setCurrentRow(0); } } diff --git a/src/libs/vtools/dialogs/support/dialogeditlabel.h b/src/libs/vtools/dialogs/support/dialogeditlabel.h index b94783a3c..5f0da10d4 100644 --- a/src/libs/vtools/dialogs/support/dialogeditlabel.h +++ b/src/libs/vtools/dialogs/support/dialogeditlabel.h @@ -59,6 +59,7 @@ private slots: void ExportTemplate(); void ImportTemplate(); void InsertPlaceholder(); + void TabChanged(int index); private: Q_DISABLE_COPY(DialogEditLabel) @@ -71,8 +72,11 @@ private: void InitPlaceholdersMenu(); void InitPlaceholders(); + QString ReplacePlaceholders(QString line) const; + QVector PrepareLines() const; - void InitLines(const QVector &lines); + void InitEditLines(const QVector &lines); + void InitPreviewLines(const QVector &lines); }; #endif // DIALOGEDITLABEL_H diff --git a/src/libs/vtools/dialogs/support/dialogeditlabel.ui b/src/libs/vtools/dialogs/support/dialogeditlabel.ui index 4aafee6a1..8efd7d4f2 100644 --- a/src/libs/vtools/dialogs/support/dialogeditlabel.ui +++ b/src/libs/vtools/dialogs/support/dialogeditlabel.ui @@ -9,8 +9,8 @@ 0 0 - 494 - 384 + 437 + 464 @@ -23,7 +23,7 @@ true - + @@ -108,209 +108,233 @@ - - - - 0 - 1 - + + + 0 - - QAbstractItemView::InternalMove - - - - - - - - - 6 - + + + Edit + + - - - false - - - Bold - - - ... - - - - .. - - - true - - - - - - - false - - - Italic - - - ... - - - - .. - - - true - - - - - - - false - - - Aligns with the left edge - - - ... - - - - .. - - - true - - - - - - - false - - - Centers horizontally in the available space - - - ... - - - - .. - - - true - - - - - - - false - - - Aligns with the right edge - - - ... - - - - .. - - - true - - - - - - - Qt::Horizontal - - - - 20 - 20 - - - - - - + - + 0 - 0 + 1 - - ... - - - - ../../../../app/valentina/dialogs../../../../app/valentina/dialogs - - - - - - - false - - - ... - - - - ../../../../app/valentina/dialogs../../../../app/valentina/dialogs - - - - - - - - - Text: - - - - - - - - - false - - - Line of text - - - false + + QAbstractItemView::InternalMove - - - false - - - Insert placeholders - - - Insert... - - + + + + + 6 + + + + + false + + + Bold + + + ... + + + + .. + + + true + + + + + + + false + + + Italic + + + ... + + + + .. + + + true + + + + + + + false + + + Aligns with the left edge + + + ... + + + + .. + + + true + + + + + + + false + + + Centers horizontally in the available space + + + ... + + + + .. + + + true + + + + + + + false + + + Aligns with the right edge + + + ... + + + + .. + + + true + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + ... + + + + ../../../../app/valentina/dialogs../../../../app/valentina/dialogs + + + + + + + false + + + ... + + + + ../../../../app/valentina/dialogs../../../../app/valentina/dialogs + + + + + + + + + Text: + + + + + + + + + false + + + Line of text + + + false + + + + + + + false + + + Insert placeholders + + + Insert... + + + + + + - - + + + + Preview + + + + + + + +