diff options
Diffstat (limited to 'src/library/traktor/traktorfeature.cpp')
-rw-r--r-- | src/library/traktor/traktorfeature.cpp | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/library/traktor/traktorfeature.cpp b/src/library/traktor/traktorfeature.cpp index 10f367f7cb..35f77ab003 100644 --- a/src/library/traktor/traktorfeature.cpp +++ b/src/library/traktor/traktorfeature.cpp @@ -8,7 +8,6 @@ #include <QStandardPaths> #include <QXmlStreamReader> #include <QtDebug> -#include <tuple> #include "library/library.h" #include "library/librarytablemodel.h" @@ -19,6 +18,7 @@ #include "library/treeitem.h" #include "moc_traktorfeature.cpp" #include "util/sandbox.h" +#include "util/semanticversion.h" namespace { @@ -27,16 +27,6 @@ QString fromTraktorSeparators(QString path) { return path.replace("/:", "/"); } -struct SemanticVersion { - uint major{0}, - minor{0}, - patch{0}; -}; - -bool operator<(const SemanticVersion& a, const SemanticVersion& b) { - return std::tie(a.major, a.minor, a.patch) < std::tie(b.major, b.minor, b.patch); -} - } // anonymous namespace @@ -584,7 +574,7 @@ QString TraktorFeature::getTraktorMusicDatabase() { //Iterate over the subfolders QFileInfoList list = ni_directory.entryInfoList(); - QMap<SemanticVersion, QString> installed_ts_map; + QMap<mixxx::SemanticVersion, QString> installed_ts_map; for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); @@ -592,19 +582,14 @@ QString TraktorFeature::getTraktorMusicDatabase() { if (folder_name == "Traktor") { //We found a Traktor 1 installation - installed_ts_map.insert({1, 0, 0}, fileInfo.absoluteFilePath()); + installed_ts_map.insert(mixxx::SemanticVersion(1, 0, 0), fileInfo.absoluteFilePath()); continue; } if (folder_name.contains("Traktor")) { qDebug() << "Found " << folder_name; - QRegularExpression re("(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)"); - QRegularExpressionMatch match = re.match(folder_name); - if (match.hasMatch()) { - const auto version = SemanticVersion{ - match.captured("major").toUInt(), - match.captured("minor").toUInt(), - match.captured("patch").toUInt()}; - installed_ts_map.insert(version, fileInfo.absoluteFilePath()); + auto semver = mixxx::SemanticVersion(folder_name); + if (semver.isValid()) { + installed_ts_map.insert(semver, fileInfo.absoluteFilePath()); } } } @@ -612,7 +597,7 @@ QString TraktorFeature::getTraktorMusicDatabase() { if (installed_ts_map.isEmpty()) { musicFolder = QDir::homePath() + "/collection.nml"; } else { //Select the folder with the highest version as default Traktor folder - QList<SemanticVersion> versions = installed_ts_map.keys(); + QList<mixxx::SemanticVersion> versions = installed_ts_map.keys(); std::sort(versions.begin(), versions.end()); musicFolder = installed_ts_map.value(versions.last()) + "/collection.nml"; } |