Git commit f5e0dde35e5d7da14acf6e0b4a53ead96685daec by Sebastian Kügler. Committed on 02/11/2013 at 02:27. Pushed by sebas into branch 'master'.
Systemtray: Delegate Sizing This commit makes the gridview more dynamically sized. I think in a world of Retina displays, we should move away from pixel-based sizes as much as possible. From this point on, protocols are simply not allowed to determine the size of their items. We can still apply tricks in the possible x11 protocol, and have support for images and movies of fixed size working well. The input area absolutely has to be client-defined, we can't have applications tell us "the interactive area for this app is 22x22 pixels" -- that is not going to happen, as it simply breaks on different dpi *and* input devices. As such, the item size is now more dynamic, the logic is not complete yet, but the direction of this gets clearer. This makes the "basic" itemSize a "recommendation" to the UI for now (it will become an even more internal detail later). Otherwise, the system tray is coming along nicely. What works: - Display of status notifier items (not interactive yet, just icons) - Embedding of plasmoids such as battery, network - Status: items are shown and hidden (moved between the models, really) A few things that I want to improve at a later stage is the messy popup situation. We can probably embed the popups of the plasmoids and statusitems into the systemtray popup and streamline this navigational process a bit, while keeping the same interaction model. We're obviously not feature-complete yet and it's all very work-in-progressish, but it's "coming along nicely". :) Here's a screenshot: http://i.imgur.com/LuQdkDL.png CCMAIL:plasma-devel@kde.org DIGEST: M +14 -1 plasma/generic/applets/systemtray2/package/contents/ui/CompactRepresentation.qml M +10 -10 plasma/generic/applets/systemtray2/package/contents/ui/TaskDelegate.qml M +3 -2 plasma/generic/applets/systemtray2/package/contents/ui/main.qml http://commits.kde.org/kde-workspace/f5e0dde35e5d7da14acf6e0b4a53ead96685daec diff --git a/plasma/generic/applets/systemtray2/package/contents/ui/CompactRepresentation.qml b/plasma/generic/applets/systemtray2/package/contents/ui/CompactRepresentation.qml index e3cd88b..4971d37 100644 --- a/plasma/generic/applets/systemtray2/package/contents/ui/CompactRepresentation.qml +++ b/plasma/generic/applets/systemtray2/package/contents/ui/CompactRepresentation.qml @@ -118,6 +118,7 @@ Item { GridView { id: gridView objectName: "gridView" + flow: !root.vertical ? GridView.LeftToRight : GridView.TopToBottom anchors { top: notificationsContainer.top @@ -126,7 +127,19 @@ Item { leftMargin: root.vertical ? 0 : itemSpacing right: arrow.left } - cellWidth: root.vertical ? parent.width : parent.height + cellWidth: root.vertical ? parent.width / gridRows() : parent.height / gridRows() + + function gridRows() { + var r = 0; + if (root.vertical) { + r = Math.floor(parent.width / plasmoid.configuration.itemSize); + } else { + r = Math.floor(parent.height / plasmoid.configuration.itemSize); + } + print("ST2 ROW: ::::::: " + r); + return Math.max(1, r); + + } cellHeight: cellWidth interactive: false diff --git a/plasma/generic/applets/systemtray2/package/contents/ui/TaskDelegate.qml b/plasma/generic/applets/systemtray2/package/contents/ui/TaskDelegate.qml index 56ecc87..4b2c5a4 100644 --- a/plasma/generic/applets/systemtray2/package/contents/ui/TaskDelegate.qml +++ b/plasma/generic/applets/systemtray2/package/contents/ui/TaskDelegate.qml @@ -20,6 +20,7 @@ import QtQuick 2.0 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 import org.kde.private.systemtray 2.0 as SystemTray @@ -28,14 +29,9 @@ Item { id: taskItemContainer objectName: "taskItemContainer" - // FIXME: the applet itself is anchored here, but we want to center it, - // yet keep the whole cell mouse-interactive width: gridView.cellWidth height: gridView.cellHeight - // basically, this: -// width: _h -// height: width - //anchors.centerIn: parent + property int taskStatus: status Rectangle { anchors.fill: parent; @@ -48,10 +44,11 @@ Item { PlasmaCore.IconItem { id: itemIcon - width: _h - height: width + width: parent.height + height: parent.height anchors { - centerIn: taskItemContainer + left: parent.left + verticalCenter: parent.verticalCenter } //visible: source != "" source: iconName != "" ? iconName : (typeof(icon) != "undefined" ? icon : "") @@ -62,6 +59,9 @@ Item { running: status == SystemTray.Task.NeedsAttention } + onTaskStatusChanged: { + print("ST2 status changed to " + taskStatusString()); + } // just for debugging purposes function taskStatusMnemonic() { if (status == SystemTray.Task.Passive) { @@ -86,7 +86,7 @@ Item { Component.onCompleted: { //host.rootItem = gridView; - //print(" taskitem: " + taskItem + " " + iconName); + print(" ST2 taskitem created: " + taskItem + " " + iconName); if ((taskItem != undefined)) { //print( " TASK ITEM CHANGED" + (taskItem != undefined)); taskItem.parent = taskItemContainer; diff --git a/plasma/generic/applets/systemtray2/package/contents/ui/main.qml b/plasma/generic/applets/systemtray2/package/contents/ui/main.qml index 85c4dd7..0fd3d3e 100644 --- a/plasma/generic/applets/systemtray2/package/contents/ui/main.qml +++ b/plasma/generic/applets/systemtray2/package/contents/ui/main.qml @@ -80,15 +80,16 @@ Item { anchors { top: (loadingItem.visible && !plasmoid.expanded) ? loadingItem.bottom : parent.top + bottom: (loadingItem.visible && !plasmoid.expanded) ? undefined : parent.bottom left: parent.left right: parent.right - bottom: parent.bottom + //bottom: parent.bottom } spacing: 4 model: host.hiddenTasks - delegate: TaskDelegate {} + delegate: TaskListDelegate {} } } \ No newline at end of file _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel