1 /*
2   This file is part of KOrganizer.
3 
4   SPDX-FileCopyrightText: 2001, 2004 Cornelius Schumacher <schumacher@kde.org>
5   SPDX-FileCopyrightText: 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 
7   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
8 */
9 
10 #pragma once
11 
12 #include "koeventview.h"
13 
14 class CalendarView;
15 class FilterEditDialog;
16 class SearchDialog;
17 
18 namespace CalendarSupport
19 {
20 class ArchiveDialog;
21 }
22 
23 namespace IncidenceEditorNG
24 {
25 class IncidenceDialog;
26 }
27 
28 namespace KCalendarCore
29 {
30 class CalFilter;
31 }
32 namespace Akonadi
33 {
34 class TagManagementDialog;
35 }
36 
37 class KCMultiDialog;
38 
39 /**
40   This class manages the dialogs used by the calendar view. It owns the objects
41   and handles creation and selection.
42 */
43 class KODialogManager : public QObject
44 {
45     Q_OBJECT
46 public:
47     explicit KODialogManager(CalendarView *);
48     ~KODialogManager() override;
49 
50     IncidenceEditorNG::IncidenceDialog *createDialog(const Akonadi::Item &item);
51 
52     void updateSearchDialog();
53 
54     void connectTypeAhead(IncidenceEditorNG::IncidenceDialog *editor, KOEventView *view);
55 
56 public Q_SLOTS:
57     void showOptionsDialog();
58     void showCategoryEditDialog();
59     void showSearchDialog();
60     void showArchiveDialog();
61     void showFilterEditDialog(QList<KCalendarCore::CalFilter *> *filters);
62 
63 private Q_SLOTS:
64     void slotHelp();
65 
66 private:
67     void createCategoryEditor();
68     class DialogManagerVisitor;
69     class EditorDialogVisitor;
70 
71     CalendarView *const mMainView;
72     KCMultiDialog *mOptionsDialog = nullptr;
73     QPointer<Akonadi::TagManagementDialog> mCategoryEditDialog;
74     SearchDialog *mSearchDialog = nullptr;
75     CalendarSupport::ArchiveDialog *mArchiveDialog = nullptr;
76     FilterEditDialog *mFilterEditDialog = nullptr;
77 };
78 
79