Compare commits

...

3 Commits

4 changed files with 124 additions and 18 deletions

View File

@ -11,6 +11,7 @@ Item {
required property string info required property string info
required property int amount required property int amount
required property real factor required property real factor
required property string type
property real detailsOpacity: 0 property real detailsOpacity: 0
width: ListView.view.width width: ListView.view.width
@ -66,7 +67,7 @@ Item {
} }
Text { Text {
text: qsTr("Details") text: qsTr("Description")
font.bold: true font.bold: true
font.pointSize: 9 font.pointSize: 9
opacity: item.detailsOpacity opacity: item.detailsOpacity
@ -108,6 +109,7 @@ Item {
anchors { anchors {
top: moreInfoTitle.bottom top: moreInfoTitle.bottom
bottom: parent.bottom bottom: parent.bottom
topMargin: 5
} }
contentHeight: infoText.height contentHeight: infoText.height
clip: true clip: true
@ -119,11 +121,18 @@ Item {
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: details.width width: details.width
} }
Text { Text {
id: amountText id: amountText
text: "Amount: " + item.amount text: "Amount: " + item.amount
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: details.width }
SpinBox {
value: item.amount
width: 80
height: 25
onValueModified: item.amount = value
} }
Text { Text {
id: factorText id: factorText
@ -131,6 +140,59 @@ Item {
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: details.width width: details.width
} }
SpinBox {
id: spinBox
from: 0
value: decimalToInt(item.factor)
to: decimalToInt(100)
stepSize: decimalFactor
editable: true
property int decimals: 2
property real realValue: value / decimalFactor
readonly property int decimalFactor: Math.pow(10, decimals)
function decimalToInt(decimal) {
return decimal * decimalFactor
}
onValueModified: item.factor = value / decimalFactor
validator: DoubleValidator {
bottom: Math.min(spinBox.from, spinBox.to)
top: Math.max(spinBox.from, spinBox.to)
decimals: spinBox.decimals
notation: DoubleValidator.StandardNotation
}
textFromValue: function (value, locale) {
return Number(value / decimalFactor).toLocaleString(
locale, 'f', spinBox.decimals)
}
valueFromText: function (text, locale) {
return Math.round(Number.fromLocaleString(
locale, text) * decimalFactor)
}
}
Text {
id: typeText
text: "Type: " + item.type
wrapMode: Text.WordWrap
}
ComboBox {
// TODO use model from metadata.h (in some way)
model: ["A", "B", "C", ""]
// BUG type will probably not been updated due to undo/redo step
currentIndex: find(item.type)
Component.onCompleted: currentIndex = find(item.type)
onCurrentTextChanged: {
item.type = currentText
}
width: 80
height: 25
}
} }
} }

View File

@ -5,24 +5,45 @@ import QtQuick.Controls.Material
Page { Page {
id: page id: page
ListView { ColumnLayout {
id: listView
anchors.fill: parent anchors.fill: parent
focus: true
clip: true
model: mainModel ListView {
delegateModelAccess: DelegateModel.ReadWrite id: listView
Layout.fillWidth: true
Layout.fillHeight: true
focus: true
clip: true
// delegate: ListItemDelegate {} model: mainModel
// delegate: ExpandableItemDelegate {}
delegate: EditableItemDelegate {}
header: bannercomponent // delegate: ListItemDelegate {}
footer: Rectangle { delegate: ExpandableItemDelegate {}
width: parent.width // delegate: EditableItemDelegate {}
height: 30 delegateModelAccess: DelegateModel.ReadWrite
gradient: mainGradient
header: bannercomponent
footer: Rectangle {
width: parent.width
height: 30
gradient: mainGradient
}
}
Button {
Layout.fillWidth: true
text: "Undo: " + appUndoStack.undoText
enabled: appUndoStack.canUndo
onClicked: {
appUndoStack.undo()
}
}
Button {
Layout.fillWidth: true
text: "Redo: " + appUndoStack.redoText
enabled: appUndoStack.canRedo
onClicked: {
appUndoStack.redo()
}
} }
} }

View File

@ -1,13 +1,19 @@
import QtQuick import QtQuick
import QtQuick.Controls.Material
import QtQuick.Layouts import QtQuick.Layouts
import QtQml.Models import QtQml.Models
Window { Window {
property bool isDataModified: !appUndoStack.isClean
property string titleClean: `${Application.name}`
property string titleDirty: `${Application.name}` + " *"
id: window id: window
width: 480 width: 480
height: 800 height: 800
visible: true visible: true
title: `${Application.name}` title: appUndoStack.clean ? titleClean : titleDirty
property int fontSize: 16 property int fontSize: 16
@ -29,4 +35,18 @@ Window {
id: listPage id: listPage
anchors.fill: parent anchors.fill: parent
} }
Component.onCompleted: {
// core.displayStatusMessage.connect(displayStatusMessage)
appUndoStack.cleanChanged.connect(cleanChanged)
// core.userConfigChanged.connect(onUserConfigChanged)
}
function cleanChanged() {
let clean = appUndoStack.clean
console.debug("Clean state changed to: " + clean)
// if (!clean) {
// footerText.text = ""
// }
}
} }

View File

@ -1,8 +1,9 @@
#include <QGuiApplication> #include <QGuiApplication>
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>
#include <QQmlContext> #include <QQmlContext>
#include <QUndoCommand>
#include <model/generalsortfiltermodel.h> #include "model/generalsortfiltermodel.h"
#include "genericcore.h" #include "genericcore.h"
@ -18,6 +19,7 @@ int main(int argc, char* argv[]) {
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
std::unique_ptr<GenericCore> core = std::make_unique<GenericCore>(); std::unique_ptr<GenericCore> core = std::make_unique<GenericCore>();
std::shared_ptr<GeneralSortFilterModel> mainModel = core->getSortFilterModel(); std::shared_ptr<GeneralSortFilterModel> mainModel = core->getSortFilterModel();
QUndoStack* undoStack = core->getModelUndoStack();
// qInfo() << "QMLApp Version:" << QMLAPP_VERSION; // qInfo() << "QMLApp Version:" << QMLAPP_VERSION;
qInfo() << "core->getString():" << core->toString(); qInfo() << "core->getString():" << core->toString();
@ -25,6 +27,7 @@ int main(int argc, char* argv[]) {
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty(QStringLiteral("core"), core.get()); engine.rootContext()->setContextProperty(QStringLiteral("core"), core.get());
engine.rootContext()->setContextProperty(QStringLiteral("mainModel"), mainModel.get()); engine.rootContext()->setContextProperty(QStringLiteral("mainModel"), mainModel.get());
engine.rootContext()->setContextProperty(QStringLiteral("appUndoStack"), undoStack);
QObject::connect( QObject::connect(
&engine, &QQmlApplicationEngine::objectCreationFailed, &app, &engine, &QQmlApplicationEngine::objectCreationFailed, &app,