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

0001 /*
0002   SPDX-FileCopyrightText: 2003 Cornelius Schumacher <schumacher@kde.org>
0003   SPDX-FileCopyrightText: 2005 Reinhold Kainhofer <reinhold@kainhofer.com>
0004   SPDX-FileCopyrightText: 2005 Rafal Rzepecki <divide@users.sourceforge.net>
0005   SPDX-FileCopyrightText: 2010 Bertjan Broeksema <broeksema@kde.org>
0006   SPDX-FileCopyrightText: 2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
0007 
0008   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0009 
0010   NOTE: May, 2010. Extracted this code from
0011         kdepim/incidenceeditors/editorattachments.{h,cpp}
0012 */
0013 
0014 #pragma once
0015 
0016 #include <KCalendarCore/Attachment>
0017 
0018 #include <QMimeType>
0019 #include <QUrl>
0020 
0021 #include <QListWidget>
0022 
0023 namespace IncidenceEditorNG
0024 {
0025 class AttachmentIconView : public QListWidget
0026 {
0027     Q_OBJECT
0028     friend class EditorAttachments;
0029 
0030 public:
0031     explicit AttachmentIconView(QWidget *parent = nullptr);
0032 
0033     [[nodiscard]] QMimeData *mimeData() const;
0034 
0035 protected:
0036     QMimeData *mimeData(const QList<QListWidgetItem *> &items) const override;
0037     void startDrag(Qt::DropActions supportedActions) override;
0038     void keyPressEvent(QKeyEvent *event) override;
0039 };
0040 
0041 class AttachmentIconItem : public QListWidgetItem
0042 {
0043 public:
0044     AttachmentIconItem(const KCalendarCore::Attachment &att, QListWidget *parent);
0045     ~AttachmentIconItem() override;
0046 
0047     [[nodiscard]] KCalendarCore::Attachment attachment() const;
0048     [[nodiscard]] const QString uri() const;
0049     [[nodiscard]] const QString savedUri() const;
0050     void setUri(const QString &uri);
0051 
0052     using QListWidgetItem::setData;
0053 
0054     void setData(const QByteArray &data);
0055 
0056     [[nodiscard]] const QString mimeType() const;
0057     void setMimeType(const QString &mime);
0058 
0059     [[nodiscard]] const QString label() const;
0060     void setLabel(const QString &description);
0061 
0062     [[nodiscard]] bool isBinary() const;
0063 
0064     static QPixmap icon(const QMimeType &mimeType, const QString &uri, bool binary = false);
0065     [[nodiscard]] QPixmap icon() const;
0066 
0067     void readAttachment();
0068 
0069     [[nodiscard]] QUrl tempFileForAttachment();
0070 
0071 private:
0072     KCalendarCore::Attachment mAttachment;
0073     QString mSaveUri;
0074     QUrl mTempFile;
0075 };
0076 }