On Sat, Nov 2, 2013 at 3:43 AM, Sebastian Kügler <se...@kde.org> wrote: > 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
That's awesome! +100 :) However.. Why are you using javascript for this? Since Qt 5.1 we have those awesome dynamic layout things that automatically grow. Use that instead of javascript. _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel