[plasmoid] Add Photo to Plasmoid menu

Adds a menu entry to ask the remote device to take a photo to the Plasmoid menu
This commit is contained in:
Kareem Abduljaleel 2022-09-28 13:03:48 +00:00 committed by Simon Redman
parent 1f5fd06924
commit 4ecf463cd1
6 changed files with 78 additions and 6 deletions

View file

@ -79,6 +79,7 @@ void KdeConnectDeclarativePlugin::registerTypes(const char *uri)
"RemoteSystemVolumeInterface",
QStringLiteral("You're not supposed to instantiate interfaces"));
qmlRegisterUncreatableType<ShareDbusInterface>(uri, 1, 0, "ShareDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
qmlRegisterUncreatableType<PhotoDbusInterface>(uri, 1, 0, "PhotoDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
qmlRegisterUncreatableType<BigscreenDbusInterface>(uri, 1, 0, "BigscreenDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
qmlRegisterSingletonType<DaemonDbusInterface>(uri, 1, 0, "DaemonDbusInterface", [](QQmlEngine *, QJSEngine *) -> QObject * {
return new DaemonDbusInterface;
@ -116,6 +117,7 @@ void KdeConnectDeclarativePlugin::registerTypes(const char *uri)
registerFactory<SmsDbusInterface>(uri, "SmsDbusInterfaceFactory");
registerFactory<RemoteCommandsDbusInterface>(uri, "RemoteCommandsDbusInterfaceFactory");
registerFactory<ShareDbusInterface>(uri, "ShareDbusInterfaceFactory");
registerFactory<PhotoDbusInterface>(uri, "PhotoDbusInterfaceFactory");
registerFactory<RemoteSystemVolumeDbusInterface>(uri, "RemoteSystemVolumeDbusInterfaceFactory");
registerFactory<BigscreenDbusInterface>(uri, "BigscreenDbusInterfaceFactory");
registerFactory<VirtualmonitorDbusInterface>(uri, "VirtualmonitorDbusInterfaceFactory");

View file

@ -57,6 +57,7 @@ geninterface(${PROJECT_SOURCE_DIR}/plugins/share/shareplugin.h shareinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/remotesystemvolume/remotesystemvolumeplugin.h remotesystemvolumeinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/bigscreen/bigscreenplugin.h bigscreeninterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/virtualmonitor/virtualmonitorplugin.h virtualmonitorinterface)
geninterface(${PROJECT_SOURCE_DIR}/plugins/photo/photoplugin.h photointerface)
add_library(kdeconnectinterfaces ${libkdeconnect_SRC})
set_target_properties(kdeconnectinterfaces PROPERTIES

View file

@ -227,11 +227,15 @@ ShareDbusInterface::ShareDbusInterface(const QString &deviceId, QObject *parent)
ShareDbusInterface::~ShareDbusInterface() = default;
RemoteSystemVolumeDbusInterface::RemoteSystemVolumeDbusInterface(const QString &deviceId, QObject *parent)
: OrgKdeKdeconnectDeviceRemotesystemvolumeInterface(DaemonDbusInterface::activatedService(),
QStringLiteral("/modules/kdeconnect/devices/") + deviceId + QStringLiteral("/remotesystemvolume"),
QDBusConnection::sessionBus(),
parent)
PhotoDbusInterface::PhotoDbusInterface(const QString& deviceId, QObject* parent):
OrgKdeKdeconnectDevicePhotoInterface(DaemonDbusInterface::activatedService(), QStringLiteral("/modules/kdeconnect/devices/") + deviceId + QStringLiteral("/photo"), QDBusConnection::sessionBus(), parent)
{
}
PhotoDbusInterface::~PhotoDbusInterface() = default;
RemoteSystemVolumeDbusInterface::RemoteSystemVolumeDbusInterface(const QString& deviceId, QObject* parent):
OrgKdeKdeconnectDeviceRemotesystemvolumeInterface(DaemonDbusInterface::activatedService(), QStringLiteral("/modules/kdeconnect/devices/") + deviceId + QStringLiteral("/remotesystemvolume"), QDBusConnection::sessionBus(), parent)
{
}

View file

@ -28,6 +28,7 @@
#include "shareinterface.h"
#include "smsinterface.h"
#include "virtualmonitorinterface.h"
#include "photointerface.h"
/**
* Using these "proxy" classes just in case we need to rename the
@ -229,7 +230,17 @@ public:
~ShareDbusInterface() override;
};
class KDECONNECTINTERFACES_EXPORT RemoteSystemVolumeDbusInterface : public OrgKdeKdeconnectDeviceRemotesystemvolumeInterface
class KDECONNECTINTERFACES_EXPORT PhotoDbusInterface
: public OrgKdeKdeconnectDevicePhotoInterface
{
Q_OBJECT
public:
explicit PhotoDbusInterface(const QString& deviceId, QObject* parent = nullptr);
~PhotoDbusInterface() override;
};
class KDECONNECTINTERFACES_EXPORT RemoteSystemVolumeDbusInterface
: public OrgKdeKdeconnectDeviceRemotesystemvolumeInterface
{
Q_OBJECT
public:

View file

@ -170,6 +170,28 @@ PlasmaComponents.ListItem
onClicked: fileDialog.open()
}
//Photo
PlasmaComponents.MenuItem
{
FileDialog {
id: photoFileDialog
title: i18n("Save As")
folder: shortcuts.pictures
selectMultiple: false
selectExisting: false
onAccepted: {
var path = photoFileDialog.fileUrl.toString();
photo.plugin.requestPhoto(path);
}
}
id: takePhoto
icon: "camera-photo-symbolic"
visible: photo.available
text: i18n("Take a photo")
onClicked: photoFileDialog.open()
}
//Find my phone
PlasmaComponents.MenuItem
{
@ -407,5 +429,11 @@ PlasmaComponents.ListItem
id: share
device: root.device
}
// Photo
Photo {
id: photo
device: root.device
}
}
}

View file

@ -0,0 +1,26 @@
/**
* SPDX-FileCopyrightText: 2022 Kareem Abduljaleel <karemjaleel34@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
import QtQuick 2.1
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.kdeconnect 1.0
QtObject {
id: root
property alias device: checker.device
readonly property alias available: checker.available
readonly property PluginChecker pluginChecker: PluginChecker {
id: checker
pluginName: "photo"
}
property variant plugin: available ? PhotoDbusInterfaceFactory.create(device.id()) : null
}