From 0d44e6de8bcffc768700f9815304351bdc923c92 Mon Sep 17 00:00:00 2001 From: APTX Date: Tue, 19 Jun 2012 19:48:04 +0200 Subject: [PATCH] When skipping known files, also skip files in unknown_files. --- localmylist/database.cpp | 23 +++++++++++++++++++++++ localmylist/database.h | 1 + localmylist/directoryscantask.cpp | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/localmylist/database.cpp b/localmylist/database.cpp index 3f7047d..277af1d 100644 --- a/localmylist/database.cpp +++ b/localmylist/database.cpp @@ -142,6 +142,7 @@ struct DatabaseInternal QSqlQuery addUnknownFileQuery; QSqlQuery getUnknownFileQuery; + QSqlQuery getUnknownFileByPathQuery; QSqlQuery removeUnknownFileQuery; QSqlQuery addPendingRequestQuery; @@ -684,6 +685,27 @@ UnknownFile Database::getUnknownFile(const QByteArray &ed2k, qint64 size) return f; } +UnknownFile Database::getUnknownFilebyPath(const QString &path) +{ + d->getUnknownFileByPathQuery.bindValue(":path", path); + + if (!exec(d->getUnknownFileByPathQuery)) + return UnknownFile(); + + UnknownFile f; + + if (d->getUnknownFileByPathQuery.next()) + { + f.ed2k = d->getUnknownFileByPathQuery.value(0).toByteArray(); + f.size = d->getUnknownFileByPathQuery.value(1).toLongLong(); + f.hostId = d->getUnknownFileByPathQuery.value(2).toInt(); + f.path = d->getUnknownFileByPathQuery.value(3).toString(); + } + d->getUnknownFileByPathQuery.finish(); + + return f; +} + bool Database::removeUnknownFile(const QByteArray &ed2k, qint64 size) { d->removeUnknownFileQuery.bindValue(":ed2k", ed2k); @@ -1078,6 +1100,7 @@ void Database::prepareQueries() d->getUnknownFileQuery = QSqlQuery(d->db); d->getUnknownFileQuery.prepare("SELECT ed2k, size, host_id, path FROM unknown_file WHERE ed2k = :ed2k AND size = :size"); + d->getUnknownFileByPathQuery.prepare("SELECT ed2k, size, host_id, path FROM unknown_file WHERE path = :path"); d->removeUnknownFileQuery = QSqlQuery(d->db); d->removeUnknownFileQuery.prepare("DELETE FROM unknown_file WHERE ed2k = :ed2k AND size = :size"); diff --git a/localmylist/database.h b/localmylist/database.h index 780e4dd..c791b8f 100644 --- a/localmylist/database.h +++ b/localmylist/database.h @@ -246,6 +246,7 @@ public: bool addUnknownFile(const UnknownFile &file); UnknownFile getUnknownFile(const QByteArray &ed2k, qint64 size); + UnknownFile getUnknownFilebyPath(const QString &path); bool removeUnknownFile(const QByteArray &ed2k, qint64 size); bool addRequest(const PendingRequest &request); diff --git a/localmylist/directoryscantask.cpp b/localmylist/directoryscantask.cpp index d402013..d2fa177 100644 --- a/localmylist/directoryscantask.cpp +++ b/localmylist/directoryscantask.cpp @@ -90,6 +90,10 @@ void DirectoryScanTask::workUnit() File f = db->getFileByPath(entry.canonicalFilePath()); if (f.fid) continue; + + UnknownFile uf = db->getUnknownFilebyPath(entry.canonicalFilePath()); + if (!uf.ed2k.isEmpty() && uf.size) + continue; } QMetaObject::invokeMethod(MyList::instance(), "addFile", Qt::QueuedConnection, Q_ARG(QFileInfo, entry)); -- 2.52.0