Skip to content
Snippets Groups Projects
TrayIcon.h 1.18 KiB
Newer Older
  • Learn to ignore specific revisions
  • Nicolas Werner's avatar
    Nicolas Werner committed
    // SPDX-FileCopyrightText: 2017 Konstantinos Sideris <siderisk@auth.gr>
    // SPDX-FileCopyrightText: 2021 Nheko Contributors
    
    // SPDX-FileCopyrightText: 2022 Nheko Contributors
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    //
    // SPDX-License-Identifier: GPL-3.0-or-later
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    #pragma once
    
    #include <QIcon>
    #include <QIconEngine>
    #include <QRect>
    #include <QSystemTrayIcon>
    
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    class QAction;
    class QPainter;
    
    
    class MsgCountComposedIcon final : public QIconEngine
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    {
    public:
    
        MsgCountComposedIcon(const QString &filename);
    
        void paint(QPainter *p, const QRect &rect, QIcon::Mode mode, QIcon::State state) override;
        QIconEngine *clone() const override;
    
    Nicolas Werner's avatar
    Nicolas Werner committed
        QList<QSize> availableSizes(QIcon::Mode mode, QIcon::State state)
    #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
          const
    #endif
          override;
    
        QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
    
        int msgCount = 0;
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    private:
    
        const int BubbleDiameter = 17;
    
        QIcon icon_;
    
    class TrayIcon final : public QSystemTrayIcon
    
        Q_OBJECT
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    public:
    
    Nicolas Werner's avatar
    Nicolas Werner committed
        TrayIcon(const QString &filename, QWindow *parent);
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    public slots:
    
        void setUnreadCount(int count);
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    
    private:
    
        QAction *viewAction_;
        QAction *quitAction_;
    
        MsgCountComposedIcon *icon_;
    
    Konstantinos Sideris's avatar
    Konstantinos Sideris committed
    };