File indexing completed on 2024-05-12 05:14:59
0001 /* 0002 * traywindow.h - the KDE system tray applet 0003 * Program: kalarm 0004 * SPDX-FileCopyrightText: 2002-2022 David Jarvie <djarvie@kde.org> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #pragma once 0010 0011 #include "editdlg.h" 0012 #include "kalarmcalendar/kaevent.h" 0013 0014 #include <KStatusNotifierItem> 0015 0016 class QTimer; 0017 class KToggleAction; 0018 class MainWindow; 0019 class NewAlarmAction; 0020 class AlarmListModel; 0021 0022 using namespace KAlarmCal; 0023 0024 class TrayWindow : public KStatusNotifierItem 0025 { 0026 Q_OBJECT 0027 public: 0028 explicit TrayWindow(MainWindow* parent); 0029 ~TrayWindow() override; 0030 void removeWindow(MainWindow*); 0031 MainWindow* assocMainWindow() const { return mAssocMainWindow; } 0032 void setAssocMainWindow(MainWindow* win) { mAssocMainWindow = win; } 0033 void showAssocMainWindow(); 0034 0035 Q_SIGNALS: 0036 void deleted(); 0037 0038 private Q_SLOTS: 0039 void slotActivateRequested(); 0040 void slotSecondaryActivateRequested(); 0041 void slotNewAlarm(EditAlarmDlg::Type); 0042 void slotNewFromTemplate(const KAEvent&); 0043 void slotPreferences(); 0044 void setEnabledStatus(bool status); 0045 void slotHaveDisabledAlarms(bool disabled); 0046 void slotQuit(); 0047 void slotQuitAfter(); 0048 void updateStatus(); 0049 void updateToolTip(); 0050 0051 private: 0052 QString tooltipAlarmText() const; 0053 void updateIcon(); 0054 0055 MainWindow* mAssocMainWindow; // main window associated with this, or null 0056 KToggleAction* mActionEnabled; 0057 NewAlarmAction* mActionNew; 0058 mutable AlarmListModel* mAlarmsModel {nullptr}; // active alarms sorted in time order 0059 QTimer* mStatusUpdateTimer; 0060 QTimer* mToolTipUpdateTimer; 0061 bool mHaveDisabledAlarms {false}; // some individually disabled alarms exist 0062 }; 0063 0064 // vim: et sw=4: