plasmoid: Basic code cleanup
This commit is contained in:
parent
1f164e3860
commit
90946829bf
17 changed files with 456 additions and 336 deletions
|
@ -71,6 +71,19 @@ void KdeConnectDeclarativePlugin::registerTypes(const char *uri)
|
|||
"RemoteKeyboardDbusInterface",
|
||||
QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<DeviceDbusInterface>(uri, 1, 0, "DeviceDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<BatteryDbusInterface>(uri, 1, 0, "BatteryDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<ConnectivityReportDbusInterface>(uri,
|
||||
1,
|
||||
0,
|
||||
"ConnectivityReportDbusInterface",
|
||||
QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<SftpDbusInterface>(uri, 1, 0, "SftpDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<SmsDbusInterface>(uri, 1, 0, "SmsDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<VirtualmonitorDbusInterface>(uri,
|
||||
1,
|
||||
0,
|
||||
"VirtualmonitorDbusInterface",
|
||||
QStringLiteral("You're not supposed to instantiate interfaces"));
|
||||
qmlRegisterUncreatableType<RemoteCommandsDbusInterface>(uri,
|
||||
1,
|
||||
0,
|
||||
|
|
|
@ -1,36 +1,43 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2016 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
import QtQml 2.2
|
||||
import org.kde.kdeconnect 1.0
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQml
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
id: prop
|
||||
property QtObject object: null
|
||||
property string read
|
||||
property string change: read+"Changed"
|
||||
|
||||
Component.onCompleted: get();
|
||||
property QtObject object
|
||||
property string read
|
||||
property string change: read + "Changed"
|
||||
|
||||
Component.onCompleted: {
|
||||
get();
|
||||
}
|
||||
|
||||
onChangeChanged: {
|
||||
if (object) {
|
||||
var theSignal = object[change];
|
||||
if (theSignal) {
|
||||
theSignal.connect(valueReceived);
|
||||
const signal = object[change];
|
||||
if (signal) {
|
||||
signal.connect(valueReceived);
|
||||
} else {
|
||||
console.warn("couldn't find signal", change, "for", object)
|
||||
console.warn(`couldn't find signal ${change} for ${object}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function valueReceived(val) {
|
||||
if (!val) {
|
||||
function valueReceived(value: var): void {
|
||||
if (!value) {
|
||||
get();
|
||||
} else {
|
||||
_value = val;
|
||||
_value = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,18 +45,26 @@ QtObject {
|
|||
property var _value: defaultValue
|
||||
readonly property var value: _value
|
||||
|
||||
readonly property var v: DBusAsyncResponse {
|
||||
readonly property KDEConnect.DBusAsyncResponse __response: KDEConnect.DBusAsyncResponse {
|
||||
id: response
|
||||
|
||||
autoDelete: false
|
||||
|
||||
onSuccess: result => {
|
||||
prop._value = result;
|
||||
}
|
||||
|
||||
onError: message => {
|
||||
console.warn("failed call", prop.object, prop.read, prop.change, message)
|
||||
console.warn("failed call", prop.object, prop.read, prop.change, message);
|
||||
}
|
||||
}
|
||||
|
||||
function get() {
|
||||
response.setPendingCall(object[read]());
|
||||
function get(): void {
|
||||
if (object) {
|
||||
const method = object[read];
|
||||
if (method) {
|
||||
response.setPendingCall(method());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,47 +1,71 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2014 Samoilenko Yuri <kinnalru@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2016 David Kahles <david.kahles96@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
import QtQml 2.2
|
||||
import org.kde.kdeconnect 1.0
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQml
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: conn.target
|
||||
property string pluginName: ""
|
||||
property bool available: false
|
||||
property string iconName: ""
|
||||
property KDEConnect.DeviceDbusInterface device
|
||||
property string pluginName
|
||||
property bool available
|
||||
property string iconName
|
||||
|
||||
readonly property Connections connection: Connections {
|
||||
id: conn
|
||||
function onPluginsChanged() {
|
||||
|
||||
target: root.device
|
||||
|
||||
function onPluginsChanged(): void {
|
||||
root.pluginsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: pluginsChanged()
|
||||
Component.onCompleted: {
|
||||
pluginsChanged();
|
||||
}
|
||||
|
||||
readonly property var v: DBusAsyncResponse {
|
||||
readonly property KDEConnect.DBusAsyncResponse __availableResponse: KDEConnect.DBusAsyncResponse {
|
||||
id: availableResponse
|
||||
|
||||
autoDelete: false
|
||||
onSuccess: (result) => { root.available = result; }
|
||||
onError: () => { root.available = false }
|
||||
|
||||
onSuccess: result => {
|
||||
root.available = result;
|
||||
}
|
||||
|
||||
function pluginsChanged() {
|
||||
availableResponse.setPendingCall(device.hasPlugin("kdeconnect_" + pluginName))
|
||||
iconResponse.setPendingCall(device.pluginIconName("kdeconnect_" + pluginName))
|
||||
onError: message => {
|
||||
root.available = false;
|
||||
}
|
||||
}
|
||||
|
||||
readonly property var vv: DBusAsyncResponse {
|
||||
function pluginsChanged(): void {
|
||||
if (device) {
|
||||
availableResponse.setPendingCall(device.hasPlugin("kdeconnect_" + pluginName));
|
||||
iconResponse.setPendingCall(device.pluginIconName("kdeconnect_" + pluginName));
|
||||
}
|
||||
}
|
||||
|
||||
readonly property KDEConnect.DBusAsyncResponse __iconResponse: KDEConnect.DBusAsyncResponse {
|
||||
id: iconResponse
|
||||
|
||||
autoDelete: false
|
||||
onSuccess: (result) => { root.iconName = result; }
|
||||
onError: () => { root.iconName = "" }
|
||||
|
||||
onSuccess: result => {
|
||||
root.iconName = result;
|
||||
}
|
||||
|
||||
onError: message => {
|
||||
root.iconName = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,102 +1,108 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2017 Holger Kaelberer <holger.k@elberer.de>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
import QtQuick 2.1
|
||||
import org.kde.kdeconnect 1.0
|
||||
import QtQuick.Controls 2.4
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
TextField {
|
||||
import QtQuick
|
||||
import QtQuick.Controls as QQC2
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QQC2.TextField {
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "remotekeyboard"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property var remoteKeyboard: null
|
||||
property KDEConnect.RemoteKeyboardDbusInterface remoteKeyboard
|
||||
|
||||
readonly property bool remoteState: available ? remoteKeyboard.remoteState : false
|
||||
readonly property bool remoteState: available && remoteKeyboard ? remoteKeyboard.remoteState : false
|
||||
|
||||
Connections {
|
||||
target: remoteKeyboard
|
||||
function onKeyPressReceived() {
|
||||
target: root.remoteKeyboard
|
||||
|
||||
function onKeyPressReceived(key: string, specialKey: int, shift: bool, ctrl: bool, alt: bool): void {
|
||||
//console.log("XXX received keypress key=" + key + " special=" + specialKey + " shift=" + shift + " ctrl=" + ctrl + " text=" + text + " cursorPos=" + cursorPosition);
|
||||
// interpret some special keys:
|
||||
if (specialKey == 12 || specialKey == 14) // Return/Esc -> clear
|
||||
if (specialKey === 12 || specialKey === 14) { // Return/Esc -> clear
|
||||
text = "";
|
||||
else if (specialKey == 4 // Left
|
||||
&& cursorPosition > 0)
|
||||
} else if (specialKey === 4 // Left
|
||||
&& cursorPosition > 0) {
|
||||
--cursorPosition;
|
||||
else if (specialKey == 6 // Right
|
||||
&& cursorPosition < text.length)
|
||||
} else if (specialKey === 6 // Right
|
||||
&& cursorPosition < text.length) {
|
||||
++cursorPosition;
|
||||
else if (specialKey == 1) { // Backspace -> delete left
|
||||
var pos = cursorPosition;
|
||||
} else if (specialKey === 1) { // Backspace -> delete left
|
||||
const pos = cursorPosition;
|
||||
if (pos > 0) {
|
||||
text = text.substring(0, pos-1)
|
||||
text = text.substring(0, pos - 1)
|
||||
+ text.substring(pos, text.length);
|
||||
cursorPosition = pos - 1;
|
||||
}
|
||||
} else if (specialKey == 13) { // Delete -> delete right
|
||||
var pos = cursorPosition;
|
||||
} else if (specialKey === 13) { // Delete -> delete right
|
||||
const pos = cursorPosition;
|
||||
if (pos < text.length) {
|
||||
text = text.substring(0, pos)
|
||||
+ text.substring(pos+1, text.length);
|
||||
+ text.substring(pos + 1, text.length);
|
||||
cursorPosition = pos; // seems to be set to text.length automatically!
|
||||
}
|
||||
} else if (specialKey == 10) // Home
|
||||
} else if (specialKey === 10) { // Home
|
||||
cursorPosition = 0;
|
||||
else if (specialKey == 11) // End
|
||||
} else if (specialKey == 11) { // End
|
||||
cursorPosition = text.length;
|
||||
else {
|
||||
} else {
|
||||
// echo visible keys
|
||||
var sanitized = "";
|
||||
for (var i = 0; i < key.length; i++) {
|
||||
if (key.charCodeAt(i) > 31)
|
||||
let sanitized = "";
|
||||
for (let i = 0; i < key.length; i++) {
|
||||
if (key.charCodeAt(i) > 31) {
|
||||
sanitized += key.charAt(i);
|
||||
}
|
||||
}
|
||||
if (sanitized.length > 0 && !ctrl && !alt) {
|
||||
// insert sanitized at current pos:
|
||||
var pos = cursorPosition;
|
||||
const pos = cursorPosition;
|
||||
text = text.substring(0, pos)
|
||||
+ sanitized
|
||||
+ text.substring(pos, text.length);
|
||||
cursorPosition = pos + 1; // seems to be set to text.length automatically!
|
||||
}
|
||||
}
|
||||
// console.log("XXX After received keypress key=" + key + " special=" + specialKey + " shift=" + shift + " ctrl=" + ctrl + " text=" + text + " cursorPos=" + cursorPosition);
|
||||
// console.log("XXX After received keypress key=" + key + " special=" + specialKey + " shift=" + shift + " ctrl=" + ctrl + " text=" + text + " cursorPos=" + cursorPosition);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function sendEvent(event) {
|
||||
function sendEvent(event: KeyEvent): void {
|
||||
if (remoteKeyboard) {
|
||||
var transEvent = JSON.parse(JSON.stringify(event)); // transform to anonymous object
|
||||
const transEvent = JSON.parse(JSON.stringify(event)); // transform to anonymous object
|
||||
remoteKeyboard.sendQKeyEvent(transEvent);
|
||||
event.accepted = true
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onPressed: {
|
||||
if (available)
|
||||
Keys.onPressed: event => {
|
||||
if (available) {
|
||||
sendEvent(event);
|
||||
}
|
||||
event.accepted = true;
|
||||
}
|
||||
|
||||
onAvailableChanged: {
|
||||
if (available) {
|
||||
remoteKeyboard = RemoteKeyboardDbusInterfaceFactory.create(device.id());
|
||||
//remoteKeyboard.keyPressReceived.connect(keyPressReceived);
|
||||
if (available && device !== null) {
|
||||
remoteKeyboard = KDEConnect.RemoteKeyboardDbusInterfaceFactory.create(device.id());
|
||||
remoteKeyboard.remoteStateChanged.connect(remoteStateChanged);
|
||||
} else {
|
||||
remoteKeyboard = null
|
||||
remoteKeyboard = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,62 +1,80 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2014 Samoilenko Yuri <kinnalru@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "battery"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property bool charging: battery ? battery.isCharging : false
|
||||
property int charge: battery ? battery.charge : -1
|
||||
property string displayString: (available && charge > -1) ? ((charging) ? (i18n("%1% charging", charge)) : (i18n("%1%", charge))) : i18n("No info")
|
||||
property variant battery: null
|
||||
readonly property bool charging: battery?.isCharging ?? false
|
||||
readonly property int charge: battery?.charge ?? -1
|
||||
|
||||
readonly property string displayString: {
|
||||
if (available && charge > -1) {
|
||||
if (charging) {
|
||||
return i18n("%1% charging", charge);
|
||||
} else {
|
||||
return i18n("%1%", charge);
|
||||
}
|
||||
} else {
|
||||
return i18n("No info");
|
||||
}
|
||||
}
|
||||
|
||||
property KDEConnect.BatteryDbusInterface battery
|
||||
|
||||
/**
|
||||
* Suggests an icon name to use for the current battery level
|
||||
*/
|
||||
readonly property string iconName: {
|
||||
charge < 0 ?
|
||||
"battery-missing-symbolic" :
|
||||
charge < 10 ?
|
||||
charging ?
|
||||
"battery-empty-charging-symbolic" :
|
||||
"battery-empty-symbolic" :
|
||||
charge < 25 ?
|
||||
charging ?
|
||||
"battery-caution-charging-symbolic" :
|
||||
"battery-caution-symbolic" :
|
||||
charge < 50 ?
|
||||
charging ?
|
||||
"battery-low-charging-symbolic" :
|
||||
"battery-low-symbolic" :
|
||||
charge < 75 ?
|
||||
charging ?
|
||||
"battery-good-charging-symbolic" :
|
||||
"battery-good-symbolic" :
|
||||
charging ?
|
||||
"battery-full-charging-symbolic":
|
||||
"battery-full-symbolic"
|
||||
if (charge < 0) {
|
||||
return "battery-missing-symbolic";
|
||||
} else if (charge < 10) {
|
||||
return charging
|
||||
? "battery-empty-charging-symbolic"
|
||||
: "battery-empty-symbolic";
|
||||
} else if (charge < 25) {
|
||||
return charging
|
||||
? "battery-caution-charging-symbolic"
|
||||
: "battery-caution-symbolic";
|
||||
} else if (charge < 50) {
|
||||
return charging
|
||||
? "battery-low-charging-symbolic"
|
||||
: "battery-low-symbolic";
|
||||
} else if (charge < 75) {
|
||||
return charging
|
||||
? "battery-good-charging-symbolic"
|
||||
: "battery-good-symbolic";
|
||||
} else {
|
||||
return charging
|
||||
? "battery-full-charging-symbolic"
|
||||
: "battery-full-symbolic";
|
||||
}
|
||||
}
|
||||
|
||||
onAvailableChanged: {
|
||||
if (available) {
|
||||
battery = DeviceBatteryDbusInterfaceFactory.create(device.id())
|
||||
battery = KDEConnect.DeviceBatteryDbusInterfaceFactory.create(device.id());
|
||||
} else {
|
||||
battery = null
|
||||
battery = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,28 +1,32 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2021 Yaman Qalieh <ybq987@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "clipboard"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property variant clipboard: null
|
||||
property KDEConnect.ClipboardDbusInterface clipboard
|
||||
|
||||
function sendClipboard() {
|
||||
function sendClipboard(): void {
|
||||
if (clipboard) {
|
||||
clipboard.sendClipboard();
|
||||
}
|
||||
|
@ -30,9 +34,9 @@ QtObject {
|
|||
|
||||
onAvailableChanged: {
|
||||
if (available) {
|
||||
clipboard = ClipboardDbusInterfaceFactory.create(device.id())
|
||||
clipboard = KDEConnect.ClipboardDbusInterfaceFactory.create(device.id());
|
||||
} else {
|
||||
clipboard = null
|
||||
clipboard = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,32 +1,44 @@
|
|||
/*
|
||||
SPDX-FileCopyrightText: 2014-2015 Frederic St-Pierre <me@fredericstpierre.com>
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2014-2015 Frederic St-Pierre <me@fredericstpierre.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
||||
*/
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
||||
*/
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
import org.kde.kirigami as Kirigami
|
||||
import org.kde.plasma.plasmoid
|
||||
|
||||
DropArea {
|
||||
onEntered: {
|
||||
id: root
|
||||
|
||||
required property PlasmoidItem plasmoidItem
|
||||
|
||||
onEntered: drag => {
|
||||
if (drag.hasUrls) {
|
||||
root.expanded = true;
|
||||
root.plasmoidItem.expanded = true;
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: kdeConnectMouseArea
|
||||
anchors.fill: parent
|
||||
|
||||
onClicked: {
|
||||
root.expanded = !root.expanded;
|
||||
property bool wasExpanded: false
|
||||
|
||||
onPressed: mouse => {
|
||||
wasExpanded = root.plasmoidItem.expanded;
|
||||
}
|
||||
|
||||
onClicked: mouse => {
|
||||
root.plasmoidItem.expanded = !root.plasmoidItem.expanded;
|
||||
}
|
||||
}
|
||||
|
||||
Kirigami.Icon {
|
||||
id: kdeConnectIcon
|
||||
anchors.fill: parent
|
||||
source: plasmoid.icon
|
||||
source: Plasmoid.icon
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,24 +1,27 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2021 David Shlemayev <david.shlemayev@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
readonly property alias available: checker.available
|
||||
readonly property bool ready: connectivity
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "connectivity_report"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -37,20 +40,22 @@ QtObject {
|
|||
* The parsing from Android values into these strings is handled in the
|
||||
* [ConnectivityReportPlugin.networkTypeToString method](https://invent.kde.org/network/kdeconnect-android/-/blob/master/src/org/kde/kdeconnect/Plugins/ConnectivityReportPlugin/ConnectivityReportPlugin.java#L82)
|
||||
*/
|
||||
readonly property string networkType: connectivity ? connectivity.cellularNetworkType : i18n("Unknown")
|
||||
readonly property string networkType: connectivity?.cellularNetworkType ?? i18n("Unknown")
|
||||
|
||||
/**
|
||||
* Reports a value between 0 and 4 (inclusive) which represents the strength of the cellular connection
|
||||
*/
|
||||
readonly property int signalStrength: connectivity ? connectivity.cellularNetworkStrength : -1
|
||||
property string displayString: {
|
||||
if (ready) {
|
||||
readonly property int signalStrength: connectivity?.cellularNetworkStrength ?? -1
|
||||
|
||||
readonly property string displayString: {
|
||||
if (connectivity !== null) {
|
||||
return `${networkType} ${signalStrength}/4`;
|
||||
} else {
|
||||
return i18n("No signal");
|
||||
}
|
||||
}
|
||||
property variant connectivity: null
|
||||
|
||||
property KDEConnect.ConnectivityReportDbusInterface connectivity
|
||||
|
||||
/**
|
||||
* Suggests an icon name to use for the current signal level
|
||||
|
@ -60,27 +65,27 @@ QtObject {
|
|||
*/
|
||||
readonly property string iconName: {
|
||||
// Firstly, get the name prefix which represents the signal strength
|
||||
var signalStrengthIconName =
|
||||
(signalStrength < 0 || !ready) ?
|
||||
const signalStrengthIconName =
|
||||
(signalStrength < 0 || connectivity === null) ?
|
||||
// As long as the signal strength is nonsense or the plugin reports as non-ready,
|
||||
// show us as disconnected
|
||||
"network-mobile-off" :
|
||||
(signalStrength == 0) ?
|
||||
(signalStrength === 0) ?
|
||||
"network-mobile-0" :
|
||||
(signalStrength == 1) ?
|
||||
(signalStrength === 1) ?
|
||||
"network-mobile-20" :
|
||||
(signalStrength == 2) ?
|
||||
(signalStrength === 2) ?
|
||||
"network-mobile-60" :
|
||||
(signalStrength == 3) ?
|
||||
(signalStrength === 3) ?
|
||||
"network-mobile-80" :
|
||||
(signalStrength == 4) ?
|
||||
(signalStrength === 4) ?
|
||||
"network-mobile-100" :
|
||||
// Since all possible values are enumerated above, this default case should never be hit.
|
||||
// However, I need it in order for my ternary syntax to be valid!
|
||||
"network-mobile-available"
|
||||
"network-mobile-available";
|
||||
|
||||
// If we understand the network type, append to the icon name to show the type
|
||||
var networkTypeSuffix =
|
||||
const networkTypeSuffix =
|
||||
(networkType === "5G") ?
|
||||
// No icon for this case!
|
||||
"" :
|
||||
|
@ -110,15 +115,16 @@ QtObject {
|
|||
// GSconnect just uses the 2g icon
|
||||
// No icon for this case!
|
||||
"" :
|
||||
"" // We didn't recognize the network type. Don't append anything.
|
||||
return signalStrengthIconName + networkTypeSuffix
|
||||
""; // We didn't recognize the network type. Don't append anything.
|
||||
|
||||
return signalStrengthIconName + networkTypeSuffix;
|
||||
}
|
||||
|
||||
onAvailableChanged: {
|
||||
if (available) {
|
||||
connectivity = DeviceConnectivityReportDbusInterfaceFactory.create(device.id())
|
||||
connectivity = KDEConnect.DeviceConnectivityReportDbusInterfaceFactory.create(device.id());
|
||||
} else {
|
||||
connectivity = null
|
||||
connectivity = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,24 +1,25 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.plasma.components as PlasmaComponents
|
||||
import org.kde.kdeconnect
|
||||
import QtQuick.Controls
|
||||
import org.kde.kirigami as Kirigami
|
||||
import org.kde.plasma.extras as PlasmaExtras
|
||||
import QtQuick.Dialogs
|
||||
import QtCore
|
||||
import QtQuick
|
||||
import QtQuick.Dialogs as QtDialogs
|
||||
import QtQuick.Layouts
|
||||
|
||||
PlasmaComponents.ItemDelegate
|
||||
{
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
import org.kde.kirigami as Kirigami
|
||||
import org.kde.plasma.components as PlasmaComponents
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.plasma.extras as PlasmaExtras
|
||||
|
||||
PlasmaComponents.ItemDelegate {
|
||||
id: root
|
||||
readonly property QtObject device: DeviceDbusInterfaceFactory.create(model.deviceId)
|
||||
|
||||
readonly property KDEConnect.DeviceDbusInterface device: KDEConnect.DeviceDbusInterfaceFactory.create(model.deviceId)
|
||||
|
||||
hoverEnabled: false
|
||||
down: false
|
||||
|
@ -35,23 +36,10 @@ PlasmaComponents.ItemDelegate
|
|||
id: fileDropArea
|
||||
anchors.fill: parent
|
||||
|
||||
onDropped: {
|
||||
onDropped: drop => {
|
||||
if (drop.hasUrls) {
|
||||
|
||||
var urls = [];
|
||||
|
||||
for (var v in drop.urls) {
|
||||
if (drop.urls[v] != null) {
|
||||
if (urls.indexOf(drop.urls[v].toString()) == -1) {
|
||||
urls.push(drop.urls[v].toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var i;
|
||||
for (i = 0; i < urls.length; i++) {
|
||||
share.plugin.shareUrl(urls[i]);
|
||||
}
|
||||
const urls = new Set(drop.urls.map(url => url.toString()));
|
||||
urls.forEach(url => share.plugin.shareUrl(url));
|
||||
}
|
||||
drop.accepted = true;
|
||||
}
|
||||
|
@ -68,8 +56,7 @@ PlasmaComponents.ItemDelegate
|
|||
contentItem: ColumnLayout {
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
RowLayout
|
||||
{
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
|
@ -119,9 +106,10 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
}
|
||||
}
|
||||
RowLayout
|
||||
{
|
||||
|
||||
RowLayout {
|
||||
id: connectionInformation
|
||||
|
||||
visible: connectivity.available
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
|
@ -147,10 +135,10 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
RowLayout {
|
||||
id: batteryInformation
|
||||
visible: (battery.available && battery.charge > -1)
|
||||
|
||||
visible: battery.available && battery.charge > -1
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
Kirigami.Icon {
|
||||
|
@ -171,6 +159,7 @@ PlasmaComponents.ItemDelegate
|
|||
|
||||
PlasmaComponents.ToolButton {
|
||||
id: overflowMenu
|
||||
|
||||
icon.name: "application-menu"
|
||||
checked: menu.status === PlasmaExtras.Menu.Open
|
||||
|
||||
|
@ -181,35 +170,35 @@ PlasmaComponents.ItemDelegate
|
|||
visualParent: overflowMenu
|
||||
placement: PlasmaExtras.Menu.BottomPosedLeftAlignedPopup
|
||||
|
||||
//Share
|
||||
PlasmaExtras.MenuItem
|
||||
{
|
||||
property FileDialog data: FileDialog {
|
||||
// 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: FileDialog.OpenFiles
|
||||
fileMode: QtDialogs.FileDialog.OpenFiles
|
||||
onAccepted: fileDialog.selectedFiles.forEach(url => share.plugin.shareUrl(url))
|
||||
}
|
||||
|
||||
id: shareFile
|
||||
icon: "document-share"
|
||||
visible: share.available
|
||||
text: i18n("Share file")
|
||||
onClicked: fileDialog.open()
|
||||
}
|
||||
|
||||
//Clipboard
|
||||
PlasmaExtras.MenuItem
|
||||
{
|
||||
property Clipboard data: Clipboard {
|
||||
// Clipboard
|
||||
PlasmaExtras.MenuItem {
|
||||
id: sendclipboard
|
||||
|
||||
readonly property Clipboard data: Clipboard {
|
||||
id: clipboard
|
||||
device: root.device
|
||||
}
|
||||
|
||||
id: sendclipboard
|
||||
icon: "klipper"
|
||||
visible: clipboard.available && clipboard.clipboard.isAutoShareDisabled
|
||||
visible: clipboard.clipboard?.isAutoShareDisabled ?? false
|
||||
text: i18n("Send Clipboard")
|
||||
|
||||
onClicked: {
|
||||
|
@ -218,15 +207,15 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
|
||||
|
||||
//Find my phone
|
||||
PlasmaExtras.MenuItem
|
||||
{
|
||||
property FindMyPhone data: FindMyPhone {
|
||||
// Find my phone
|
||||
PlasmaExtras.MenuItem {
|
||||
id: ring
|
||||
|
||||
readonly property FindMyPhone data: FindMyPhone {
|
||||
id: findmyphone
|
||||
device: root.device
|
||||
}
|
||||
|
||||
id: ring
|
||||
icon: "irc-voice"
|
||||
visible: findmyphone.available
|
||||
text: i18n("Ring my phone")
|
||||
|
@ -236,15 +225,15 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
}
|
||||
|
||||
//SFTP
|
||||
PlasmaExtras.MenuItem
|
||||
{
|
||||
property Sftp data: Sftp {
|
||||
// SFTP
|
||||
PlasmaExtras.MenuItem {
|
||||
id: browse
|
||||
|
||||
readonly property Sftp data: Sftp {
|
||||
id: sftp
|
||||
device: root.device
|
||||
}
|
||||
|
||||
id: browse
|
||||
icon: "document-open-folder"
|
||||
visible: sftp.available
|
||||
text: i18n("Browse this device")
|
||||
|
@ -254,10 +243,9 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
}
|
||||
|
||||
//SMS
|
||||
PlasmaExtras.MenuItem
|
||||
{
|
||||
property SMS data: SMS {
|
||||
// SMS
|
||||
PlasmaExtras.MenuItem {
|
||||
readonly property SMS data: SMS {
|
||||
id: sms
|
||||
device: root.device
|
||||
}
|
||||
|
@ -274,7 +262,7 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
}
|
||||
|
||||
//RemoteKeyboard
|
||||
// RemoteKeyboard
|
||||
PlasmaComponents.ItemDelegate {
|
||||
visible: remoteKeyboard.remoteState
|
||||
Layout.fillWidth: true
|
||||
|
@ -288,7 +276,7 @@ PlasmaComponents.ItemDelegate
|
|||
text: i18n("Remote Keyboard")
|
||||
}
|
||||
|
||||
RemoteKeyboard {
|
||||
KDEConnect.RemoteKeyboard {
|
||||
id: remoteKeyboard
|
||||
device: root.device
|
||||
Layout.fillWidth: true
|
||||
|
@ -296,9 +284,9 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
}
|
||||
|
||||
//Notifications
|
||||
// Notifications
|
||||
PlasmaComponents.ItemDelegate {
|
||||
visible: notificationsModel.count>0
|
||||
visible: notificationsModel.count > 0
|
||||
enabled: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
|
@ -314,19 +302,23 @@ PlasmaComponents.ItemDelegate
|
|||
visible: notificationsModel.isAnyDimissable;
|
||||
Layout.alignment: Qt.AlignRight
|
||||
icon.name: "edit-clear-history"
|
||||
ToolTip.text: i18n("Dismiss all notifications")
|
||||
PlasmaComponents.ToolTip.text: i18n("Dismiss all notifications")
|
||||
onClicked: notificationsModel.dismissAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: notificationsView
|
||||
model: NotificationsModel {
|
||||
|
||||
model: KDEConnect.NotificationsModel {
|
||||
id: notificationsModel
|
||||
deviceId: root.device.id()
|
||||
}
|
||||
|
||||
delegate: PlasmaComponents.ItemDelegate {
|
||||
id: listitem
|
||||
|
||||
enabled: true
|
||||
onClicked: checked = !checked
|
||||
Layout.fillWidth: true
|
||||
|
@ -349,7 +341,7 @@ PlasmaComponents.ItemDelegate
|
|||
|
||||
PlasmaComponents.Label {
|
||||
id: notificationLabel
|
||||
text: appName + ": " + (title.length>0 ? (appName==title?notitext:title+": "+notitext) : model.name)
|
||||
text: appName + ": " + (title.length > 0 ? (appName == title ? notitext : title + ": " + notitext) : model.name)
|
||||
elide: listitem.checked ? Text.ElideNone : Text.ElideRight
|
||||
maximumLineCount: listitem.checked ? 0 : 1
|
||||
wrapMode: Text.WordWrap
|
||||
|
@ -361,7 +353,7 @@ PlasmaComponents.ItemDelegate
|
|||
visible: repliable
|
||||
enabled: repliable && !replying
|
||||
icon.name: "mail-reply-sender"
|
||||
ToolTip.text: i18n("Reply")
|
||||
PlasmaComponents.ToolTip.text: i18n("Reply")
|
||||
onClicked: { replying = true; replyTextField.forceActiveFocus(); }
|
||||
}
|
||||
|
||||
|
@ -371,7 +363,7 @@ PlasmaComponents.ItemDelegate
|
|||
enabled: dismissable
|
||||
Layout.alignment: Qt.AlignRight
|
||||
icon.name: "window-close"
|
||||
ToolTip.text: i18n("Dismiss")
|
||||
PlasmaComponents.ToolTip.text: i18n("Dismiss")
|
||||
onClicked: dbusInterface.dismiss();
|
||||
}
|
||||
}
|
||||
|
@ -401,12 +393,12 @@ PlasmaComponents.ItemDelegate
|
|||
placeholderText: i18nc("@info:placeholder", "Reply to %1…", appName)
|
||||
wrapMode: TextEdit.Wrap
|
||||
Layout.fillWidth: true
|
||||
Keys.onPressed: {
|
||||
if ((event.key == Qt.Key_Return || event.key == Qt.Key_Enter) && !(event.modifiers & Qt.ShiftModifier)) {
|
||||
Keys.onPressed: event => {
|
||||
if ((event.key === Qt.Key_Return || event.key === Qt.Key_Enter) && !(event.modifiers & Qt.ShiftModifier)) {
|
||||
replySendButton.clicked();
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Escape) {
|
||||
if (event.key === Qt.Key_Escape) {
|
||||
replyCancelButton.clicked();
|
||||
event.accepted = true;
|
||||
}
|
||||
|
@ -431,13 +423,13 @@ PlasmaComponents.ItemDelegate
|
|||
}
|
||||
|
||||
RemoteCommands {
|
||||
id: rc
|
||||
id: remoteCommands
|
||||
device: root.device
|
||||
}
|
||||
|
||||
// Commands
|
||||
RowLayout {
|
||||
visible: rc.available
|
||||
visible: remoteCommands.available
|
||||
width: parent.width
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
|
@ -446,25 +438,28 @@ PlasmaComponents.ItemDelegate
|
|||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
PlasmaComponents.Button
|
||||
{
|
||||
PlasmaComponents.Button {
|
||||
id: addCommandButton
|
||||
icon.name: "list-add"
|
||||
ToolTip.text: i18n("Add command")
|
||||
onClicked: rc.plugin.editCommands()
|
||||
visible: rc.plugin && rc.plugin.canAddCommand
|
||||
PlasmaComponents.ToolTip.text: i18n("Add command")
|
||||
onClicked: remoteCommands.plugin.editCommands()
|
||||
visible: remoteCommands.plugin?.canAddCommand ?? false
|
||||
}
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: commandsView
|
||||
visible: rc.available
|
||||
model: RemoteCommandsModel {
|
||||
|
||||
visible: remoteCommands.available
|
||||
|
||||
model: KDEConnect.RemoteCommandsModel {
|
||||
id: commandsModel
|
||||
deviceId: rc.device.id()
|
||||
deviceId: remoteCommands.device.id()
|
||||
}
|
||||
|
||||
delegate: PlasmaComponents.ItemDelegate {
|
||||
enabled: true
|
||||
onClicked: rc.plugin.triggerCommand(key)
|
||||
onClicked: remoteCommands.plugin?.triggerCommand(key)
|
||||
Layout.fillWidth: true
|
||||
|
||||
contentItem: PlasmaComponents.Label {
|
||||
|
|
|
@ -1,28 +1,32 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2014 Samoilenko Yuri <kinnalru@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "findmyphone"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property variant findMyPhone: null
|
||||
property KDEConnect.FindMyPhoneDbusInterface findMyPhone
|
||||
|
||||
function ring() {
|
||||
function ring(): void {
|
||||
if (findMyPhone) {
|
||||
findMyPhone.ring();
|
||||
}
|
||||
|
@ -30,9 +34,9 @@ QtObject {
|
|||
|
||||
onAvailableChanged: {
|
||||
if (available) {
|
||||
findMyPhone = FindMyPhoneDbusInterfaceFactory.create(device.id())
|
||||
findMyPhone = KDEConnect.FindMyPhoneDbusInterfaceFactory.create(device.id());
|
||||
} else {
|
||||
findMyPhone = null
|
||||
findMyPhone = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,40 +1,43 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import QtQuick.Controls as QQC2
|
||||
import QtQuick.Layouts
|
||||
|
||||
import org.kde.config as KConfig
|
||||
import org.kde.kcmutils as KCMUtils
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
import org.kde.kirigami as Kirigami
|
||||
import org.kde.plasma.components as PlasmaComponents3
|
||||
import org.kde.plasma.extras as PlasmaExtras
|
||||
import org.kde.kdeconnect as KdeConnect
|
||||
import QtQuick.Layouts
|
||||
import org.kde.kquickcontrolsaddons
|
||||
import org.kde.kirigami as Kirigami
|
||||
import org.kde.kcmutils as KCMUtils
|
||||
import org.kde.config as KConfig
|
||||
|
||||
PlasmaExtras.Representation {
|
||||
id: kdeconnect
|
||||
|
||||
property alias devicesModel: devicesView.model
|
||||
|
||||
collapseMarginsHint: true
|
||||
|
||||
KdeConnect.DevicesModel {
|
||||
KDEConnect.DevicesModel {
|
||||
id: allDevicesModel
|
||||
}
|
||||
KdeConnect.DevicesModel {
|
||||
|
||||
KDEConnect.DevicesModel {
|
||||
id: pairedDevicesModel
|
||||
displayFilter: KdeConnect.DevicesModel.Paired
|
||||
displayFilter: KDEConnect.DevicesModel.Paired
|
||||
}
|
||||
|
||||
PlasmaComponents3.ScrollView {
|
||||
id: dialogItem
|
||||
anchors.fill: parent
|
||||
|
||||
contentItem: ListView {
|
||||
id: devicesView
|
||||
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
delegate: DeviceDelegate {
|
||||
|
@ -55,16 +58,16 @@ PlasmaExtras.Representation {
|
|||
|
||||
text: {
|
||||
if (pairedDevicesModel.count >= 0) {
|
||||
return pairedDevicesModel.count == 0 ? i18n("No paired devices") : i18np("Paired device is unavailable", "All paired devices are unavailable", pairedDevicesModel.count)
|
||||
} else if (allDevicesModel.count == 0) {
|
||||
return pairedDevicesModel.count === 0 ? i18n("No paired devices") : i18np("Paired device is unavailable", "All paired devices are unavailable", pairedDevicesModel.count)
|
||||
} else if (allDevicesModel.count === 0) {
|
||||
return i18n("Install KDE Connect on your Android device to integrate it with Plasma!")
|
||||
}
|
||||
}
|
||||
helpfulAction: Action {
|
||||
helpfulAction: QQC2.Action {
|
||||
text: i18n("Pair a Device…")
|
||||
icon.name: "list-add"
|
||||
onTriggered: KCMUtils.KCMLauncher.openSystemSettings("kcm_kdeconnect")
|
||||
enabled: pairedDevicesModel.count == 0 && KConfig.KAuthorized.authorizeControlModule("kcm_kdeconnect")
|
||||
enabled: pairedDevicesModel.count === 0 && KConfig.KAuthorized.authorizeControlModule("kcm_kdeconnect")
|
||||
}
|
||||
|
||||
PlasmaComponents3.Button {
|
||||
|
|
|
@ -1,24 +1,29 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nicolas Fella <nicolas.fella@gmx.de>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "remotecommands"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property variant plugin: available ? RemoteCommandsDbusInterfaceFactory.create(device.id()) : null
|
||||
property KDEConnect.RemoteCommandsDbusInterface plugin:
|
||||
available ? KDEConnect.RemoteCommandsDbusInterfaceFactory.create(device.id()) : null
|
||||
}
|
||||
|
|
|
@ -1,25 +1,29 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2019 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "sms"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
readonly property variant plugin: available ? SmsDbusInterfaceFactory.create(device.id()) : null
|
||||
readonly property KDEConnect.SmsDbusInterface plugin:
|
||||
available ? KDEConnect.SmsDbusInterfaceFactory.create(device.id()) : null
|
||||
}
|
||||
|
||||
|
|
|
@ -1,37 +1,42 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2014 Samoilenko Yuri <kinnalru@gmail.com>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "sftp"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property variant sftp: null
|
||||
property KDEConnect.SftpDbusInterface sftp
|
||||
|
||||
function browse() {
|
||||
if (sftp)
|
||||
function browse(): void {
|
||||
if (sftp) {
|
||||
sftp.startBrowsing();
|
||||
}
|
||||
}
|
||||
|
||||
onAvailableChanged: {
|
||||
if (available) {
|
||||
sftp = SftpDbusInterfaceFactory.create(device.id())
|
||||
sftp = KDEConnect.SftpDbusInterfaceFactory.create(device.id());
|
||||
} else {
|
||||
sftp = null
|
||||
sftp = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,25 +1,29 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2018 Nicolas Fella <nicolas.fella@gmx.de>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
|
||||
id: root
|
||||
|
||||
property alias device: checker.device
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "share"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
property variant plugin: available ? ShareDbusInterfaceFactory.create(device.id()) : null
|
||||
property KDEConnect.ShareDbusInterface plugin:
|
||||
available ? KDEConnect.ShareDbusInterfaceFactory.create(device.id()) : null
|
||||
}
|
||||
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2021 Aleix Pol i Gonzalez <aleixpol@kde.org>
|
||||
* SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.kdeconnect
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
|
||||
QtObject {
|
||||
id: root
|
||||
|
||||
required property KDEConnect.DeviceDbusInterface device
|
||||
|
||||
QtObject
|
||||
{
|
||||
property alias device: checker.device
|
||||
readonly property alias available: checker.available
|
||||
|
||||
readonly property PluginChecker pluginChecker: PluginChecker {
|
||||
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
|
||||
id: checker
|
||||
pluginName: "virtualmonitor"
|
||||
device: root.device
|
||||
}
|
||||
|
||||
readonly property QtObject plugin: available ? VirtualmonitorDbusInterfaceFactory.create(device.id()) : null
|
||||
readonly property KDEConnect.VirtualmonitorDbusInterface plugin:
|
||||
available ? KDEConnect.VirtualmonitorDbusInterfaceFactory.create(device.id()) : null
|
||||
}
|
||||
|
||||
|
|
|
@ -1,65 +1,61 @@
|
|||
/**
|
||||
* SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
|
||||
import org.kde.config as KConfig
|
||||
import org.kde.kcmutils as KCMUtils
|
||||
import org.kde.kdeconnect as KDEConnect
|
||||
import org.kde.kquickcontrolsaddons as KQuickControlsAddons
|
||||
import org.kde.plasma.core as PlasmaCore
|
||||
import org.kde.plasma.plasmoid
|
||||
import org.kde.kquickcontrolsaddons
|
||||
import org.kde.kdeconnect
|
||||
import org.kde.kcmutils as KCMUtils
|
||||
import org.kde.config as KConfig
|
||||
|
||||
PlasmoidItem
|
||||
{
|
||||
PlasmoidItem {
|
||||
id: root
|
||||
|
||||
readonly property bool inPanel: (plasmoid.location == PlasmaCore.Types.TopEdge
|
||||
|| plasmoid.location == PlasmaCore.Types.RightEdge
|
||||
|| plasmoid.location == PlasmaCore.Types.BottomEdge
|
||||
|| plasmoid.location == PlasmaCore.Types.LeftEdge)
|
||||
readonly property bool inPanel: [
|
||||
PlasmaCore.Types.TopEdge,
|
||||
PlasmaCore.Types.RightEdge,
|
||||
PlasmaCore.Types.BottomEdge,
|
||||
PlasmaCore.Types.LeftEdge,
|
||||
].includes(Plasmoid.location)
|
||||
|
||||
DevicesModel {
|
||||
id: connectDeviceModel
|
||||
displayFilter: DevicesModel.Paired | DevicesModel.Reachable
|
||||
KDEConnect.DevicesModel {
|
||||
id: connectedDeviceModel
|
||||
displayFilter: KDEConnect.DevicesModel.Paired | KDEConnect.DevicesModel.Reachable
|
||||
}
|
||||
|
||||
DevicesModel {
|
||||
KDEConnect.DevicesModel {
|
||||
id: pairedDeviceModel
|
||||
displayFilter: DevicesModel.Paired
|
||||
displayFilter: KDEConnect.DevicesModel.Paired
|
||||
}
|
||||
|
||||
Plasmoid.icon: {
|
||||
let iconName = "kdeconnect-tray";
|
||||
Plasmoid.icon: inPanel
|
||||
? "kdeconnect-tray-symbolic"
|
||||
: "kdeconnect-tray"
|
||||
|
||||
if (inPanel) {
|
||||
return "kdeconnect-tray-symbolic";
|
||||
}
|
||||
|
||||
return iconName;
|
||||
}
|
||||
|
||||
Binding {
|
||||
target: plasmoid
|
||||
property: "status"
|
||||
value: (connectDeviceModel.count > 0) ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.PassiveStatus
|
||||
}
|
||||
Plasmoid.status: connectedDeviceModel.count > 0 ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.PassiveStatus
|
||||
|
||||
fullRepresentation: FullRepresentation {
|
||||
devicesModel: connectDeviceModel
|
||||
devicesModel: connectedDeviceModel
|
||||
}
|
||||
|
||||
compactRepresentation: CompactRepresentation {
|
||||
plasmoidItem: root
|
||||
}
|
||||
|
||||
PlasmaCore.Action {
|
||||
id: configureAction
|
||||
text: i18n("KDE Connect Settings…")
|
||||
icon.name: "configure"
|
||||
visible: KConfig.KAuthorized.authorizeControlModule("kcm_kdeconnect");
|
||||
onTriggered: {
|
||||
visible: KConfig.KAuthorized.authorizeControlModule("kcm_kdeconnect")
|
||||
onTriggered: checked => {
|
||||
KCMUtils.KCMLauncher.openSystemSettings("kcm_kdeconnect");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue