From d2ee2bfdd807194bd1204e308299883df929ab97 Mon Sep 17 00:00:00 2001 From: ivan tkachenko Date: Mon, 1 Jul 2024 03:34:20 +0500 Subject: [PATCH] plasmoid: Flatten plugin controllers, menu and other non-graphical components Flat is better than nested. Those non-graphical components don't need to be buried deep inside visual hierarchy tree. For example, for me it was confusing to find the device label item after Battery, Connectivity and VirtualMonitor only to realize some time later that those were not actual visual indicators. --- .../package/contents/ui/DeviceDelegate.qml | 235 +++++++++--------- 1 file changed, 114 insertions(+), 121 deletions(-) diff --git a/plasmoid/package/contents/ui/DeviceDelegate.qml b/plasmoid/package/contents/ui/DeviceDelegate.qml index 966f1bced..a5d535dd8 100644 --- a/plasmoid/package/contents/ui/DeviceDelegate.qml +++ b/plasmoid/package/contents/ui/DeviceDelegate.qml @@ -24,6 +24,51 @@ PlasmaComponents.ItemDelegate { hoverEnabled: false down: false + Battery { + id: battery + device: root.device + } + + Clipboard { + id: clipboard + device: root.device + } + + Connectivity { + id: connectivity + device: root.device + } + + FindMyPhone { + id: findmyphone + device: root.device + } + + RemoteCommands { + id: remoteCommands + device: root.device + } + + Sftp { + id: sftp + device: root.device + } + + Share { + id: share + device: root.device + } + + SMS { + id: sms + device: root.device + } + + VirtualMonitor { + id: virtualmonitor + device: root.device + } + Kirigami.PromptDialog { id: prompt visible: false @@ -32,6 +77,75 @@ PlasmaComponents.ItemDelegate { title: i18n("Virtual Monitor is not available") } + QtDialogs.FileDialog { + id: fileDialog + title: i18n("Please choose a file") + currentFolder: StandardPaths.writableLocation(StandardPaths.HomeLocation) + fileMode: QtDialogs.FileDialog.OpenFiles + onAccepted: { + selectedFiles.forEach(url => share.plugin.shareUrl(url)); + } + } + + PlasmaExtras.Menu { + id: menu + + visualParent: overflowMenu + placement: PlasmaExtras.Menu.BottomPosedLeftAlignedPopup + + // Share + PlasmaExtras.MenuItem { + icon: "document-share" + visible: share.available + text: i18n("Share file") + onClicked: fileDialog.open() + } + + // Clipboard + PlasmaExtras.MenuItem { + icon: "klipper" + visible: clipboard.clipboard?.isAutoShareDisabled ?? false + text: i18n("Send Clipboard") + + onClicked: { + clipboard.sendClipboard() + } + } + + // Find my phone + PlasmaExtras.MenuItem { + icon: "irc-voice" + visible: findmyphone.available + text: i18n("Ring my phone") + + onClicked: { + findmyphone.ring() + } + } + + // SFTP + PlasmaExtras.MenuItem { + icon: "document-open-folder" + visible: sftp.available + text: i18n("Browse this device") + + onClicked: { + sftp.browse() + } + } + + // SMS + PlasmaExtras.MenuItem { + icon: "message-new" + visible: sms.available + text: i18n("SMS Messages") + + onClicked: { + sms.plugin.launchApp() + } + } + } + DropArea { id: fileDropArea anchors.fill: parent @@ -60,21 +174,6 @@ PlasmaComponents.ItemDelegate { width: parent.width spacing: Kirigami.Units.smallSpacing - Battery { - id: battery - device: root.device - } - - Connectivity { - id: connectivity - device: root.device - } - - VirtualMonitor { - id: virtualmonitor - device: root.device - } - PlasmaComponents.Label { id: deviceName elide: Text.ElideRight @@ -164,101 +263,6 @@ PlasmaComponents.ItemDelegate { checked: menu.status === PlasmaExtras.Menu.Open onPressed: menu.openRelative() - - PlasmaExtras.Menu { - id: menu - visualParent: overflowMenu - placement: PlasmaExtras.Menu.BottomPosedLeftAlignedPopup - - // Share - PlasmaExtras.MenuItem { - id: shareFile - - readonly property QtDialogs.FileDialog data: QtDialogs.FileDialog { - id: fileDialog - title: i18n("Please choose a file") - currentFolder: StandardPaths.writableLocation(StandardPaths.HomeLocation) - fileMode: QtDialogs.FileDialog.OpenFiles - onAccepted: fileDialog.selectedFiles.forEach(url => share.plugin.shareUrl(url)) - } - - icon: "document-share" - visible: share.available - text: i18n("Share file") - onClicked: fileDialog.open() - } - - // Clipboard - PlasmaExtras.MenuItem { - id: sendclipboard - - readonly property Clipboard data: Clipboard { - id: clipboard - device: root.device - } - - icon: "klipper" - visible: clipboard.clipboard?.isAutoShareDisabled ?? false - text: i18n("Send Clipboard") - - onClicked: { - clipboard.sendClipboard() - } - } - - - // Find my phone - PlasmaExtras.MenuItem { - id: ring - - readonly property FindMyPhone data: FindMyPhone { - id: findmyphone - device: root.device - } - - icon: "irc-voice" - visible: findmyphone.available - text: i18n("Ring my phone") - - onClicked: { - findmyphone.ring() - } - } - - // SFTP - PlasmaExtras.MenuItem { - id: browse - - readonly property Sftp data: Sftp { - id: sftp - device: root.device - } - - icon: "document-open-folder" - visible: sftp.available - text: i18n("Browse this device") - - onClicked: { - sftp.browse() - } - } - - // SMS - PlasmaExtras.MenuItem { - readonly property SMS data: SMS { - id: sms - device: root.device - } - - icon: "message-new" - visible: sms.available - text: i18n("SMS Messages") - - onClicked: { - sms.plugin.launchApp() - } - } - } } } @@ -422,11 +426,6 @@ PlasmaComponents.ItemDelegate { } } - RemoteCommands { - id: remoteCommands - device: root.device - } - // Commands RowLayout { visible: remoteCommands.available @@ -467,11 +466,5 @@ PlasmaComponents.ItemDelegate { } } } - - // Share - Share { - id: share - device: root.device - } } }