mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Port the page navigation to ApplicationWindow's one
The ApplicationWindow component has an internal PageRow for the management of the application's pages, use that instead of an own StackView. Use shared components for common things in the app ListItem for the dive list Page for application pages, for correct background color and moving of the action button Signed-off-by: Marco Martin <notmart@gmail.com> Signed-off-by: Sebastian Kügler <sebas@kde.org>
This commit is contained in:
		
							parent
							
								
									3d3fce7152
								
							
						
					
					
						commit
						32219f1276
					
				
					 4 changed files with 191 additions and 190 deletions
				
			
		| 
						 | 
				
			
			@ -3,13 +3,14 @@ import QtQuick.Controls 1.2
 | 
			
		|||
import QtQuick.Controls.Styles 1.2
 | 
			
		||||
import QtQuick.Dialogs 1.2
 | 
			
		||||
import QtQuick.Layouts 1.1
 | 
			
		||||
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents
 | 
			
		||||
import org.subsurfacedivelog.mobile 1.0
 | 
			
		||||
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents
 | 
			
		||||
 | 
			
		||||
Item {
 | 
			
		||||
MobileComponents.Page {
 | 
			
		||||
	id: diveDetailsWindow
 | 
			
		||||
	width: parent.width
 | 
			
		||||
	objectName: "DiveDetails"
 | 
			
		||||
	flickable: flick
 | 
			
		||||
 | 
			
		||||
	property string location
 | 
			
		||||
	property string dive_id
 | 
			
		||||
| 
						 | 
				
			
			@ -30,120 +31,130 @@ Item {
 | 
			
		|||
	Flickable {
 | 
			
		||||
		id: flick
 | 
			
		||||
		anchors.fill: parent
 | 
			
		||||
		contentHeight: parent.height
 | 
			
		||||
		contentHeight: content.height
 | 
			
		||||
		clip: true
 | 
			
		||||
		ColumnLayout {
 | 
			
		||||
			width: parent.width
 | 
			
		||||
			spacing: 8
 | 
			
		||||
		Item {
 | 
			
		||||
			id: content
 | 
			
		||||
			width: flick.width
 | 
			
		||||
			height: contentRect.height + MobileComponents.Units.smallSpacing * 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			GridLayout {
 | 
			
		||||
				id: editorDetails
 | 
			
		||||
				width: parent.width
 | 
			
		||||
				columns: 2
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					Layout.columnSpan: 2
 | 
			
		||||
					font.pointSize: subsurfaceTheme.titlePointSize
 | 
			
		||||
					text: "Dive " + number + " (" + date + ")"
 | 
			
		||||
			ColumnLayout {
 | 
			
		||||
				anchors {
 | 
			
		||||
					left: parent.left
 | 
			
		||||
					right: parent.right
 | 
			
		||||
					top: parent.top
 | 
			
		||||
					margins: MobileComponents.Units.smallSpacing
 | 
			
		||||
				}
 | 
			
		||||
				spacing: MobileComponents.Units.smallSpacing
 | 
			
		||||
 | 
			
		||||
				Item {
 | 
			
		||||
					Layout.columnSpan: 2
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
					Layout.preferredHeight: qmlProfile.visible ? qmlProfile.height : profileHideButton.height
 | 
			
		||||
					QMLProfile {
 | 
			
		||||
						id: qmlProfile
 | 
			
		||||
						height: MobileComponents.Units.gridUnit * 25
 | 
			
		||||
						anchors {
 | 
			
		||||
							top: parent.top
 | 
			
		||||
							left: parent.left
 | 
			
		||||
							right: parent.right
 | 
			
		||||
						}
 | 
			
		||||
						//Rectangle { color: "green"; opacity: 0.4; anchors.fill: parent } // used for debugging the dive profile sizing, will be removed later
 | 
			
		||||
 | 
			
		||||
				GridLayout {
 | 
			
		||||
					id: editorDetails
 | 
			
		||||
					width: parent.width
 | 
			
		||||
					columns: 2
 | 
			
		||||
 | 
			
		||||
					MobileComponents.Heading {
 | 
			
		||||
						Layout.columnSpan: 2
 | 
			
		||||
						text: "Dive " + number + " (" + date + ")"
 | 
			
		||||
					}
 | 
			
		||||
					Button {
 | 
			
		||||
						id: profileHideButton
 | 
			
		||||
						anchors {
 | 
			
		||||
							right: parent.right
 | 
			
		||||
							top: parent.top
 | 
			
		||||
 | 
			
		||||
					Item {
 | 
			
		||||
						Layout.columnSpan: 2
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
						Layout.preferredHeight: qmlProfile.visible ? qmlProfile.height : profileHideButton.height
 | 
			
		||||
						QMLProfile {
 | 
			
		||||
							id: qmlProfile
 | 
			
		||||
							height: MobileComponents.Units.gridUnit * 25
 | 
			
		||||
							anchors {
 | 
			
		||||
								top: parent.top
 | 
			
		||||
								left: parent.left
 | 
			
		||||
								right: parent.right
 | 
			
		||||
							}
 | 
			
		||||
							//Rectangle { color: "green"; opacity: 0.4; anchors.fill: parent } // used for debugging the dive profile sizing, will be removed later
 | 
			
		||||
						}
 | 
			
		||||
						text: "Hide Dive Profile"
 | 
			
		||||
						onClicked: {
 | 
			
		||||
							qmlProfile.visible = !qmlProfile.visible
 | 
			
		||||
							if (qmlProfile.visible) {
 | 
			
		||||
								text = "Hide Dive Profile"
 | 
			
		||||
							} else {
 | 
			
		||||
								text = "Show Dive Profile"
 | 
			
		||||
						Button {
 | 
			
		||||
							id: profileHideButton
 | 
			
		||||
							anchors {
 | 
			
		||||
								right: parent.right
 | 
			
		||||
								top: parent.top
 | 
			
		||||
							}
 | 
			
		||||
							text: "Hide Dive Profile"
 | 
			
		||||
							onClicked: {
 | 
			
		||||
								qmlProfile.visible = !qmlProfile.visible
 | 
			
		||||
								if (qmlProfile.visible) {
 | 
			
		||||
									text = "Hide Dive Profile"
 | 
			
		||||
								} else {
 | 
			
		||||
									text = "Show Dive Profile"
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Location:"
 | 
			
		||||
				}
 | 
			
		||||
				TextField {
 | 
			
		||||
					id: txtLocation; text: location;
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
				}
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Location:"
 | 
			
		||||
					}
 | 
			
		||||
					TextField {
 | 
			
		||||
						id: txtLocation; text: location;
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Air Temp:"
 | 
			
		||||
				}
 | 
			
		||||
				TextField {
 | 
			
		||||
					id: txtAirTemp
 | 
			
		||||
					text: airtemp
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
				}
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Air Temp:"
 | 
			
		||||
					}
 | 
			
		||||
					TextField {
 | 
			
		||||
						id: txtAirTemp
 | 
			
		||||
						text: airtemp
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Water Temp:"
 | 
			
		||||
				}
 | 
			
		||||
				TextField {
 | 
			
		||||
					id: txtWaterTemp
 | 
			
		||||
					text: watertemp
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
				}
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Water Temp:"
 | 
			
		||||
					}
 | 
			
		||||
					TextField {
 | 
			
		||||
						id: txtWaterTemp
 | 
			
		||||
						text: watertemp
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Suit:"
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Suit:"
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
				TextField {
 | 
			
		||||
					id: txtSuit
 | 
			
		||||
					text: suit
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
				}
 | 
			
		||||
					}
 | 
			
		||||
					TextField {
 | 
			
		||||
						id: txtSuit
 | 
			
		||||
						text: suit
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Buddy:"
 | 
			
		||||
				}
 | 
			
		||||
				TextField {
 | 
			
		||||
					id: txtBuddy
 | 
			
		||||
					text: buddy
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
				}
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Buddy:"
 | 
			
		||||
					}
 | 
			
		||||
					TextField {
 | 
			
		||||
						id: txtBuddy
 | 
			
		||||
						text: buddy
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Dive Master:"
 | 
			
		||||
				}
 | 
			
		||||
				TextField {
 | 
			
		||||
					id: txtDiveMaster
 | 
			
		||||
					text: divemaster
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
				}
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Dive Master:"
 | 
			
		||||
					}
 | 
			
		||||
					TextField {
 | 
			
		||||
						id: txtDiveMaster
 | 
			
		||||
						text: divemaster
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				Label {
 | 
			
		||||
					text: "Notes:"
 | 
			
		||||
				}
 | 
			
		||||
				TextEdit{
 | 
			
		||||
					id: txtNotes
 | 
			
		||||
					text: notes
 | 
			
		||||
					focus: true
 | 
			
		||||
					Layout.fillWidth: true
 | 
			
		||||
					Layout.fillHeight: true
 | 
			
		||||
					selectByMouse: true
 | 
			
		||||
					wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
 | 
			
		||||
					Label {
 | 
			
		||||
						text: "Notes:"
 | 
			
		||||
					}
 | 
			
		||||
					TextEdit{
 | 
			
		||||
						id: txtNotes
 | 
			
		||||
						text: notes
 | 
			
		||||
						focus: true
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
						Layout.fillHeight: true
 | 
			
		||||
						selectByMouse: true
 | 
			
		||||
						wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,37 +6,37 @@ import QtQuick.Dialogs 1.2
 | 
			
		|||
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents
 | 
			
		||||
import org.subsurfacedivelog.mobile 1.0
 | 
			
		||||
 | 
			
		||||
Rectangle {
 | 
			
		||||
MobileComponents.Page {
 | 
			
		||||
	id: page
 | 
			
		||||
	objectName: "DiveList"
 | 
			
		||||
	color: MobileComponents.Theme.viewBackgroundColor
 | 
			
		||||
	flickable: diveListView
 | 
			
		||||
 | 
			
		||||
	Component {
 | 
			
		||||
		id: diveDelegate
 | 
			
		||||
		Item {
 | 
			
		||||
		MobileComponents.ListItem {
 | 
			
		||||
			id: dive
 | 
			
		||||
			enabled: true
 | 
			
		||||
			checked: diveListView.currentIndex == model.index
 | 
			
		||||
 | 
			
		||||
			property real detailsOpacity : 0
 | 
			
		||||
 | 
			
		||||
			width: diveListView.width - MobileComponents.Units.smallSpacing
 | 
			
		||||
			height: childrenRect.height
 | 
			
		||||
			//When clicked, the mode changes to details view
 | 
			
		||||
 | 
			
		||||
			//Mouse region: When clicked, the mode changes to details view
 | 
			
		||||
			MouseArea {
 | 
			
		||||
				anchors.fill: parent
 | 
			
		||||
				onClicked: {
 | 
			
		||||
					detailsWindow.width = parent.width
 | 
			
		||||
					detailsWindow.location = location
 | 
			
		||||
					detailsWindow.dive_id = id
 | 
			
		||||
					detailsWindow.buddy = buddy
 | 
			
		||||
					detailsWindow.suit = suit
 | 
			
		||||
					detailsWindow.airtemp = airtemp
 | 
			
		||||
					detailsWindow.watertemp = watertemp
 | 
			
		||||
					detailsWindow.divemaster = divemaster
 | 
			
		||||
					detailsWindow.notes = notes
 | 
			
		||||
					detailsWindow.number = diveNumber
 | 
			
		||||
					detailsWindow.date = date
 | 
			
		||||
					stackView.push(detailsWindow)
 | 
			
		||||
				}
 | 
			
		||||
			onClicked: {
 | 
			
		||||
				diveListView.currentIndex = model.index
 | 
			
		||||
				detailsWindow.width = parent.width
 | 
			
		||||
				detailsWindow.location = location
 | 
			
		||||
				detailsWindow.dive_id = id
 | 
			
		||||
				detailsWindow.buddy = buddy
 | 
			
		||||
				detailsWindow.suit = suit
 | 
			
		||||
				detailsWindow.airtemp = airtemp
 | 
			
		||||
				detailsWindow.watertemp = watertemp
 | 
			
		||||
				detailsWindow.divemaster = divemaster
 | 
			
		||||
				detailsWindow.notes = notes
 | 
			
		||||
				detailsWindow.number = diveNumber
 | 
			
		||||
				detailsWindow.date = date
 | 
			
		||||
				stackView.push(detailsWindow)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			//Layout of the page: (mini profile, dive no, date at the top
 | 
			
		||||
| 
						 | 
				
			
			@ -115,17 +115,6 @@ Rectangle {
 | 
			
		|||
						top: locationText.bottom
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				//Text { text: location; width: parent.width }
 | 
			
		||||
				Rectangle {
 | 
			
		||||
					color: MobileComponents.Theme.textColor
 | 
			
		||||
					opacity: .2
 | 
			
		||||
					height: Math.max(1, MobileComponents.Units.gridUnit / 24) // we really want a thin line
 | 
			
		||||
					anchors {
 | 
			
		||||
						left: parent.left
 | 
			
		||||
						right: parent.right
 | 
			
		||||
						top: numberText.bottom
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +125,7 @@ Rectangle {
 | 
			
		|||
			width: page.width - MobileComponents.Units.smallSpacing * 2
 | 
			
		||||
			height: childrenRect.height + MobileComponents.Units.smallSpacing * 2
 | 
			
		||||
 | 
			
		||||
			Text {
 | 
			
		||||
			MobileComponents.Heading {
 | 
			
		||||
				id: sectionText
 | 
			
		||||
				text: section
 | 
			
		||||
				anchors {
 | 
			
		||||
| 
						 | 
				
			
			@ -145,8 +134,7 @@ Rectangle {
 | 
			
		|||
					leftMargin: MobileComponents.Units.smallSpacing
 | 
			
		||||
					right: parent.right
 | 
			
		||||
				}
 | 
			
		||||
				color: MobileComponents.Theme.textColor
 | 
			
		||||
				font.pointSize: 16
 | 
			
		||||
				level: 2
 | 
			
		||||
			}
 | 
			
		||||
			Rectangle {
 | 
			
		||||
				height: Math.max(2, MobileComponents.Units.gridUnit / 12) // we want a thicker line
 | 
			
		||||
| 
						 | 
				
			
			@ -161,18 +149,30 @@ Rectangle {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ListView {
 | 
			
		||||
		id: diveListView
 | 
			
		||||
	Connections {
 | 
			
		||||
		target: stackView
 | 
			
		||||
		onDepthChanged: {
 | 
			
		||||
			if (stackView.depth == 1) {
 | 
			
		||||
				diveListView.currentIndex = -1;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ScrollView {
 | 
			
		||||
		anchors.fill: parent
 | 
			
		||||
		model: diveModel
 | 
			
		||||
		delegate: diveDelegate
 | 
			
		||||
		boundsBehavior: Flickable.StopAtBounds
 | 
			
		||||
		//highlight: Rectangle { color: MobileComponents.Theme.highlightColor; width: MobileComponents.Units.smallSpacing }
 | 
			
		||||
		focus: true
 | 
			
		||||
		clip: true
 | 
			
		||||
		section.property: "trip"
 | 
			
		||||
		section.criteria: ViewSection.FullString
 | 
			
		||||
		section.delegate: tripHeading
 | 
			
		||||
		ListView {
 | 
			
		||||
			id: diveListView
 | 
			
		||||
			anchors.fill: parent
 | 
			
		||||
			model: diveModel
 | 
			
		||||
			currentIndex: -1
 | 
			
		||||
			delegate: diveDelegate
 | 
			
		||||
			boundsBehavior: Flickable.StopAtBounds
 | 
			
		||||
			//highlight: Rectangle { color: MobileComponents.Theme.highlightColor; width: MobileComponents.Units.smallSpacing }
 | 
			
		||||
			focus: true
 | 
			
		||||
			clip: true
 | 
			
		||||
			section.property: "trip"
 | 
			
		||||
			section.criteria: ViewSection.FullString
 | 
			
		||||
			section.delegate: tripHeading
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	StartPage {
 | 
			
		||||
		anchors.fill: parent
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -202,57 +202,46 @@ MobileComponents.ApplicationWindow {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ColumnLayout {
 | 
			
		||||
		anchors.fill: parent
 | 
			
		||||
	toolBar: TopBar {
 | 
			
		||||
		width: parent.width
 | 
			
		||||
		height: Layout.minimumHeight
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		TopBar {
 | 
			
		||||
	property Item stackView: pageStack
 | 
			
		||||
	initialPage: Item {
 | 
			
		||||
		width: parent.width
 | 
			
		||||
		height: parent.height
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
		ColumnLayout {
 | 
			
		||||
			id: awLayout
 | 
			
		||||
			anchors.fill: parent
 | 
			
		||||
			spacing: MobileComponents.Units.gridUnit / 2
 | 
			
		||||
 | 
			
		||||
		StackView {
 | 
			
		||||
			id: stackView
 | 
			
		||||
			Layout.preferredWidth: parent.width
 | 
			
		||||
			Layout.fillHeight: true
 | 
			
		||||
			focus: true
 | 
			
		||||
			Keys.onReleased: if (event.key == Qt.Key_Back && stackView.depth > 1) {
 | 
			
		||||
						stackView.pop()
 | 
			
		||||
						event.accepted = true;
 | 
			
		||||
					}
 | 
			
		||||
			initialItem: Item {
 | 
			
		||||
				width: parent.width
 | 
			
		||||
				height: parent.height
 | 
			
		||||
			Rectangle {
 | 
			
		||||
				id: detailsPage
 | 
			
		||||
				Layout.fillHeight: true
 | 
			
		||||
				Layout.fillWidth: true
 | 
			
		||||
 | 
			
		||||
				ColumnLayout {
 | 
			
		||||
					id: awLayout
 | 
			
		||||
					anchors.fill: parent
 | 
			
		||||
					spacing: MobileComponents.Units.gridUnit / 2
 | 
			
		||||
				DiveList {
 | 
			
		||||
					anchors.fill: detailsPage
 | 
			
		||||
					id: diveDetails
 | 
			
		||||
					color: MobileComponents.Theme.backgroundColor
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
					Rectangle {
 | 
			
		||||
						id: detailsPage
 | 
			
		||||
						Layout.fillHeight: true
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
 | 
			
		||||
						DiveList {
 | 
			
		||||
							anchors.fill: detailsPage
 | 
			
		||||
							id: diveDetails
 | 
			
		||||
							color: MobileComponents.Theme.backgroundColor
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
			Rectangle {
 | 
			
		||||
				id: messageArea
 | 
			
		||||
				height: childrenRect.height
 | 
			
		||||
				Layout.fillWidth: true
 | 
			
		||||
				color: MobileComponents.Theme.backgroundColor
 | 
			
		||||
 | 
			
		||||
					Rectangle {
 | 
			
		||||
						id: messageArea
 | 
			
		||||
						height: childrenRect.height
 | 
			
		||||
						Layout.fillWidth: true
 | 
			
		||||
						color: MobileComponents.Theme.backgroundColor
 | 
			
		||||
 | 
			
		||||
						Text {
 | 
			
		||||
							id: message
 | 
			
		||||
							color: MobileComponents.Theme.textColor
 | 
			
		||||
							wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
 | 
			
		||||
							styleColor: MobileComponents.Theme.textColor
 | 
			
		||||
							font.pointSize: subsurfaceTheme.smallPointSize
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				Text {
 | 
			
		||||
					id: message
 | 
			
		||||
					color: MobileComponents.Theme.textColor
 | 
			
		||||
					wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
 | 
			
		||||
					styleColor: MobileComponents.Theme.textColor
 | 
			
		||||
					font.pointSize: MobileComponents.Units.smallPointSize
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
		<file alias="org/kde/plasma/mobilecomponents/ActionGroup.qml">mobilecomponents/ActionGroup.qml</file>
 | 
			
		||||
		<file alias="org/kde/plasma/mobilecomponents/ApplicationWindow.qml">mobilecomponents/ApplicationWindow.qml</file>
 | 
			
		||||
		<file alias="org/kde/plasma/mobilecomponents/GlobalDrawer.qml">mobilecomponents/GlobalDrawer.qml</file>
 | 
			
		||||
		<file alias="org/kde/plasma/mobilecomponents/Page.qml">mobilecomponents/Page.qml</file>
 | 
			
		||||
		<file alias="org/kde/plasma/mobilecomponents/Icon.qml">mobilecomponents/Icon.qml</file>
 | 
			
		||||
		<file alias="org/kde/plasma/mobilecomponents/Heading.qml">mobilecomponents/Heading.qml</file>
 | 
			
		||||
		<file alias="org/kde/plasma/mobilecomponents/PageRow.qml">mobilecomponents/PageRow.qml</file>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue