replace tabgroup

This commit is contained in:
Sam Hadow 2024-03-13 02:50:37 +01:00
parent 4177681d46
commit c67558e03b
2 changed files with 141 additions and 234 deletions

View File

@ -18,7 +18,7 @@ include(ECMOptionalAddSubdirectory)
include(FeatureSummary)
include(CheckIncludeFiles)
set(KF5_MIN_VERSION "6.0.0")
set(KF5_MIN_VERSION "5.2.0")
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
Plasma
I18n

View File

@ -22,12 +22,12 @@
import QtQuick 2.3
import org.kde.plasma.plasmoid 2.0
import QtQuick.Layouts 1.1
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.plasmoid as PlasmaCore
import org.kde.ksvg as KSvg
import org.kde.plasma.plasma5support as Plasma5Support
import org.kde.kirigami as Kirigami
import org.kde.plasma.components as PlasmaComponents
import org.kde.plasma.extras as PlasmaExtras
import org.kde.kirigami 2.20 as Kirigami
import org.kde.plasma.components 3.0 as PlasmaComponents
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.kquickcontrolsaddons 2.0
import org.kde.plasma.private.kicker 0.1 as Kicker
@ -125,274 +125,181 @@ Item {
id: mainArea
anchors.topMargin: mainTabGroup.state == "top" ? Kirigami.Units.smallSpacing : 0
PlasmaComponents.TabGroup {
id: mainTabGroup
currentTab: favoritesPage
Kirigami.Page {
id: mainPage
anchors {
fill: parent
}
// Set anchors
anchors.fill: parent
//pages
FavoritesView {
id: favoritesPage
}
PlasmaExtras.ConditionalLoader {
id: applicationsPage
when: mainTabGroup.currentTab == applicationsPage
source: Qt.resolvedUrl("ApplicationsView.qml")
}
PlasmaExtras.ConditionalLoader {
id: systemPage
when: mainTabGroup.currentTab == systemPage
source: Qt.resolvedUrl("ComputerView.qml")
}
PlasmaExtras.ConditionalLoader {
id: recentlyUsedPage
when: mainTabGroup.currentTab == recentlyUsedPage
source: Qt.resolvedUrl("RecentlyUsedView.qml")
}
PlasmaExtras.ConditionalLoader {
id: oftenUsedPage
when: mainTabGroup.currentTab == oftenUsedPage
source: Qt.resolvedUrl("OftenUsedView.qml")
}
PlasmaExtras.ConditionalLoader {
id: leavePage
when: mainTabGroup.currentTab == leavePage
source: Qt.resolvedUrl("LeaveView.qml")
}
PlasmaExtras.ConditionalLoader {
id: searchPage
when: root.state == "Search"
//when: mainTabGroup.currentTab == searchPage || root.state == "Search"
source: Qt.resolvedUrl("SearchView.qml")
}
// Create a row for the tab buttons
Kirigami.PageRow {
id: tabRow
state: {
// Set row orientation based on plasmoid location
orientation: {
switch (plasmoid.location) {
case PlasmaCore.Types.LeftEdge:
return LayoutMirroring.enabled ? "right" : "left";
case PlasmaCore.Types.TopEdge:
return "top";
case PlasmaCore.Types.RightEdge:
return LayoutMirroring.enabled ? "left" : "right";
case PlasmaCore.Types.BottomEdge:
return Qt.Horizontal
default:
return "bottom";
return Qt.Vertical
}
}
// Add tab buttons
PlasmaComponents.Button {
text: i18n("Favorites")
onClicked: mainPage.currentIndex = 0
}
PlasmaComponents.Button {
text: i18n("Applications")
onClicked: mainPage.currentIndex = 1
}
PlasmaComponents.Button {
text: i18n("Computer")
onClicked: mainPage.currentIndex = 2
}
PlasmaComponents.Button {
text: i18n("Recently Used")
onClicked: mainPage.currentIndex = 3
}
PlasmaComponents.Button {
text: i18n("Often Used")
onClicked: mainPage.currentIndex = 4
}
PlasmaComponents.Button {
text: i18n("Leave")
onClicked: mainPage.currentIndex = 5
}
PlasmaComponents.Button {
text: i18n("Search")
onClicked: root.state = "Search"
}
}
// Add pages
Kirigami.Page {
id: favoritesPage
anchors.fill: parent
visible: mainPage.currentIndex === 0
// Add contents of the Favorites view here
}
Kirigami.Page {
id: applicationsPage
anchors.fill: parent
visible: mainPage.currentIndex === 1
// Add contents of the Applications view here
}
Kirigami.Page {
id: computerPage
anchors.fill: parent
visible: mainPage.currentIndex === 2
// Add contents of the Computer view here
}
Kirigami.Page {
id: recentlyUsedPage
anchors.fill: parent
visible: mainPage.currentIndex === 3
// Add contents of the Recently Used view here
}
Kirigami.Page {
id: oftenUsedPage
anchors.fill: parent
visible: mainPage.currentIndex === 4
// Add contents of the Often Used view here
}
Kirigami.Page {
id: leavePage
anchors.fill: parent
visible: mainPage.currentIndex === 5
// Add contents of the Leave view here
}
Kirigami.Page {
id: searchPage
anchors.fill: parent
visible: root.state === "Search"
// Add contents of the Search view here
}
// Handle the plasmoid location states
states: [
State {
name: "left"
AnchorChanges {
target: header
anchors {
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
PropertyChanges {
target: tabRow
rotation: 0
}
PropertyChanges {
target: header
width: header.implicitWidth
location: PlasmaExtras.PlasmoidHeading.Location.Footer
}
AnchorChanges {
target: mainArea
target: tabRow
anchors {
left: tabBar.right
top: root.top
right: root.right
bottom: header.top
}
}
PropertyChanges {
target: tabBar
width: (tabBar.opacity == 0) ? 0 : Kirigami.Units.gridUnit * 5
}
AnchorChanges {
target: tabBar
anchors {
left: root.left
top: root.top
right: undefined
bottom: header.top
}
}
PropertyChanges {
target:tabBarSeparator
width: tabBarSeparatorLine.elementSize("vertical-line").width
elementId: "vertical-line"
}
AnchorChanges {
target: tabBarSeparator
anchors {
left: tabBar.right
top: tabBar.top
bottom:tabBar.bottom
left: parent.left
top: parent.top
bottom: parent.bottom
}
}
},
State {
name: "top"
AnchorChanges {
target: header
anchors {
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
PropertyChanges {
target: tabRow
rotation: -90
}
PropertyChanges {
target: header
height: header.implicitHeight
location: PlasmaExtras.PlasmoidHeading.Location.Footer
}
AnchorChanges {
target: mainArea
target: tabRow
anchors {
left: root.left
top: tabBar.bottom
right: root.right
bottom: header.top
}
}
PropertyChanges {
target: tabBar
height: (tabBar.opacity == 0) ? 0 : Kirigami.Units.gridUnit * 5
}
AnchorChanges {
target: tabBar
anchors {
left: root.left
top: root.top
right: root.right
bottom: undefined
}
}
PropertyChanges {
target:tabBarSeparator
height: tabBarSeparatorLine.elementSize("horizontal-line").height
elementId: "horizontal-line"
}
AnchorChanges {
target: tabBarSeparator
anchors {
left: tabBar.left
right: tabBar.right
top: tabBar.bottom
top: parent.top
left: parent.left
right: parent.right
}
}
},
State {
name: "right"
AnchorChanges {
target: header
anchors {
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
PropertyChanges {
target: tabRow
rotation: 180
}
PropertyChanges {
target: header
width: header.implicitWidth
location: PlasmaExtras.PlasmoidHeading.Location.Footer
}
AnchorChanges {
target: mainArea
target: tabRow
anchors {
left: root.left
top: root.top
right: tabBar.left
bottom: header.top
}
}
PropertyChanges {
target: tabBar
width: (tabBar.opacity == 0) ? 0 : Kirigami.Units.gridUnit * 5
}
AnchorChanges {
target: tabBar
anchors {
left: undefined
top: root.top
right: root.right
bottom: header.top
}
}
PropertyChanges {
target:tabBarSeparator
width: tabBarSeparatorLine.elementSize("vertical-line").width
elementId: "vertical-line"
}
AnchorChanges {
target: tabBarSeparator
anchors {
right: tabBar.left
top: tabBar.top
bottom: tabBar.bottom
right: parent.right
top: parent.top
bottom: parent.bottom
}
}
},
State {
name: "bottom"
AnchorChanges {
target: header
anchors {
left: root.left
top: root.top
right: root.right
bottom: undefined
}
PropertyChanges {
target: tabRow
rotation: 90
}
PropertyChanges {
target: header
height: header.implicitHeight
location: PlasmaExtras.PlasmoidHeading.Location.Header
}
AnchorChanges {
target: mainArea
target: tabRow
anchors {
left: root.left
top: header.bottom
right: root.right
bottom: tabBar.top
}
}
PropertyChanges {
target: tabBar
height: (tabBar.opacity == 0) ? 0 : Kirigami.Units.gridUnit * 5
}
AnchorChanges {
target: tabBar
anchors {
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
}
PropertyChanges {
target:tabBarSeparator
height: tabBarSeparatorLine.elementSize("horizontal-line").height
elementId: "horizontal-line"
}
AnchorChanges {
target: tabBarSeparator
anchors {
bottom: tabBar.top
left: tabBar.left
right: tabBar.right
bottom: parent.bottom
left: parent.left
right: parent.right
}
}
}
]
} // mainTabGroup
// Set initial plasmoid state
state: {
switch (plasmoid.location) {
case PlasmaCore.Types.LeftEdge:
return "left"
case PlasmaCore.Types.TopEdge:
return "top"
case PlasmaCore.Types.RightEdge:
return "right"
case PlasmaCore.Types.BottomEdge:
default:
return "bottom"
}
}
}
}
PlasmaComponents.TabBar {