diff --git a/CMakeLists.txt b/CMakeLists.txt index db5e2b2..28a0137 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/package/contents/ui/FullRepresentation.qml b/package/contents/ui/FullRepresentation.qml index fdb6c63..c983892 100644 --- a/package/contents/ui/FullRepresentation.qml +++ b/package/contents/ui/FullRepresentation.qml @@ -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: { - 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: - default: - return "bottom"; + // Set row orientation based on plasmoid location + orientation: { + switch (plasmoid.location) { + case PlasmaCore.Types.LeftEdge: + case PlasmaCore.Types.RightEdge: + return Qt.Horizontal + default: + 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 {