File indexing completed on 2024-06-23 05:14:18

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     systemtrayicon.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2007, 2009 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <QSystemTrayIcon>
0013 
0014 #ifndef QT_NO_SYSTEMTRAYICON
0015 
0016 #include <utils/pimpl_ptr.h>
0017 
0018 namespace Kleo
0019 {
0020 
0021 class SystemTrayIcon : public QSystemTrayIcon
0022 {
0023     Q_OBJECT
0024 public:
0025     explicit SystemTrayIcon(QObject *parent = nullptr);
0026     explicit SystemTrayIcon(const QIcon &icon, QObject *parent = nullptr);
0027     ~SystemTrayIcon() override;
0028 
0029     void setMainWindow(QWidget *w);
0030     QWidget *mainWindow() const;
0031 
0032     void setAttentionWindow(QWidget *w);
0033     QWidget *attentionWindow() const;
0034 
0035     QIcon attentionIcon() const;
0036     QIcon normalIcon() const;
0037     bool attentionWanted() const;
0038 
0039 public Q_SLOTS:
0040     void setAttentionIcon(const QIcon &icon);
0041     void setNormalIcon(const QIcon &icon);
0042     void setAttentionWanted(bool);
0043 
0044 protected Q_SLOTS:
0045     virtual void slotEnableDisableActions() = 0;
0046 
0047 private:
0048     virtual void doMainWindowSet(QWidget *);
0049     virtual void doMainWindowClosed(QWidget *);
0050     virtual void doAttentionWindowClosed(QWidget *);
0051     virtual void doActivated() = 0;
0052 
0053 private:
0054     bool eventFilter(QObject *, QEvent *) override;
0055 
0056 private:
0057     class Private;
0058     kdtools::pimpl_ptr<Private> d;
0059 };
0060 
0061 } // namespace Kleo
0062 
0063 #endif // QT_NO_SYSTEMTRAYICON