[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdeplasma-addons] applets/quickshare/plasmoid/contents/ui: Use QtQuick DropArea instead of KDeclara
From:       Aleix Pol <aleixpol () kde ! org>
Date:       2015-11-26 13:14:40
Message-ID: E1a1wNk-0002Ff-UD () scm ! kde ! org
[Download RAW message or body]

Git commit 21893fb93a79b93842d46a54dbfa75bcf74ac339 by Aleix Pol.
Committed on 26/11/2015 at 13:14.
Pushed by apol into branch 'master'.

Use QtQuick DropArea instead of KDeclarative's

KDeclarative's has some performance issues and it's preferable to stick to
Qt's version.

M  +27   -20   applets/quickshare/plasmoid/contents/ui/main.qml

http://commits.kde.org/kdeplasma-addons/21893fb93a79b93842d46a54dbfa75bcf74ac339


diff --git a/applets/quickshare/plasmoid/contents/ui/main.qml \
b/applets/quickshare/plasmoid/contents/ui/main.qml index 2d937aa..c5644a4 \
                100644
--- a/applets/quickshare/plasmoid/contents/ui/main.qml
+++ b/applets/quickshare/plasmoid/contents/ui/main.qml
@@ -24,9 +24,8 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
 import org.kde.kquickcontrolsaddons 2.0 as QtExtra
 import QtQuick.Layouts 1.1
 import org.kde.plasma.private.purpose 1.0
-import org.kde.draganddrop 2.0 as DragDrop
 
-DragDrop.DropArea {
+DropArea {
     id: root
 
     Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
@@ -35,10 +34,10 @@ DragDrop.DropArea {
     Layout.minimumWidth: 0
     Layout.minimumHeight: 0
 
-    preventStealing: true
-
     property string url: ""
     property string errorMessage: ""
+    property var pasteUrls: []
+    property int nextPaste: 0
 
     function firstMimeType(formats) {
         for (var v in formats) {
@@ -66,18 +65,28 @@ DragDrop.DropArea {
         return parts[parts.length - 1];
     }
 
-    onDragEnter: {
+    function objectToArray(object) {
+        var array = [];
+        for(var v in object) {
+            array.push(object[v]);
+        }
+        return array;
+    }
+
+    onEntered: {
         root.state = "idle";
         var mimetype;
-        if (event.mimeData.hasUrls) {
-            mimetype = urlsMimetype(event.mimeData.urls);
+        if (drag.hasUrls) {
+            mimetype = urlsMimetype(objectToArray(drag.urls));
         } else {
-            mimetype = firstMimeType(event.mimeData.formats);
+            mimetype = firstMimeType(drag.formats);
         }
         icon.source = mimetype.iconName;
-        event.accepted = true
+        drag.accepted = true
+    }
+    onExited: {
+        icon.source = "edit-paste"
     }
-    onDragLeave: icon.source = "edit-paste"
 
     QtExtra.Clipboard {
         id: clipboard
@@ -178,21 +187,19 @@ DragDrop.DropArea {
         root.state = "configuration"
     }
 
-    onDrop: {
-        var mimeData = event.mimeData;
-        var mimetype = firstMimeType(mimeData.formats).name;
-        if (mimeData.hasUrls) {
-            sendData(mimeData.urls, urlsMimetype(mimeData.urls).name);
+    onDropped: {
+        if (drop.hasUrls) {
+            var urls = objectToArray(drop.urls);
+
+            sendData(urls, urlsMimetype(urls).name);
         } else {
-            var data = mimeData.getDataAsByteArray(mimetype);
+            var mimetype = firstMimeType(drop.formats).name;
+            var data = mimeData.getDataAsArrayBuffer(mimetype);
             sendBase64Data(PurposeHelper.variantToBase64(data), mimetype);
         }
-        event.accepted = true;
+        drop.accepted = true;
     }
 
-    property var pasteUrls: []
-    property int nextPaste: 0
-
     Component.onCompleted: {
         plasmoid.setAction("paste", i18n("Paste"), "edit-paste");
         plasmoid.setActionSeparator("pastes");


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic