From 8bc60f6b3fb54f844a026d505bf3f4070503f95d Mon Sep 17 00:00:00 2001 From: Michael Bohlender Date: Wed, 3 May 2017 18:57:32 +0200 Subject: add initial inline accountsView --- components/kube/contents/ui/AccountsView.qml | 119 ++++++++++++++++ components/kube/contents/ui/Kube.qml | 14 +- framework/qml/AccountSwitcher.qml | 201 --------------------------- framework/qmldir | 2 +- 4 files changed, 133 insertions(+), 203 deletions(-) create mode 100644 components/kube/contents/ui/AccountsView.qml delete mode 100644 framework/qml/AccountSwitcher.qml diff --git a/components/kube/contents/ui/AccountsView.qml b/components/kube/contents/ui/AccountsView.qml new file mode 100644 index 00000000..6ab8387b --- /dev/null +++ b/components/kube/contents/ui/AccountsView.qml @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2017 Michael Bohlender, + * + * 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.4 +import QtQuick.Layouts 1.1 + +import org.kube.framework 1.0 as Kube + +Rectangle { + id: app + + height: 800 + width: 1400 + + color: Kube.Colors.backgroundColor + + RowLayout { + + anchors.fill: parent + + Item { + id: accountList + width: 300 + Layout.fillHeight: true + + Kube.PositiveButton { + id: newAccountButton + anchors { + top: parent.top + left: parent.left + right: parent.right + margins: Kube.Units.largeSpacing + } + text: "New Account" + } + + ListView { + id: listView + + anchors { + top: newAccountButton.bottom + left: parent.left + right: parent.right + bottom: parent.bottom + topMargin: Kube.Units.largeSpacing + } + + clip: true + + model: Kube.AccountsModel {} + + delegate: Rectangle { + height: Kube.Units.gridUnit * 3 + width: listView.width + + border.color: Kube.Colors.buttonColor + border.width: 1 + color: Kube.Colors.viewBackgroundColor + + Kube.Label { + anchors.centerIn: parent + text: model.name + } + + MouseArea { + id: mouseArea + anchors.fill: parent + + onClicked: { + console.log("clicked account \"" + model.accountId + "\"" ) + //editAccountComponent.createObject(app, {accountId:model.accountId}) + edit.accountId = model.accountId + } + } + } + } + } + + Rectangle { + height: parent.height + width: 1 + color: Kube.Colors.buttonColor + } + + Item { + + height: parent.height + width: 200 + Layout.fillWidth: true + + Kube.EditAccount { + id: edit + + anchors { + top: parent.top + left: parent.left + right: parent.right + bottom: parent.bottom + margins: Kube.Units.largeSpacing + } + } + } + } +} diff --git a/components/kube/contents/ui/Kube.qml b/components/kube/contents/ui/Kube.qml index b5eee31f..18c1b6ec 100644 --- a/components/kube/contents/ui/Kube.qml +++ b/components/kube/contents/ui/Kube.qml @@ -152,7 +152,10 @@ Controls2.ApplicationWindow { width: height } - Kube.AccountSwitcher {} + Kube.IconButton { + iconName: Kube.Icons.menu_inverted + onClicked: kubeViews.setAccountsView() + } } } StackView { @@ -173,6 +176,10 @@ Controls2.ApplicationWindow { //TODO replacing here while a composer is open is destructive kubeViews.push({item: mailView, replace: true, immediate: true}) } + function setAccountsView() { + kubeViews.push({item: accountsView, replace: true, immediate: true}) + } + function openComposer() { kubeViews.push({item: composerView, immediate: true}) } @@ -193,6 +200,11 @@ Controls2.ApplicationWindow { onDone: kubeViews.pop({immediate: true}) } } + Component { + id: accountsView + AccountsView { + } + } } } //END Main content diff --git a/framework/qml/AccountSwitcher.qml b/framework/qml/AccountSwitcher.qml deleted file mode 100644 index b44dd3d7..00000000 --- a/framework/qml/AccountSwitcher.qml +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (C) 2017 Michael Bohlender, - * - * 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.4 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.0 as Controls2 -import QtQuick.Controls 1.4 as Controls - -import QtQml 2.2 as QtQml - -import org.kde.kirigami 1.0 as Kirigami -import org.kube.framework 1.0 as Kube - - -Kube.IconButton { - id: accountSwitcher - - property variant accountId - property variant accountName - - iconName: Kube.Icons.menu_inverted - - Kube.AccountsModel { - id: accountsModel - } - - onClicked: { - popup.open() - } - - Kube.Popup { - id: popup - - height: listView.count == 0 ? Kirigami.Units.gridUnit * 4 : Kirigami.Units.gridUnit * 2 + listView.count * Kirigami.Units.gridUnit * 3 - width: Kirigami.Units.gridUnit * 20 - - y: accountSwitcher.y - height - - Item { - id: buttons - anchors { - bottom: parent.bottom - } - - height: Kirigami.Units.gridUnit * 2 - width: parent.width - - Kube.Button { - anchors { - left: parent.left - bottom: parent.bottom - } - - //iconName: "view-refresh" - text: "Sync" - onClicked: { - Kube.Fabric.postMessage(Kube.Messages.synchronize, {"accountId": accountSwitcher.accountId}) - popup.close() - } - } - - Kube.PositiveButton { - id: newAccountButton - - anchors { - right: parent.right - bottom: parent.bottom - } - - text: "Create new Account" - - onClicked: { - accountWizard.open() - popup.close() - } - } - } - - ListView { - id: listView - - anchors { - top: parent.top - bottom: buttons.top - left: parent.left - right: parent.right - } - - clip: true - - model: accountsModel - - delegate: Kirigami.AbstractListItem { - id: accountDelegate - - height: Kirigami.Units.gridUnit * 2 - - enabled: true - supportsMouseEvents: true - - checked: listView.currentIndex == index - onClicked: { - listView.currentIndex = model.index - popup.close() - } - Item { - height: Kirigami.Units.gridUnit + Kirigami.Units.smallSpacing * 1 - width: listView.width - - QtQml.Binding { - target: accountSwitcher - property: "accountId" - when: listView.currentIndex == index - value: model.accountId - } - - QtQml.Binding { - target: accountSwitcher - property: "accountName" - when: listView.currentIndex == index - value: model.name - } - - RowLayout { - anchors { - verticalCenter: parent.verticalCenter - left: parent.left - margins: Kirigami.Units.smallSpacing - } - - Layout.fillHeight: true - - Kube.Label { - text: model.name - } - - Controls.ToolButton { - id: statusIcon - visible: false - iconName: "" - enabled: false - states: [ - State { - name: "busy"; when: model.status == Kube.AccountsModel.BusyStatus - PropertyChanges { target: statusIcon; iconName: Kube.Icons.busy; visible: true } - }, - State { - name: "error"; when: model.status == Kube.AccountsModel.ErrorStatus - PropertyChanges { target: statusIcon; iconName: Kube.Icons.error; visible: true } - }, - State { - name: "checkmark"; when: model.status == Kube.AccountsModel.ConnectedStatus - PropertyChanges { target: statusIcon; iconName: Kube.Icons.connected; visible: true } - } - ] - } - } - Kube.Button { - - anchors { - right: parent.right - rightMargin: Kirigami.Units.largeSpacing - verticalCenter: parent.verticalCenter - } - - opacity: hovered ? 1 : 0.7 - visible: accountDelegate.containsMouse - text: "edit" - - onClicked: { - editAccountComponent.createObject(app, {accountId:model.accountId}) - popup.close() - } - - Component { - id: editAccountComponent - Kube.EditAccountDialog { - anchors.fill: parent - } - } - } - } - } - } - } -} diff --git a/framework/qmldir b/framework/qmldir index 5bb1530b..4de45a1c 100644 --- a/framework/qmldir +++ b/framework/qmldir @@ -5,10 +5,10 @@ FocusComposer 1.0 FocusComposer.qml ConversationView 1.0 ConversationView.qml FolderListView 1.0 FolderListView.qml MailListView 1.0 MailListView.qml -AccountSwitcher 1.0 AccountSwitcher.qml InlineAccountSwitcher 1.0 InlineAccountSwitcher.qml NewAccountDialog 1.0 NewAccountDialog.qml EditAccountDialog 1.0 EditAccountDialog.qml +EditAccount 1.0 EditAccount.qml OverlayDialog 1.0 OverlayDialog.qml Outbox 1.0 Outbox.qml People 1.0 People.qml -- cgit v1.2.3