diff --git a/sandbox/StatusExpandableSettingsItemPage.qml b/sandbox/StatusExpandableSettingsItemPage.qml new file mode 100644 index 00000000..501f30e1 --- /dev/null +++ b/sandbox/StatusExpandableSettingsItemPage.qml @@ -0,0 +1,69 @@ +import QtQuick 2.14 +import QtQuick.Layouts 1.14 +import StatusQ.Core 0.1 +import StatusQ.Core.Theme 0.1 +import StatusQ.Components 0.1 + +Column { + spacing: 12 + width: 800 + anchors.top:parent.top + leftPadding: 20 + rightPadding: 20 + + StatusExpandableSettingsItem { + anchors.horizontalCenter: parent.horizontalCenter + + expandable: false + icon.name: "seed-phrase" + primaryText: qsTr("Back up seed phrase") + secondaryText: qsTr("Back up your seed phrase now to secure this account ajhaDH SDHSAHDLSADBSA,DLISAHDLASD ADASDHASLDHALSDHAS DAS,DASJDGLIASGD") + button.text: qsTr("Back up seed phrase") + } + + StatusExpandableSettingsItem { + anchors.horizontalCenter: parent.horizontalCenter + + expandable: true + icon.name: "secret" + primaryText: qsTr("Account signing phrase") + secondaryText: qsTr("View your signing phrase and ensure that you never get scammed") + expandableComponent: notImplemented + } + + StatusExpandableSettingsItem { + anchors.horizontalCenter: parent.horizontalCenter + + expandable: true + icon.name: "seed-phrase" + primaryText: qsTr("View private key") + secondaryText: qsTr("Back up your seed phrase now to secure this account") + expandableComponent: notImplemented + button.text: qsTr("View private key") + button.icon.name: "tiny/public-chat" + button.onClicked: { + // To-do open enter password Modal + expanded = !expanded + } + } + + Component { + id: notImplemented + Rectangle { + anchors.centerIn: parent + width: 654 + height: infoText.implicitHeight + color: Theme.palette.baseColor5 + StatusBaseText { + id: infoText + anchors.centerIn: parent + color: Theme.palette.directColor4 + font.pixelSize: 15 + lineHeight: 22 + lineHeightMode: Text.FixedHeight + font.weight: Font.Medium + text: qsTr("Not Implemented") + } + } + } +} diff --git a/sandbox/main.qml b/sandbox/main.qml index 3ebe313d..4357b5cd 100644 --- a/sandbox/main.qml +++ b/sandbox/main.qml @@ -169,6 +169,11 @@ StatusWindow { selected: page.sourceComponent == othersComponent onClicked: page.sourceComponent = othersComponent } + StatusNavigationListItem { + title: "StatusExpandableSettingsItem" + selected: page.sourceComponent == settingsComponent + onClicked: page.sourceComponent = settingsComponent + } StatusListSectionHeadline { text: "StatusQ.Popup" } StatusNavigationListItem { title: "StatusPopupMenu" @@ -291,6 +296,11 @@ StatusWindow { StatusTabSwitchPage {} } + Component { + id: settingsComponent + StatusExpandableSettingsItemPage{} + } + Component { id: demoAppCmp diff --git a/sandbox/qml.qrc b/sandbox/qml.qrc index 319941aa..7e150260 100644 --- a/sandbox/qml.qrc +++ b/sandbox/qml.qrc @@ -13,5 +13,6 @@ ThemeSwitch.qml Layout.qml Popups.qml + StatusExpandableSettingsItemPage.qml diff --git a/src/StatusQ/Components/StatusExpandableSettingsItem.qml b/src/StatusQ/Components/StatusExpandableSettingsItem.qml new file mode 100644 index 00000000..111e6e5d --- /dev/null +++ b/src/StatusQ/Components/StatusExpandableSettingsItem.qml @@ -0,0 +1,155 @@ +import QtQuick 2.14 +import StatusQ.Core 0.1 +import StatusQ.Controls 0.1 +import StatusQ.Core.Theme 0.1 +import StatusQ.Components 0.1 + +Rectangle { + id: statusExpandableSettingsItem + + property alias primaryText: primaryText.text + property alias secondaryText: secondaryText.text + property alias button: button + property alias expandableComponent: expandableRegion.sourceComponent + + property bool expandable: true + property bool expanded: false + property StatusIconSettings icon: StatusIconSettings { + color: Theme.palette.directColor1 + background: StatusIconBackgroundSettings { + width: 32 + height: 32 + color: Theme.palette.primaryColor2 + } + } + + implicitWidth: 718 + + radius: 8 + color: "transparent" + border.color: Theme.palette.baseColor2 + state: "COLLAPSED" + clip: true + + StatusRoundIcon { + id: roundIcon + anchors.top: parent.top + anchors.topMargin: 25 + anchors.left: parent.left + anchors.leftMargin: 11 + + icon.background.width: statusExpandableSettingsItem.icon.background.width + icon.background.height: statusExpandableSettingsItem.icon.background.height + icon.background.color: statusExpandableSettingsItem.icon.background.color + icon.color: statusExpandableSettingsItem.icon.color + icon.name: statusExpandableSettingsItem.icon.name + } + + StatusBaseText { + id: primaryText + anchors.top: parent.top + anchors.topMargin: 17 + anchors.left: roundIcon.right + anchors.leftMargin: 10 + + width: button.visible ? parent.width - icon.background.width - button.width - 70 : + parent.width - icon.background.width - 70 + + font.weight: Font.Medium + font.pixelSize: 15 + lineHeight: 22 + lineHeightMode: Text.FixedHeight + elide: Text.ElideRight + color: Theme.palette.directColor1 + } + + StatusBaseText { + id: secondaryText + anchors.top: primaryText.bottom + anchors.topMargin: 4 + anchors.left: primaryText.left + anchors.right: primaryText.right + + font.pixelSize: 15 + lineHeight: 22 + lineHeightMode: Text.FixedHeight + elide: Text.ElideRight + color: Theme.palette.directColor3 + } + + StatusButton { + id: button + anchors.top: parent.top + anchors.topMargin: 19 + anchors.right: parent.right + anchors.rightMargin: 16 + visible: !!text + } + + StatusIcon { + id: expandImage + anchors.top: parent.top + anchors.topMargin: 36 + anchors.right: parent.right + anchors.rightMargin: 23 + visible: expandable && !button.visible + color: Theme.palette.directColor1 + } + + Loader { + id: expandableRegion + anchors.top: secondaryText.bottom + anchors.topMargin: 16 + anchors.left: parent.left + anchors.leftMargin: 48 + width: parent.width - 64 + } + + MouseArea { + anchors.fill: parent + onClicked: { + if(expandable) { + expanded = !expanded + } + } + cursorShape: Qt.PointingHandCursor + visible: !button.visible && expandable + } + + onExpandedChanged: { + if(expanded) { + state = "EXPANDED" + } + else { + state = "COLLAPSED" + } + } + + states: [ + State { + name: "EXPANDED" + PropertyChanges {target: expandImage; icon: "chevron-up"} + PropertyChanges {target: statusExpandableSettingsItem; height: 82 + expandableRegion.height + 22} + PropertyChanges {target: expandableRegion; active: true} + }, + State { + name: "COLLAPSED" + PropertyChanges {target: expandImage; icon: "chevron-down"} + PropertyChanges {target: statusExpandableSettingsItem; height: 82} + PropertyChanges {target: expandableRegion; active: false} + } + ] + + transitions: [ + Transition { + from: "COLLAPSED" + to: "EXPANDED" + NumberAnimation { properties: "height"; duration: 200 } + }, + Transition { + from: "EXPANDED" + to: "COLLAPSED" + NumberAnimation { properties: "height"; duration: 200 } + } + ] +} diff --git a/src/StatusQ/Components/qmldir b/src/StatusQ/Components/qmldir index 433d2d6b..ccc42fd9 100644 --- a/src/StatusQ/Components/qmldir +++ b/src/StatusQ/Components/qmldir @@ -20,3 +20,4 @@ StatusRoundIcon 0.1 StatusRoundIcon.qml StatusRoundedImage 0.1 StatusRoundedImage.qml StatusMacWindowButtons 0.1 StatusMacWindowButtons.qml StatusListItemBadge 0.1 StatusListItemBadge.qml +StatusExpandableSettingsItem 0.1 StatusExpandableSettingsItem.qml diff --git a/src/assets/img/icons/seed-phrase.svg b/src/assets/img/icons/seed-phrase.svg new file mode 100644 index 00000000..4d212550 --- /dev/null +++ b/src/assets/img/icons/seed-phrase.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/statusq.qrc b/statusq.qrc index 0657838c..e7a6e891 100644 --- a/statusq.qrc +++ b/statusq.qrc @@ -243,6 +243,7 @@ src/assets/img/icons/add-contact.svg src/assets/img/icons/add-circle.svg src/assets/img/icons/activity.svg + src/assets/img/icons/seed-phrase.svg src/StatusQ/Components/StatusChatListCategoryItem.qml src/StatusQ/Components/StatusChatListCategory.qml src/StatusQ/Controls/StatusBaseInput.qml @@ -265,5 +266,6 @@ src/assets/img/icons/windows_titlebar/status.svg src/StatusQ/Controls/StatusSwitchTabButton.qml src/StatusQ/Controls/StatusSwitchTabBar.qml + src/StatusQ/Components/StatusExpandableSettingsItem.qml