Hi,

you can check how we use it in xdg-portal-test-kde (a simple app to test
various portals).

The code is here:
https://invent.kde.org/libraries/xdg-portal-test-kde/-/blob/master/src/portaltest.cpp#L498

Regards,
Jan

út 18. 8. 2020 v 12:59 odesílatel Méven <meve...@gmail.com> napsal:

> Le mar. 18 août 2020 à 12:04, <kde-devel-requ...@kde.org> a écrit :
>
>> Date: Mon, 17 Aug 2020 12:44:35 +0000
>> From: Damir Porobic <damir_poro...@live.com>
>> To: "kde-devel@kde.org" <kde-devel@kde.org>
>> Subject: Re: Using xdg-desktop-portal-kde to take screenshots
>> Message-ID:
>>         <
>> am0pr09mb389099fac1a15b22f0e6d4afe5...@am0pr09mb3890.eurprd09.prod.outlook.com
>> >
>>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Hello,
>>
>> has anyone experience with this portal?
>>
>> Best regards,
>> Damir
>>
>> ________________________________
>> From: kde-devel <kde-devel-boun...@kde.org> on behalf of Damir Porobic <
>> damir_poro...@live.com>
>> Sent: Thursday, August 13, 2020 16:16
>> To: kde-devel@kde.org <kde-devel@kde.org>
>> Subject: Using xdg-desktop-portal-kde to take screenshots
>>
>> Hello,
>>
>> I'm trying use the xdg-desktop-portal-kde (
>> https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/blob/master/src/screenshot.cpp)
>> portal in order to take screenshots under Wayland.
>>
>> If I understand correctly, making a DBus Call like this should open a
>> Dialog with a Screenshot that can be shared with my application.
>>
>> *********************************
>> QDBusInterface
>> interface(QStringLiteral("org.freedesktop.portal.Desktop"),
>> QStringLiteral("/org/freedesktop/portal/Screenshot"),
>> QStringLiteral("org.freedesktop.portal.Screenshot"));
>> QDBusPendingReply<QDBusObjectPath> reply;
>>
>> reply = interface.call(QStringLiteral("Screenshot"), "", QVariantMap());
>>
>> if (reply.isError()) {
>>     qCritical("Invalid reply from DBus: %s",
>> qPrintable(reply.error().message()));
>>     emit canceled();
>> } else {
>>     qCritical("Dbus success: %s",
>> qPrintable(reply.argumentAt<0>().path()));
>> }
>> *********************************
>>
>> But the path to the image is not returned in the result from this call.
>> How am I supposed to get the result?
>>
>> Is there any example implementation that uses this portal? In Spectacle I
>> have only seen the solution using org.kde.plasmashell, but not the portal
>> solution.
>>
>> Thanks in advance!
>>
>> Best regards
>> Damir
>>
>
> Hi Damir,
>
> You need to pass an instance of QVariantMap that will be filled up with a
> uri field according to the code:
>
> auto result = QVariantMap();
> reply = interface.call(QStringLiteral("Screenshot"), "", &result);
> result.value("uri");
>
> But you might be missing parameters also :
>
>     uint Screenshot(const QDBusObjectPath &handle,
>                     const QString &app_id,
>                     const QString &parent_window,
>                     const QVariantMap &options,
>                     QVariantMap &results);
>
> Also the file is saved in QStandardPaths::PicturesLocation with a
> timestamp.
>
> Documentation is at
> https://flatpak.github.io/xdg-desktop-portal/portal-docs.html#gdbus-org.freedesktop.impl.portal.Screenshot
>
> I hope this helps,
>
> Kind regards,
>
> --
> Méven
>

Reply via email to