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