summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/printoptions.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-09-03 14:20:19 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-10-30 10:36:49 -0700
commite49d6213ad129284a45d53c3fcdc03249e84efe2 (patch)
tree2946a666ab38af3375e7bb2b8c5dd887d4a7f9a1 /desktop-widgets/printoptions.cpp
parent588abd019fb2ed3f607682f2b6c7fe86a7a5bb90 (diff)
downloadsubsurface-e49d6213ad129284a45d53c3fcdc03249e84efe2.tar.gz
Move qt-ui to desktop-widgets
Since we have now destkop and mobile versions, 'qt-ui' was a very poor name choice for a folder that contains only destkop-enabled widgets. Also, move the graphicsview-common.h/cpp to subsurface-core because it doesn't depend on qgraphicsview, it merely implements all the colors that we use throughout Subsurface, and we will use colors on both desktop and mobile versions Same thing applies for metrics.h/cpp Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'desktop-widgets/printoptions.cpp')
-rw-r--r--desktop-widgets/printoptions.cpp189
1 files changed, 189 insertions, 0 deletions
diff --git a/desktop-widgets/printoptions.cpp b/desktop-widgets/printoptions.cpp
new file mode 100644
index 000000000..769c89ff4
--- /dev/null
+++ b/desktop-widgets/printoptions.cpp
@@ -0,0 +1,189 @@
+#include "printoptions.h"
+#include "templateedit.h"
+#include "helpers.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QMessageBox>
+
+PrintOptions::PrintOptions(QWidget *parent, struct print_options *printOpt, struct template_options *templateOpt)
+{
+ hasSetupSlots = false;
+ ui.setupUi(this);
+ if (parent)
+ setParent(parent);
+ if (!printOpt || !templateOpt)
+ return;
+ templateOptions = templateOpt;
+ printOptions = printOpt;
+ setup();
+}
+
+void PrintOptions::setup()
+{
+ // print type radio buttons
+ switch (printOptions->type) {
+ case print_options::DIVELIST:
+ ui.radioDiveListPrint->setChecked(true);
+ break;
+ case print_options::STATISTICS:
+ ui.radioStatisticsPrint->setChecked(true);
+ break;
+ }
+
+ setupTemplates();
+
+ // general print option checkboxes
+ if (printOptions->color_selected)
+ ui.printInColor->setChecked(true);
+ if (printOptions->print_selected)
+ ui.printSelected->setChecked(true);
+
+ // connect slots only once
+ if (hasSetupSlots)
+ return;
+
+ connect(ui.printInColor, SIGNAL(clicked(bool)), this, SLOT(printInColorClicked(bool)));
+ connect(ui.printSelected, SIGNAL(clicked(bool)), this, SLOT(printSelectedClicked(bool)));
+
+ hasSetupSlots = true;
+}
+
+void PrintOptions::setupTemplates()
+{
+ if (printOptions->type == print_options::DIVELIST) {
+ // insert dive list templates in the UI and select the current template
+ qSort(grantlee_templates);
+ int current_index = 0, index = 0;
+ for (QList<QString>::iterator i = grantlee_templates.begin(); i != grantlee_templates.end(); ++i) {
+ if ((*i).compare(printOptions->p_template) == 0) {
+ current_index = index;
+ break;
+ }
+ index++;
+ }
+ ui.printTemplate->clear();
+ for (QList<QString>::iterator i = grantlee_templates.begin(); i != grantlee_templates.end(); ++i) {
+ ui.printTemplate->addItem((*i).split('.')[0], QVariant::fromValue(*i));
+ }
+ ui.printTemplate->setCurrentIndex(current_index);
+ } else if (printOptions->type == print_options::STATISTICS) {
+ // insert statistics templates in the UI and select the current template
+ qSort(grantlee_statistics_templates);
+ int current_index = 0, index = 0;
+ for (QList<QString>::iterator i = grantlee_statistics_templates.begin(); i != grantlee_statistics_templates.end(); ++i) {
+ if ((*i).compare(printOptions->p_template) == 0) {
+ current_index = index;
+ break;
+ }
+ index++;
+ }
+ ui.printTemplate->clear();
+ for (QList<QString>::iterator i = grantlee_statistics_templates.begin(); i != grantlee_statistics_templates.end(); ++i) {
+ ui.printTemplate->addItem((*i).split('.')[0], QVariant::fromValue(*i));
+ }
+ ui.printTemplate->setCurrentIndex(current_index);
+ }
+}
+
+// print type radio buttons
+void PrintOptions::on_radioDiveListPrint_toggled(bool check)
+{
+ if (check) {
+ printOptions->type = print_options::DIVELIST;
+
+ // print options
+ ui.printSelected->setEnabled(true);
+
+ // print template
+ ui.deleteButton->setEnabled(true);
+ ui.exportButton->setEnabled(true);
+ ui.importButton->setEnabled(true);
+
+ setupTemplates();
+ }
+}
+
+void PrintOptions::on_radioStatisticsPrint_toggled(bool check)
+{
+ if (check) {
+ printOptions->type = print_options::STATISTICS;
+
+ // print options
+ ui.printSelected->setEnabled(false);
+
+ // print template
+ ui.deleteButton->setEnabled(false);
+ ui.exportButton->setEnabled(false);
+ ui.importButton->setEnabled(false);
+
+ setupTemplates();
+ }
+}
+
+// general print option checkboxes
+void PrintOptions::printInColorClicked(bool check)
+{
+ printOptions->color_selected = check;
+}
+
+void PrintOptions::printSelectedClicked(bool check)
+{
+ printOptions->print_selected = check;
+}
+
+
+void PrintOptions::on_printTemplate_currentIndexChanged(int index)
+{
+ printOptions->p_template = ui.printTemplate->itemData(index).toString();
+}
+
+void PrintOptions::on_editButton_clicked()
+{
+ TemplateEdit te(this, printOptions, templateOptions);
+ te.exec();
+ setup();
+}
+
+void PrintOptions::on_importButton_clicked()
+{
+ QString filename = QFileDialog::getOpenFileName(this, tr("Import template file"), "",
+ tr("HTML files (*.html)"));
+ if (filename.isEmpty())
+ return;
+ QFileInfo fileInfo(filename);
+ QFile::copy(filename, getPrintingTemplatePathUser() + QDir::separator() + fileInfo.fileName());
+ printOptions->p_template = fileInfo.fileName();
+ find_all_templates();
+ setup();
+}
+
+void PrintOptions::on_exportButton_clicked()
+{
+ QString filename = QFileDialog::getSaveFileName(this, tr("Export template files as"), "",
+ tr("HTML files (*.html)"));
+ if (filename.isEmpty())
+ return;
+ QFile::copy(getPrintingTemplatePathUser() + QDir::separator() + getSelectedTemplate(), filename);
+}
+
+void PrintOptions::on_deleteButton_clicked()
+{
+ QString templateName = getSelectedTemplate();
+ QMessageBox msgBox;
+ msgBox.setText(tr("This action cannot be undone!"));
+ msgBox.setInformativeText(tr("Delete template: %1?").arg(templateName));
+ msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+ msgBox.setDefaultButton(QMessageBox::Cancel);
+ if (msgBox.exec() == QMessageBox::Ok) {
+ QFile f(getPrintingTemplatePathUser() + QDir::separator() + templateName);
+ f.remove();
+ find_all_templates();
+ setup();
+ }
+}
+
+QString PrintOptions::getSelectedTemplate()
+{
+ return ui.printTemplate->currentData().toString();
+}