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: