summaryrefslogtreecommitdiffstats
path: root/src/library
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2019-11-02 11:31:19 +0100
committerUwe Klotz <uklotz@mixxx.org>2019-11-21 11:27:42 +0100
commitaa1dc6483aa53f35c4718df8478348cc9acdba1f (patch)
tree5289ced8120a62aa439e3830bec51a24bc92e90a /src/library
parentd643918e52b9ed5b36fd2f7917bc0e277786d568 (diff)
Hide tracks via TrackCollection
Diffstat (limited to 'src/library')
-rw-r--r--src/library/dao/trackdao.cpp6
-rw-r--r--src/library/library.cpp2
-rw-r--r--src/library/mixxxlibraryfeature.cpp2
-rw-r--r--src/library/trackcollection.cpp15
-rw-r--r--src/library/trackcollection.h17
5 files changed, 23 insertions, 19 deletions
diff --git a/src/library/dao/trackdao.cpp b/src/library/dao/trackdao.cpp
index b804a477cd..f634409a97 100644
--- a/src/library/dao/trackdao.cpp
+++ b/src/library/dao/trackdao.cpp
@@ -1745,11 +1745,11 @@ bool TrackDAO::detectMovedTracks(QList<QPair<TrackRef, TrackRef>>* pReplacedTrac
return true;
}
-void TrackDAO::markTracksAsMixxxDeleted(const QString& dir) {
+void TrackDAO::markTracksAsMixxxDeleted(const QDir& rootDir) {
// Capture entries that start with the directory prefix dir.
// dir needs to end in a slash otherwise we might match other
// directories.
- QString likeClause = SqlLikeWildcardEscaper::apply(dir + "/", kSqlLikeMatchAll) + kSqlLikeMatchAll;
+ QString likeClause = SqlLikeWildcardEscaper::apply(rootDir.absolutePath() + "/", kSqlLikeMatchAll) + kSqlLikeMatchAll;
QSqlQuery query(m_database);
query.prepare(QString("SELECT library.id FROM library INNER JOIN track_locations "
@@ -1758,7 +1758,7 @@ void TrackDAO::markTracksAsMixxxDeleted(const QString& dir) {
.arg(SqlStringFormatter::format(m_database, likeClause), kSqlLikeMatchAll));
if (!query.exec()) {
- LOG_FAILED_QUERY(query) << "could not get tracks within directory:" << dir;
+ LOG_FAILED_QUERY(query) << "could not get tracks within directory:" << rootDir;
}
QStringList trackIds;
diff --git a/src/library/library.cpp b/src/library/library.cpp
index 041e797b76..1300f37d9b 100644
--- a/src/library/library.cpp
+++ b/src/library/library.cpp
@@ -517,7 +517,7 @@ void Library::slotRequestRemoveDir(QString dir, RemovalType removalType) {
case Library::HideTracks:
// Mark all tracks in this directory as deleted but DON'T purge them
// in case the user re-adds them manually.
- m_pTrackCollection->getTrackDAO().markTracksAsMixxxDeleted(dir);
+ m_pTrackCollection->hideAllTracks(dir);
break;
case Library::PurgeTracks:
// The user requested that we purge all metadata.
diff --git a/src/library/mixxxlibraryfeature.cpp b/src/library/mixxxlibraryfeature.cpp
index 0d77aeb21a..ce9387d3d0 100644
--- a/src/library/mixxxlibraryfeature.cpp
+++ b/src/library/mixxxlibraryfeature.cpp
@@ -91,7 +91,7 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary,
BaseTrackCache* pBaseTrackCache = new BaseTrackCache(
pTrackCollection, tableName, LIBRARYTABLE_ID, columns, true);
- auto pTrackDAO = &pTrackCollection.getTrackDAO();
+ auto pTrackDAO = &pTrackCollection->getTrackDAO();
connect(pTrackDAO,
&TrackDAO::trackDirty,
pBaseTrackCache,
diff --git a/src/library/trackcollection.cpp b/src/library/trackcollection.cpp
index fdd6bfcf66..9c695af4b2 100644
--- a/src/library/trackcollection.cpp
+++ b/src/library/trackcollection.cpp
@@ -1,19 +1,20 @@
+#include <QApplication>
#include <QStringBuilder>
#include <QThread>
-#include <QApplication>
#include "library/trackcollection.h"
#include "sources/soundsourceproxy.h"
#include "track/globaltrackcache.h"
-#include "util/logger.h"
-#include "util/db/sqltransaction.h"
-
#include "util/assert.h"
+#include "util/db/sqltransaction.h"
#include "util/dnd.h"
+#include "util/logger.h"
namespace {
- mixxx::Logger kLogger("TrackCollection");
+
+mixxx::Logger kLogger("TrackCollection");
+
} // anonymous namespace
TrackCollection::TrackCollection(
@@ -218,6 +219,10 @@ bool TrackCollection::hideTracks(const QList<TrackId>& trackIds) {
return true;
}
+void TrackCollection::hideAllTracks(const QDir& rootDir) {
+ m_trackDao.markTracksAsMixxxDeleted(rootDir);
+}
+
bool TrackCollection::unhideTracks(const QList<TrackId>& trackIds) {
DEBUG_ASSERT(QApplication::instance()->thread() == QThread::currentThread());
diff --git a/src/library/trackcollection.h b/src/library/trackcollection.h
index b4b48c9317..ad84886521 100644
--- a/src/library/trackcollection.h
+++ b/src/library/trackcollection.h
@@ -1,12 +1,11 @@
-#ifndef TRACKCOLLECTION_H
-#define TRACKCOLLECTION_H
+#pragma once
+#include <QDir>
#include <QList>
#include <QSharedPointer>
#include <QSqlDatabase>
#include "preferences/usersettings.h"
-#include "library/basetrackcache.h"
#include "library/crate/cratestorage.h"
#include "library/dao/trackdao.h"
#include "library/dao/cuedao.h"
@@ -15,11 +14,9 @@
#include "library/dao/directorydao.h"
#include "library/dao/libraryhashdao.h"
+class BaseTrackCache;
-// forward declaration(s)
-class Track;
-
-// Manages everything around tracks.
+// Manages the internal database.
class TrackCollection : public QObject,
public virtual /*implements*/ SqlStorage {
Q_OBJECT
@@ -111,8 +108,12 @@ class TrackCollection : public QObject,
private:
friend class Library;
friend class Upgrade;
+
+ void hideAllTracks(const QDir& rootDir);
+
bool purgeTracks(const QList<TrackId>& trackIds);
bool purgeAllTracks(const QDir& rootDir);
+
bool addDirectory(const QString& dir);
void relocateDirectory(QString oldDir, QString newDir);
@@ -130,5 +131,3 @@ class TrackCollection : public QObject,
QSharedPointer<BaseTrackCache> m_pTrackSource;
};
-
-#endif // TRACKCOLLECTION_H