diff --git a/runners/bookmarks/browsers/firefox.h b/runners/bookmarks/browsers/firefox.h --- a/runners/bookmarks/browsers/firefox.h +++ b/runners/bookmarks/browsers/firefox.h @@ -33,6 +33,7 @@ explicit Firefox(QObject *parent = nullptr); ~Firefox() override; QList match(const QString& term, bool addEverything) override; + bool updateCacheFile(const QString &source, const QString &cache); public Q_SLOTS: void teardown() override; void prepare() override; diff --git a/runners/bookmarks/browsers/firefox.cpp b/runners/bookmarks/browsers/firefox.cpp --- a/runners/bookmarks/browsers/firefox.cpp +++ b/runners/bookmarks/browsers/firefox.cpp @@ -37,35 +37,40 @@ m_fetchsqlite_fav(nullptr) { reloadConfiguration(); + m_dbCacheFile = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + + QStringLiteral("/bookmarkrunnerfirefoxdbfile.sqlite"); + m_dbCacheFile_fav = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + + QStringLiteral("/bookmarkrunnerfirefoxfavdbfile.sqlite"); } Firefox::~Firefox() { - if (!m_dbCacheFile.isEmpty()) { + // Delete the cached databases + if (!m_dbFile.isEmpty()) { QFile db_CacheFile(m_dbCacheFile); if (db_CacheFile.exists()) { - //qDebug() << "Cache file was removed: " << db_CacheFile.remove(); + db_CacheFile.remove(); + } + } + if (!m_dbFile_fav.isEmpty()) { + QFile db_CacheFileFav(m_dbCacheFile_fav); + if (db_CacheFileFav.exists()) { + db_CacheFileFav.remove(); } } - //qDebug() << "Deleted Firefox Bookmarks Browser"; } void Firefox::prepare() { - if (m_dbCacheFile.isEmpty()) { - m_dbCacheFile = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) - + QStringLiteral("/bookmarkrunnerfirefoxdbfile.sqlite"); - } - if (m_dbCacheFile_fav.isEmpty()) { - m_dbCacheFile_fav = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) - + QStringLiteral("/bookmarkrunnerfirefoxfavdbfile.sqlite"); - } if (!m_dbFile.isEmpty()) { - m_fetchsqlite = new FetchSqlite(m_dbFile, m_dbCacheFile); - m_fetchsqlite->prepare(); + if (updateCacheFile(m_dbFile, m_dbCacheFile)) { + m_fetchsqlite = new FetchSqlite(m_dbCacheFile); + m_fetchsqlite->prepare(); + } } if (!m_dbFile_fav.isEmpty()) { - m_fetchsqlite_fav = new FetchSqlite(m_dbFile_fav, m_dbCacheFile_fav); + updateCacheFile(m_dbFile_fav, m_dbCacheFile_fav); + m_fetchsqlite_fav = new FetchSqlite(m_dbCacheFile_fav); m_fetchsqlite_fav->prepare(); delete m_favicon; @@ -208,3 +213,18 @@ } } } + +bool Firefox::updateCacheFile(const QString &source, const QString &cache) +{ + if (!QFile::exists(cache)) { + return QFile(source).copy(cache); + } + + QFileInfo sourceInfo(source); + QFileInfo cacheInfo(cache); + if (sourceInfo.lastModified() > cacheInfo.lastModified()) { + QFile::remove(cache); + return QFile(source).copy(cache); + } + return true; +} diff --git a/runners/bookmarks/faviconfromblob.cpp b/runners/bookmarks/faviconfromblob.cpp --- a/runners/bookmarks/faviconfromblob.cpp +++ b/runners/bookmarks/faviconfromblob.cpp @@ -40,7 +40,11 @@ QString profileName = QFileInfo(profileDirectory).fileName(); QString faviconCache = QStringLiteral("%1/KRunner-Chrome-Favicons-%2.sqlite") .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation), profileName); - FetchSqlite *fetchSqlite = new FetchSqlite(profileDirectory + QStringLiteral("/Favicons"), faviconCache, parent); + const QString originalPath = profileDirectory + QStringLiteral("/Favicons"); + QFile originalFile(originalPath); + QFile(faviconCache).remove(); + originalFile.copy(faviconCache); + FetchSqlite *fetchSqlite = new FetchSqlite(faviconCache, parent); QString faviconQuery; if(fetchSqlite->tables().contains(QLatin1String("favicon_bitmaps"))) { diff --git a/runners/bookmarks/fetchsqlite.h b/runners/bookmarks/fetchsqlite.h --- a/runners/bookmarks/fetchsqlite.h +++ b/runners/bookmarks/fetchsqlite.h @@ -35,7 +35,7 @@ { Q_OBJECT public: - explicit FetchSqlite(const QString &originalFile, const QString ©To, QObject *parent = nullptr); + explicit FetchSqlite(const QString &databaseFile, QObject *parent = nullptr); ~FetchSqlite() override; void prepare(); void teardown(); diff --git a/runners/bookmarks/fetchsqlite.cpp b/runners/bookmarks/fetchsqlite.cpp --- a/runners/bookmarks/fetchsqlite.cpp +++ b/runners/bookmarks/fetchsqlite.cpp @@ -30,21 +30,13 @@ #include #include -FetchSqlite::FetchSqlite(const QString &originalFilePath, const QString ©To, QObject *parent) : - QObject(parent), m_databaseFile(copyTo) +FetchSqlite::FetchSqlite(const QString &databaseFile, QObject *parent) : + QObject(parent), m_databaseFile(databaseFile) { - QFile originalFile(originalFilePath); - QFile(copyTo).remove(); - bool couldCopy = originalFile.copy(copyTo); - if(!couldCopy) { - //qDebug() << "error copying favicon database from " << originalFile.fileName() << " to " << copyTo; - //qDebug() << originalFile.errorString(); - } } FetchSqlite::~FetchSqlite() { - QFile(m_databaseFile).remove(); } void FetchSqlite::prepare()