mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
d705cb34bb
On update call Printer to render on the QPixmap. Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
100 lines
3 KiB
C++
100 lines
3 KiB
C++
#include "templateedit.h"
|
|
#include "printoptions.h"
|
|
#include "printer.h"
|
|
#include "ui_templateedit.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
TemplateEdit::TemplateEdit(QWidget *parent, struct print_options *printOptions, struct template_options *templateOptions) :
|
|
QDialog(parent),
|
|
ui(new Ui::TemplateEdit)
|
|
{
|
|
ui->setupUi(this);
|
|
this->templateOptions = templateOptions;
|
|
newTemplateOptions = *templateOptions;
|
|
this->printOptions = printOptions;
|
|
|
|
// restore the settings and init the UI
|
|
ui->fontSelection->setCurrentIndex(templateOptions->font_index);
|
|
ui->fontsize->setValue(templateOptions->font_size);
|
|
ui->colorpalette->setCurrentIndex(templateOptions->color_palette_index);
|
|
ui->linespacing->setValue(templateOptions->line_spacing);
|
|
|
|
if (printOptions->p_template == print_options::ONE_DIVE) {
|
|
grantlee_template = TemplateLayout::readTemplate("one_dive.html");
|
|
} else if (printOptions->p_template == print_options::TWO_DIVE) {
|
|
grantlee_template = TemplateLayout::readTemplate("two_dives.html");
|
|
} else if (printOptions->p_template == print_options::CUSTOM) {
|
|
grantlee_template = TemplateLayout::readTemplate("custom.html");
|
|
}
|
|
|
|
ui->plainTextEdit->setPlainText(grantlee_template);
|
|
updatePreview();
|
|
}
|
|
|
|
TemplateEdit::~TemplateEdit()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void TemplateEdit::updatePreview()
|
|
{
|
|
int width = ui->label->width();
|
|
int height = ui->label->height();
|
|
QPixmap map(width * 2, height * 2);
|
|
map.fill(QColor::fromRgb(255, 255, 255));
|
|
Printer printer(&map, printOptions, templateOptions, Printer::PREVIEW);
|
|
printer.previewOnePage();
|
|
ui->label->setPixmap(map.scaled(width, height, Qt::IgnoreAspectRatio));
|
|
}
|
|
|
|
void TemplateEdit::on_fontsize_valueChanged(int font_size)
|
|
{
|
|
newTemplateOptions.font_size = font_size;
|
|
}
|
|
|
|
void TemplateEdit::on_linespacing_valueChanged(double line_spacing)
|
|
{
|
|
newTemplateOptions.line_spacing = line_spacing;
|
|
}
|
|
|
|
void TemplateEdit::on_fontSelection_currentIndexChanged(int index)
|
|
{
|
|
newTemplateOptions.font_index = index;
|
|
}
|
|
|
|
void TemplateEdit::on_colorpalette_currentIndexChanged(int index)
|
|
{
|
|
newTemplateOptions.color_palette_index = index;
|
|
}
|
|
|
|
void TemplateEdit::saveSettings()
|
|
{
|
|
if ((*templateOptions) != newTemplateOptions || grantlee_template.compare(ui->plainTextEdit->toPlainText())) {
|
|
QMessageBox msgBox;
|
|
msgBox.setText("Do you want to save your changes?");
|
|
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard);
|
|
msgBox.setDefaultButton(QMessageBox::Discard);
|
|
if (msgBox.exec() == QMessageBox::Save) {
|
|
memcpy(templateOptions, &newTemplateOptions, sizeof(struct template_options));
|
|
printOptions->p_template = print_options::CUSTOM;
|
|
TemplateLayout::writeTemplate("custom.html", ui->plainTextEdit->toPlainText());
|
|
}
|
|
}
|
|
}
|
|
|
|
void TemplateEdit::on_buttonBox_clicked(QAbstractButton *button)
|
|
{
|
|
QDialogButtonBox::StandardButton standardButton = ui->buttonBox->standardButton(button);
|
|
switch (standardButton) {
|
|
case QDialogButtonBox::Ok:
|
|
saveSettings();
|
|
break;
|
|
case QDialogButtonBox::Cancel:
|
|
break;
|
|
case QDialogButtonBox::Apply:
|
|
saveSettings();
|
|
updatePreview();
|
|
break;
|
|
}
|
|
}
|