396 lines
12 KiB
QML
396 lines
12 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import QtQuick.Shapes
|
|
|
|
import PageEnum 1.0
|
|
import Style 1.0
|
|
|
|
import "./"
|
|
import "../Controls2"
|
|
import "../Controls2/TextTypes"
|
|
import "../Config"
|
|
import "../Components"
|
|
|
|
PageType {
|
|
id: root
|
|
|
|
property bool isControlsDisabled: false
|
|
property bool isTabBarDisabled: false
|
|
|
|
Connections {
|
|
objectName: "pageControllerConnection"
|
|
|
|
target: PageController
|
|
|
|
function onGoToPageHome() {
|
|
if (PageController.isStartPageVisible()) {
|
|
tabBar.visible = false
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageSetupWizardStart)
|
|
} else {
|
|
tabBar.visible = true
|
|
tabBar.setCurrentIndex(0)
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageHome)
|
|
}
|
|
}
|
|
|
|
function onGoToPageSettings() {
|
|
tabBar.setCurrentIndex(2)
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageSettings)
|
|
}
|
|
|
|
function onGoToPageViewConfig() {
|
|
var pagePath = PageController.getPagePath(PageEnum.PageSetupWizardViewConfig)
|
|
tabBarStackView.push(pagePath, { "objectName" : pagePath }, StackView.PushTransition)
|
|
}
|
|
|
|
function onDisableControls(disabled) {
|
|
isControlsDisabled = disabled
|
|
}
|
|
|
|
function onDisableTabBar(disabled) {
|
|
isTabBarDisabled = disabled
|
|
}
|
|
|
|
function onClosePage() {
|
|
if (tabBarStackView.depth <= 1) {
|
|
PageController.hideWindow()
|
|
return
|
|
}
|
|
tabBarStackView.pop()
|
|
}
|
|
|
|
function onGoToPage(page, slide) {
|
|
var pagePath = PageController.getPagePath(page)
|
|
|
|
if (slide) {
|
|
tabBarStackView.push(pagePath, { "objectName" : pagePath }, StackView.PushTransition)
|
|
} else {
|
|
tabBarStackView.push(pagePath, { "objectName" : pagePath }, StackView.Immediate)
|
|
}
|
|
}
|
|
|
|
function onGoToStartPage() {
|
|
while (tabBarStackView.depth > 1) {
|
|
tabBarStackView.pop()
|
|
}
|
|
}
|
|
|
|
function onEscapePressed() {
|
|
if (root.isControlsDisabled || root.isTabBarDisabled) {
|
|
return
|
|
}
|
|
|
|
var pageName = tabBarStackView.currentItem.objectName
|
|
if ((pageName === PageController.getPagePath(PageEnum.PageShare)) ||
|
|
(pageName === PageController.getPagePath(PageEnum.PageSettings)) ||
|
|
(pageName === PageController.getPagePath(PageEnum.PageSetupWizardConfigSource))) {
|
|
PageController.goToPageHome()
|
|
} else {
|
|
PageController.closePage()
|
|
}
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
objectName: "installControllerConnections"
|
|
|
|
target: InstallController
|
|
|
|
function onInstallationErrorOccurred(error) {
|
|
PageController.showBusyIndicator(false)
|
|
|
|
PageController.showErrorMessage(error)
|
|
|
|
var needCloseCurrentPage = false
|
|
var currentPageName = tabBarStackView.currentItem.objectName
|
|
|
|
if (currentPageName === PageController.getPagePath(PageEnum.PageSetupWizardInstalling)) {
|
|
needCloseCurrentPage = true
|
|
} else if (currentPageName === PageController.getPagePath(PageEnum.PageDeinstalling)) {
|
|
needCloseCurrentPage = true
|
|
}
|
|
if (needCloseCurrentPage) {
|
|
PageController.closePage()
|
|
}
|
|
}
|
|
|
|
function onWrongInstallationUser(message) {
|
|
onInstallationErrorOccurred(message)
|
|
}
|
|
|
|
function onUpdateContainerFinished(message) {
|
|
PageController.showNotificationMessage(message)
|
|
PageController.closePage()
|
|
}
|
|
|
|
function onCachedProfileCleared(message) {
|
|
PageController.showNotificationMessage(message)
|
|
}
|
|
|
|
function onApiConfigRemoved(message) {
|
|
PageController.showNotificationMessage(message)
|
|
}
|
|
|
|
function onRemoveProcessedServerFinished(finishedMessage) {
|
|
if (!ServersModel.getServersCount()) {
|
|
PageController.goToPageHome()
|
|
} else {
|
|
PageController.goToStartPage()
|
|
PageController.goToPage(PageEnum.PageSettingsServersList)
|
|
}
|
|
PageController.showNotificationMessage(finishedMessage)
|
|
}
|
|
|
|
function onNoInstalledContainers() {
|
|
PageController.setTriggeredByConnectButton(true)
|
|
|
|
ServersModel.processedIndex = ServersModel.getDefaultServerIndex()
|
|
InstallController.setShouldCreateServer(false)
|
|
PageController.goToPage(PageEnum.PageSetupWizardEasy)
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
objectName: "connectionControllerConnections"
|
|
|
|
target: ConnectionController
|
|
|
|
function onReconnectWithUpdatedContainer(message) {
|
|
PageController.showNotificationMessage(message)
|
|
PageController.closePage()
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
objectName: "importControllerConnections"
|
|
|
|
target: ImportController
|
|
|
|
function onImportErrorOccurred(error, goToPageHome) {
|
|
PageController.showErrorMessage(error)
|
|
}
|
|
|
|
function onRestoreAppConfig(data) {
|
|
PageController.showBusyIndicator(true)
|
|
SettingsController.restoreAppConfigFromData(data)
|
|
PageController.showBusyIndicator(false)
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
objectName: "settingsControllerConnections"
|
|
|
|
target: SettingsController
|
|
|
|
function onLoggingDisableByWatcher() {
|
|
PageController.showNotificationMessage(qsTr("Logging was disabled after 14 days, log files were deleted"))
|
|
}
|
|
|
|
function onRestoreBackupFinished() {
|
|
PageController.showNotificationMessage(qsTr("Settings restored from backup file"))
|
|
PageController.goToPageHome()
|
|
}
|
|
|
|
function onLoggingStateChanged() {
|
|
if (SettingsController.isLoggingEnabled) {
|
|
var message = qsTr("Logging is enabled. Note that logs will be automatically" +
|
|
"disabled after 14 days, and all log files will be deleted.")
|
|
PageController.showNotificationMessage(message)
|
|
}
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: ApiSettingsController
|
|
|
|
function onErrorOccurred(error) {
|
|
PageController.showErrorMessage(error)
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: ApiConfigsController
|
|
|
|
function onErrorOccurred(error) {
|
|
PageController.showErrorMessage(error)
|
|
}
|
|
|
|
function onInstallServerFromApiFinished(message) {
|
|
PageController.showBusyIndicator(false)
|
|
if (!ConnectionController.isConnected) {
|
|
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
|
|
ServersModel.processedIndex = ServersModel.defaultIndex
|
|
}
|
|
|
|
PageController.goToPageHome()
|
|
PageController.showNotificationMessage(message)
|
|
}
|
|
|
|
function onChangeApiCountryFinished(message) {
|
|
PageController.showBusyIndicator(false)
|
|
|
|
PageController.goToPageHome()
|
|
PageController.showNotificationMessage(message)
|
|
}
|
|
|
|
function onReloadServerFromApiFinished(message) {
|
|
PageController.goToPageHome()
|
|
PageController.showNotificationMessage(message)
|
|
}
|
|
}
|
|
|
|
StackViewType {
|
|
id: tabBarStackView
|
|
objectName: "tabBarStackView"
|
|
|
|
anchors.top: parent.top
|
|
anchors.right: parent.right
|
|
anchors.left: parent.left
|
|
anchors.bottom: tabBar.top
|
|
|
|
enabled: !root.isControlsDisabled
|
|
|
|
function goToTabBarPage(page) {
|
|
var pagePath = PageController.getPagePath(page)
|
|
tabBarStackView.clear(StackView.Immediate)
|
|
tabBarStackView.replace(pagePath, { "objectName" : pagePath }, StackView.Immediate)
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
var pagePath
|
|
if (PageController.isStartPageVisible()) {
|
|
tabBar.visible = false
|
|
pagePath = PageController.getPagePath(PageEnum.PageSetupWizardStart)
|
|
} else {
|
|
tabBar.visible = true
|
|
pagePath = PageController.getPagePath(PageEnum.PageHome)
|
|
ServersModel.processedIndex = ServersModel.defaultIndex
|
|
}
|
|
|
|
tabBarStackView.push(pagePath, { "objectName" : pagePath })
|
|
}
|
|
|
|
Keys.onPressed: function(event) {
|
|
console.debug(">>>> ", event.key, " Event is caught by StartPage")
|
|
switch (event.key) {
|
|
case Qt.Key_Tab:
|
|
case Qt.Key_Down:
|
|
case Qt.Key_Right:
|
|
FocusController.nextKeyTabItem()
|
|
break
|
|
case Qt.Key_Backtab:
|
|
case Qt.Key_Up:
|
|
case Qt.Key_Left:
|
|
FocusController.previousKeyTabItem()
|
|
break
|
|
default:
|
|
PageController.keyPressEvent(event.key)
|
|
event.accepted = true
|
|
}
|
|
}
|
|
}
|
|
|
|
TabBar {
|
|
id: tabBar
|
|
objectName: "tabBar"
|
|
|
|
anchors.right: parent.right
|
|
anchors.left: parent.left
|
|
anchors.bottom: parent.bottom
|
|
|
|
topPadding: 8
|
|
bottomPadding: 8
|
|
leftPadding: 96
|
|
rightPadding: 96
|
|
|
|
height: visible ? homeTabButton.implicitHeight + tabBar.topPadding + tabBar.bottomPadding : 0
|
|
|
|
enabled: !root.isControlsDisabled && !root.isTabBarDisabled
|
|
|
|
background: Shape {
|
|
objectName: "backgroundShape"
|
|
|
|
width: parent.width
|
|
height: parent.height
|
|
|
|
ShapePath {
|
|
startX: 0
|
|
startY: 0
|
|
|
|
PathLine { x: width; y: 0 }
|
|
PathLine { x: width; y: tabBar.height - 1 }
|
|
PathLine { x: 0; y: tabBar.height - 1 }
|
|
PathLine { x: 0; y: 0 }
|
|
|
|
strokeWidth: 1
|
|
strokeColor: AmneziaStyle.color.slateGray
|
|
fillColor: AmneziaStyle.color.onyxBlack
|
|
}
|
|
}
|
|
|
|
TabImageButtonType {
|
|
id: homeTabButton
|
|
objectName: "homeTabButton"
|
|
|
|
isSelected: tabBar.currentIndex === 0
|
|
image: "qrc:/images/controls/home.svg"
|
|
clickedFunc: function () {
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageHome)
|
|
ServersModel.processedIndex = ServersModel.defaultIndex
|
|
tabBar.currentIndex = 0
|
|
}
|
|
}
|
|
|
|
TabImageButtonType {
|
|
id: shareTabButton
|
|
objectName: "shareTabButton"
|
|
|
|
Connections {
|
|
target: ServersModel
|
|
|
|
function onModelReset() {
|
|
if (!SettingsController.isOnTv()) {
|
|
var hasServerWithWriteAccess = ServersModel.hasServerWithWriteAccess()
|
|
shareTabButton.visible = hasServerWithWriteAccess
|
|
shareTabButton.width = hasServerWithWriteAccess ? undefined : 0
|
|
}
|
|
}
|
|
}
|
|
|
|
visible: !SettingsController.isOnTv() && ServersModel.hasServerWithWriteAccess()
|
|
width: !SettingsController.isOnTv() && ServersModel.hasServerWithWriteAccess() ? undefined : 0
|
|
|
|
isSelected: tabBar.currentIndex === 1
|
|
image: "qrc:/images/controls/share-2.svg"
|
|
clickedFunc: function () {
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageShare)
|
|
tabBar.currentIndex = 1
|
|
}
|
|
}
|
|
|
|
TabImageButtonType {
|
|
id: settingsTabButton
|
|
objectName: "settingsTabButton"
|
|
|
|
isSelected: tabBar.currentIndex === 2
|
|
image: "qrc:/images/controls/settings.svg"
|
|
clickedFunc: function () {
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageSettings)
|
|
tabBar.currentIndex = 2
|
|
}
|
|
}
|
|
|
|
TabImageButtonType {
|
|
id: plusTabButton
|
|
objectName: "plusTabButton"
|
|
|
|
isSelected: tabBar.currentIndex === 3
|
|
image: "qrc:/images/controls/plus.svg"
|
|
clickedFunc: function () {
|
|
tabBarStackView.goToTabBarPage(PageEnum.PageSetupWizardConfigSource)
|
|
tabBar.currentIndex = 3
|
|
}
|
|
}
|
|
}
|
|
}
|