From 6d034c853ea7cd6d426fccd79db90ec56e188327 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sat, 13 May 2017 10:02:23 +0200 Subject: StatusBar as individual component --- components/kube/contents/ui/MailView.qml | 65 +++----------------------- framework/qml/StatusBar.qml | 79 ++++++++++++++++++++++++++++++++ framework/qmldir | 1 + 3 files changed, 87 insertions(+), 58 deletions(-) create mode 100644 framework/qml/StatusBar.qml diff --git a/components/kube/contents/ui/MailView.qml b/components/kube/contents/ui/MailView.qml index 8ae2ffe4..2bbe6652 100644 --- a/components/kube/contents/ui/MailView.qml +++ b/components/kube/contents/ui/MailView.qml @@ -89,64 +89,13 @@ SplitView { color: Kube.Colors.viewBackgroundColor opacity: 0.3 } - - Repeater { - model: Kube.AccountsModel { - accountId: accountFolderview.currentAccount - } - - Column { - anchors { - top: border.bottom - left: statusBar.left - right: statusBar.right - bottom: statusBar.bottom - } - spacing: Kube.Units.smallSpacing - Kube.Label { - id: statusText - anchors.horizontalCenter: parent.horizontalCenter - visible: false - color: Kube.Colors.highlightedTextColor - states: [ - State { - name: "disconnected"; when: model.status == Kube.AccountsModel.OfflineStatus - PropertyChanges { target: statusBar; visible: true } - PropertyChanges { target: statusText; text: "Disconnected"; visible: true } - }, - State { - name: "busy"; when: model.status == Kube.AccountsModel.BusyStatus - PropertyChanges { target: statusBar; visible: true } - PropertyChanges { target: statusText; text: "Synchronizing..."; visible: true } - PropertyChanges { target: progressBar; visible: true } - }, - State { - name: "error"; when: model.status == Kube.AccountsModel.ErrorStatus - PropertyChanges { target: statusBar; visible: true } - //TODO get to an error description - PropertyChanges { target: statusText; text: "Error"; visible: true } - } - ] - } - Kube.ProgressBar { - id: progressBar - anchors.horizontalCenter: parent.horizontalCenter - height: 2 - width: parent.width - Kube.Units.smallSpacing * 2 - - indeterminate: true - visible: false - - Kube.Listener { - filter: Kube.Messages.progressNotification - onMessageReceived: { - progressBar.indeterminate = false - progressBar.from = 0 - progressBar.to = message.total - progressBar.value = message.progress - } - } - } + Kube.StatusBar { + accountId: accountFolderview.currentAccount + anchors { + top: border.bottom + left: statusBar.left + right: statusBar.right + bottom: statusBar.bottom } } } diff --git a/framework/qml/StatusBar.qml b/framework/qml/StatusBar.qml new file mode 100644 index 00000000..fa85f872 --- /dev/null +++ b/framework/qml/StatusBar.qml @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2017 Christian Mollekopf, + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.7 +import org.kube.framework 1.0 as Kube + +Item { + id: root + property string accountId: "" + Repeater { + model: Kube.AccountsModel { + accountId: root.accountId + } + + Column { + anchors.fill: root + spacing: Kube.Units.smallSpacing + Kube.Label { + id: statusText + anchors.horizontalCenter: parent.horizontalCenter + visible: false + color: Kube.Colors.highlightedTextColor + states: [ + State { + name: "disconnected"; when: model.status == Kube.AccountsModel.OfflineStatus + PropertyChanges { target: statusBar; visible: true } + PropertyChanges { target: statusText; text: "Disconnected"; visible: true } + }, + State { + name: "busy"; when: model.status == Kube.AccountsModel.BusyStatus + PropertyChanges { target: statusBar; visible: true } + PropertyChanges { target: statusText; text: "Synchronizing..."; visible: true } + PropertyChanges { target: progressBar; visible: true } + }, + State { + name: "error"; when: model.status == Kube.AccountsModel.ErrorStatus + PropertyChanges { target: statusBar; visible: true } + //TODO get to an error description + PropertyChanges { target: statusText; text: "Error"; visible: true } + } + ] + } + Kube.ProgressBar { + id: progressBar + anchors.horizontalCenter: parent.horizontalCenter + height: 2 + width: parent.width - Kube.Units.smallSpacing * 2 + + indeterminate: true + visible: false + + Kube.Listener { + filter: Kube.Messages.progressNotification + onMessageReceived: { + progressBar.indeterminate = false + progressBar.from = 0 + progressBar.to = message.total + progressBar.value = message.progress + } + } + } + } + } +} diff --git a/framework/qmldir b/framework/qmldir index 2060a920..a5184771 100644 --- a/framework/qmldir +++ b/framework/qmldir @@ -18,6 +18,7 @@ IconButton 1.0 IconButton.qml Button 1.0 Button.qml Popup 1.0 Popup.qml ProgressBar 1.0 ProgressBar.qml +StatusBar 1.0 StatusBar.qml ComboBox 1.0 ComboBox.qml PositiveButton 1.0 PositiveButton.qml TextField 1.0 TextField.qml -- cgit v1.2.3