Files
proton-bridge/internal/frontend/qml/SettingsItem.qml
Jakub e0d07d67a0 GODT-22: Frontend-backend
- GODT-1246 Implement settings view.
- GODT-1257 GODT-1246: Account and Help view
- GODT-1298: Minimal working build (panics)
- GODT-1298: loading QML (needs Popup window)
- GODT-1298: WARN: Adding PopupWindow not possible!
    In therecipe qt the `quickwidgets` classes are within `quick` module, but
    forgot to add library and include paths into cgo flags. Therefore
    compilation fails and it would be hard to patch therecipe in order to
    fix it.

    I am not sure if rewrite PopupWindow into go would make any difference,
    therefore I decided to use normal QML Window without borders.
- GODT-1298: Rework status window, add backend props, slots and signals.
- GODT-1298: Users
- GODT-1298: Login
- GODT-1298: WIP Help and bug report
- GODT-1178: MacOS dock icon control
- GODT-1298: Help, bug report, update and events
- GODT-1298: Apple Mail config and Settings (without cache on disk)
2021-11-30 10:12:36 +01:00

106 lines
3.0 KiB
QML

// Copyright (c) 2021 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge 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 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge 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 ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
import QtQuick 2.13
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import Proton 4.0
ColumnLayout {
id: root
property var colorScheme
property string text: "Text"
property string actionText: "Action"
property string actionIcon: ""
property string description: "Lorem ipsum dolor sit amet"
property var type: SettingsItem.ActionType.Toggle
property bool checked: true
property bool disabled: false
property bool loading: false
signal clicked
spacing: 20
Layout.fillWidth: true
Layout.maximumWidth: root.parent.Layout.maximumWidth
enum ActionType {
Toggle = 1, Button = 2, PrimaryButton = 3
}
RowLayout {
Layout.fillWidth: true
ColumnLayout {
Label {
id:mainLabel
colorScheme: root.colorScheme
text: root.text
type: Label.Body_semibold
}
Label {
Layout.minimumWidth: mainLabel.width
Layout.maximumWidth: root.Layout.maximumWidth - root.spacing - (
toggle.visible ? toggle.width : button.width
)
wrapMode: Text.WordWrap
colorScheme: root.colorScheme
text: root.description
color: root.colorScheme.text_weak
}
}
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
Toggle {
id: toggle
colorScheme: root.colorScheme
visible: root.type == SettingsItem.ActionType.Toggle
checked: root.checked
loading: root.loading
onClicked: { if (!root.loading) root.clicked() }
}
Button {
id: button
colorScheme: root.colorScheme
visible: root.type == SettingsItem.Button || root.type == SettingsItem.PrimaryButton
text: root.actionText + (root.actionIcon != "" ? " " : "")
loading: root.loading
icon.source: root.actionIcon
onClicked: { if (!root.loading) root.clicked() }
secondary: root.type != SettingsItem.PrimaryButton
}
}
Rectangle {
Layout.fillWidth: true
color: colorScheme.border_weak
height: 1
}
}