File indexing completed on 2024-05-05 17:45:00

0001 /*
0002     SPDX-FileCopyrightText: 2007 Glenn Ergeerts <glenn.ergeerts@telenet.be>
0003     SPDX-FileCopyrightText: 2012 Marco Gulino <marco.gulino@xpeppers.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include <QIcon>
0011 #include <QObject>
0012 
0013 class Favicon : public QObject
0014 {
0015     Q_OBJECT
0016 public:
0017     explicit Favicon(QObject *parent = nullptr);
0018     virtual QIcon iconFor(const QString &url) = 0;
0019 
0020 protected:
0021     inline QIcon defaultIcon() const
0022     {
0023         return m_default_icon;
0024     }
0025 
0026 private:
0027     QIcon const m_default_icon;
0028 
0029 public Q_SLOTS:
0030     virtual void prepare()
0031     {
0032     }
0033     virtual void teardown()
0034     {
0035     }
0036 };
0037 
0038 class FallbackFavicon : public Favicon
0039 {
0040     Q_OBJECT
0041 public:
0042     FallbackFavicon(QObject *parent = nullptr)
0043         : Favicon(parent)
0044     {
0045     }
0046     QIcon iconFor(const QString &) override
0047     {
0048         return defaultIcon();
0049     }
0050 };