diff options
author | Adam Szmigin <smidge@xsco.net> | 2020-09-16 23:33:52 +0100 |
---|---|---|
committer | Adam Szmigin <smidge@xsco.net> | 2020-10-11 14:41:36 +0100 |
commit | e1c2cfc58506aff45dae034534f269258f0bba70 (patch) | |
tree | 11f9dc9160b68f3ac87fa8cc1835d4d73b1b4158 | |
parent | 9f9adda76b306b457007ebb576be7ca1e8c56e79 (diff) |
Allow selection of database version when exporting
-rw-r--r-- | src/library/export/dlglibraryexport.cpp | 24 | ||||
-rw-r--r-- | src/library/export/dlglibraryexport.h | 2 | ||||
-rw-r--r-- | src/library/export/engineprimeexportjob.cpp | 4 | ||||
-rw-r--r-- | src/library/export/engineprimeexportrequest.h | 4 |
4 files changed, 31 insertions, 3 deletions
diff --git a/src/library/export/dlglibraryexport.cpp b/src/library/export/dlglibraryexport.cpp index 54992b3817..428173b946 100644 --- a/src/library/export/dlglibraryexport.cpp +++ b/src/library/export/dlglibraryexport.cpp @@ -7,7 +7,8 @@ #include <QLabel> #include <QPushButton> #include <QStandardPaths> -#include <djinterop/enginelibrary.hpp> +#include <djinterop/djinterop.hpp> +#include <string> #include "library/export/engineprimeexportrequest.h" #include "library/trackcollection.h" @@ -56,6 +57,21 @@ DlgLibraryExport::DlgLibraryExport( m_pMusicDirectoryTextField = make_parented<QLineEdit>(); m_pMusicDirectoryTextField->setReadOnly(true); + // Drop-down for choosing exported database version. + m_pVersionCombo = make_parented<QComboBox>(); + int versionIndex = 0; + for (const djinterop::semantic_version& version : el::all_versions) { + std::string label = el::version_name(version); + m_pVersionCombo->insertItem( + 0, QString::fromStdString(label), QVariant{versionIndex}); + if (version == el::version_latest_firmware) { + // Latest firmware version is the default selection. + m_pVersionCombo->setCurrentIndex(0); + } + + ++versionIndex; + } + // Radio buttons to allow choice between exporting the whole music library // or just tracks in a selection of crates. m_pWholeLibraryRadio = make_parented<QRadioButton>(tr("Entire music library")); @@ -83,6 +99,7 @@ DlgLibraryExport::DlgLibraryExport( auto pFormLayout = make_parented<QFormLayout>(); pFormLayout->addRow(tr("Base export directory"), pExportDirLayout); + pFormLayout->addRow(tr("Database version"), m_pVersionCombo); pFormLayout->addRow(tr("Engine Prime database export directory"), m_pDatabaseDirectoryTextField); pFormLayout->addRow(tr("Copy music files to"), m_pMusicDirectoryTextField); @@ -188,12 +205,17 @@ void DlgLibraryExport::exportRequested() { } } + // Work out what version was requested. + int versionIndex = m_pVersionCombo->currentData().toInt(); + djinterop::semantic_version exportVersion = el::all_versions[versionIndex]; + // Construct a request to export the library/crates. // Assumed to always be an Engine Prime export in this iteration of the // dialog. EnginePrimeExportRequest request; request.engineLibraryDbDir = QDir{m_pDatabaseDirectoryTextField->text()}; request.musicFilesDir = QDir{m_pMusicDirectoryTextField->text()}; + request.exportVersion = exportVersion; request.exportSelectedCrates = m_pCratesList->isEnabled(); if (request.exportSelectedCrates) { for (auto* pItem : m_pCratesList->selectedItems()) { diff --git a/src/library/export/dlglibraryexport.h b/src/library/export/dlglibraryexport.h index 364acb2b94..bd3d17423c 100644 --- a/src/library/export/dlglibraryexport.h +++ b/src/library/export/dlglibraryexport.h @@ -1,5 +1,6 @@ #pragma once +#include <QComboBox> #include <QDialog> #include <QLineEdit> #include <QListWidget> @@ -57,6 +58,7 @@ class DlgLibraryExport : public QDialog { parented_ptr<QRadioButton> m_pCratesRadio; parented_ptr<QListWidget> m_pCratesList; parented_ptr<QLineEdit> m_pBaseDirectoryTextField; + parented_ptr<QComboBox> m_pVersionCombo; parented_ptr<QLineEdit> m_pDatabaseDirectoryTextField; parented_ptr<QLineEdit> m_pMusicDirectoryTextField; }; diff --git a/src/library/export/engineprimeexportjob.cpp b/src/library/export/engineprimeexportjob.cpp index 83df500f28..353b1d113d 100644 --- a/src/library/export/engineprimeexportjob.cpp +++ b/src/library/export/engineprimeexportjob.cpp @@ -8,12 +8,12 @@ #include <cstdint> #include <djinterop/djinterop.hpp> #include <memory> -#include <optional> #include <stdexcept> #include "library/trackcollection.h" #include "library/trackset/crate/crate.h" #include "track/track.h" +#include "util/optional.h" #include "waveform/waveformfactory.h" namespace el = djinterop::enginelibrary; @@ -452,7 +452,7 @@ void EnginePrimeExportJob::run() { bool created; djinterop::database db = el::create_or_load_database( m_request.engineLibraryDbDir.path().toStdString(), - el::version_latest, + m_request.exportVersion, created); ++currProgress; emit jobProgress(currProgress); diff --git a/src/library/export/engineprimeexportrequest.h b/src/library/export/engineprimeexportrequest.h index d4000e65f7..3a60155277 100644 --- a/src/library/export/engineprimeexportrequest.h +++ b/src/library/export/engineprimeexportrequest.h @@ -1,6 +1,7 @@ #pragma once #include <QDir> +#include <djinterop/djinterop.hpp> #include "library/export/exportrequest.h" @@ -13,6 +14,9 @@ struct EnginePrimeExportRequest : public ExportRequest { /// Directory in which to write the exported music files. QDir musicFilesDir; + + /// Version of Engine Prime database to use when exporting. + djinterop::semantic_version exportVersion; }; } // namespace mixxx |