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