From 691603954658af9ed68674822adf38ee94f6c2f4 Mon Sep 17 00:00:00 2001 From: miruka Date: Sat, 13 Jul 2019 05:34:58 -0400 Subject: [PATCH] Add "Edit Account" interface skeleton --- TODO.md | 8 +-- src/qml/Pages/EditAccount/ClientSettings.qml | 15 ++++ src/qml/Pages/EditAccount/Devices.qml | 15 ++++ src/qml/Pages/EditAccount/EditAccount.qml | 72 ++++++++++++++++++++ src/qml/Pages/EditAccount/Profile.qml | 15 ++++ src/qml/SidePane/AccountDelegate.qml | 11 ++- src/qml/UI.qml | 16 +++-- 7 files changed, 139 insertions(+), 13 deletions(-) create mode 100644 src/qml/Pages/EditAccount/ClientSettings.qml create mode 100644 src/qml/Pages/EditAccount/Devices.qml create mode 100644 src/qml/Pages/EditAccount/EditAccount.qml create mode 100644 src/qml/Pages/EditAccount/Profile.qml diff --git a/TODO.md b/TODO.md index 29cc5c27..5b7e510a 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,13 @@ +- Rename theme.bottomElementsHeight + - Qt 5.12 - New input handlers - ECMAScript 7 - .mjs modules - - inset properties - - `ToolTip.hide()`/`show()` - - horizontal & vertical padding props - Refactoring - Don't bake in size properties for components + - Unfinished work in button-refactor branch - Bug fixes - Past events loading (limit 100) freezes the GUI - need to move upsert func @@ -19,7 +19,6 @@ - "Rejoin" LeftBanner button if room is public - Daybreak color - Html links color - - [debug mode](https://docs.python.org/3/library/asyncio-dev.html) - `pyotherside.atexit()` - Way to put sidepane back to auto-sizing (snap) - Better look for arrows when sidepane collapsed @@ -57,6 +56,7 @@ - Links preview - Client improvements + - [debug mode](https://docs.python.org/3/library/asyncio-dev.html) - More intelligent thumbnails downloading for different sizes - Filtering rooms: search more than display names? - Initial sync filter and lazy load, see weechat-matrix `_handle_login()` diff --git a/src/qml/Pages/EditAccount/ClientSettings.qml b/src/qml/Pages/EditAccount/ClientSettings.qml new file mode 100644 index 00000000..656d82bb --- /dev/null +++ b/src/qml/Pages/EditAccount/ClientSettings.qml @@ -0,0 +1,15 @@ +// Copyright 2019 miruka +// This file is part of harmonyqml, licensed under LGPLv3. + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 +import "../../Base" +import "../../utils.js" as Utils + +HRectangle { + HLabel { + anchors.centerIn: parent + text: "Client - TODO" + } +} diff --git a/src/qml/Pages/EditAccount/Devices.qml b/src/qml/Pages/EditAccount/Devices.qml new file mode 100644 index 00000000..4ac80c26 --- /dev/null +++ b/src/qml/Pages/EditAccount/Devices.qml @@ -0,0 +1,15 @@ +// Copyright 2019 miruka +// This file is part of harmonyqml, licensed under LGPLv3. + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 +import "../../Base" +import "../../utils.js" as Utils + +HRectangle { + HLabel { + anchors.centerIn: parent + text: "Devices - TODO" + } +} diff --git a/src/qml/Pages/EditAccount/EditAccount.qml b/src/qml/Pages/EditAccount/EditAccount.qml new file mode 100644 index 00000000..39059258 --- /dev/null +++ b/src/qml/Pages/EditAccount/EditAccount.qml @@ -0,0 +1,72 @@ +// Copyright 2019 miruka +// This file is part of harmonyqml, licensed under LGPLv3. + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 +import "../../Base" +import "../../utils.js" as Utils + +HRectangle { + property string userId: "" + readonly property var userInfo: users.find(userId) + + HColumnLayout { + anchors.fill: parent + + HRowLayout { + Layout.preferredHeight: theme.bottomElementsHeight + + HLabel { + text: qsTr("Edit %1").arg( + Utils.coloredNameHtml(userInfo.displayName, userId) + ) + textFormat: Text.StyledText + font.pixelSize: theme.fontSize.big + elide: Text.ElideRight + maximumLineCount: 1 + // visible: width > 50 + + Layout.fillWidth: true + Layout.maximumWidth: parent.width - tabBar.width + Layout.leftMargin: 8 + Layout.rightMargin: Layout.leftMargin + } + + TabBar { + id: tabBar + currentIndex: swipeView.currentIndex + spacing: 0 + contentHeight: parent.height + + TabButton { + text: qsTr("Profile") + width: implicitWidth * 1.25 + } + + TabButton { + text: qsTr("Devices") + width: implicitWidth * 1.25 + } + + TabButton { + text: qsTr("Harmony") + width: implicitWidth * 1.25 + } + } + } + + SwipeView { + id: swipeView + clip: true + currentIndex: tabBar.currentIndex + + Layout.fillHeight: true + Layout.fillWidth: true + + Profile {} + Devices {} + ClientSettings {} + } + } +} diff --git a/src/qml/Pages/EditAccount/Profile.qml b/src/qml/Pages/EditAccount/Profile.qml new file mode 100644 index 00000000..45369bc8 --- /dev/null +++ b/src/qml/Pages/EditAccount/Profile.qml @@ -0,0 +1,15 @@ +// Copyright 2019 miruka +// This file is part of harmonyqml, licensed under LGPLv3. + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 +import "../../Base" +import "../../utils.js" as Utils + +HRectangle { + HLabel { + anchors.centerIn: parent + text: "profile" + } +} diff --git a/src/qml/SidePane/AccountDelegate.qml b/src/qml/SidePane/AccountDelegate.qml index 3ec9b055..e830d13e 100644 --- a/src/qml/SidePane/AccountDelegate.qml +++ b/src/qml/SidePane/AccountDelegate.qml @@ -1,8 +1,8 @@ // Copyright 2019 miruka // This file is part of harmonyqml, licensed under LGPLv3. -import QtQuick 2.7 -import QtQuick.Layouts 1.3 +import QtQuick 2.12 +import QtQuick.Layouts 1.12 import "../Base" Column { @@ -10,9 +10,14 @@ Column { width: parent.width property var userInfo: users.find(model.userId) - property bool expanded: true + TapHandler { + onTapped: pageStack.showPage( + "EditAccount/EditAccount", { "userId": model.userId } + ) + } + HHighlightRectangle { width: parent.width height: childrenRect.height diff --git a/src/qml/UI.qml b/src/qml/UI.qml index 31c89fb0..495e4c7f 100644 --- a/src/qml/UI.qml +++ b/src/qml/UI.qml @@ -15,7 +15,7 @@ Item { target: py onWillLoadAccounts: function(will) { pageStack.showPage(will ? "Default": "SignIn") - // if (will) {initialRoomTimer.start()} + if (will) {initialRoomTimer.start()} } } @@ -86,12 +86,16 @@ Item { Timer { // TODO: remove this, debug id: initialRoomTimer - interval: 4000 + interval: 2000 repeat: false - onTriggered: pageStack.showRoom( - "@test_mary:matrix.org", - "Rooms", - "!TSXGsbBbdwsdylIOJZ:matrix.org" + // onTriggered: pageStack.showRoom( + // "@test_mary:matrix.org", + // "Rooms", + // "!TSXGsbBbdwsdylIOJZ:matrix.org" + // ) + onTriggered: pageStack.showPage( + "EditAccount/EditAccount", + {"userId": "@test_mary:matrix.org"} ) }