Changeset View
Changeset View
Standalone View
Standalone View
runners/bookmarks/faviconfromblob.cpp
Show First 20 Lines • Show All 73 Lines • ▼ Show 20 Line(s) | 73 | QString faviconCache = QStringLiteral("%1/KRunner-Chrome-Favicons-%2.sqlite") | |||
---|---|---|---|---|---|
74 | .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation), profileName); | 74 | .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation), profileName); | ||
75 | FetchSqlite *fetchSqlite = new FetchSqlite(profileDirectory + QStringLiteral("/Favicons"), faviconCache, parent); | 75 | FetchSqlite *fetchSqlite = new FetchSqlite(profileDirectory + QStringLiteral("/Favicons"), faviconCache, parent); | ||
76 | return new FaviconFromBlob(profileName, new ChromeQuery(), QStringLiteral("image_data"), fetchSqlite, parent); | 76 | return new FaviconFromBlob(profileName, new ChromeQuery(), QStringLiteral("image_data"), fetchSqlite, parent); | ||
77 | } | 77 | } | ||
78 | 78 | | |||
79 | FaviconFromBlob *FaviconFromBlob::firefox(FetchSqlite *fetchSqlite, QObject *parent) | 79 | FaviconFromBlob *FaviconFromBlob::firefox(FetchSqlite *fetchSqlite, QObject *parent) | ||
80 | { | 80 | { | ||
81 | 81 | | |||
82 | QString faviconQuery = QStringLiteral("SELECT moz_favicons.data FROM moz_favicons" \ | 82 | QString faviconQuery = QStringLiteral("SELECT moz_icons.data FROM moz_icons" \ | ||
83 | " inner join moz_places ON moz_places.favicon_id = moz_favicons.id" \ | 83 | " INNER JOIN moz_icons_to_pages ON moz_icons.id = moz_icons_to_pages.icon_id" \ | ||
84 | " WHERE moz_places.url = :url LIMIT 1;"); | 84 | " INNER JOIN moz_pages_w_icons ON moz_icons_to_pages.page_id = moz_pages_w_icons.id" \ | ||
85 | " WHERE moz_pages_w_icons.page_url = :url LIMIT 1;"); | ||||
85 | return new FaviconFromBlob(QStringLiteral("firefox-default"), new StaticQuery(faviconQuery), QStringLiteral("data"), fetchSqlite, parent); | 86 | return new FaviconFromBlob(QStringLiteral("firefox-default"), new StaticQuery(faviconQuery), QStringLiteral("data"), fetchSqlite, parent); | ||
86 | } | 87 | } | ||
87 | 88 | | |||
88 | 89 | | |||
89 | FaviconFromBlob::FaviconFromBlob(const QString &profileName, BuildQuery *buildQuery, const QString &blobColumn, FetchSqlite *fetchSqlite, QObject *parent) | 90 | FaviconFromBlob::FaviconFromBlob(const QString &profileName, BuildQuery *buildQuery, const QString &blobColumn, FetchSqlite *fetchSqlite, QObject *parent) | ||
90 | : Favicon(parent), m_buildQuery(buildQuery), m_blobcolumn(blobColumn), m_fetchsqlite(fetchSqlite) | 91 | : Favicon(parent), m_buildQuery(buildQuery), m_blobcolumn(blobColumn), m_fetchsqlite(fetchSqlite) | ||
91 | { | 92 | { | ||
92 | m_profileCacheDirectory = QStringLiteral("%1/KRunner-Favicons-%2") | 93 | m_profileCacheDirectory = QStringLiteral("%1/KRunner-Favicons-%2") | ||
Show All 32 Lines | |||||
125 | { | 126 | { | ||
126 | //qDebug() << "got url: " << url; | 127 | //qDebug() << "got url: " << url; | ||
127 | QString fileChecksum = QString::number(qChecksum(url.toLatin1(), url.toLatin1().size())); | 128 | QString fileChecksum = QString::number(qChecksum(url.toLatin1(), url.toLatin1().size())); | ||
128 | QFile iconFile( m_profileCacheDirectory + QDir::separator() + fileChecksum + QStringLiteral("_favicon") ); | 129 | QFile iconFile( m_profileCacheDirectory + QDir::separator() + fileChecksum + QStringLiteral("_favicon") ); | ||
129 | if(iconFile.size() == 0) | 130 | if(iconFile.size() == 0) | ||
130 | iconFile.remove(); | 131 | iconFile.remove(); | ||
131 | if(!iconFile.exists()) { | 132 | if(!iconFile.exists()) { | ||
132 | QMap<QString,QVariant> bindVariables; | 133 | QMap<QString,QVariant> bindVariables; | ||
133 | bindVariables.insert(QStringLiteral("url"), url); | 134 | bindVariables.insert(QStringLiteral(":url"), url); | ||
134 | QList<QVariantMap> faviconFound = m_fetchsqlite->query(m_buildQuery, bindVariables); | 135 | QList<QVariantMap> faviconFound = m_fetchsqlite->query(m_buildQuery, bindVariables); | ||
135 | if(faviconFound.isEmpty()) return defaultIcon(); | 136 | if(faviconFound.isEmpty()) return defaultIcon(); | ||
136 | 137 | | |||
137 | QByteArray iconData = faviconFound.first().value(m_blobcolumn).toByteArray(); | 138 | QByteArray iconData = faviconFound.first().value(m_blobcolumn).toByteArray(); | ||
138 | //qDebug() << "Favicon found: " << iconData.size() << " bytes"; | 139 | //qDebug() << "Favicon found: " << iconData.size() << " bytes"; | ||
139 | if(iconData.size() <=0) | 140 | if(iconData.size() <=0) | ||
140 | return defaultIcon(); | 141 | return defaultIcon(); | ||
141 | 142 | | |||
142 | iconFile.open(QFile::WriteOnly); | 143 | iconFile.open(QFile::WriteOnly); | ||
143 | iconFile.write(iconData); | 144 | iconFile.write(iconData); | ||
144 | iconFile.close(); | 145 | iconFile.close(); | ||
145 | } | 146 | } | ||
146 | return QIcon(iconFile.fileName()); | 147 | return QIcon(iconFile.fileName()); | ||
147 | } | 148 | } | ||
148 | 149 | |