File indexing completed on 2024-05-12 05:13:15

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 "calendarsupport_export.h"
0010 
0011 #include <KMime/KMimeMessage>
0012 
0013 #include <Akonadi/Collection>
0014 #include <Akonadi/Item>
0015 
0016 #include <QDialog>
0017 
0018 class QAbstractItemModel;
0019 class QLineEdit;
0020 
0021 namespace TextCustomEditor
0022 {
0023 class RichTextEditorWidget;
0024 }
0025 
0026 namespace Akonadi
0027 {
0028 class CollectionComboBox;
0029 }
0030 
0031 namespace CalendarSupport
0032 {
0033 class CALENDARSUPPORT_EXPORT NoteEditDialog : public QDialog
0034 {
0035     Q_OBJECT
0036 public:
0037     explicit NoteEditDialog(QWidget *parent = nullptr);
0038     ~NoteEditDialog() override;
0039 
0040     [[nodiscard]] Akonadi::Collection collection() const;
0041     void setCollection(const Akonadi::Collection &value);
0042 
0043     void load(const Akonadi::Item &item);
0044     [[nodiscard]] KMime::Message::Ptr note() const;
0045 
0046     // Used for tests
0047     static QAbstractItemModel *_k_noteEditStubModel;
0048 
0049 public Q_SLOTS:
0050     void accept() override;
0051 
0052 private Q_SLOTS:
0053     CALENDARSUPPORT_NO_EXPORT void slotCollectionChanged(int);
0054     CALENDARSUPPORT_NO_EXPORT void slotUpdateButtons();
0055 
0056 Q_SIGNALS:
0057     void createNote(const Akonadi::Item &note, const Akonadi::Collection &collection);
0058     void collectionChanged(const Akonadi::Collection &col);
0059 
0060 private:
0061     CALENDARSUPPORT_NO_EXPORT void readConfig();
0062     CALENDARSUPPORT_NO_EXPORT void writeConfig();
0063     Akonadi::Collection mCollection;
0064     Akonadi::Item mItem;
0065     QLineEdit *const mNoteTitle;
0066     QPushButton *mOkButton = nullptr;
0067     TextCustomEditor::RichTextEditorWidget *mNoteText = nullptr;
0068     Akonadi::CollectionComboBox *mCollectionCombobox = nullptr;
0069 };
0070 }