1/*
2 This file is part of KIO.
3 SPDX-FileCopyrightText: 2016 David Faure <faure@kde.org>
4
5 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
6*/
7
8#ifndef FAVICONSCACHE_P_H
9#define FAVICONSCACHE_P_H
10
11#include <QObject>
12
13#include <memory>
14
15#include <kiocore_export.h>
16
17namespace KIO
18{
19class FavIconsCachePrivate;
20
21/**
22 * @internal
23 * Singleton handling the cache (memory + disk) for favicons.
24 * Exported for KIOGui's FavIconsManager
25 */
26class KIOCORE_EXPORT FavIconsCache : public QObject
27{
28 Q_OBJECT
29
30public:
31 static FavIconsCache *instance();
32
33 // Fast cache lookup, used by KIO::favIconForUrl
34 QString iconForUrl(const QUrl &url);
35
36 // Look for a custom icon URL in the cache, otherwise assemble default host icon URL
37 QUrl iconUrlForUrl(const QUrl &url);
38
39 // Remember association to a custom icon URL
40 void setIconForUrl(const QUrl &url, const QUrl &iconUrl);
41
42 QString cachePathForIconUrl(const QUrl &iconUrl) const;
43
44 void ensureCacheExists();
45
46 void addFailedDownload(const QUrl &url);
47 void removeFailedDownload(const QUrl &url);
48 bool isFailedDownload(const QUrl &url) const;
49
50Q_SIGNALS:
51
52private:
53 KIOCORE_NO_EXPORT FavIconsCache();
54 KIOCORE_NO_EXPORT ~FavIconsCache() override;
55 std::unique_ptr<FavIconsCachePrivate> const d;
56};
57
58}
59
60#endif // FAVICONSCACHE_H
61

source code of kio/src/core/faviconscache_p.h