File indexing completed on 2024-04-28 05:11:32

0001 /*
0002   SPDX-FileCopyrightText: 2010 Bertjan Broeksema <broeksema@kde.org>
0003   SPDX-FileCopyrightText: 2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
0004 
0005   SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "incidenceeditor-ng.h"
0011 
0012 namespace Ui
0013 {
0014 class EventOrTodoDesktop;
0015 }
0016 
0017 namespace IncidenceEditorNG
0018 {
0019 class IncidenceDateTime;
0020 
0021 class IncidenceAlarm : public IncidenceEditor
0022 {
0023     Q_OBJECT
0024 public:
0025     using IncidenceEditorNG::IncidenceEditor::load; // So we don't trigger -Woverloaded-virtual
0026     using IncidenceEditorNG::IncidenceEditor::save; // So we don't trigger -Woverloaded-virtual
0027     IncidenceAlarm(IncidenceDateTime *dateTime, Ui::EventOrTodoDesktop *ui);
0028 
0029     void load(const KCalendarCore::Incidence::Ptr &incidence) override;
0030     void save(const KCalendarCore::Incidence::Ptr &incidence) override;
0031     [[nodiscard]] bool isDirty() const override;
0032 
0033 Q_SIGNALS:
0034     void alarmCountChanged(int newCount);
0035 
0036 private:
0037     void editCurrentAlarm();
0038     void handleDateTimeToggle();
0039     void newAlarm();
0040     void newAlarmFromPreset();
0041     void removeCurrentAlarm();
0042     void toggleCurrentAlarm();
0043     void updateAlarmList();
0044     void updateButtons();
0045     QString stringForAlarm(const KCalendarCore::Alarm::Ptr &alarm);
0046 
0047 private:
0048     Ui::EventOrTodoDesktop *const mUi;
0049 
0050     KCalendarCore::Alarm::List mAlarms;
0051     IncidenceDateTime *const mDateTime;
0052     int mEnabledAlarmCount = 0;
0053     bool mIsTodo = false;
0054 };
0055 }