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

List:       kde-commits
Subject:    [kde-workspace/mart/AppletAttached] plasma/generic: Seek ui
From:       Marco Martin <notmart () gmail ! com>
Date:       2014-01-31 22:02:50
Message-ID: E1W9MAk-0004kW-1F () scm ! kde ! org
[Download RAW message or body]

Git commit 5f2fa8da92a69f3e30bfbcb3572e24ea8f24fff4 by Marco Martin.
Committed on 31/01/2014 at 22:02.
Pushed by mart into branch 'mart/AppletAttached'.

Seek ui

M  +61   -38   plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml
 M  +1    -2    plasma/generic/applets/mediacontroller/contents/ui/main.qml
M  +2    -2    plasma/generic/dataengines/mpris2/playeractionjob.cpp

http://commits.kde.org/kde-workspace/5f2fa8da92a69f3e30bfbcb3572e24ea8f24fff4

diff --git a/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml \
b/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml index \
                23d5d7b..fe131f8 100644
--- a/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml
+++ b/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresentation.qml
@@ -23,7 +23,7 @@ import org.kde.plasma.core 2.0 as PlasmaCore
 import org.kde.plasma.components 2.0 as PlasmaComponents
 import org.kde.plasma.extras 2.0 as PlasmaExtras
 
-Item {
+ColumnLayout {
     id: expandedRepresentation
 
     Layout.minimumWidth: Layout.minimumHeight * 1.333
@@ -33,76 +33,98 @@ Item {
 
     property int controlSize: Math.min(height, width) / 4
 
-    anchors {
-        margins: units.largeSpacing
-        //fill: parent
-    }
-
+    //anchors.margins: units.largeSpacing
     //Rectangle { color: "orange"; anchors.fill: parent }
 
-    PlasmaExtras.Heading {
-        id: song
-        level: 3
-        opacity: 0.6
+    RowLayout {
+        id: titleRow
+        spacing: units.largeSpacing
         anchors {
             left: parent.left
             top: parent.top
             right: parent.right
         }
-        elide: Text.ElideRight
-        text: root.track == "" ? i18n("No media playing") : root.track
+        Image {
+            source: mpris2Source.data[mpris2Source.last].Metadata["mpris:artUrl"]
+            Layout.preferredHeight: Math.min(expandedRepresentation.height/2, \
sourceSize.height) +            Layout.preferredWidth: Layout.preferredHeight
+            visible: status == Image.Ready
+        }
+        Column {
+            Layout.fillWidth: true
+            anchors.top: parent.top
+            spacing: units.largeSpacing
+            PlasmaExtras.Heading {
+                id: song
+                anchors {
+                    left: parent.left
+                    right: parent.right
+                }
+                level: 3
+                opacity: 0.6
+
+                elide: Text.ElideRight
+                text: root.track == "" ? i18n("No media playing") : root.track
+            }
+
+            PlasmaExtras.Heading {
+                id: artist
+                anchors {
+                    left: parent.left
+                    right: parent.right
+                }
+                level: 4
+                opacity: 0.3
+
+                elide: Text.ElideRight
+                text: root.noPlayer ? "" : root.artist
+            }
+        }
     }
 
-    PlasmaExtras.Heading {
-        id: artist
-        level: 4
-        opacity: 0.3
+    PlasmaComponents.Slider {
+        z: 999
+        maximumValue: mpris2Source.data[mpris2Source.last].Metadata["mpris:length"]
+        value: mpris2Source.data[mpris2Source.last].Position
         anchors {
-            top: song.bottom
-            topMargin: units.smallSpacing
             left: parent.left
             right: parent.right
         }
-        elide: Text.ElideRight
-        text: root.noPlayer ? "" : root.artist
+        onValueChanged: {
+            if (pressed) {
+                var service = mpris2Source.serviceForSource(mpris2Source.last);
+                var operation = service.operationDescription("Seek");
+                operation.microseconds = value
+                service.startOperationCall(operation);
+            }
+        }
     }
-    Item {
 
+    Item {
+        Layout.fillHeight: true
         anchors {
-            top: artist.bottom
-            //topMargin: (parent.height - artist.height - song.height - \
                root.controlsSize) / 2
-            bottom: parent.bottom
-            //bottom: parent.bottom
-            //horizontalCenter: parent.horizontalCenter
             left: parent.left
             right: parent.right
         }
+
+
         Row {
             id: playerControls
             property int controlsSize: theme.mSize(theme.defaultFont).height * 3
 
             //Rectangle { color: "orange"; anchors.fill: parent }
 
-            anchors {
-                //top: artist.bottom
-                //topMargin: (parent.height - artist.height - song.height - \
                root.controlsSize) / 2
-                verticalCenter: parent.verticalCenter
-                //bottom: parent.bottom
-                horizontalCenter: parent.horizontalCenter
-                //left: parent.left
-            }
-
-            height: root.controlsSize
-            //height: 20
-            width: (root.controlsSize * 3) + (units.largeSpacing * 2)
+            anchors.centerIn: parent
             spacing: units.largeSpacing
 
             MediaControl {
+                anchors.verticalCenter: parent.verticalCenter
                 source: "media-skip-backward"
                 onTriggered: root.previous();
             }
 
             MediaControl {
+                width: expandedRepresentation.controlSize * 1.5
                 source: root.state == "playing" ? "media-playback-pause" : \
"media-playback-start"  onTriggered: {
                     print("Clicked" + source + " " + root.state);
@@ -115,6 +137,7 @@ Item {
             }
 
             MediaControl {
+                anchors.verticalCenter: parent.verticalCenter
                 source: "media-skip-forward"
                 onTriggered: root.next();
             }
diff --git a/plasma/generic/applets/mediacontroller/contents/ui/main.qml \
b/plasma/generic/applets/mediacontroller/contents/ui/main.qml index c06c44a..a793f09 \
                100644
--- a/plasma/generic/applets/mediacontroller/contents/ui/main.qml
+++ b/plasma/generic/applets/mediacontroller/contents/ui/main.qml
@@ -32,7 +32,6 @@ Item {
     property string playerIcon: ""
 
 
-    property int baseSize: theme.mSize(theme.defaultFont).height
     property bool noPlayer: true
 
     Plasmoid.switchWidth: units.gridUnit * 10
@@ -46,7 +45,7 @@ Item {
         id: mpris2Source
         engine: "mpris2"
         connectedSources: sources
-        interval: 0
+        interval: 800
         property string last
         onSourceAdded: {
             //print("XXX source added: " + source);
diff --git a/plasma/generic/dataengines/mpris2/playeractionjob.cpp \
b/plasma/generic/dataengines/mpris2/playeractionjob.cpp index d5ffcc0..81fdbdd 100644
--- a/plasma/generic/dataengines/mpris2/playeractionjob.cpp
+++ b/plasma/generic/dataengines/mpris2/playeractionjob.cpp
@@ -64,7 +64,7 @@ void PlayerActionJob::start()
                || operation == QLatin1String("Previous")) {
         listenToCall(m_controller->playerInterface()->asyncCall(operation));
     } else if (operation == "Seek") {
-        if (parameters().value("microseconds").type() == QVariant::LongLong) {
+        if (parameters().value("microseconds").canConvert<long long>()) {
             listenToCall(m_controller->playerInterface()->Seek(parameters()["microseconds"].toLongLong()));
  } else {
             setErrorText("microseconds");
@@ -72,7 +72,7 @@ void PlayerActionJob::start()
             emitResult();
         }
     } else if (operation == "SetPosition") {
-        if (parameters().value("microseconds").type() == QVariant::LongLong) {
+        if (parameters().value("microseconds").canConvert<long long>()) {
             listenToCall(m_controller->playerInterface()->SetPosition(
                              m_controller->trackId(),
                              parameters()["microseconds"].toLongLong()));


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

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