mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	- fix spacing and sizing in TopBar - use an anchor layout for the delegate and split out labels and values: this allows more uniform alignment - add the subsurface mobile icon to the first page - various visual touch-ups to taste Signed-off-by: Sebastian Kügler <sebas@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
		
			
				
	
	
		
			170 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
import QtQuick 2.3
 | 
						|
import QtQuick.Controls 1.2
 | 
						|
import QtQuick.Window 2.2
 | 
						|
import QtQuick.Dialogs 1.2
 | 
						|
import org.subsurfacedivelog.mobile 1.0
 | 
						|
import QtQuick.Layouts 1.0
 | 
						|
 | 
						|
Rectangle {
 | 
						|
	id: page
 | 
						|
	objectName: "DiveList"
 | 
						|
 | 
						|
	Component {
 | 
						|
		id: diveDelegate
 | 
						|
		Item {
 | 
						|
			id: dive
 | 
						|
 | 
						|
			property real detailsOpacity : 0
 | 
						|
 | 
						|
			width: diveListView.width - units.spacing
 | 
						|
			height: childrenRect.height
 | 
						|
 | 
						|
			//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)
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			//Layout of the page: (mini profile, dive no, date at the top
 | 
						|
			//And other details at the bottom.
 | 
						|
			Item {
 | 
						|
				x: units.spacing
 | 
						|
				width: parent.width - units.spacing * 2
 | 
						|
				height: childrenRect.height + units.spacing * 2
 | 
						|
				//spacing: units.spacing / 2
 | 
						|
				anchors.margins: units.spacing
 | 
						|
 | 
						|
				Text {
 | 
						|
					id: locationText
 | 
						|
					text: location
 | 
						|
					color: theme.textColor
 | 
						|
					scale: 1.1 // Let's see how this works, otherwise, we'll need the default point size somewhere
 | 
						|
					transformOrigin: Item.TopLeft
 | 
						|
					anchors {
 | 
						|
						left: parent.left
 | 
						|
						top: parent.top
 | 
						|
					}
 | 
						|
				}
 | 
						|
				Text {
 | 
						|
					text: date
 | 
						|
					opacity: 0.6
 | 
						|
					color: theme.textColor
 | 
						|
					anchors {
 | 
						|
						right: parent.right
 | 
						|
						top: parent.top
 | 
						|
						bottomMargin: units.spacing / 2
 | 
						|
					}
 | 
						|
				}
 | 
						|
				Row {
 | 
						|
					id: descriptionText
 | 
						|
					anchors {
 | 
						|
						left: parent.left
 | 
						|
						right: parent.right
 | 
						|
						bottom: numberText.bottom
 | 
						|
					}
 | 
						|
					Text {
 | 
						|
						text: 'Depth: '
 | 
						|
						opacity: 0.6
 | 
						|
						color: theme.textColor
 | 
						|
					}
 | 
						|
					Text {
 | 
						|
						text: depth
 | 
						|
						width: Math.max(units.gridUnit * 3, paintedWidth) // helps vertical alignment throughout listview
 | 
						|
						color: theme.textColor
 | 
						|
					}
 | 
						|
					Text {
 | 
						|
						text: 'Duration: '
 | 
						|
						opacity: 0.6
 | 
						|
						color: theme.textColor
 | 
						|
					}
 | 
						|
					Text {
 | 
						|
						text: duration
 | 
						|
						color: theme.textColor
 | 
						|
					}
 | 
						|
				}
 | 
						|
				Text {
 | 
						|
					id: numberText
 | 
						|
					text: "#" + diveNumber
 | 
						|
					color: theme.textColor
 | 
						|
					scale: 1.2
 | 
						|
					transformOrigin: Item.BottomRight
 | 
						|
					opacity: 0.4
 | 
						|
					anchors {
 | 
						|
						right: parent.right
 | 
						|
						topMargin: units.spacing
 | 
						|
						top: locationText.bottom
 | 
						|
					}
 | 
						|
				}
 | 
						|
				//Text { text: location; width: parent.width }
 | 
						|
				Rectangle {
 | 
						|
					color: theme.textColor
 | 
						|
					opacity: .2
 | 
						|
					height: Math.max(1, units.gridUnit / 24) // we really want a thin line
 | 
						|
					anchors {
 | 
						|
						left: parent.left
 | 
						|
						right: parent.right
 | 
						|
						top: numberText.bottom
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	Component {
 | 
						|
		id: tripHeading
 | 
						|
		Item {
 | 
						|
			width: page.width - units.spacing * 2
 | 
						|
			height: childrenRect.height + units.spacing * 2
 | 
						|
 | 
						|
			Text {
 | 
						|
				id: sectionText
 | 
						|
				text: section
 | 
						|
				anchors {
 | 
						|
					top: parent.top
 | 
						|
					left: parent.left
 | 
						|
					leftMargin: units.spacing
 | 
						|
					right: parent.right
 | 
						|
				}
 | 
						|
				color: theme.textColor
 | 
						|
				font.pointSize: 16
 | 
						|
			}
 | 
						|
			Rectangle {
 | 
						|
				height: Math.max(2, units.gridUnit / 12) // we want a thicker line
 | 
						|
				anchors {
 | 
						|
					top: sectionText.bottom
 | 
						|
					left: parent.left
 | 
						|
					leftMargin: units.spacing
 | 
						|
					right: parent.right
 | 
						|
				}
 | 
						|
				color: theme.accentColor
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	ListView {
 | 
						|
		id: diveListView
 | 
						|
		anchors.fill: parent
 | 
						|
		model: diveModel
 | 
						|
		delegate: diveDelegate
 | 
						|
		boundsBehavior: Flickable.StopAtBounds
 | 
						|
		//highlight: Rectangle { color: theme.highlightColor; width: units.spacing }
 | 
						|
		focus: true
 | 
						|
		clip: true
 | 
						|
		section.property: "trip"
 | 
						|
		section.criteria: ViewSection.FullString
 | 
						|
		section.delegate: tripHeading
 | 
						|
	}
 | 
						|
}
 |