import QtQuick 2.4
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import QtQuick.Window 2.2
import org.subsurfacedivelog.mobile 1.0
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents

MobileComponents.ApplicationWindow {
	title: qsTr("Subsurface mobile")
	property bool fullscreen: true
	property alias messageText: message.text

	FontMetrics {
		id: fontMetrics
	}

	visible: true

	globalDrawer: MobileComponents.GlobalDrawer{
		title: "Subsurface"
		titleIcon: "qrc:/qml/subsurface-mobile-icon.png"

		bannerImageSource: "dive.jpg"
		actions: [
		Action {
			text: "Preferences"
			onTriggered: {
				stackView.push(prefsWindow)
			}
		},

		Action {
			text: "Load Dives"
			onTriggered: {
				manager.loadDives();
			}
		},

		Action {
			text: "Download Dives"
			onTriggered: {
				stackView.push(downloadDivesWindow)
			}
		},

		Action {
			text: "Add Dive"
			onTriggered: {
				manager.addDive();
				stackView.push(detailsWindow)
			}
		},

		Action {
			text: "Save Changes"
			onTriggered: {
				manager.saveChanges();
			}
		},

		MobileComponents.ActionGroup {
			text: "GPS"
			Action {
			text: "Run location service"
			checkable: true
			checked: manager.locationServiceEnabled
			onToggled: {
				manager.locationServiceEnabled = checked;
			}
		}
		Action {
				text: "Apply GPS data to dives"
				onTriggered: {
						manager.applyGpsData();
				}
		}

		Action {
				text: "Send GPS data to server"
				onTriggered: {
						manager.sendGpsData();
				}
		}

		Action {
				text: "Clear stored GPS data"
				onTriggered: {
						manager.clearGpsData();
				}
		}
	},

		Action {
			text: "View Log"
			onTriggered: {
				stackView.push(logWindow)
			}
		},

		Action {
			text: "Theme Information"
			onTriggered: {
				stackView.push(themetest)
			}
		}
            ]
	}

	QtObject {
		id: subsurfaceTheme
		property int titlePointSize: Math.round(fontMetrics.font.pointSize * 1.5)
		property int smallPointSize: Math.round(fontMetrics.font.pointSize * 0.7)
		property color accentColor: "#2d5b9a"
		property color accentTextColor: "#ececec"
	}

	Menu {
		id: prefsMenu
		title: "Menu"

		MenuItem {
			text: "Preferences"
			onTriggered: {
				stackView.push(prefsWindow)
			}
		}

		MenuItem {
			text: "Load Dives"
			onTriggered: {
				manager.loadDives();
			}
		}

		MenuItem {
			text: "Download Dives"
			onTriggered: {
				stackView.push(downloadDivesWindow)
			}
		}

		MenuItem {
			text: "Add Dive"
			onTriggered: {
				manager.addDive();
				stackView.push(detailsWindow)
			}
		}

		MenuItem {
			text: "Save Changes"
			onTriggered: {
				manager.saveChanges();
			}
		}

		MenuItem {
			text: "Run location service"
			checkable: true
			checked: manager.locationServiceEnabled
			onToggled: {
				manager.locationServiceEnabled = checked;
			}
		}

		MenuItem {
			text: "Apply GPS data to dives"
			onTriggered: {
				manager.applyGpsData();
			}
		}

		MenuItem {
			text: "Send GPS data to server"
			onTriggered: {
				manager.sendGpsData();
			}
		}

		MenuItem {
			text: "Clear stored GPS data"
			onTriggered: {
				manager.clearGpsData();
			}
		}

		MenuItem {
			text: "View Log"
			onTriggered: {
				stackView.push(logWindow)
			}
		}

		MenuItem {
			text: "Theme Information"
			onTriggered: {
				stackView.push(themetest)
			}
		}
	}

	toolBar: TopBar {
		width: parent.width
		height: Layout.minimumHeight
	}

	property Item stackView: pageStack
	initialPage: Item {
		width: parent.width
		height: parent.height

		ColumnLayout {
			id: awLayout
			anchors.fill: parent
			spacing: MobileComponents.Units.gridUnit / 2

			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

				Text {
					id: message
					color: MobileComponents.Theme.textColor
					wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
					styleColor: MobileComponents.Theme.textColor
					font.pointSize: MobileComponents.Units.smallPointSize
				}
			}
		}
	}

	QMLManager {
		id: manager
	}

	Preferences {
		id: prefsWindow
		visible: false
	}

	DiveDetails {
		id: detailsWindow
		visible: false
	}

	DownloadFromDiveComputer {
		id: downloadDivesWindow
		visible: false
	}

	Log {
		id: logWindow
		visible: false
	}

	ThemeTest {
		id: themetest
		visible: false
	}

	Component.onCompleted: {
		print("MobileComponents.Units.gridUnit is: " + MobileComponents.Units.gridUnit);
	}
}