diff options
Diffstat (limited to 'qt-ui/divelogexportdialog.cpp')
-rw-r--r-- | qt-ui/divelogexportdialog.cpp | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/qt-ui/divelogexportdialog.cpp b/qt-ui/divelogexportdialog.cpp deleted file mode 100644 index 7a406b982..000000000 --- a/qt-ui/divelogexportdialog.cpp +++ /dev/null @@ -1,240 +0,0 @@ -#include <QFileDialog> -#include <QShortcut> -#include <QSettings> -#include <QtConcurrent> - -#include "divelogexportdialog.h" -#include "divelogexportlogic.h" -#include "diveshareexportdialog.h" -#include "ui_divelogexportdialog.h" -#include "subsurfacewebservices.h" -#include "worldmap-save.h" -#include "save-html.h" -#include "mainwindow.h" - -#define GET_UNIT(name, field, f, t) \ - v = settings.value(QString(name)); \ - if (v.isValid()) \ - field = (v.toInt() == 0) ? (t) : (f); \ - else \ - field = default_prefs.units.field - -DiveLogExportDialog::DiveLogExportDialog(QWidget *parent) : QDialog(parent), - ui(new Ui::DiveLogExportDialog) -{ - ui->setupUi(this); - showExplanation(); - QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this); - connect(quit, SIGNAL(activated()), MainWindow::instance(), SLOT(close())); - QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this); - connect(close, SIGNAL(activated()), this, SLOT(close())); - - /* the names are not the actual values exported to the json files,The font-family property should hold several - font names as a "fallback" system, to ensure maximum compatibility between browsers/operating systems */ - ui->fontSelection->addItem("Arial", "Arial, Helvetica, sans-serif"); - ui->fontSelection->addItem("Impact", "Impact, Charcoal, sans-serif"); - ui->fontSelection->addItem("Georgia", "Georgia, serif"); - ui->fontSelection->addItem("Courier", "Courier, monospace"); - ui->fontSelection->addItem("Verdana", "Verdana, Geneva, sans-serif"); - - QSettings settings; - settings.beginGroup("HTML"); - if (settings.contains("fontSelection")) { - ui->fontSelection->setCurrentIndex(settings.value("fontSelection").toInt()); - } - if (settings.contains("fontSizeSelection")) { - ui->fontSizeSelection->setCurrentIndex(settings.value("fontSizeSelection").toInt()); - } - if (settings.contains("themeSelection")) { - ui->themeSelection->setCurrentIndex(settings.value("themeSelection").toInt()); - } - if (settings.contains("subsurfaceNumbers")) { - ui->exportSubsurfaceNumber->setChecked(settings.value("subsurfaceNumbers").toBool()); - } - if (settings.contains("yearlyStatistics")) { - ui->exportStatistics->setChecked(settings.value("yearlyStatistics").toBool()); - } - if (settings.contains("listOnly")) { - ui->exportListOnly->setChecked(settings.value("listOnly").toBool()); - } - if (settings.contains("exportPhotos")) { - ui->exportPhotos->setChecked(settings.value("exportPhotos").toBool()); - } - settings.endGroup(); -} - -DiveLogExportDialog::~DiveLogExportDialog() -{ - delete ui; -} - -void DiveLogExportDialog::showExplanation() -{ - if (ui->exportUDDF->isChecked()) { - ui->description->setText(tr("Generic format that is used for data exchange between a variety of diving related programs.")); - } else if (ui->exportCSV->isChecked()) { - ui->description->setText(tr("Comma separated values describing the dive profile.")); - } else if (ui->exportCSVDetails->isChecked()) { - ui->description->setText(tr("Comma separated values of the dive information. This includes most of the dive details but no profile information.")); - } else if (ui->exportDivelogs->isChecked()) { - ui->description->setText(tr("Send the dive data to divelogs.de website.")); - } else if (ui->exportDiveshare->isChecked()) { - ui->description->setText(tr("Send the dive data to dive-share.appspot.com website")); - } else if (ui->exportWorldMap->isChecked()) { - ui->description->setText(tr("HTML export of the dive locations, visualized on a world map.")); - } else if (ui->exportSubsurfaceXML->isChecked()) { - ui->description->setText(tr("Subsurface native XML format.")); - } else if (ui->exportImageDepths->isChecked()) { - ui->description->setText(tr("Write depths of images to file.")); - } -} - -void DiveLogExportDialog::exportHtmlInit(const QString &filename) -{ - struct htmlExportSetting hes; - hes.themeFile = (ui->themeSelection->currentText() == tr("Light")) ? "light.css" : "sand.css"; - hes.exportPhotos = ui->exportPhotos->isChecked(); - hes.selectedOnly = ui->exportSelectedDives->isChecked(); - hes.listOnly = ui->exportListOnly->isChecked(); - hes.fontFamily = ui->fontSelection->itemData(ui->fontSelection->currentIndex()).toString(); - hes.fontSize = ui->fontSizeSelection->currentText(); - hes.themeSelection = ui->themeSelection->currentIndex(); - hes.subsurfaceNumbers = ui->exportSubsurfaceNumber->isChecked(); - hes.yearlyStatistics = ui->exportStatistics->isChecked(); - - exportHtmlInitLogic(filename, hes); -} - -void DiveLogExportDialog::exportHTMLsettings(const QString &filename) -{ - QSettings settings; - settings.beginGroup("HTML"); - settings.setValue("fontSelection", ui->fontSelection->currentIndex()); - settings.setValue("fontSizeSelection", ui->fontSizeSelection->currentIndex()); - settings.setValue("themeSelection", ui->themeSelection->currentIndex()); - settings.setValue("subsurfaceNumbers", ui->exportSubsurfaceNumber->isChecked()); - settings.setValue("yearlyStatistics", ui->exportStatistics->isChecked()); - settings.setValue("listOnly", ui->exportListOnly->isChecked()); - settings.setValue("exportPhotos", ui->exportPhotos->isChecked()); - settings.endGroup(); - -} - - -void DiveLogExportDialog::on_exportGroup_buttonClicked(QAbstractButton *button) -{ - showExplanation(); -} - -void DiveLogExportDialog::on_buttonBox_accepted() -{ - QString filename; - QString stylesheet; - QSettings settings; - QString lastDir = QDir::homePath(); - - settings.beginGroup("FileDialog"); - if (settings.contains("LastDir")) { - if (QDir::setCurrent(settings.value("LastDir").toString())) { - lastDir = settings.value("LastDir").toString(); - } - } - settings.endGroup(); - - switch (ui->tabWidget->currentIndex()) { - case 0: - if (ui->exportUDDF->isChecked()) { - stylesheet = "uddf-export.xslt"; - filename = QFileDialog::getSaveFileName(this, tr("Export UDDF file as"), lastDir, - tr("UDDF files (*.uddf *.UDDF)")); - } else if (ui->exportCSV->isChecked()) { - stylesheet = "xml2csv.xslt"; - filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir, - tr("CSV files (*.csv *.CSV)")); - } else if (ui->exportCSVDetails->isChecked()) { - stylesheet = "xml2manualcsv.xslt"; - filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir, - tr("CSV files (*.csv *.CSV)")); - } else if (ui->exportDivelogs->isChecked()) { - DivelogsDeWebServices::instance()->prepareDivesForUpload(ui->exportSelected->isChecked()); - } else if (ui->exportDiveshare->isChecked()) { - DiveShareExportDialog::instance()->prepareDivesForUpload(ui->exportSelected->isChecked()); - } else if (ui->exportWorldMap->isChecked()) { - filename = QFileDialog::getSaveFileName(this, tr("Export world map"), lastDir, - tr("HTML files (*.html)")); - if (!filename.isNull() && !filename.isEmpty()) - export_worldmap_HTML(filename.toUtf8().data(), ui->exportSelected->isChecked()); - } else if (ui->exportSubsurfaceXML->isChecked()) { - filename = QFileDialog::getSaveFileName(this, tr("Export Subsurface XML"), lastDir, - tr("XML files (*.xml *.ssrf)")); - if (!filename.isNull() && !filename.isEmpty()) { - if (!filename.contains('.')) - filename.append(".ssrf"); - QByteArray bt = QFile::encodeName(filename); - save_dives_logic(bt.data(), ui->exportSelected->isChecked()); - } - } else if (ui->exportImageDepths->isChecked()) { - filename = QFileDialog::getSaveFileName(this, tr("Save image depths"), lastDir); - if (!filename.isNull() && !filename.isEmpty()) - export_depths(filename.toUtf8().data(), ui->exportSelected->isChecked()); - } - break; - case 1: - filename = QFileDialog::getSaveFileName(this, tr("Export HTML files as"), lastDir, - tr("HTML files (*.html)")); - if (!filename.isNull() && !filename.isEmpty()) - exportHtmlInit(filename); - break; - } - - if (!filename.isNull() && !filename.isEmpty()) { - // remember the last export path - QFileInfo fileInfo(filename); - settings.beginGroup("FileDialog"); - settings.setValue("LastDir", fileInfo.dir().path()); - settings.endGroup(); - // the non XSLT exports are called directly above, the XSLT based ons are called here - if (!stylesheet.isEmpty()) { - future = QtConcurrent::run(export_dives_xslt, filename.toUtf8(), ui->exportSelected->isChecked(), ui->CSVUnits_2->currentIndex(), stylesheet.toUtf8()); - MainWindow::instance()->getNotificationWidget()->showNotification(tr("Please wait, exporting..."), KMessageWidget::Information); - MainWindow::instance()->getNotificationWidget()->setFuture(future); - } - } -} - -void DiveLogExportDialog::export_depths(const char *filename, const bool selected_only) -{ - FILE *f; - struct dive *dive; - depth_t depth; - int i; - const char *unit = NULL; - - struct membuffer buf = { 0 }; - - for_each_dive (i, dive) { - if (selected_only && !dive->selected) - continue; - - FOR_EACH_PICTURE (dive) { - int n = dive->dc.samples; - struct sample *s = dive->dc.sample; - depth.mm = 0; - while (--n >= 0 && (int32_t)s->time.seconds <= picture->offset.seconds) { - depth.mm = s->depth.mm; - s++; - } - put_format(&buf, "%s\t%.1f", picture->filename, get_depth_units(depth.mm, NULL, &unit)); - put_format(&buf, "%s\n", unit); - } - } - - f = subsurface_fopen(filename, "w+"); - if (!f) { - report_error(tr("Can't open file %s").toUtf8().data(), filename); - } else { - flush_buffer(&buf, f); /*check for writing errors? */ - fclose(f); - } - free_buffer(&buf); -} |