Compare commits

..

No commits in common. "8cdb49bd832bc3933b8931d78c1789b4455505d0" and "e56994955c2e84d60e1068d492ef1a02e08408ed" have entirely different histories.

2 changed files with 143 additions and 239 deletions

View File

@ -19,9 +19,6 @@
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
// module "org.kde.plasma.components" version 2.0 is not installed
import QtQuick 2.3 import QtQuick 2.3
import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.plasmoid 2.0
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
@ -29,7 +26,7 @@ import org.kde.plasma.plasmoid as PlasmaCore
import org.kde.ksvg as KSvg import org.kde.ksvg as KSvg
import org.kde.plasma.plasma5support as Plasma5Support import org.kde.plasma.plasma5support as Plasma5Support
import org.kde.kirigami 2.20 as Kirigami import org.kde.kirigami 2.20 as Kirigami
import org.kde.plasma.components as PlasmaComponents import org.kde.plasma.components 3.0 as PlasmaComponents
import org.kde.plasma.extras 2.0 as PlasmaExtras import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.kquickcontrolsaddons 2.0 import org.kde.kquickcontrolsaddons 2.0
@ -128,279 +125,187 @@ Item {
id: mainArea id: mainArea
anchors.topMargin: mainTabGroup.state == "top" ? Kirigami.Units.smallSpacing : 0 anchors.topMargin: mainTabGroup.state == "top" ? Kirigami.Units.smallSpacing : 0
PlasmaComponents.TabGroup { Kirigami.Page {
id: mainTabGroup id: mainPage
currentTab: favoritesPage
anchors { // Set anchors
fill: parent anchors.fill: parent
}
//pages // Create a row for the tab buttons
FavoritesView { Kirigami.PageRow {
id: favoritesPage id: tabRow
}
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")
}
state: { // Set row orientation based on plasmoid location
switch (plasmoid.location) { orientation: {
case PlasmaCore.Types.LeftEdge: switch (plasmoid.location) {
return LayoutMirroring.enabled ? "right" : "left"; case PlasmaCore.Types.LeftEdge:
case PlasmaCore.Types.TopEdge: case PlasmaCore.Types.RightEdge:
return "top"; return Qt.Horizontal
case PlasmaCore.Types.RightEdge: default:
return LayoutMirroring.enabled ? "left" : "right"; return Qt.Vertical
case PlasmaCore.Types.BottomEdge: }
default: }
return "bottom";
// 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: [ states: [
State { State {
name: "left" name: "left"
AnchorChanges { PropertyChanges {
target: header target: tabRow
anchors { rotation: 0
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
} }
PropertyChanges { PropertyChanges {
target: header target: tabRow
width: header.implicitWidth
location: PlasmaExtras.PlasmoidHeading.Location.Footer
}
AnchorChanges {
target: mainArea
anchors { anchors {
left: tabBar.right left: parent.left
top: root.top top: parent.top
right: root.right bottom: parent.bottom
bottom: header.top
}
}
PropertyChanges {
target: tabBar
width: (tabBar.opacity == 0) ? 0 : PlasmaCore.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
} }
} }
}, },
State { State {
name: "top" name: "top"
AnchorChanges { PropertyChanges {
target: header target: tabRow
anchors { rotation: -90
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
} }
PropertyChanges { PropertyChanges {
target: header target: tabRow
height: header.implicitHeight
location: PlasmaExtras.PlasmoidHeading.Location.Footer
}
AnchorChanges {
target: mainArea
anchors { anchors {
left: root.left top: parent.top
top: tabBar.bottom left: parent.left
right: root.right right: parent.right
bottom: header.top
}
}
PropertyChanges {
target: tabBar
height: (tabBar.opacity == 0) ? 0 : PlasmaCore.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
} }
} }
}, },
State { State {
name: "right" name: "right"
AnchorChanges { PropertyChanges {
target: header target: tabRow
anchors { rotation: 180
left: root.left
top: undefined
right: root.right
bottom: root.bottom
}
} }
PropertyChanges { PropertyChanges {
target: header target: tabRow
width: header.implicitWidth
location: PlasmaExtras.PlasmoidHeading.Location.Footer
}
AnchorChanges {
target: mainArea
anchors { anchors {
left: root.left right: parent.right
top: root.top top: parent.top
right: tabBar.left bottom: parent.bottom
bottom: header.top
}
}
PropertyChanges {
target: tabBar
width: (tabBar.opacity == 0) ? 0 : PlasmaCore.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
} }
} }
}, },
State { State {
name: "bottom" name: "bottom"
AnchorChanges { PropertyChanges {
target: header target: tabRow
anchors { rotation: 90
left: root.left
top: root.top
right: root.right
bottom: undefined
}
} }
PropertyChanges { PropertyChanges {
target: header target: tabRow
height: header.implicitHeight
location: PlasmaExtras.PlasmoidHeading.Location.Header
}
AnchorChanges {
target: mainArea
anchors { anchors {
left: root.left bottom: parent.bottom
top: header.bottom left: parent.left
right: root.right right: parent.right
bottom: tabBar.top
}
}
PropertyChanges {
target: tabBar
height: (tabBar.opacity == 0) ? 0 : PlasmaCore.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
} }
} }
} }
] ]
} // 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 { PlasmaComponents.TabBar {
id: tabBar id: tabBar
count: 5 // updated in createButtons()
property int count: 5 // updated in createButtons()
Behavior on width { Behavior on width {
NumberAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InQuad; } NumberAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InQuad; }

View File

@ -23,14 +23,13 @@ import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.plasma.components 3.0 as PlasmaComponents import org.kde.plasma.components 3.0 as PlasmaComponents
import org.kde.plasma.extras as PlasmaExtras import org.kde.plasma.extras as PlasmaExtras
import org.kde.coreaddons 1.0 as KCoreAddons import org.kde.kcoreaddons 1.0 as KCoreAddons
// While using Kirigami in applets is normally a no, we // While using Kirigami in applets is normally a no, we
// use Avatar, which doesn't need to read the colour scheme // use Avatar, which doesn't need to read the colour scheme
// at all to function, so there won't be any oddities with colours. // at all to function, so there won't be any oddities with colours.
import org.kde.kirigami 2.20 as Kirigami import org.kde.kirigami 2.13 as Kirigami
import org.kde.kirigamiaddons.components as KirigamiAddons
import org.kde.kquickcontrolsaddons 2.0 import org.kde.kquickcontrolsaddons 2.0
import Qt5Compat.GraphicalEffects 1.0 import QtGraphicalEffects 1.0
PlasmaExtras.PlasmoidHeading { PlasmaExtras.PlasmoidHeading {
id: header id: header
@ -82,7 +81,7 @@ PlasmaExtras.PlasmoidHeading {
Layout.preferredWidth: Kirigami.Units.gridUnit * 3 Layout.preferredWidth: Kirigami.Units.gridUnit * 3
Layout.preferredHeight: Kirigami.Units.gridUnit * 3 Layout.preferredHeight: Kirigami.Units.gridUnit * 3
KirigamiAddons.Avatar { Kirigami.Avatar {
source: kuser.faceIconUrl source: kuser.faceIconUrl
name: nameLabel name: nameLabel
anchors { anchors {