[kde-workspace] plasma/generic/applets/systemtray2/package/contents/ui: Systemtray: Delegate Sizing
Sebastian Kügler
sebas at kde.org
Sat Nov 2 02:43:27 UTC 2013
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 at 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
More information about the Plasma-devel
mailing list