mirror of
https://github.com/danbulant/dots-hyprland
synced 2026-05-24 12:22:09 +00:00
works inconsistently because of uhm swipeviews also it's weird... ai is more useful than anime grills and notifs are more useful than mixer imo...
82 lines
No EOL
2.5 KiB
QML
82 lines
No EOL
2.5 KiB
QML
import "root:/modules/common"
|
|
import "root:/modules/common/widgets"
|
|
import "root:/services"
|
|
import "./calendar"
|
|
import "./notifications"
|
|
import "./todo"
|
|
import "./volumeMixer"
|
|
import Qt5Compat.GraphicalEffects
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
|
|
Rectangle {
|
|
id: root
|
|
radius: Appearance.rounding.normal
|
|
color: Appearance.colors.colLayer1
|
|
|
|
property int selectedTab: 0
|
|
property var tabButtonList: [{"icon": "notifications", "name": qsTr("Notifications")}, {"icon": "volume_up", "name": qsTr("Volume mixer")}]
|
|
|
|
Keys.onPressed: (event) => {
|
|
if (event.key === Qt.Key_PageDown || event.key === Qt.Key_PageUp) {
|
|
if (event.key === Qt.Key_PageDown) {
|
|
root.selectedTab = Math.min(root.selectedTab + 1, root.tabButtonList.length - 1)
|
|
} else if (event.key === Qt.Key_PageUp) {
|
|
root.selectedTab = Math.max(root.selectedTab - 1, 0)
|
|
}
|
|
event.accepted = true;
|
|
}
|
|
if (event.modifiers === Qt.ControlModifier) {
|
|
if (event.key === Qt.Key_Tab) {
|
|
root.selectedTab = (root.selectedTab + 1) % root.tabButtonList.length
|
|
} else if (event.key === Qt.Key_Backtab) {
|
|
root.selectedTab = (root.selectedTab - 1 + root.tabButtonList.length) % root.tabButtonList.length
|
|
}
|
|
event.accepted = true;
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
anchors.margins: 5
|
|
anchors.fill: parent
|
|
spacing: 0
|
|
|
|
PrimaryTabBar {
|
|
id: tabBar
|
|
tabButtonList: root.tabButtonList
|
|
externalTrackedTab: root.selectedTab
|
|
|
|
function onCurrentIndexChanged(currentIndex) {
|
|
root.selectedTab = currentIndex
|
|
}
|
|
}
|
|
|
|
SwipeView {
|
|
id: swipeView
|
|
Layout.topMargin: 5
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
spacing: 10
|
|
currentIndex: root.selectedTab
|
|
onCurrentIndexChanged: {
|
|
tabBar.enableIndicatorAnimation = true
|
|
root.selectedTab = currentIndex
|
|
}
|
|
|
|
clip: true
|
|
layer.enabled: true
|
|
layer.effect: OpacityMask {
|
|
maskSource: Rectangle {
|
|
width: swipeView.width
|
|
height: swipeView.height
|
|
radius: Appearance.rounding.small
|
|
}
|
|
}
|
|
|
|
NotificationList {}
|
|
VolumeMixer {}
|
|
}
|
|
}
|
|
} |