Pimcommon

purposemenuwidget.cpp
1/*
2 SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "purposemenuwidget.h"
8#include <KLocalizedString>
9#include <Purpose/AlternativesModel>
10#include <Purpose/Menu>
11#include <QJsonArray>
12#include <QTemporaryFile>
13#include <QUrl>
14
15using namespace PimCommon;
16PurposeMenuWidget::PurposeMenuWidget(QWidget *parentWidget, QObject *parent)
17 : QObject(parent)
18 , mParentWidget(parentWidget)
19 , mShareMenu(new Purpose::Menu(mParentWidget))
20{
21 mShareMenu->setObjectName(QLatin1StringView("purposesharemenu"));
22 connect(mShareMenu, &Purpose::Menu::aboutToShow, this, &PurposeMenuWidget::slotInitializeShareMenu);
23 connect(mShareMenu, &Purpose::Menu::finished, this, &PurposeMenuWidget::slotShareActionFinished);
24}
25
26PurposeMenuWidget::~PurposeMenuWidget()
27{
28 delete mTemporaryShareFile;
29}
30
31QMenu *PurposeMenuWidget::menu() const
32{
33 return mShareMenu;
34}
35
36void PurposeMenuWidget::slotInitializeShareMenu()
37{
38 delete mTemporaryShareFile;
39 mTemporaryShareFile = new QTemporaryFile();
40 mTemporaryShareFile->open();
41 mTemporaryShareFile->setPermissions(QFile::ReadUser);
42 mTemporaryShareFile->write(text());
43 mTemporaryShareFile->close();
44 mShareMenu->model()->setInputData(QJsonObject{{QStringLiteral("urls"), QJsonArray{{QUrl::fromLocalFile(mTemporaryShareFile->fileName()).toString()}}},
45 {QStringLiteral("mimeType"), {QStringLiteral("text/plain")}}});
46 mShareMenu->model()->setPluginType(QStringLiteral("Export"));
47 mShareMenu->reload();
48}
49
50void PurposeMenuWidget::slotShareActionFinished(const QJsonObject &output, int error, const QString &message)
51{
52 if (error) {
53 Q_EMIT shareError(i18n("There was a problem sharing the document: %1", message));
54 } else {
55 const QString url = output[QLatin1StringView("url")].toString();
56 if (url.isEmpty()) {
57 Q_EMIT shareSuccess(i18n("File was shared."));
58 } else {
59 Q_EMIT shareSuccess(i18n("<qt>You can find the new request at:<br /><a href='%1'>%1</a> </qt>", url));
60 }
61 }
62}
63
64#include "moc_purposemenuwidget.cpp"
QString i18n(const char *text, const TYPE &arg...)
folderdialogacltab.h
virtual bool setPermissions(Permissions permissions) override
virtual void close() override
qint64 write(const QByteArray &data)
Q_EMITQ_EMIT
void setObjectName(QAnyStringView name)
bool isEmpty() const const
virtual QString fileName() const const override
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
QUrl fromLocalFile(const QString &localFile)
QString toString(FormattingOptions options) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:23 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.