16 changed files with 279 additions and 23 deletions
@ -0,0 +1,42 @@ |
|||||
|
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.quickextras 2.0 |
||||
|
import de.skycoder42.QtMvvm.Sample 1.0 |
||||
|
|
||||
|
AlertDialog { |
||||
|
id: resultDialog |
||||
|
|
||||
|
property ResultViewModel viewModel: null |
||||
|
|
||||
|
title: qsTr("Enter something") |
||||
|
|
||||
|
ColumnLayout { |
||||
|
anchors.fill: parent |
||||
|
|
||||
|
Label { |
||||
|
text: qsTr("Enter a result to be reported as event to the main view:") |
||||
|
wrapMode: Text.WordWrap |
||||
|
Layout.fillWidth: true |
||||
|
} |
||||
|
|
||||
|
TextField { |
||||
|
id: resultEdit |
||||
|
Layout.fillWidth: true |
||||
|
selectByMouse: true |
||||
|
|
||||
|
MvvmBinding { |
||||
|
viewModel: resultDialog.viewModel |
||||
|
viewModelProperty: "result" |
||||
|
view: resultEdit |
||||
|
viewProperty: "text" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
standardButtons: Dialog.Ok | Dialog.Cancel |
||||
|
|
||||
|
onAccepted: viewModel.done() |
||||
|
} |
@ -1,11 +1,114 @@ |
|||||
import QtQuick 2.10 |
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.quickextras 2.0 |
||||
|
import de.skycoder42.QtMvvm.Sample 1.0 |
||||
|
|
||||
Rectangle { |
Page { |
||||
property QtObject viewModel: null |
id: sampleView |
||||
|
property SampleViewModel viewModel: null |
||||
|
|
||||
|
header: ActionBar { |
||||
|
showMenuButton: false |
||||
|
title: qsTr("Sample") |
||||
|
|
||||
|
moreMenu: Menu { |
||||
|
Action { |
||||
|
text: qsTr("Another &Input") |
||||
|
onTriggered: viewModel.getInput() |
||||
|
} |
||||
|
Action { |
||||
|
text: qsTr("Add &Files") |
||||
|
onTriggered: viewModel.getFiles() |
||||
|
} |
||||
|
|
||||
|
MenuSeparator {} |
||||
|
|
||||
|
Action { |
||||
|
text: qsTr("&About") |
||||
|
onTriggered: viewModel.about() |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
PresenterProgress {} |
||||
|
|
||||
|
Pane { |
||||
anchors.fill: parent |
anchors.fill: parent |
||||
|
|
||||
color: "red" |
GridLayout { |
||||
|
columns: 2 |
||||
|
anchors.fill: parent |
||||
|
|
||||
|
Label { |
||||
|
text: qsTr("Name:") |
||||
|
} |
||||
|
|
||||
|
TextField { |
||||
|
id: nameEdit |
||||
|
Layout.fillWidth: true |
||||
|
selectByMouse: true |
||||
|
|
||||
|
MvvmBinding { |
||||
|
viewModel: sampleView.viewModel |
||||
|
view: nameEdit |
||||
|
viewModelProperty: "name" |
||||
|
viewProperty: "text" |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Label { |
||||
|
text: qsTr("Active:") |
||||
|
} |
||||
|
|
||||
|
Switch { |
||||
|
id: activeSwitch |
||||
|
Layout.alignment: Qt.AlignLeft |
||||
|
|
||||
|
MvvmBinding { |
||||
|
viewModel: sampleView.viewModel |
||||
|
view: activeSwitch |
||||
|
viewModelProperty: "active" |
||||
|
viewProperty: "checked" |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Label { |
||||
|
text: qsTr("Events:") |
||||
|
} |
||||
|
|
||||
|
RowLayout { |
||||
|
Layout.fillWidth: true |
||||
|
|
||||
|
Button { |
||||
|
text: qsTr("&Clear") |
||||
|
onClicked: viewModel.clearEvents() |
||||
|
} |
||||
|
|
||||
|
Button { |
||||
|
text: qsTr("Get &Result") |
||||
|
onClicked: viewModel.getResult() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
ListView { |
||||
|
id: lView |
||||
|
Layout.columnSpan: 2 |
||||
|
Layout.fillWidth: true |
||||
|
Layout.fillHeight: true |
||||
|
clip: true |
||||
|
|
||||
|
ScrollBar.vertical: ScrollBar {} |
||||
|
|
||||
|
model: viewModel.eventsModel |
||||
|
|
||||
Component.onCompleted: console.log(viewModel) |
delegate: ItemDelegate { |
||||
|
width: parent.width |
||||
|
text: viewModel.eventsModel.data(viewModel.eventsModel.index(index, 0)) //because "display" is not accessible |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
} |
} |
||||
|
@ -0,0 +1,20 @@ |
|||||
|
{ |
||||
|
"dependencies": [ |
||||
|
{ |
||||
|
"package": "de.skycoder42.quickextras", |
||||
|
"provider": "qpm", |
||||
|
"version": "2.1.0" |
||||
|
} |
||||
|
], |
||||
|
"license": { |
||||
|
"file": "", |
||||
|
"name": "" |
||||
|
}, |
||||
|
"prcFile": "", |
||||
|
"priFile": "", |
||||
|
"priIncludes": [ |
||||
|
], |
||||
|
"publishers": { |
||||
|
}, |
||||
|
"source": false |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
import QtQuick 2.10 |
||||
|
import QtQuick.Controls 2.3 |
||||
|
|
||||
|
QtObject { |
||||
|
id: _popPresenter |
||||
|
|
||||
|
property var popups: [] |
||||
|
|
||||
|
function presentPopup(root, popup) { |
||||
|
popup.parent = root; |
||||
|
popup.closed.connect(function() { |
||||
|
var index = popups.indexOf(popup); |
||||
|
if(index > -1) { |
||||
|
popup.destroy(); |
||||
|
popups.splice(index, 1); |
||||
|
} |
||||
|
}); |
||||
|
popup.open(); |
||||
|
popups.push(popup); |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
function closeAction() { |
||||
|
if(popups.length > 0) { |
||||
|
popups[popups.length - 1].close(); |
||||
|
return true; |
||||
|
} else |
||||
|
return false; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue