128 lines
3.3 KiB
QML
128 lines
3.3 KiB
QML
import QtQuick 2.0
|
|
import QtQuick.Layouts 1.1
|
|
import org.kde.plasma.plasmoid 2.0
|
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
|
|
|
import org.kde.plasma.private.pager 2.0
|
|
|
|
import "lib"
|
|
|
|
Item {
|
|
id: panelItem
|
|
|
|
// Heavy use of the default Pager's code.
|
|
// See: /usr/share/plasma/plasmoid/org.kde.plasma.pager/contents/ui/main.qml
|
|
PagerModel {
|
|
id: pagerModel
|
|
|
|
enabled: true
|
|
showOnlyCurrentScreen: true //plasmoid.configuration.showOnlyCurrentScreen
|
|
screenGeometry: plasmoid.screenGeometry
|
|
pagerType: PagerModel.VirtualDesktops
|
|
}
|
|
|
|
PlasmaCore.FrameSvgItem {
|
|
id: taskFrame
|
|
anchors.fill: parent
|
|
imagePath: "widgets/tasks"
|
|
prefix: "normal"
|
|
}
|
|
|
|
Grid {
|
|
id: pagerItemGrid
|
|
anchors.fill: parent
|
|
|
|
anchors.leftMargin: taskFrame.margins.left
|
|
anchors.rightMargin: taskFrame.margins.right
|
|
anchors.topMargin: taskFrame.margins.top
|
|
anchors.bottomMargin: taskFrame.margins.bottom
|
|
|
|
// spacing: PlasmaCore.Units.devicePixelRatio
|
|
rows: effectiveRows
|
|
columns: effectiveColumns
|
|
|
|
readonly property int effectiveRows: {
|
|
var rows = 1
|
|
var columns = Math.floor(pagerModel.count / pagerModel.layoutRows)
|
|
|
|
if (pagerModel.count % pagerModel.layoutRows > 0) {
|
|
columns += 1
|
|
}
|
|
|
|
rows = Math.floor(pagerModel.count / columns)
|
|
|
|
if (pagerModel.count % columns > 0) {
|
|
rows += 1
|
|
}
|
|
|
|
return rows
|
|
}
|
|
|
|
readonly property int effectiveColumns: {
|
|
if (!pagerModel.count) {
|
|
return 1
|
|
}
|
|
|
|
return Math.ceil(pagerModel.count / effectiveRows)
|
|
}
|
|
|
|
|
|
readonly property real pagerItemSizeRatio: pagerModel.pagerItemSize.width / pagerModel.pagerItemSize.height
|
|
// readonly property real widthScaleFactor: columnWidth / pagerModel.pagerItemSize.width
|
|
// readonly property real heightScaleFactor: rowHeight / pagerModel.pagerItemSize.height
|
|
|
|
property int rowHeight: Math.floor(height / effectiveRows)
|
|
property int columnWidth: Math.floor(width / effectiveColumns)
|
|
|
|
property color seperatorColor: "#44FFFFFF"
|
|
property color activeDesktopFillColor: "#44442027"
|
|
|
|
Repeater {
|
|
id: repeater
|
|
model: pagerModel
|
|
|
|
Item {
|
|
id: desktop
|
|
property int desktopIndex: index
|
|
property int desktopColumn: index % pagerItemGrid.columns
|
|
property int desktopRow: Math.floor(index / pagerItemGrid.columns)
|
|
property bool isActiveDesktop: (index == pagerModel.currentPage)
|
|
|
|
width: pagerItemGrid.columnWidth
|
|
height: pagerItemGrid.rowHeight
|
|
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
color: desktop.isActiveDesktop ? pagerItemGrid.activeDesktopFillColor : "transparent"
|
|
}
|
|
|
|
Rectangle {
|
|
id: verticalSeperator
|
|
visible: desktop.desktopColumn < pagerItemGrid.columns-1 // Don't show on last column
|
|
anchors.top: parent.top
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
width: Math.round(1 * PlasmaCore.Units.devicePixelRatio)
|
|
color: pagerItemGrid.seperatorColor
|
|
}
|
|
Rectangle {
|
|
id: horizontalSeperator
|
|
visible: desktop.desktopRow < pagerItemGrid.rows-1 // Don't show on last row
|
|
anchors.left: parent.left
|
|
anchors.bottom: parent.bottom
|
|
anchors.right: parent.right
|
|
height: Math.round(1 * PlasmaCore.Units.devicePixelRatio)
|
|
color: pagerItemGrid.seperatorColor
|
|
}
|
|
|
|
AppletIcon {
|
|
anchors.fill: parent
|
|
source: desktop.isActiveDesktop ? "unity7selectedworkspace" : ""
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|