Messagelib

attachmentmodel.h
1 /*
2  * This file is part of KMail.
3  * SPDX-FileCopyrightText: 2009 Constantin Berzan <[email protected]>
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  */
7 
8 #pragma once
9 
10 #include "messagecomposer_export.h"
11 
12 #include <QAbstractItemModel>
13 
14 #include <QUrl>
15 
16 #include <Akonadi/Item>
17 #include <MessageCore/AttachmentPart>
18 
19 namespace MessageComposer
20 {
21 /**
22  * @brief The AttachmentModel class
23  */
24 class MESSAGECOMPOSER_EXPORT AttachmentModel : public QAbstractItemModel
25 {
26  Q_OBJECT
27 
28 public:
29  enum {
30  AttachmentPartRole = Qt::UserRole,
31  NameRole,
32  SizeRole,
33  EncodingRole,
34  MimeTypeRole,
35  CompressRole,
36  EncryptRole,
37  SignRole,
38  AutoDisplayRole,
39  };
40 
41  /**
42  * @todo: get rid of columns and use the roles instead.
43  */
44  enum Column {
45  NameColumn,
46  SizeColumn,
47  EncodingColumn,
48  MimeTypeColumn,
49  CompressColumn,
50  EncryptColumn,
51  SignColumn,
52  AutoDisplayColumn,
53  LastColumn, ///< @internal
54  };
55 
56  explicit AttachmentModel(QObject *parent);
57  ~AttachmentModel() override;
58 
59  bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
60  Q_REQUIRED_RESULT QMimeData *mimeData(const QModelIndexList &indexes) const override;
61  Q_REQUIRED_RESULT QStringList mimeTypes() const override;
62  Q_REQUIRED_RESULT Qt::DropActions supportedDropActions() const override;
63 
64  /// for the save/discard warning
65  Q_REQUIRED_RESULT bool isModified() const;
66  void setModified(bool modified);
67 
68  Q_REQUIRED_RESULT bool isEncryptEnabled() const;
69  void setEncryptEnabled(bool enabled);
70  Q_REQUIRED_RESULT bool isSignEnabled() const;
71  void setSignEnabled(bool enabled);
72  Q_REQUIRED_RESULT bool isEncryptSelected() const;
73  /// sets for all
74  void setEncryptSelected(bool selected);
75  Q_REQUIRED_RESULT bool isSignSelected() const;
76  /// sets for all
77  void setSignSelected(bool selected);
78 
79  Q_REQUIRED_RESULT bool isAutoDisplayEnabled() const;
80  void setAutoDisplayEnabled(bool enabled);
81 
82  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
83  Q_REQUIRED_RESULT bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
84 
85  void addAttachment(const MessageCore::AttachmentPart::Ptr &part);
86  bool updateAttachment(const MessageCore::AttachmentPart::Ptr &part);
87  Q_REQUIRED_RESULT bool replaceAttachment(const MessageCore::AttachmentPart::Ptr &oldPart, const MessageCore::AttachmentPart::Ptr &newPart);
88  Q_REQUIRED_RESULT bool removeAttachment(const MessageCore::AttachmentPart::Ptr &part);
89  Q_REQUIRED_RESULT MessageCore::AttachmentPart::List attachments() const;
90 
91  Q_REQUIRED_RESULT Qt::ItemFlags flags(const QModelIndex &index) const override;
92  Q_REQUIRED_RESULT QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
93  Q_REQUIRED_RESULT QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
94  Q_REQUIRED_RESULT QModelIndex parent(const QModelIndex &index) const override;
95  Q_REQUIRED_RESULT int rowCount(const QModelIndex &parent = QModelIndex()) const override;
96  Q_REQUIRED_RESULT int columnCount(const QModelIndex &parent = QModelIndex()) const override;
97 
98 Q_SIGNALS:
99  void encryptEnabled(bool enabled);
100  void signEnabled(bool enabled);
101  void autoDisplayEnabled(bool enabled);
102  void attachUrlsRequested(const QList<QUrl> &urls);
103  void attachItemsRequester(const Akonadi::Item::List &);
104  void attachmentRemoved(MessageCore::AttachmentPart::Ptr part);
105  void attachmentCompressRequested(MessageCore::AttachmentPart::Ptr part, bool compress);
106 
107 private:
108  class AttachmentModelPrivate;
109  friend class AttachmentModelPrivate;
110  std::unique_ptr<AttachmentModelPrivate> const d;
111 };
112 } //
Simple interface that both EncryptJob and SignEncryptJob implement so the composer can extract some e...
UserRole
typedef ItemFlags
Orientation
DropAction
The AttachmentModel class.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Mar 22 2023 04:07:14 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.