diff --git a/examples/mvvmdatasyncquick/DataSyncSampleQuick/main.qml b/examples/mvvmdatasyncquick/DataSyncSampleQuick/main.qml index 36878b4..bc587f1 100644 --- a/examples/mvvmdatasyncquick/DataSyncSampleQuick/main.qml +++ b/examples/mvvmdatasyncquick/DataSyncSampleQuick/main.qml @@ -5,6 +5,7 @@ import de.skycoder42.QtMvvm.Quick 1.1 QtMvvmApp { Material.accent: Material.DeepPurple Material.primary: Material.Lime + Material.theme: Material.Dark title: qsTr("QtMvvm Quick Sample") } diff --git a/src/imports/mvvmdatasyncquick/ChangeRemoteView.qml b/src/imports/mvvmdatasyncquick/ChangeRemoteView.qml index 6a0436c..2b7ecf0 100644 --- a/src/imports/mvvmdatasyncquick/ChangeRemoteView.qml +++ b/src/imports/mvvmdatasyncquick/ChangeRemoteView.qml @@ -2,9 +2,9 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import de.skycoder42.QtDataSync 4.0 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 -import de.skycoder42.QtMvvm.DataSync.Core 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 +import de.skycoder42.QtMvvm.DataSync.Core 1.1 import de.skycoder42.QtMvvm.Quick.Private 1.0 Page { @@ -33,13 +33,10 @@ Page { text: qsTr("Change Remote") } - ToolButton { + ActionButton { id: _syncButton - implicitHeight: 48 text: qsTr("Change") enabled: viewModel.valid - icon.width: 24 - icon.height: 24 icon.name: "gtk-apply" icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_check.svg" display: AbstractButton.TextBesideIcon @@ -59,17 +56,17 @@ Page { id: _layout anchors.fill: parent - Label { + DecorLabel { text: qsTr("Remote url:") Layout.fillWidth: true - color: _urlEdit.focus ? _urlEdit.selectionColor : palette.text - opacity: _urlEdit.focus ? 1 : 0.5 + edit: _urlEdit } TextField { id: _urlEdit Layout.fillWidth: true + placeholderText: "wss://example.org/qdsapp/" validator: UrlValidator { allowedSchemes: ["ws", "wss"] } @@ -83,17 +80,17 @@ Page { } } - Label { + DecorLabel { text: qsTr("Access key:") Layout.fillWidth: true - color: _accessKeyEdit.focus ? _accessKeyEdit.selectionColor : palette.text - opacity: _accessKeyEdit.focus ? 1 : 0.5 + edit: _accessKeyEdit } TextField { id: _accessKeyEdit Layout.fillWidth: true echoMode: TextInput.Password + placeholderText: "Optional access secret" MvvmBinding { viewModel: _changeRemoteView.viewModel @@ -104,11 +101,10 @@ Page { } } - Label { + DecorLabel { text: qsTr("Keep-Alive timout:") Layout.fillWidth: true - color: _keepAliveEdit.focus ? _accessKeyEdit.selectionColor : palette.text - opacity: _keepAliveEdit.focus ? 1 : 0.5 + edit: _keepAliveEdit } SpinBox { @@ -138,11 +134,10 @@ Page { } } - Label { + DecorLabel { text: qsTr("Extra Headers:") Layout.fillWidth: true - color: _headerScrollView.focus ? _accessKeyEdit.selectionColor : palette.text - opacity: _headerScrollView.focus ? 1 : 0.5 + edit: _headerScrollView } ScrollView { diff --git a/src/imports/mvvmdatasyncquick/ChangeRemoteView11.qml b/src/imports/mvvmdatasyncquick/ChangeRemoteView11.qml deleted file mode 100644 index 2c6c7e4..0000000 --- a/src/imports/mvvmdatasyncquick/ChangeRemoteView11.qml +++ /dev/null @@ -1,211 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.3 -import de.skycoder42.QtDataSync 4.0 -import de.skycoder42.QtMvvm.Core 1.1 -import de.skycoder42.QtMvvm.Quick 1.1 -import de.skycoder42.QtMvvm.DataSync.Core 1.1 -import de.skycoder42.QtMvvm.Quick.Private 1.0 - -Page { - id: _changeRemoteView - property PChangeRemoteViewModel viewModel: null - - header: ContrastToolBar { - id: _toolBar - - RowLayout { - id: _toolLayout - anchors.fill: parent - spacing: 0 - - ActionButton { - id: _cancelButton - icon.name: "gtk-cancel" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_close.svg" - text: qsTr("Cancel") - onClicked: QuickPresenter.popView() - } - - ToolBarLabel { - id: _titleLabel - Layout.fillWidth: true - text: qsTr("Change Remote") - } - - ToolButton { - id: _syncButton - implicitHeight: 48 - text: qsTr("Change") - enabled: viewModel.valid - icon.width: 24 - icon.height: 24 - icon.name: "gtk-apply" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_check.svg" - display: AbstractButton.TextBesideIcon - rightPadding: 16 - - onClicked: { - if(viewModel.completeSetup()) - QuickPresenter.popView() - } - } - } - } - - Pane { - anchors.fill: parent - ColumnLayout { - id: _layout - anchors.fill: parent - - DecorLabel { - text: qsTr("Remote url:") - Layout.fillWidth: true - edit: _urlEdit - } - - TextField { - id: _urlEdit - Layout.fillWidth: true - - placeholderText: "wss://example.org/qdsapp/" - validator: UrlValidator { - allowedSchemes: ["ws", "wss"] - } - - MvvmBinding { - viewModel: _changeRemoteView.viewModel - viewModelProperty: "url" - view: _urlEdit - viewProperty: "text" - type: MvvmBinding.OneWayToViewModel - } - } - - DecorLabel { - text: qsTr("Access key:") - Layout.fillWidth: true - edit: _accessKeyEdit - } - - TextField { - id: _accessKeyEdit - Layout.fillWidth: true - echoMode: TextInput.Password - placeholderText: "Optional access secret" - - MvvmBinding { - viewModel: _changeRemoteView.viewModel - viewModelProperty: "accessKey" - view: _accessKeyEdit - viewProperty: "text" - type: MvvmBinding.OneWayToViewModel - } - } - - DecorLabel { - text: qsTr("Keep-Alive timout:") - Layout.fillWidth: true - edit: _keepAliveEdit - } - - SpinBox { - id: _keepAliveEdit - Layout.fillWidth: true - editable: true - from: 1 - to: 1440 - - MvvmBinding { - viewModel: _changeRemoteView.viewModel - viewModelProperty: "accessKey" - view: _keepAliveEdit - viewProperty: "value" - } - } - - CheckBox { - id: _keepDataBox - text: qsTr("Keep data") - - MvvmBinding { - viewModel: _changeRemoteView.viewModel - viewModelProperty: "keepData" - view: _keepDataBox - viewProperty: "checked" - } - } - - DecorLabel { - text: qsTr("Extra Headers:") - Layout.fillWidth: true - edit: _headerScrollView - } - - ScrollView { - id: _headerScrollView - Layout.fillWidth: true - Layout.fillHeight: true - clip: true - - ListView { - id: _headerList - - model: viewModel.headerModel - - delegate: ItemDelegate { - width: _headerScrollView.width - text: qsTr("%1: %2").arg(key).arg(value) - - Button { - id: _rmButton - flat: true - icon.width: 24 - icon.height: 24 - icon.name: "user-trash" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_delete_forever.svg" - anchors.right: parent.right - implicitHeight: parent.height - implicitWidth: implicitHeight - - onClicked: viewModel.removeHeaderConfig(index) - } - } - - footer: RowLayout { - width: _headerScrollView.width - - TextField { - id: _keyEdit - placeholderText: qsTr("Key") - Layout.fillWidth: true - } - - TextField { - id: _valueEdit - placeholderText: qsTr("Value") - Layout.fillWidth: true - } - - Button { - id: _addButton - flat: true - enabled: _keyEdit.text !== "" - icon.width: 24 - icon.height: 24 - icon.name: "list-add" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_add.svg" - - onClicked: { - viewModel.addHeaderConfig(_keyEdit.text, _valueEdit.text); - _keyEdit.clear(); - _valueEdit.clear(); - } - } - } - } - } - } - } -} diff --git a/src/imports/mvvmdatasyncquick/DataSyncView.qml b/src/imports/mvvmdatasyncquick/DataSyncView.qml index d4b7147..d595825 100644 --- a/src/imports/mvvmdatasyncquick/DataSyncView.qml +++ b/src/imports/mvvmdatasyncquick/DataSyncView.qml @@ -4,9 +4,9 @@ import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Universal 2.3 import QtQuick.Layouts 1.3 import de.skycoder42.QtDataSync 4.0 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 -import de.skycoder42.QtMvvm.DataSync.Core 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 +import de.skycoder42.QtMvvm.DataSync.Core 1.1 /*! @brief The view implementation for the QtMvvm::DataSyncViewModel * @@ -95,6 +95,11 @@ Page { Pane { anchors.fill: parent + + ColorHelper { + id: helper + } + ColumnLayout { id: _layout anchors.fill: parent @@ -146,14 +151,7 @@ Page { Layout.fillWidth: true Layout.minimumHeight: 1 Layout.maximumHeight: 1 - color: { - if(QuickPresenter.currentStyle === "Material") - return Material.foreground; - else if(QuickPresenter.currentStyle === "Universal") - return Universal.foreground; - else - return "black"; - } + color: helper.text } Label { @@ -253,65 +251,42 @@ Page { } } - RoundActionButton { + RoundMenuButton { id: _addButton - z: 7 + anchors.right: parent.right anchors.bottom: parent.bottom anchors.margins: 16 - checkable: true + text: qsTr("Add new devices") icon.name: checked ? "tab-close" : "list-add" icon.source: checked ? "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_close.svg" : "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_add.svg" - } - - SubButton { - id: _exchangeButton - z: 3 - reference: _addButton - expanded: _addButton.checked + stickyToolTips: true - text: qsTr("Network Exchange") - icon.name: "network-connect" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_exchange.svg" + Action { + text: qsTr("Network Exchange") + icon.name: "network-connect" + icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_exchange.svg" - onClicked: { - viewModel.startNetworkExchange(); - _addButton.checked = false; + onTriggered: viewModel.startNetworkExchange() } - } - SubButton { - id: _exportButton - z: 3 - reference: _exchangeButton - expanded: _addButton.checked + Action { + text: qsTr("Export to file") + icon.name: "document-export" + icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_export.svg" - text: qsTr("Export to file") - icon.name: "document-export" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_export.svg" - - onClicked: { - viewModel.startExport(); - _addButton.checked = false; + onTriggered: viewModel.startExport() } - } - - SubButton { - id: _importButton - z: 3 - reference: _exportButton - expanded: _addButton.checked - text: qsTr("Import from file") - icon.name: "document-import" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_import.svg" + Action { + text: qsTr("Import from file") + icon.name: "document-import" + icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_import.svg" - onClicked: { - viewModel.startImport(); - _addButton.checked = false; + onTriggered: viewModel.startImport() } } } diff --git a/src/imports/mvvmdatasyncquick/DataSyncView11.qml b/src/imports/mvvmdatasyncquick/DataSyncView11.qml deleted file mode 100644 index d595825..0000000 --- a/src/imports/mvvmdatasyncquick/DataSyncView11.qml +++ /dev/null @@ -1,292 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Controls.Material 2.3 -import QtQuick.Controls.Universal 2.3 -import QtQuick.Layouts 1.3 -import de.skycoder42.QtDataSync 4.0 -import de.skycoder42.QtMvvm.Core 1.1 -import de.skycoder42.QtMvvm.Quick 1.1 -import de.skycoder42.QtMvvm.DataSync.Core 1.1 - -/*! @brief The view implementation for the QtMvvm::DataSyncViewModel - * - * @extends QtQuick.Controls.Page - * - * @details This is the view used to present a datasync view model. You can extend the class - * if you need to extend that view. - * - * @sa QtMvvm::DataSyncViewModel - */ -Page { - id: _dataSyncView - - /*! @brief The viewmodel to use - * - * @default{Injected} - * - * @accessors{ - * @memberAc{viewModel} - * @notifyAc{viewModelChanged()} - * } - * - * @sa QtMvvm::DataSyncViewModel - */ - property DataSyncViewModel viewModel: null - - header: ContrastToolBar { - id: _toolBar - - RowLayout { - id: _toolLayout - anchors.fill: parent - spacing: 0 - - ToolBarLabel { - id: _titleLabel - Layout.fillWidth: true - text: qsTr("Synchronization") - } - - ActionButton { - id: _syncButton - icon.name: "view-refresh" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_sync.svg" - text: qsTr("Synchronize") - onClicked: viewModel.syncOrConnect() - } - - ActionButton { - id: _idButton - icon.name: "fingerprint-gui" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_fingerprint.svg" - text: qsTr("Edit Identity") - onClicked: viewModel.showDeviceInfo() - } - - MenuButton { - id: _moreButton - - MenuItem { - text: qsTr("Update exchange key") - onClicked: viewModel.accountManager.updateExchangeKey() - } - - MenuSeparator {} - - MenuItem { - text: qsTr("Reload devices list") - onClicked: viewModel.accountManager.listDevices() - } - - MenuSeparator {} - - MenuItem { - text: qsTr("Change remote server") - onClicked: viewModel.changeRemote() - } - - MenuItem { - text: qsTr("Reset Identity") - onClicked: viewModel.performReset() - } - } - } - } - - Pane { - anchors.fill: parent - - ColorHelper { - id: helper - } - - ColumnLayout { - id: _layout - anchors.fill: parent - spacing: 16 - - Switch { - id: _syncSwitch - text: qsTr("Synchronization enabled") - Layout.fillWidth: true - - MvvmBinding { - viewModel: _dataSyncView.viewModel.syncManager - viewModelProperty: "syncEnabled" - view: _syncSwitch - viewProperty: "checked" - } - } - - Label { - id: _statusLabel - Layout.fillWidth: true - text: viewModel.statusString - font.bold: true - font.pointSize: 16 - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - ProgressBar { - id: _syncProgress - Layout.fillWidth: true - from: 0 - to: 1 - value: viewModel.syncManager.syncProgress - visible: !_errorLabel.visible - } - - Label { - id: _errorLabel - Layout.fillWidth: true - wrapMode: Text.WordWrap - text: viewModel.syncManager.lastError - visible: text != "" - color: "#aa0000" - font.bold: true - } - - Rectangle { - Layout.fillWidth: true - Layout.minimumHeight: 1 - Layout.maximumHeight: 1 - color: helper.text - } - - Label { - Layout.fillWidth: true - text: qsTr("Other Devices:") - } - - ScrollView { - id: _devicesScrollView - - Layout.fillWidth: true - Layout.fillHeight: true - clip: true - - ListView { - id: _devicesList - - model: viewModel.sortedModel - delegate: SwipeDelegate { - id: _swipeDelegate - width: _devicesScrollView.width - - contentItem: ColumnLayout { - id: _delegateLayout - spacing: 8 - - Label { - id: _nameLabel - Layout.fillWidth: true - text: name - } - - Label { - id: _fpLabel - font.pointSize: _nameLabel.font.pointSize * 0.8 - Layout.fillWidth: true - Layout.leftMargin: 8 - text: fingerPrint - elide: Text.ElideMiddle - opacity: 0.75 - } - } - - ListView.onRemove: SequentialAnimation { - PropertyAction { - target: _swipeDelegate - property: "ListView.delayRemove" - value: true - } - NumberAnimation { - target: _swipeDelegate - property: "height" - to: 0 - easing.type: Easing.InOutQuad - } - PropertyAction { - target: _swipeDelegate - property: "ListView.delayRemove" - value: false - } - } - - swipe.right: Rectangle { - height: _devicesScrollView.height - width: height - anchors.right: parent.right - color: { - if(QuickPresenter.currentStyle === "Material") - return Material.color(Material.Red); - else if(QuickPresenter.currentStyle === "Universal") - return Universal.color(Universal.Red); - else - return "#FF0000"; - } - - ActionButton { - anchors.centerIn: parent - implicitHeight: parent.height - implicitWidth: parent.width - - icon.name: "user-trash" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_delete_forever.svg" - text: qsTr("Remove Device") - - Material.foreground: "white" - Universal.foreground: "white" - - onClicked: { - _swipeDelegate.swipe.close(); - viewModel.removeDevice(index) - } - } - } - } - } - } - } - } - - RoundMenuButton { - id: _addButton - - anchors.right: parent.right - anchors.bottom: parent.bottom - anchors.margins: 16 - - text: qsTr("Add new devices") - icon.name: checked ? "tab-close" : "list-add" - icon.source: checked ? - "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_close.svg" : - "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_add.svg" - stickyToolTips: true - - Action { - text: qsTr("Network Exchange") - icon.name: "network-connect" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_exchange.svg" - - onTriggered: viewModel.startNetworkExchange() - } - - Action { - text: qsTr("Export to file") - icon.name: "document-export" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_export.svg" - - onTriggered: viewModel.startExport() - } - - Action { - text: qsTr("Import from file") - icon.name: "document-import" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_import.svg" - - onTriggered: viewModel.startImport() - } - } -} diff --git a/src/imports/mvvmdatasyncquick/ExportSetupView.qml b/src/imports/mvvmdatasyncquick/ExportSetupView.qml index 9548698..f1ffd48 100644 --- a/src/imports/mvvmdatasyncquick/ExportSetupView.qml +++ b/src/imports/mvvmdatasyncquick/ExportSetupView.qml @@ -2,9 +2,9 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import QtQuick.Window 2.2 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 -import de.skycoder42.QtMvvm.DataSync.Core 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 +import de.skycoder42.QtMvvm.DataSync.Core 1.1 AlertDialog { id: _exportSetupView @@ -43,11 +43,10 @@ AlertDialog { } } - Label { + DecorLabel { text: qsTr("Password:") Layout.fillWidth: true - color: _passwordEdit.focus ? _passwordEdit.selectionColor : palette.text - opacity: _passwordEdit.focus ? 1 : 0.5 + edit: _passwordEdit enabled: viewModel.trusted } diff --git a/src/imports/mvvmdatasyncquick/ExportSetupView11.qml b/src/imports/mvvmdatasyncquick/ExportSetupView11.qml deleted file mode 100644 index f1ffd48..0000000 --- a/src/imports/mvvmdatasyncquick/ExportSetupView11.qml +++ /dev/null @@ -1,74 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.3 -import QtQuick.Window 2.2 -import de.skycoder42.QtMvvm.Core 1.1 -import de.skycoder42.QtMvvm.Quick 1.1 -import de.skycoder42.QtMvvm.DataSync.Core 1.1 - -AlertDialog { - id: _exportSetupView - - property PExportSetupViewModel viewModel: null - - title: viewModel.label - - ColumnLayout { - id: _layout - anchors.fill: parent - - CheckBox { - id: _trustBox - text: qsTr("Trusted") - Layout.fillWidth: true - - MvvmBinding { - viewModel: _exportSetupView.viewModel - viewModelProperty: "trusted" - view: _trustBox - viewProperty: "checked" - } - } - - CheckBox { - id: _includeBox - text: qsTr("Include Server") - Layout.fillWidth: true - - MvvmBinding { - viewModel: _exportSetupView.viewModel - viewModelProperty: "includeServer" - view: _includeBox - viewProperty: "checked" - } - } - - DecorLabel { - text: qsTr("Password:") - Layout.fillWidth: true - edit: _passwordEdit - enabled: viewModel.trusted - } - - TextField { - id: _passwordEdit - echoMode: TextInput.Password - Layout.fillWidth: true - enabled: viewModel.trusted - - MvvmBinding { - viewModel: _exportSetupView.viewModel - viewModelProperty: "password" - view: _passwordEdit - viewProperty: "text" - type: MvvmBinding.OneWayToViewModel - } - } - } - - standardButtons: Dialog.Ok | Dialog.Cancel - - onAccepted: viewModel.completeSetup() - - Component.onCompleted: standardButton(Dialog.Ok).enabled = Qt.binding(function(){ return viewModel.valid; }) -} diff --git a/src/imports/mvvmdatasyncquick/IdentityEditView.qml b/src/imports/mvvmdatasyncquick/IdentityEditView.qml index b2fc9d8..ac6e1f1 100644 --- a/src/imports/mvvmdatasyncquick/IdentityEditView.qml +++ b/src/imports/mvvmdatasyncquick/IdentityEditView.qml @@ -2,9 +2,9 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import QtQuick.Window 2.2 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 -import de.skycoder42.QtMvvm.DataSync.Core 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 +import de.skycoder42.QtMvvm.DataSync.Core 1.1 AlertDialog { id: _identityEditView @@ -17,11 +17,10 @@ AlertDialog { id: _layout anchors.fill: parent - Label { + DecorLabel { text: qsTr("Device Name:") Layout.fillWidth: true - color: _nameEdit.focus ? _nameEdit.selectionColor : palette.text - opacity: _nameEdit.focus ? 1 : 0.5 + edit: _nameEdit } TextField { @@ -36,15 +35,16 @@ AlertDialog { } } - Label { + DecorLabel { id: _fpLabel text: qsTr("Device Fingerprint:") Layout.fillWidth: true - opacity: 0.5 Layout.topMargin: 16 + edit: _fpText } Label { + id: _fpText text: viewModel.fingerPrint Layout.fillWidth: true wrapMode: Text.Wrap diff --git a/src/imports/mvvmdatasyncquick/IdentityEditView11.qml b/src/imports/mvvmdatasyncquick/IdentityEditView11.qml deleted file mode 100644 index ac6e1f1..0000000 --- a/src/imports/mvvmdatasyncquick/IdentityEditView11.qml +++ /dev/null @@ -1,62 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.3 -import QtQuick.Window 2.2 -import de.skycoder42.QtMvvm.Core 1.1 -import de.skycoder42.QtMvvm.Quick 1.1 -import de.skycoder42.QtMvvm.DataSync.Core 1.1 - -AlertDialog { - id: _identityEditView - - property PIdentityEditViewModel viewModel: null - - title: qsTr("Edit Identity") - - ColumnLayout { - id: _layout - anchors.fill: parent - - DecorLabel { - text: qsTr("Device Name:") - Layout.fillWidth: true - edit: _nameEdit - } - - TextField { - id: _nameEdit - Layout.fillWidth: true - - MvvmBinding { - viewModel: _identityEditView.viewModel - viewModelProperty: "name" - view: _nameEdit - viewProperty: "text" - } - } - - DecorLabel { - id: _fpLabel - text: qsTr("Device Fingerprint:") - Layout.fillWidth: true - Layout.topMargin: 16 - edit: _fpText - } - - Label { - id: _fpText - text: viewModel.fingerPrint - Layout.fillWidth: true - wrapMode: Text.Wrap - verticalAlignment: Qt.AlignVCenter - font.pointSize: _fpLabel.font.pointSize * 0.8 - Layout.topMargin: 8 - } - } - - standardButtons: Dialog.Save | Dialog.Cancel - - onAccepted: viewModel.save() - - Component.onCompleted: standardButton(Dialog.Save).enabled = Qt.binding(function(){ return viewModel.valid; }) -} diff --git a/src/imports/mvvmdatasyncquick/NetworkExchangeView.qml b/src/imports/mvvmdatasyncquick/NetworkExchangeView.qml index bbb5873..3c462f0 100644 --- a/src/imports/mvvmdatasyncquick/NetworkExchangeView.qml +++ b/src/imports/mvvmdatasyncquick/NetworkExchangeView.qml @@ -1,12 +1,11 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import QtQuick.Controls.Material 2.3 -import QtQuick.Controls.Universal 2.3 import QtQuick.Layouts 1.3 import de.skycoder42.QtDataSync 4.0 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 -import de.skycoder42.QtMvvm.DataSync.Core 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 +import de.skycoder42.QtMvvm.DataSync.Core 1.1 +import de.skycoder42.QtMvvm.DataSync.Quick 1.1 /*! @brief The view implementation for the QtMvvm::NetworkExchangeViewModel * @@ -43,15 +42,19 @@ Page { Pane { anchors.fill: parent + + ColorHelper { + id: helper + } + ColumnLayout { id: _layout anchors.fill: parent - Label { + DecorLabel { text: qsTr("Port:") Layout.fillWidth: true - color: _portEdit.focus ? _nameEdit.selectionColor : palette.text - opacity: _portEdit.focus ? 1 : 0.5 + edit: _portEdit } SpinBox { @@ -69,11 +72,10 @@ Page { } } - Label { + DecorLabel { text: qsTr("Name:") Layout.fillWidth: true - color: _nameEdit.focus ? _nameEdit.selectionColor : palette.text - opacity: _nameEdit.focus ? 1 : 0.5 + edit: _nameEdit } TextField { @@ -92,14 +94,7 @@ Page { Layout.fillWidth: true Layout.minimumHeight: 1 Layout.maximumHeight: 1 - color: { - if(QuickPresenter.currentStyle === "Material") - return Material.foreground; - else if(QuickPresenter.currentStyle === "Universal") - return Universal.foreground; - else - return "black"; - } + color: helper.text } Switch { diff --git a/src/imports/mvvmdatasyncquick/NetworkExchangeView11.qml b/src/imports/mvvmdatasyncquick/NetworkExchangeView11.qml deleted file mode 100644 index 3c462f0..0000000 --- a/src/imports/mvvmdatasyncquick/NetworkExchangeView11.qml +++ /dev/null @@ -1,152 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.3 -import de.skycoder42.QtDataSync 4.0 -import de.skycoder42.QtMvvm.Core 1.1 -import de.skycoder42.QtMvvm.Quick 1.1 -import de.skycoder42.QtMvvm.DataSync.Core 1.1 -import de.skycoder42.QtMvvm.DataSync.Quick 1.1 - -/*! @brief The view implementation for the QtMvvm::NetworkExchangeViewModel - * - * @extends QtQuick.Controls.Page - * - * @details This is the view used to present a network exchange view model. You can extend the - * class if you need to extend that view. - * - * @sa QtMvvm::NetworkExchangeViewModel - */ -Page { - id: _networkExchangeView - - /*! @brief The viewmodel to use - * - * @default{Injected} - * - * @accessors{ - * @memberAc{viewModel} - * @notifyAc{viewModelChanged()} - * } - * - * @sa QtMvvm::NetworkExchangeViewModel - */ - property NetworkExchangeViewModel viewModel: null - - header: ContrastToolBar { - ToolBarLabel { - id: _titleLabel - anchors.fill: parent - text: qsTr("Network Exchange") - } - } - - Pane { - anchors.fill: parent - - ColorHelper { - id: helper - } - - ColumnLayout { - id: _layout - anchors.fill: parent - - DecorLabel { - text: qsTr("Port:") - Layout.fillWidth: true - edit: _portEdit - } - - SpinBox { - id: _portEdit - Layout.fillWidth: true - editable: true - from: 0 - to: 65535 - - MvvmBinding { - viewModel: _networkExchangeView.viewModel - viewModelProperty: "port" - view: _portEdit - viewProperty: "value" - } - } - - DecorLabel { - text: qsTr("Name:") - Layout.fillWidth: true - edit: _nameEdit - } - - TextField { - id: _nameEdit - Layout.fillWidth: true - - MvvmBinding { - viewModel: _networkExchangeView.viewModel - viewModelProperty: "deviceName" - view: _nameEdit - viewProperty: "text" - } - } - - Rectangle { - Layout.fillWidth: true - Layout.minimumHeight: 1 - Layout.maximumHeight: 1 - color: helper.text - } - - Switch { - id: _exchangeSwitch - text: qsTr("Exchange active:") - - MvvmBinding { - viewModel: _networkExchangeView.viewModel - viewModelProperty: "active" - view: _exchangeSwitch - viewProperty: "checked" - } - } - - ScrollView { - id: _exchangeScrollView - - Layout.fillWidth: true - Layout.fillHeight: true - clip: true - - ListView { - id: _exchangeList - - model: viewModel.sortedModel - delegate: ItemDelegate { - width: _exchangeScrollView.width - - contentItem: ColumnLayout { - id: _delegateLayout - spacing: 8 - - Label { - id: _nameLabel - Layout.fillWidth: true - text: name - } - - Label { - id: _addressLabel - font.pointSize: _nameLabel.font.pointSize * 0.8 - Layout.fillWidth: true - Layout.leftMargin: 8 - text: address - opacity: 0.75 - } - } - - onClicked: viewModel.exportTo(index) - } - } - } - } - } -} diff --git a/src/imports/mvvmdatasyncquick/SubButton.qml b/src/imports/mvvmdatasyncquick/SubButton.qml deleted file mode 100644 index 495601f..0000000 --- a/src/imports/mvvmdatasyncquick/SubButton.qml +++ /dev/null @@ -1,74 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import de.skycoder42.QtMvvm.Quick 1.0 - -RoundActionButton { - id: _subButton - - property Item reference: parent - property real btnSpacing: 16 - property bool expanded: false - - highlighted: false - anchors.horizontalCenter: reference.horizontalCenter - anchors.verticalCenter: reference.verticalCenter - implicitHeight: 40 + padding - implicitWidth: 40 + padding - state: expanded ? "expanded" : "collapsed" - - states: [ - State { - name: "collapsed" - PropertyChanges { - target: _subButton - anchors.verticalCenterOffset: 0 - visible: false - } - }, - State { - name: "expanded" - PropertyChanges { - target: _subButton - anchors.verticalCenterOffset: -1 * (reference.height/2 + _subButton.height/2 + btnSpacing) - visible: true - } - } - ] - - transitions: [ - Transition { - from: "collapsed" - to: "expanded" - SequentialAnimation { - PropertyAnimation { - target: _subButton - property: "visible" - duration: 0 - } - PropertyAnimation { - target: _subButton - property: "anchors.verticalCenterOffset" - duration: 250 - easing.type: Easing.OutCubic - } - } - }, - Transition { - from: "expanded" - to: "collapsed" - SequentialAnimation { - PropertyAnimation { - target: _subButton - property: "anchors.verticalCenterOffset" - duration: 250 - easing.type: Easing.InCubic - } - PropertyAnimation { - target: _subButton - property: "visible" - duration: 0 - } - } - } - ] -} diff --git a/src/imports/mvvmdatasyncquick/mvvmdatasyncquick.pro b/src/imports/mvvmdatasyncquick/mvvmdatasyncquick.pro index ddab1b9..7900106 100644 --- a/src/imports/mvvmdatasyncquick/mvvmdatasyncquick.pro +++ b/src/imports/mvvmdatasyncquick/mvvmdatasyncquick.pro @@ -13,17 +13,11 @@ SOURCES += \ qtmvvmdatasyncquick_plugin.cpp QML_FILES += \ - SubButton.qml \ DataSyncView.qml \ - DataSyncView11.qml \ NetworkExchangeView.qml \ - NetworkExchangeView11.qml \ IdentityEditView.qml \ - IdentityEditView11.qml \ ExportSetupView.qml \ - ExportSetupView11.qml \ - ChangeRemoteView.qml \ - ChangeRemoteView11.qml + ChangeRemoteView.qml RESOURCES += \ qtmvvmdatasyncquick_plugin.qrc diff --git a/src/imports/mvvmdatasyncquick/qmldir b/src/imports/mvvmdatasyncquick/qmldir index 0f33ba1..d99fe02 100644 --- a/src/imports/mvvmdatasyncquick/qmldir +++ b/src/imports/mvvmdatasyncquick/qmldir @@ -5,17 +5,10 @@ typeinfo plugins.qmltypes depends de.skycoder42.QtMvvm.DataSync.Core 1.0 depends de.skycoder42.QtMvvm.Quick 1.0 -internal SubButton SubButton.qml - IdentityEditView 1.0 IdentityEditView.qml -IdentityEditView 1.1 IdentityEditView11.qml ExportSetupView 1.0 ExportSetupView.qml -ExportSetupView 1.1 ExportSetupView11.qml ChangeRemoteView 1.0 ChangeRemoteView.qml -ChangeRemoteView 1.1 ChangeRemoteView11.qml DataSyncView 1.0 DataSyncView.qml -DataSyncView 1.1 DataSyncView11.qml NetworkExchangeView 1.0 NetworkExchangeView.qml -NetworkExchangeView 1.1 NetworkExchangeView11.qml diff --git a/src/imports/mvvmquick/ActionButton.qml b/src/imports/mvvmquick/ActionButton.qml index 78ca657..a7c7843 100644 --- a/src/imports/mvvmquick/ActionButton.qml +++ b/src/imports/mvvmquick/ActionButton.qml @@ -1,6 +1,6 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief An extension of the @ref QtQuick.Controls.ToolButton "ToolButton" for better appearance * @@ -28,11 +28,16 @@ ToolButton { display: AbstractButton.IconOnly implicitHeight: 48 - implicitWidth: 48 + //implicitWidth: 48 icon.width: 24 icon.height: 24 + ColorHelper { + id: helper + } + icon.color: helper.text + ToolTip.visible: pressed && _toolButton.toolTip != "" ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval ToolTip.text: _toolButton.toolTip diff --git a/src/imports/mvvmquick/AndroidFileDialog.qml b/src/imports/mvvmquick/AndroidFileDialog.qml index 84ac553..a17ac27 100644 --- a/src/imports/mvvmquick/AndroidFileDialog.qml +++ b/src/imports/mvvmquick/AndroidFileDialog.qml @@ -1,6 +1,6 @@ import QtQuick 2.10 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 FileChooser { id: _fileChooser diff --git a/src/imports/mvvmquick/AndroidFolderDialog.qml b/src/imports/mvvmquick/AndroidFolderDialog.qml index 3a9810b..b13af89 100644 --- a/src/imports/mvvmquick/AndroidFolderDialog.qml +++ b/src/imports/mvvmquick/AndroidFolderDialog.qml @@ -1,6 +1,6 @@ import QtQuick 2.10 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 FileChooser { id: _folderChooser diff --git a/src/imports/mvvmquick/ContrastToolBar.qml b/src/imports/mvvmquick/ContrastToolBar.qml index c6a09a0..abf5abb 100644 --- a/src/imports/mvvmquick/ContrastToolBar.qml +++ b/src/imports/mvvmquick/ContrastToolBar.qml @@ -1,6 +1,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Controls.Material 2.3 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief An extension of the @ref QtQuick.Controls.ToolBar "ToolBar" for better appearance * @@ -16,30 +17,10 @@ ToolBar { height: 56 - /*! @brief Calculates the optimal text color based on the background color - * - * @param type:color accentColor The color to find a contrasting text color for - * @param type:color baseColor The current default text color - * @return type:color A color for text that is easy to read when used with accentColor as - * the background - * - * The method calculates whether the color should be light or dark and then either returns - * white or black, depending on which color fits better. If baseColor is specified, then - * the color value is checked, too. If baseColor is easily readable, it is simply returned - * as result. Otherwise the method proceeds as usual. - */ + // @copydoc QuickPresenter::accentTextColor function accentTextColor(accentColor, baseColor) { - var a = (0.299 * accentColor.r + 0.587 * accentColor.g + 0.144 * accentColor.b); - if(typeof baseColor !== "undefined") { - var b = (0.299 * baseColor.r + 0.587 * baseColor.g + 0.144 * baseColor.b); - if (Math.abs(a - b) >= 0.5) - return baseColor; - } - if(a < 0.5) - return "#FFFFFF"; - else - return "#000000"; + return QuickPresenter.accentTextColor(accentColor, baseColor); } - Material.foreground: accentTextColor(Material.primary) + Material.foreground: QuickPresenter.accentTextColor(Material.primary, Material.foreground) } diff --git a/src/imports/mvvmquick/ContrastToolBar11.qml b/src/imports/mvvmquick/ContrastToolBar11.qml deleted file mode 100644 index abf5abb..0000000 --- a/src/imports/mvvmquick/ContrastToolBar11.qml +++ /dev/null @@ -1,26 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Controls.Material 2.3 -import de.skycoder42.QtMvvm.Quick 1.1 - -/*! @brief An extension of the @ref QtQuick.Controls.ToolBar "ToolBar" for better appearance - * - * @extends QtQuick.Controls.ToolBar - * - * @details This version basically adjusts size and text color of the toolbar itself and - * controls within the toolbar to look better and improve contrast - * - * @sa ActionButton, ToolBarLabel, MenuButton - */ -ToolBar { - id: _contrastToolBar - - height: 56 - - // @copydoc QuickPresenter::accentTextColor - function accentTextColor(accentColor, baseColor) { - return QuickPresenter.accentTextColor(accentColor, baseColor); - } - - Material.foreground: QuickPresenter.accentTextColor(Material.primary, Material.foreground) -} diff --git a/src/imports/mvvmquick/DateEdit.qml b/src/imports/mvvmquick/DateEdit.qml index fae957f..15b0a89 100644 --- a/src/imports/mvvmquick/DateEdit.qml +++ b/src/imports/mvvmquick/DateEdit.qml @@ -98,12 +98,22 @@ ListView { DayOfWeekRow { Layout.fillWidth: true + delegate: Label { + text: model.shortName + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } } WeekNumberColumn { month: model.month year: model.year Layout.fillHeight: true + delegate: Label { + text: model.weekNumber + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } } MonthGrid { @@ -128,7 +138,7 @@ ListView { opacity: model.month === grid.month ? 1 : 0.5 text: model.day font: grid.font - color: isCurrent ? QuickPresenter.accentTextColor(highlightColor, palette.text) : palette.text + color: isCurrent ? QuickPresenter.accentTextColor(highlightColor, helper.text) : helper.text background: Rectangle { readonly property double size: Math.max(dayDelegate.width, dayDelegate.height) * 1.2 diff --git a/src/imports/mvvmquick/FileDialog.qml b/src/imports/mvvmquick/FileDialog.qml index 2b0f652..deb5706 100644 --- a/src/imports/mvvmquick/FileDialog.qml +++ b/src/imports/mvvmquick/FileDialog.qml @@ -1,8 +1,8 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import Qt.labs.platform 1.0 as Labs -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief A file dialog implementation based on the labs file dialog * diff --git a/src/imports/mvvmquick/FolderDialog.qml b/src/imports/mvvmquick/FolderDialog.qml index 842e3b8..67a3712 100644 --- a/src/imports/mvvmquick/FolderDialog.qml +++ b/src/imports/mvvmquick/FolderDialog.qml @@ -1,8 +1,8 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import Qt.labs.platform 1.0 as Labs -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief A folder dialog implementation based on the labs folder dialog * diff --git a/src/imports/mvvmquick/InputDialog.qml b/src/imports/mvvmquick/InputDialog.qml index 0f65a3f..034b254 100644 --- a/src/imports/mvvmquick/InputDialog.qml +++ b/src/imports/mvvmquick/InputDialog.qml @@ -1,7 +1,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Quick 1.1 MsgBoxBase { id: _inputDialog diff --git a/src/imports/mvvmquick/MenuButton.qml b/src/imports/mvvmquick/MenuButton.qml index 45ba345..f11b401 100644 --- a/src/imports/mvvmquick/MenuButton.qml +++ b/src/imports/mvvmquick/MenuButton.qml @@ -1,6 +1,6 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief An extension of the ActionButton to provide a simple "more menu" button * diff --git a/src/imports/mvvmquick/PresenterProgress.qml b/src/imports/mvvmquick/PresenterProgress.qml index a3f161c..031d3b6 100644 --- a/src/imports/mvvmquick/PresenterProgress.qml +++ b/src/imports/mvvmquick/PresenterProgress.qml @@ -1,6 +1,6 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief A @ref QtQuick.Controls.ProgressBar "ProgressBar" with automatic bindings to the * presenters view loading progress diff --git a/src/imports/mvvmquick/RoundActionButton.qml b/src/imports/mvvmquick/RoundActionButton.qml index f2dd840..db43330 100644 --- a/src/imports/mvvmquick/RoundActionButton.qml +++ b/src/imports/mvvmquick/RoundActionButton.qml @@ -1,6 +1,6 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief An extension of the @ref QtQuick.Controls.RoundButton "RoundButton" for better appearance * diff --git a/src/imports/mvvmquick/SectionListView.qml b/src/imports/mvvmquick/SectionListView.qml index 8665fb0..53bb8da 100644 --- a/src/imports/mvvmquick/SectionListView.qml +++ b/src/imports/mvvmquick/SectionListView.qml @@ -1,7 +1,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Quick 1.1 ListView { id: _listView diff --git a/src/imports/mvvmquick/SettingsView.qml b/src/imports/mvvmquick/SettingsView.qml index ed08edd..a87c34d 100644 --- a/src/imports/mvvmquick/SettingsView.qml +++ b/src/imports/mvvmquick/SettingsView.qml @@ -1,8 +1,8 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import de.skycoder42.QtMvvm.Core 1.0 -import de.skycoder42.QtMvvm.Quick 1.0 +import de.skycoder42.QtMvvm.Core 1.1 +import de.skycoder42.QtMvvm.Quick 1.1 /*! @brief The view implementation for the QtMvvm::SettingsViewModel * @@ -66,37 +66,15 @@ Page { anchors.fill: parent spacing: 0 - Item { - id: _labelContainer + SearchBar { + id: _searchBar Layout.fillWidth: true Layout.fillHeight: true - Layout.leftMargin: 16 - ToolBarLabel { - id: _titleLabel - anchors.fill: parent - leftPadding: 0 - text: qsTr("Settings") - visible: !_searchField.visible - } - - TextField { - id: _searchField - horizontalAlignment: Qt.AlignLeft - verticalAlignment: Qt.AlignVCenter - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - height: Math.min(implicitHeight, parent.height) - width: parent.width - } - } - - ActionButton { - id: _searchButton - visible: _builder.allowSearch - text: qsTr("Search in settings") - onClicked: toggleSearchState() + title: qsTr("Settings") + allowSearch: _builder.allowSearch + searchToolTip: qsTr("Search in settings") } ActionButton { @@ -109,107 +87,6 @@ Page { } } - states: [ - State { - name: "title" - PropertyChanges { - target: _searchButton - icon.name: "search" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_search.svg" - } - PropertyChanges { - target: _titleLabel - visible: true - } - PropertyChanges { - target: _searchField - visible: false - width: 0 - } - StateChangeScript { - name: "focusScript" - script: _searchField.clear(); - } - }, - State { - name: "search" - PropertyChanges { - target: _searchButton - icon.name: "gtk-close" - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_close.svg" - } - PropertyChanges { - target: _titleLabel - visible: false - } - PropertyChanges { - target: _searchField - visible: true - width: _labelContainer.width - } - StateChangeScript { - name: "focusScript" - script: _searchField.forceActiveFocus(); - } - } - ] - transitions: [ - Transition { - from: "title" - to: "search" - SequentialAnimation { - PropertyAnimation { - target: _searchField - property: "visible" - duration: 0 - } - PropertyAnimation { - target: _searchField - property: "width" - duration: 250 - easing.type: Easing.InOutCubic - } - PropertyAnimation { - target: _titleLabel - property: "visible" - duration: 0 - } - } - }, - Transition { - from: "search" - to: "title" - SequentialAnimation { - PropertyAnimation { - target: _titleLabel - property: "visible" - duration: 0 - } - PropertyAnimation { - target: _searchField - property: "width" - duration: 250 - easing.type: Easing.InOutCubic - } - PropertyAnimation { - target: _searchField - property: "visible" - duration: 0 - } - } - } - ] - - state: "title" - - //! @brief Can be called to toggle the state of the search bar - function toggleSearchState() { - if(state == "title") - state = "search"; - else - state = "title"; - } - PresenterProgress {} StackView { @@ -265,7 +142,7 @@ Page { id: _builder buildView: _settingsView viewModel: _settingsView.viewModel - filterText: _searchField.text + filterText: _searchBar.searchText onPresentOverview: _overviewComponent.incubateObject(_settingsStack, { model: model, diff --git a/src/imports/mvvmquick/SettingsView11.qml b/src/imports/mvvmquick/SettingsView11.qml deleted file mode 100644 index a87c34d..0000000 --- a/src/imports/mvvmquick/SettingsView11.qml +++ /dev/null @@ -1,159 +0,0 @@ -import QtQuick 2.10 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.3 -import de.skycoder42.QtMvvm.Core 1.1 -import de.skycoder42.QtMvvm.Quick 1.1 - -/*! @brief The view implementation for the QtMvvm::SettingsViewModel - * - * @extends QtQuick.Controls.Page - * - * @details This is the view used to present a settings view model. You can extend the class - * if you need to extend that view. - * - * @sa QtMvvm::SettingsViewModel - */ -Page { - id: _settingsView - - /*! @brief The viewmodel to use - * - * @default{Injected} - * - * @accessors{ - * @memberAc{viewModel} - * @notifyAc{viewModelChanged()} - * } - * - * @sa QtMvvm::SettingsViewModel - */ - property SettingsViewModel viewModel: null - /*! @brief Specifiy if a back action should always close the full settings - * - * @default{`false`} - * - * The settings view consists of an internal stack view to present settings pages. By - * default only one page is closed at a time. By setting this property to true, a close - * action will always close all of them. - * - * @accessors{ - * @memberAc{fullClose} - * @notifyAc{fullCloseChanged()} - * } - */ - property bool fullClose: false - - /*! @brief Can be called to try to close a single settings page - * - * @return type:bool `true` if a page was closed, `false` if not - * - * This method is called by the presenter to close the pages of the settings view one at - * a time. - * - * @note if SettingsView::fullClose is true, this method will always return false. - * - * @sa SettingsView::fullClose, PresentingStackView::closeAction - */ - function closeAction() { - return !fullClose && _settingsStack.closeAction(); - } - - header: ContrastToolBar { - id: _toolBar - - RowLayout { - id: _toolLayout - anchors.fill: parent - spacing: 0 - - SearchBar { - id: _searchBar - - Layout.fillWidth: true - Layout.fillHeight: true - - title: qsTr("Settings") - allowSearch: _builder.allowSearch - searchToolTip: qsTr("Search in settings") - } - - ActionButton { - id: _restoreButton - visible: _builder.allowRestore - icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_settings_backup_restore.svg" - text: qsTr("Restore settings") - onClicked: _builder.restoreDefaults() - } - } - } - - PresenterProgress {} - - StackView { - id: _settingsStack - anchors.fill: parent - - function closeAction() { - if(_settingsStack.depth <= 1) - return false; - else { - _settingsStack.pop(); - return true; - } - } - } - - Component { - id: _overviewComponent - - ScrollView { - id: __ovScrollView - property alias model: __ovListView.model - property alias showSections: __ovListView.showSections - clip: true - - OverviewListView { - id: __ovListView - builder: _builder - } - - Component.onCompleted: _settingsStack.push(__ovScrollView) - } - } - - Component { - id: _sectionViewComponent - - ScrollView { - id: __secScrollView - property alias model: __secListView.model - clip: true - - SectionListView { - id: __secListView - builder: _builder - } - - Component.onCompleted: _settingsStack.push(__secScrollView) - } - } - - SettingsUiBuilder { - id: _builder - buildView: _settingsView - viewModel: _settingsView.viewModel - filterText: _searchBar.searchText - - onPresentOverview: _overviewComponent.incubateObject(_settingsStack, { - model: model, - showSections: hasSections - }, Qt.Synchronous) - onPresentSection: _sectionViewComponent.incubateObject(_settingsStack, { - model: model - }, Qt.Synchronous) - onCloseSettings: { - _settingsView.fullClose = true; - QuickPresenter.popView(); - } - } -} diff --git a/src/imports/mvvmquick/TintIcon.qml b/src/imports/mvvmquick/TintIcon.qml index bde56e2..a873ecb 100644 --- a/src/imports/mvvmquick/TintIcon.qml +++ b/src/imports/mvvmquick/TintIcon.qml @@ -8,6 +8,7 @@ Item { property alias icon: _imgBtn.icon property alias source: _imgBtn.icon.source + property alias color: _imgBtn.icon.color implicitWidth: _imgBtn.icon.width implicitHeight: _imgBtn.icon.height @@ -25,6 +26,11 @@ Item { padding: 0 anchors.fill: parent + ColorHelper { + id: helper + } + icon.color: helper.text + background: Item {} } } diff --git a/src/imports/mvvmquick/mvvmquick.pro b/src/imports/mvvmquick/mvvmquick.pro index b92db8d..2edcec2 100644 --- a/src/imports/mvvmquick/mvvmquick.pro +++ b/src/imports/mvvmquick/mvvmquick.pro @@ -37,7 +37,6 @@ QML_FILES += \ TintIcon.qml \ AlertDialog.qml \ ContrastToolBar.qml \ - ContrastToolBar11.qml \ ToolBarLabel.qml \ ActionButton.qml \ RoundActionButton.qml \ @@ -50,7 +49,6 @@ QML_FILES += \ SectionListView.qml \ OverviewListView.qml \ SettingsView.qml \ - SettingsView11.qml \ SearchBar.qml \ RoundMenuButton.qml \ DecorLabel.qml \ diff --git a/src/imports/mvvmquick/qmldir b/src/imports/mvvmquick/qmldir index f678df0..100f1c1 100644 --- a/src/imports/mvvmquick/qmldir +++ b/src/imports/mvvmquick/qmldir @@ -22,7 +22,6 @@ ColorHelper 1.1 ColorHelper.qml AlertDialog 1.0 AlertDialog.qml ContrastToolBar 1.0 ContrastToolBar.qml -ContrastToolBar 1.1 ContrastToolBar11.qml ToolBarLabel 1.0 ToolBarLabel.qml ActionButton 1.0 ActionButton.qml RoundActionButton 1.0 RoundActionButton.qml @@ -47,7 +46,6 @@ DialogPresenter 1.1 DialogPresenter11.qml PresentingDrawer 1.0 PresentingDrawer.qml SettingsView 1.0 SettingsView.qml -SettingsView 1.1 SettingsView11.qml QtMvvmApp 1.0 QtMvvmApp.qml QtMvvmApp 1.1 QtMvvmApp11.qml diff --git a/tests/auto/mvvmcore/settingsgenerator/test_de.ts b/tests/auto/mvvmcore/settingsgenerator/test_de.ts index 8f6b9d9..2303444 100644 --- a/tests/auto/mvvmcore/settingsgenerator/test_de.ts +++ b/tests/auto/mvvmcore/settingsgenerator/test_de.ts @@ -9,4 +9,44 @@ + + generatortest.xml + + + translate me + + + + + import_config.xml + + + 42 + + + + + import_normal.xml + + + false + + + + + some_context + + + Hello World + + + + + translatortest.xml + + + dummy + + + diff --git a/tests/auto/testrun.pri b/tests/auto/testrun.pri index 50ecab2..f655a2b 100644 --- a/tests/auto/testrun.pri +++ b/tests/auto/testrun.pri @@ -13,7 +13,7 @@ win32 { runtarget.commands += $$escape_expand(\\n\\t)@set QT_QPA_PLATFORM=minimal runtarget.commands += $$escape_expand(\\n\\t)start /w call $(DESTDIR_TARGET) ^> $(DESTDIR)test.log ^|^| echo FAIL ^> fail ^& exit 0 runtarget.commands += $$escape_expand(\\n\\t)type $(DESTDIR)test.log - runtarget.commands += $$escape_expand(\\n\\t)@if exist fail exit 1 + runtarget.commands += $$escape_expand(\\n\\t)@if exist fail exit 42 QMAKE_EXTRA_TARGETS += runtarget } } else {