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

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Sandro Knauß <knauss@kolabsys.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0005  */
0006 
0007 #pragma once
0008 
0009 #include "attendeetablemodel.h"
0010 #include "incidenceattendee.h"
0011 #include "incidenceeditor-ng.h"
0012 
0013 namespace Ui
0014 {
0015 class EventOrTodoDesktop;
0016 }
0017 class QCompleter;
0018 namespace IncidenceEditorNG
0019 {
0020 class ResourceManagement;
0021 
0022 class IncidenceResource : public IncidenceEditor
0023 {
0024     Q_OBJECT
0025 public:
0026     using IncidenceEditorNG::IncidenceEditor::load; // So we don't trigger -Woverloaded-virtual
0027     using IncidenceEditorNG::IncidenceEditor::save; // So we don't trigger -Woverloaded-virtual
0028 
0029     explicit IncidenceResource(IncidenceAttendee *mIeAttendee, IncidenceDateTime *dateTime, Ui::EventOrTodoDesktop *ui);
0030     ~IncidenceResource() override;
0031 
0032     void load(const KCalendarCore::Incidence::Ptr &incidence) override;
0033     void save(const KCalendarCore::Incidence::Ptr &incidence) override;
0034     bool isDirty() const override;
0035 
0036     /** return the count of resources */
0037     [[nodiscard]] int resourceCount() const;
0038 
0039 Q_SIGNALS:
0040     /** is emitted it the count of the resources is changed.
0041      * @arg: new count of resources.
0042      */
0043     void resourceCountChanged(int);
0044 
0045 private:
0046     void findResources();
0047     void bookResource();
0048     void layoutChanged();
0049     void updateCount();
0050 
0051     void slotDateChanged();
0052 
0053     void dialogOkPressed();
0054     Ui::EventOrTodoDesktop *const mUi;
0055 
0056     /** completer for findResources */
0057     QCompleter *completer = nullptr;
0058 
0059     /** used dataModel to rely on*/
0060     AttendeeTableModel *dataModel = nullptr;
0061     IncidenceDateTime *mDateTime = nullptr;
0062 
0063     ResourceManagement *resourceDialog = nullptr;
0064 };
0065 }