From 445c183e710581b5bf6616d5db7c61235ba6f1cba6d208c389c4f4901cd643f1 Mon Sep 17 00:00:00 2001 From: Yuri Becker Date: Tue, 25 Mar 2025 11:39:45 +0100 Subject: [PATCH 1/2] Clean up leftover files and commented code --- Gui/ObjectTable.qml.orig | 26 --- Gui/ObjectTable_BACKUP_93344.qml | 26 --- Gui/ObjectTable_BASE_93344.qml | 22 --- Gui/ObjectTable_LOCAL_93344.qml | 22 --- Gui/ObjectTable_REMOTE_93344.qml | 22 --- Gui/ObjectsTable.qml.orig | 257 ------------------------ Gui/OfferTable.qml.orig | 22 --- Gui/OffersTable.qml.orig | 90 --------- Gui/TopBar.qml | 322 ++++++++++--------------------- TeroStyle/BarButton.qml | 82 +++----- 10 files changed, 128 insertions(+), 763 deletions(-) delete mode 100644 Gui/ObjectTable.qml.orig delete mode 100644 Gui/ObjectTable_BACKUP_93344.qml delete mode 100644 Gui/ObjectTable_BASE_93344.qml delete mode 100644 Gui/ObjectTable_LOCAL_93344.qml delete mode 100644 Gui/ObjectTable_REMOTE_93344.qml delete mode 100644 Gui/ObjectsTable.qml.orig delete mode 100644 Gui/OfferTable.qml.orig delete mode 100644 Gui/OffersTable.qml.orig diff --git a/Gui/ObjectTable.qml.orig b/Gui/ObjectTable.qml.orig deleted file mode 100644 index 9e0c078..0000000 --- a/Gui/ObjectTable.qml.orig +++ /dev/null @@ -1,26 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -Item { - property var availableFilters: [""] - anchors.fill: parent - - StackView - { - id: objectsStack - anchors.fill: parent - initialItem: "ObjectsTable.qml" -<<<<<<< HEAD - anchors.topMargin: Dimensions.m -======= ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d - } -} - - - - - - diff --git a/Gui/ObjectTable_BACKUP_93344.qml b/Gui/ObjectTable_BACKUP_93344.qml deleted file mode 100644 index 9e0c078..0000000 --- a/Gui/ObjectTable_BACKUP_93344.qml +++ /dev/null @@ -1,26 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -Item { - property var availableFilters: [""] - anchors.fill: parent - - StackView - { - id: objectsStack - anchors.fill: parent - initialItem: "ObjectsTable.qml" -<<<<<<< HEAD - anchors.topMargin: Dimensions.m -======= ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d - } -} - - - - - - diff --git a/Gui/ObjectTable_BASE_93344.qml b/Gui/ObjectTable_BASE_93344.qml deleted file mode 100644 index 8fc8d48..0000000 --- a/Gui/ObjectTable_BASE_93344.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -Item { - property var availableFilters: [""] - - StackView - { - id: objectsStack - anchors.fill: parent - initialItem: "ObjectsTable.qml" - anchors.margins: 9 - } -} - - - - - - diff --git a/Gui/ObjectTable_LOCAL_93344.qml b/Gui/ObjectTable_LOCAL_93344.qml deleted file mode 100644 index e72e3a8..0000000 --- a/Gui/ObjectTable_LOCAL_93344.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -Item { - property var availableFilters: [""] - - StackView - { - id: objectsStack - anchors.fill: parent - initialItem: "ObjectsTable.qml" - anchors.topMargin: Dimensions.m - } -} - - - - - - diff --git a/Gui/ObjectTable_REMOTE_93344.qml b/Gui/ObjectTable_REMOTE_93344.qml deleted file mode 100644 index 19c9865..0000000 --- a/Gui/ObjectTable_REMOTE_93344.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -Item { - property var availableFilters: [""] - anchors.fill: parent - - StackView - { - id: objectsStack - anchors.fill: parent - initialItem: "ObjectsTable.qml" - } -} - - - - - - diff --git a/Gui/ObjectsTable.qml.orig b/Gui/ObjectsTable.qml.orig deleted file mode 100644 index 46d3b1d..0000000 --- a/Gui/ObjectsTable.qml.orig +++ /dev/null @@ -1,257 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -<<<<<<< HEAD -ColumnLayout -{ - function viewCriterion(criterion) - { - business_model.viewCriterion(criterion.text); - } - function onObjectContactAdded(added) - { - console.log(added) - if (added) object_model.viewCriterion("") - } - - anchors.fill: parent - - Component.onCompleted: - { - contact_model.objectContactAdded.connect(onObjectContactAdded) - objectsStack.pop() - } - RowLayout - { - SearchBar - { - - } - QuickFilter { - onSelectedChanged: (name) => { - business_model.viewCriterion(name) - } - - model: ListModel { - ListElement { - - name: "Alle" - text: qsTr("Alle") - selected: true - } - ListElement { - name: "Interessent" - text: qsTr("Interessent") - selected: false - } - ListElement { - name: "Kunde" - text: qsTr("Kunde") - selected: false - } - ListElement { - name: "Lieferant" - text: qsTr("Lieferant") - selected: false - } - ListElement { - name: "Erledigt" - text: qsTr("Erledigt") - selected: false - } - } - } - Button - { - id: addObjectBtn - icon.source: "qrc:/images/PlusCircle.svg" - text: qsTr("Objekt Hinzufügen") - Layout.alignment: Qt.AlignRight - onClicked: appLoader.source = "AddObject.qml" - } -======= -ColumnLayout { - spacing: Dimensions.l - function onObjectContactAdded(added) { - console.log(added); - if (added) - object_model.viewCriterion(""); - } - - Component.onCompleted: { - contact_model.objectContactAdded.connect(onObjectContactAdded); - objectsStack.pop(); ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d - } - - RowLayout { - Layout.fillWidth: true - spacing: Dimensions.l - -<<<<<<< HEAD - ColumnLayout - { - id: tableColumn - clip: true - // anchors - // { - // top: searchBar.bottom - // bottom: parent.bottom - // left: parent.left - // right: parent.right - // topMargin: 15 - // } - HorizontalHeaderView - { -======= - SearchBar { - } - - Button { - id: addObjectBtn - Layout.alignment: Qt.AlignRight - - icon.source: "qrc:/images/PlusCircle.svg" - text: qsTr("Objekt Hinzufügen") - - onClicked: appLoader.source = "AddObject.qml" - } - } - ColumnLayout { - id: tableColumn - Layout.fillWidth: true - Layout.fillHeight: true - Layout.verticalStretchFactor: 1 - - clip: true - - HorizontalHeaderView { ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d - id: horizontalHeaderview - - Layout.fillWidth: true - implicitHeight: 40 - movableColumns: true //@disable-check M16 - syncView: objectTable - - delegate: Rectangle { - Layout.fillWidth: true - border.color: addObjectBtn.palette.base - color: addObjectBtn.palette.alternateBase - implicitHeight: 40 - implicitWidth: 1 - - Text { - color: addObjectBtn.palette.text - elide: Text.ElideRight - height: parent.height - horizontalAlignment: Text.AlignHCenter - text: model.display - verticalAlignment: Text.AlignVCenter - width: parent.width - } - } - } - TableView { - id: objectTable - - property real newWidth: 0 - - Layout.fillWidth: true - Layout.fillHeight: true - alternatingRows: true - columnSpacing: 1 - height: parent.height - horizontalHeaderview.height - model: object_model - resizableColumns: true // @disable-check M16 - rowSpacing: 2 - selectionBehavior: TableView.SelectRows - z: 0 - - ScrollBar.vertical: ScrollBar { - policy: objectTable.contentHeight > objectTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff - } - delegate: Rectangle { - required property bool current - required property bool selected - - color: selected ? addObjectBtn.palette.highlight - : (objectTable.alternatingRows && row % 2 !== 0 ? addObjectBtn.palette.base - : addObjectBtn.palette.alternateBase) - - implicitHeight: 25 - implicitWidth: objectTable.width / objectTable.columns - - Text { - color: addObjectBtn.palette.text - elide: Text.ElideRight - height: parent.height - leftPadding: 9 //@disable-check M16 - text: (model.display === null || model.display === undefined) ? "" : model.display - verticalAlignment: Text.AlignVCenter - width: parent.width - } - MouseArea { - id: mouseArea - - property bool hovered: false - - anchors.fill: parent - hoverEnabled: true - - onDoubleClicked: { - objectsStack.push("ObjectDetails.qml", { - selectedObject: row - }); - } - onEntered: { - objectTable.selectionModel.select(objectTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows); - } - } - } - - selectionModel: ItemSelectionModel { - id: obmodel - - model: objectTable.model - } - } -<<<<<<< HEAD - - - } - Item - { - - Layout.fillHeight: true - } - // function onObjectContactAdded(added) - // { - // console.log(added) - // if (added) object_model.viewCriterion("") - // } - // function viewCriterion(criterion) - // { - // object_model.viewCriterion(criterion.text) - // } - - // Component.onCompleted: - // { - // contact_model.objectContactAdded.connect(onObjectContactAdded) - // objectsStack.pop() - // } - - // function onObjectContactAdded(added) - // { - // console.log(added) - // if (added) object_model.viewCriterion("") - // } -======= - Item { - Layout.fillWidth: true - } - } ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d -} diff --git a/Gui/OfferTable.qml.orig b/Gui/OfferTable.qml.orig deleted file mode 100644 index 10d6b8e..0000000 --- a/Gui/OfferTable.qml.orig +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - - -Item -{ - anchors.fill: parent - StackView - { - id: offersStack - - anchors.fill: parent - initialItem: "OffersTable.qml" -<<<<<<< HEAD - anchors.topMargin: Dimensions.m -======= ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d - } -} - diff --git a/Gui/OffersTable.qml.orig b/Gui/OffersTable.qml.orig deleted file mode 100644 index 64dd9ec..0000000 --- a/Gui/OffersTable.qml.orig +++ /dev/null @@ -1,90 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -<<<<<<< HEAD -ColumnLayout -{ - anchors.fill: parent - function viewOffers(criterion) - { - //offer_model.viewCriterion(criterion) -======= -ColumnLayout { - property var availableFilters: [] - - Layout.fillWidth: true - anchors.fill: parent - - RowLayout { - spacing: Dimensions.l - SearchBar { - } - } - Item { - Layout.fillHeight: true ->>>>>>> 7f5675c06d72728a2249b66dc18d56221ad5a0c97791edbc86afeb57dcb3392d - } - - RowLayout - { - SearchBar - { - id:searchBar - } - QuickFilter - { - onSelectedChanged: (name) => - { - business_model.viewCriterion(name) - } - - model: ListModel - { - ListElement - { - - name: "Alle" - text: qsTr("Alle") - selected: true - } - ListElement - { - name: "Offen" - text: qsTr("Offen") - selected: false - } - ListElement - { - name: "Abgeschlossen" - text: qsTr("Abgeschlossen") - selected: false - } - - ListElement - { - name: "Erledigt" - text: qsTr("Erledigt") - selected: false - } - } - } - Button - { - id: addOfferBtn - text: qsTr("Angebote Hinzufügen") - icon.source: "qrc:/images/PlusCircle.svg" - Layout.alignment: Qt.AlignRight - flat: true - //onClicked: appLoader.source = "AddOffer.qml" - } - } - Item { - id: spacer - Layout.fillHeight: true - - } - - -} diff --git a/Gui/TopBar.qml b/Gui/TopBar.qml index 095f33e..6378bc9 100644 --- a/Gui/TopBar.qml +++ b/Gui/TopBar.qml @@ -2,269 +2,159 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts - -ColumnLayout -{ +ColumnLayout { id: topBar - spacing: 0 + height: parent.height - anchors - { - top: parent.top + spacing: 0 + + anchors { left: parent.left - - + top: parent.top } - ButtonGroup - { + ButtonGroup { id: buttonBar - } - BarButton - { + } + BarButton { id: dashBoard - flat: true - text: qsTr("Dashboard") - implicitWidth: 90 - implicitHeight: 90 + + ButtonGroup.group: buttonBar Layout.margins: 3 Layout.topMargin: Dimensions.s + flat: true icon.source: "qrc:/images/dash.svg" - ButtonGroup.group: buttonBar - // background: Rectangle - // { - // id: dashiBackie - // border.width: dashBoard.activeFocus ? 2 : 1 - // border.color: "#888" - // radius: 4 - // gradient: Gradient - // { - // GradientStop { position: 0 ; color: dashBoard.pressed ? "#000" : "#001" } - // GradientStop { position: 1 ; color: dashBoard.pressed ? "#100" : "#000" } - // } - // } - onClicked: - { - appLoader.source = "Dashboard.qml" + implicitHeight: 90 + implicitWidth: 90 + text: qsTr("Dashboard") - - // dashiBackie.border.width = 2 - // kundiBackie.border.width = 1 - // mitoBackie.border.width = 1 - // invoBackie.border.width = 1 - // objBackie.border.width = 1 + onClicked: { + appLoader.source = "Dashboard.qml"; } } - - BarButton - { + BarButton { id: kunden - flat: true - text: qsTr("Kunden") - implicitWidth: 90 - implicitHeight: 90 + + ButtonGroup.group: buttonBar Layout.margins: 3 + flat: true icon.source: "qrc:/images/customer.svg" - ButtonGroup.group: buttonBar - // background: Rectangle - // { - // id: kundiBackie - // border.width: kunden.activeFocus ? 2 : 1 - // border.color: "#888" - // radius: 4 - // gradient: Gradient - // { - // GradientStop { position: 0 ; color: kunden.pressed ? "#000" : "#001" } - // GradientStop { position: 1 ; color: kunden.pressed ? "#100" : "#000" } - // } - // } - onClicked: - { - // TODO: here we should call the model - appLoader.source = "CustomerTable.qml" - // kundiBackie.border.width = 2 - // dashiBackie.border.width = 1 - // mitoBackie.border.width = 1 - // invoBackie.border.width = 1 - // objBackie.border.width = 1 + implicitHeight: 90 + implicitWidth: 90 + text: qsTr("Kunden") + + onClicked: { + appLoader.source = "CustomerTable.qml"; } } - - BarButton - { + BarButton { id: objekt - flat: true - text: qsTr("Objekt") - implicitWidth: 90 - implicitHeight: 90 + + ButtonGroup.group: buttonBar Layout.margins: 3 + flat: true icon.source: "qrc:/images/object.svg" - ButtonGroup.group: buttonBar - // background: Rectangle - // { - // id: objBackie - // border.width: objekt.activeFocus ? 2 : 1 - // border.color: "#888" - // radius: 4 - // gradient: Gradient - // { - // GradientStop { position: 0 ; color: objekt.pressed ? "#000" : "#001" } - // GradientStop { position: 1 ; color: objekt.pressed ? "#100" : "#000" } - // } - // } - onClicked: - { - appLoader.source = "ObjectTable.qml" - // objBackie.border.width = 2 - // dashiBackie.border.width = 1 - // kundiBackie.border.width = 1 - // mitoBackie.border.width = 1 - // invoBackie.border.width = 1 + implicitHeight: 90 + implicitWidth: 90 + text: qsTr("Objekt") + + onClicked: { + appLoader.source = "ObjectTable.qml"; } - } - - BarButton - { + BarButton { id: mitarbeiter - flat: true - text: qsTr("Mitarbeiter") - implicitWidth: 90 - implicitHeight: 90 + + ButtonGroup.group: buttonBar Layout.margins: 3 + flat: true icon.source: "qrc:/images/employee.svg" + implicitHeight: 90 + implicitWidth: 90 + text: qsTr("Mitarbeiter") - ButtonGroup.group: buttonBar - // background: Rectangle - // { - // id: mitoBackie - // border.width: mitarbeiter.activeFocus ? 2 : 1 - // border.color: "#888" - // radius: 4 - // gradient: Gradient - // { - // GradientStop { position: 0 ; color: mitarbeiter.pressed ? "#000" : "#001" } - // GradientStop { position: 1 ; color: mitarbeiter.pressed ? "#100" : "#000" } - // } - // } - onClicked: - { - appLoader.source = "EmployeeTable.qml" - // mitoBackie.border.width = 2 - // dashiBackie.border.width = 1 - // kundiBackie.border.width = 1 - // invoBackie.border.width = 1 - // objBackie.border.width = 1 + onClicked: { + appLoader.source = "EmployeeTable.qml"; } } - - BarButton - { + BarButton { id: offers - flat: true - text: qsTr("Angebote") - implicitWidth: 90 - implicitHeight: 90 - Layout.margins: 3 - icon.source: "qrc:/images/offer.svg" + ButtonGroup.group: buttonBar - // background: Rectangle - // { - // id: offersBackie - // border.width: offers.activeFocus ? 2 : 1 - // border.color: "#888" - // radius: 4 - // gradient: Gradient - // { - // GradientStop { position: 0 ; color: offers.pressed ? "#000" : "#001" } - // GradientStop { position: 1 ; color: offers.pressed ? "#100" : "#000" } - // } - // } - onClicked: - { - appLoader.source = "OfferTable.qml" - // mitoBackie.border.width = 2 - // dashiBackie.border.width = 1 - // kundiBackie.border.width = 1 - // invoBackie.border.width = 1 - // objBackie.border.width = 1 - // offersBackie.border.width = 1 + Layout.margins: 3 + flat: true + icon.source: "qrc:/images/offer.svg" + implicitHeight: 90 + implicitWidth: 90 + text: qsTr("Angebote") + + onClicked: { + appLoader.source = "OfferTable.qml"; } } - - BarButton - { + BarButton { id: abrechnung - flat: true - text: qsTr("Abrechnung") - implicitWidth: 90 - implicitHeight: 90 - Layout.margins: 3 - icon.source: "qrc:/images/invoice.svg" - ButtonGroup.group: buttonBar - // background: Rectangle - // { - // id: invoBackie - // border.width: abrechnung.activeFocus ? 2 : 1 - // border.color: "#888" - // radius: 4 - // gradient: Gradient - // { - // GradientStop { position: 0 ; color: abrechnung.pressed ? "#000" : "#001" } - // GradientStop { position: 1 ; color: abrechnung.pressed ? "#100" : "#000" } - // } - // } - } - Item - { + ButtonGroup.group: buttonBar + Layout.margins: 3 + flat: true + icon.source: "qrc:/images/invoice.svg" + implicitHeight: 90 + implicitWidth: 90 + text: qsTr("Abrechnung") + } + Item { id: hspacer + Layout.fillHeight: true } - - BarButton - { + BarButton { id: atajos - implicitWidth: 90 - implicitHeight: 90 - checkable: false - icon.source: "qrc:/images/Bars3.svg" - flat: true Layout.bottomMargin: Dimensions.s + checkable: false + flat: true + icon.source: "qrc:/images/Bars3.svg" + implicitHeight: 90 + implicitWidth: 90 + onClicked: mainMenu.open() Menu { - id: mainMenu - MenuItem - { - //text: qsTr("Benutzer-Verwaltung") - //onTriggered: appLoader.source = "UsersPage.qml" - text: qsTr("Einstellungen") - onTriggered: - { - // TODO: Check if logged-in user is admin first!! + id: mainMenu - appLoader.source = "PyqcrmConf.qml" - } - } - MenuSeparator {} - MenuItem { text: qsTr("Als PDF exportieren") } - MenuSeparator {} - MenuItem { text: qsTr("Drucken") } - MenuItem - { - text: qsTr("Erweiterter Druck") - onTriggered: printerDialog.show() - } - MenuSeparator {} - MenuItem - { - text: qsTr("Über PYQCRM") - onTriggered: readMeWin.show() + MenuItem { + text: qsTr("Einstellungen") + + onTriggered: { + // TODO: Check if logged-in user is admin first!! + + appLoader.source = "PyqcrmConf.qml"; } } + MenuSeparator { + } + MenuItem { + text: qsTr("Als PDF exportieren") + } + MenuSeparator { + } + MenuItem { + text: qsTr("Drucken") + } + MenuItem { + text: qsTr("Erweiterter Druck") + + onTriggered: printerDialog.show() + } + MenuSeparator { + } + MenuItem { + text: qsTr("Über PYQCRM") + + onTriggered: readMeWin.show() + } + } } } - diff --git a/TeroStyle/BarButton.qml b/TeroStyle/BarButton.qml index 0572df1..6c87f15 100644 --- a/TeroStyle/BarButton.qml +++ b/TeroStyle/BarButton.qml @@ -6,82 +6,44 @@ import QtQuick.Templates as T T.ToolButton { id: control - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) checkable: true icon.color: Colors.foreground icon.height: 36 icon.width: 36 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding) topPadding: 20 - // horizontalPadding: padding + 2 - // spacing: 6 - // display: AbstractButton.TextUnderIcon - - // icon.color: control.checked || control.highlighted ? control.palette.brightText : - // control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - - contentItem: Column - { - - IconLabel - { - - - x: parent.width * .5 - width * .5 - // height: icon.height - // width: icon.width - icon: control.icon - - // display: control.display - - - } - Label - { - text: control.text - font: Typography.dash - - color: Colors.foreground - x: parent.width * .5 - width * .5 - - - - } - - // spacing: control.spacing - // mirrored: control.mirrored - // display: control.TextUnderIcon - - // icon: control.icon - // text: control.text - // font: control.font - // color: control.checked || control.highlighted ? control.palette.brightText : - // control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - - } background: Rectangle { id: mainrect - implicitWidth: control.width + + border.color: control.palette.highlight + border.width: control.visualFocus ? 2 : 0 + color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, control.palette.mid, control.down ? 0.5 : 0.0) implicitHeight: control.height + implicitWidth: control.width visible: !control.flat || control.down || control.checked || control.highlighted x: control.left y: control.top - color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, - control.palette.mid, control.down ? 0.5 : 0.0) - border.color: control.palette.highlight - border.width: control.visualFocus ? 2 : 0 - Rectangle - { + + Rectangle { + color: "yellow" implicitHeight: control.height implicitWidth: 6 x: mainrect.left y: mainrect.top - color: "yellow" - } } - + contentItem: Column { + IconLabel { + icon: control.icon + x: parent.width * .5 - width * .5 + } + Label { + color: Colors.foreground + font: Typography.dash + text: control.text + x: parent.width * .5 - width * .5 + } + } } From 309f1f58d796a9537eef1d0213bbca48be098cc10231521f3b9b2a57183b71d9 Mon Sep 17 00:00:00 2001 From: Yuri Becker Date: Tue, 25 Mar 2025 12:28:30 +0100 Subject: [PATCH 2/2] Fix up Menu --- Gui/Dashboard.qml | 151 +++++++++----------- Gui/{TopBar.qml => Navigation.qml} | 28 ---- Gui/main.qml | 219 +++++++++++++---------------- Gui/qmldir | 2 +- TeroStyle/BarButton.qml | 53 +++---- TeroStyle/Colors.qml | 3 +- TeroStyle/Typography.qml | 55 +++----- qml.qrc | 2 +- 8 files changed, 217 insertions(+), 296 deletions(-) rename Gui/{TopBar.qml => Navigation.qml} (81%) diff --git a/Gui/Dashboard.qml b/Gui/Dashboard.qml index 22bf6c2..37f523e 100644 --- a/Gui/Dashboard.qml +++ b/Gui/Dashboard.qml @@ -2,127 +2,106 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts -ColumnLayout -{ - anchors.top: TopBar.bottom +ColumnLayout { + anchors.top: Navigation.bottom - Rectangle - { - color: "dimgrey" + Rectangle { + Layout.bottomMargin: 3 Layout.fillHeight: true Layout.fillWidth: true - Layout.bottomMargin: 3 + color: "dimgrey" radius: 45 - RowLayout - { + RowLayout { anchors.fill: parent - Rectangle - { + Rectangle { id: contractButton - width: 300 - height: 145 - color: "darkslategray" - radius: 45 + Layout.alignment: Qt.AlignHCenter border.color: "steelblue" border.width: 1 - Text - { - text: qsTr("Aufträge") - anchors.centerIn: parent - font.pixelSize: 45 - font.bold: true - color: "lightgoldenrodyellow" - } + color: "darkslategray" + height: 145 + radius: 45 + width: 300 - MouseArea - { + Text { + anchors.centerIn: parent + color: "lightgoldenrodyellow" + font.bold: true + font.pixelSize: 45 + text: qsTr("Aufträge") + } + MouseArea { anchors.fill: parent cursorShape: Qt.PointingHandCursor hoverEnabled: true - onPressed: - { - contractButton.color = "darkolivegreen" - contractButton.border.width = 3 - contractButton.border.color = "skyblue" - console.log("Aufträge...") + + onExited: { + contractButton.color = "darkslategray"; + contractButton.border.color = "steelblue"; + contractButton.border.width = 1; } - - onReleased: - { - contractButton.color = "darkslategray" - contractButton.border.width = 1 - contractButton.border.color = "steelblue" + onHoveredChanged: { + var w = contractButton.border.width === 3 ? 1 : 3; + contractButton.border.width = w; } - - onHoveredChanged: - { - var w = contractButton.border.width === 3? 1: 3 - contractButton.border.width = w + onPressed: { + contractButton.color = "darkolivegreen"; + contractButton.border.width = 3; + contractButton.border.color = "skyblue"; + console.log("Aufträge..."); } - - onExited: - { - - contractButton.color = "darkslategray" - contractButton.border.color = "steelblue" - contractButton.border.width = 1 + onReleased: { + contractButton.color = "darkslategray"; + contractButton.border.width = 1; + contractButton.border.color = "steelblue"; } } } - - Rectangle - { + Rectangle { id: offerButton - width: 300 - height: 145 - color: "darkslategray" - radius: 45 + Layout.alignment: Qt.AlignHCenter border.color: "steelblue" border.width: 1 - Text - { - text: qsTr("Angebote") + color: "darkslategray" + height: 145 + radius: 45 + width: 300 + + Text { anchors.centerIn: parent - font.pixelSize: 45 - font.bold: true color: "lightgoldenrodyellow" + font.bold: true + font.pixelSize: 45 + text: qsTr("Angebote") } - MouseArea - { + MouseArea { anchors.fill: parent cursorShape: Qt.PointingHandCursor hoverEnabled: true - onPressed: - { - offerButton.color = "darkolivegreen" - offerButton.border.width = 3 - offerButton.border.color = "skyblue" - console.log("Angebote...") + onExited: { + offerButton.color = "darkslategray"; + offerButton.border.color = "steelblue"; + offerButton.border.width = 1; } - onReleased: - { - offerButton.color = "darkslategray" - offerButton.border.width = 1 - offerButton.border.color = "steelblue" + onHoveredChanged: { + var w = offerButton.border.width === 3 ? 1 : 3; + offerButton.border.width = w; } - - onHoveredChanged: - { - var w = offerButton.border.width === 3? 1: 3 - offerButton.border.width = w + onPressed: { + offerButton.color = "darkolivegreen"; + offerButton.border.width = 3; + offerButton.border.color = "skyblue"; + console.log("Angebote..."); } - - onExited: - { - - offerButton.color = "darkslategray" - offerButton.border.color = "steelblue" - offerButton.border.width = 1 + onReleased: { + offerButton.color = "darkslategray"; + offerButton.border.width = 1; + offerButton.border.color = "steelblue"; } } } diff --git a/Gui/TopBar.qml b/Gui/Navigation.qml similarity index 81% rename from Gui/TopBar.qml rename to Gui/Navigation.qml index 6378bc9..b0a4058 100644 --- a/Gui/TopBar.qml +++ b/Gui/Navigation.qml @@ -3,8 +3,6 @@ import QtQuick.Controls import QtQuick.Layouts ColumnLayout { - id: topBar - height: parent.height spacing: 0 @@ -14,18 +12,12 @@ ColumnLayout { } ButtonGroup { id: buttonBar - } BarButton { id: dashBoard ButtonGroup.group: buttonBar - Layout.margins: 3 - Layout.topMargin: Dimensions.s - flat: true icon.source: "qrc:/images/dash.svg" - implicitHeight: 90 - implicitWidth: 90 text: qsTr("Dashboard") onClicked: { @@ -36,11 +28,7 @@ ColumnLayout { id: kunden ButtonGroup.group: buttonBar - Layout.margins: 3 - flat: true icon.source: "qrc:/images/customer.svg" - implicitHeight: 90 - implicitWidth: 90 text: qsTr("Kunden") onClicked: { @@ -51,11 +39,7 @@ ColumnLayout { id: objekt ButtonGroup.group: buttonBar - Layout.margins: 3 - flat: true icon.source: "qrc:/images/object.svg" - implicitHeight: 90 - implicitWidth: 90 text: qsTr("Objekt") onClicked: { @@ -66,11 +50,7 @@ ColumnLayout { id: mitarbeiter ButtonGroup.group: buttonBar - Layout.margins: 3 - flat: true icon.source: "qrc:/images/employee.svg" - implicitHeight: 90 - implicitWidth: 90 text: qsTr("Mitarbeiter") onClicked: { @@ -81,11 +61,7 @@ ColumnLayout { id: offers ButtonGroup.group: buttonBar - Layout.margins: 3 - flat: true icon.source: "qrc:/images/offer.svg" - implicitHeight: 90 - implicitWidth: 90 text: qsTr("Angebote") onClicked: { @@ -96,11 +72,7 @@ ColumnLayout { id: abrechnung ButtonGroup.group: buttonBar - Layout.margins: 3 - flat: true icon.source: "qrc:/images/invoice.svg" - implicitHeight: 90 - implicitWidth: 90 text: qsTr("Abrechnung") } Item { diff --git a/Gui/main.qml b/Gui/main.qml index 404cf37..393c4b7 100644 --- a/Gui/main.qml +++ b/Gui/main.qml @@ -4,173 +4,148 @@ import QtQuick.Controls import QtQuick.Dialogs import QtCore -ApplicationWindow -{ +ApplicationWindow { id: appWindow - width: Screen.width * .75 - height: Screen.height * .85 - visible: true - title: "TERO Personal" - font: Typography.body - color: Colors.mantle + property string confile: "" property alias settingsFileDialog: settingsFiledialog + function goToLogin() { + appLoader.source = "LoginScreen.qml"; + navigation.visible = true; + } + function showWindow(why) { + if (why === 3) { + systray.setVisible(false); + appWindow.show(); + } + } + + color: Colors.mantle + font: Typography.body + height: Screen.height * .85 palette.text: Colors.foreground + title: "TERO Personal" + visible: true + width: Screen.width * .75 + Component.onCompleted: { + config.configurationReady.connect(goToLogin); + systray.activated.connect(showWindow); - TopBar - { - id:topBar - visible: bad_config || !db_con ? false: true + if (bad_config) { + importDialog.open(); + } else { + if (db_con) + appLoader.source = "LoginScreen.qml"; + else + appLoader.source = "NoDbConnection.qml"; + } + } + onClosing: close => { + if (false) { + console.log("Main window closed!! Was soll ich tun? kann ich mich beenden?!"); + } + } + onVisibilityChanged: { + if (appWindow.visibility === Window.Minimized && config.systray()) { + systray.setVisible(true); + appWindow.hide(); + } + } + onWindowStateChanged: windowState => { + if (windowState !== Qt.WindowMinimized) { + systray.setVisible(false); + appWindow.show(); + } } - PrinterDialog - { + Navigation { + id: navigation + + visible: bad_config || !db_con ? false : true + } + PrinterDialog { id: printerDialog - } - ReadMe - { + } + ReadMe { id: readMeWin - } - Item - { + } + Item { id: mainView + } - Loader - { - id: appLoader - - anchors - { - left: topBar.right + Rectangle { + id: contentBackground + anchors { + bottom: parent.bottom + left: navigation.right right: parent.right top: parent.top - bottom: parent.bottom - - - - topMargin: Dimensions.l - bottomMargin: Dimensions.l - rightMargin: Dimensions.l - leftMargin: Dimensions.l - } + color: Colors.background + } + + Loader { + id: appLoader property alias window: appWindow + + anchors { + fill: contentBackground + margins: Dimensions.l + } } - - Dialog - { + Dialog { id: importDialog - modal: true + anchors.centerIn: parent + modal: true standardButtons: Dialog.Yes | Dialog.No - onAccepted: settingsFiledialog.open() - onRejected: appLoader.source= "Firststart.qml" title: qsTr("Einstellungen importieren") + + onAccepted: settingsFiledialog.open() + onRejected: appLoader.source = "Firststart.qml" } - - FileDialog - { - + FileDialog { id: settingsFiledialog - title: qsTr("PYQCRM Einstellungen") + currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0] modality: "ApplicationModal" nameFilters: [qsTr("PYQCRM Einstellungen (*.pyqrec)")] - onAccepted: - { - exportFilePassword.open() - confile = selectedFile + title: qsTr("PYQCRM Einstellungen") + + onAccepted: { + exportFilePassword.open(); + confile = selectedFile; } } - - Dialog - { + Dialog { id: exportFilePassword - modal: true - title: qsTr("PYQCRM Einstellungen") + anchors.centerIn: parent + modal: true standardButtons: Dialog.Ok | Dialog.Cancel + title: qsTr("PYQCRM Einstellungen") + onAccepted: config.importConfig(confile, exportPasswordInput.text) - ColumnLayout - { - RowLayout - { - Label - { + + ColumnLayout { + RowLayout { + Label { text: qsTr("Passwort eingeben:") } - - TextField - { + TextField { id: exportPasswordInput + echoMode: TextInput.Password implicitWidth: 300 } } } } - - Component.onCompleted: - { - config.configurationReady.connect(goToLogin) - systray.activated.connect(showWindow) - - if(bad_config) - { - importDialog.open() - } - else - { - if (db_con) appLoader.source= "LoginScreen.qml" - else appLoader.source= "NoDbConnection.qml" - } - } - - - function showWindow(why) - { - if (why === 3) - { - systray.setVisible(false) - appWindow.show() - } - } - onVisibilityChanged: - { - if (appWindow.visibility === Window.Minimized && config.systray()) - { - systray.setVisible(true) - appWindow.hide() - } - } - - onWindowStateChanged: (windowState) => - { - if (windowState !== Qt.WindowMinimized) - { - systray.setVisible(false) - appWindow.show() - } - } - - onClosing: (close) => - { - if (false) - { - console.log("Main window closed!! Was soll ich tun? kann ich mich beenden?!") - } - } - - function goToLogin() - { - appLoader.source= "LoginScreen.qml" - topBar.visible = true - } } diff --git a/Gui/qmldir b/Gui/qmldir index 2c090fe..a5ac533 100644 --- a/Gui/qmldir +++ b/Gui/qmldir @@ -1,2 +1,2 @@ module gui -TopBar 1.0 TopBar.qml +TopBar 1.0 Navigation.qml diff --git a/TeroStyle/BarButton.qml b/TeroStyle/BarButton.qml index 6c87f15..c29de2e 100644 --- a/TeroStyle/BarButton.qml +++ b/TeroStyle/BarButton.qml @@ -10,40 +10,43 @@ T.ToolButton { icon.color: Colors.foreground icon.height: 36 icon.width: 36 - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding) - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding) + implicitHeight: 90 + implicitWidth: 100 topPadding: 20 - background: Rectangle { - id: mainrect - - border.color: control.palette.highlight - border.width: control.visualFocus ? 2 : 0 - color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, control.palette.mid, control.down ? 0.5 : 0.0) - implicitHeight: control.height - implicitWidth: control.width - visible: !control.flat || control.down || control.checked || control.highlighted - x: control.left - y: control.top - - Rectangle { - color: "yellow" - implicitHeight: control.height - implicitWidth: 6 - x: mainrect.left - y: mainrect.top - } - } contentItem: Column { + readonly property color color: control.checked ? Colors.primaryShade : control.hovered ? Colors.primary : Colors.foreground + IconLabel { - icon: control.icon + icon.color: parent.color + icon.source: control.icon.source + icon.height: control.icon.height + icon.width: control.icon.width + color: parent.color x: parent.width * .5 - width * .5 } Label { - color: Colors.foreground - font: Typography.dash + font: Typography.small + color: parent.color text: control.text x: parent.width * .5 - width * .5 } } + + Rectangle { + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.top: parent.top + color: control.checked ? Colors.primaryShade : Colors.primary + implicitWidth: 6 + visible: control.checked || control.hovered + } + MouseArea { + id: mouseArea + + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + + onPressed: mouse => mouse.accepted = false + } } diff --git a/TeroStyle/Colors.qml b/TeroStyle/Colors.qml index bcc1df6..af7cb98 100644 --- a/TeroStyle/Colors.qml +++ b/TeroStyle/Colors.qml @@ -11,9 +11,10 @@ QtObject { readonly property color primary: "#b81a34" readonly property color primaryContrast: "#fdfdfd" readonly property color primaryLighter: Qt.lighter(primary, 1.5) + readonly property color primaryShade: theme === dark ? primaryLighter : Qt.darker(primary, 1.5) readonly property color foreground: theme === dark ? "#fdfdfd" : "#110b0c" readonly property color background: theme === dark ? "#303136" : "#eff1f5" - readonly property color mantle: theme === dark ? "#1e1f22" : "#e7e9ef" + readonly property color mantle: theme === dark ? "#1E1E23" : "#e7e9ef" readonly property color interactive: theme === dark ? "#878b97" : "#d9d9da" readonly property color error: theme === dark ? "#ff2264" : "#ff004b" readonly property color transparent: "transparent" diff --git a/TeroStyle/Typography.qml b/TeroStyle/Typography.qml index 145d16d..006b1c4 100644 --- a/TeroStyle/Typography.qml +++ b/TeroStyle/Typography.qml @@ -3,38 +3,29 @@ pragma Singleton import QtCore import QtQuick -Item -{ - readonly property FontLoader robotoCondensed: FontLoader - { +Item { + readonly property font body: ({ + family: robotoCondensed.font, + pointSize: 16, + weight: Font.Medium, + letterSpacing: 0, + kerning: true + }) + readonly property font small: ({ + family: body.family, + pointSize: 11, + weight: Font.DemiBold, + letterSpacing: body.letterSpacing, + kerning: body.kerning + }) + readonly property font h1: ({ + family: body.family, + pointSize: 38, + weight: body.weight, + letterSpacing: body.letterSpacing, + kerning: body.kerning + }) + readonly property FontLoader robotoCondensed: FontLoader { source: "qrc:/fonts/RobotoCondensed.otf" } - - readonly property font body: - ({ - family: robotoCondensed.font, - pointSize: 16, - weight: Font.Medium, - letterSpacing: 0, - kerning: true, - }) - - readonly property font h1: - ({ - family: body.family, - pointSize: 38, - weight: body.weight, - letterSpacing: body.letterSpacing, - kerning: body.kerning, - }) - - readonly property font dash: - ({ - family: body.family, - pointSize: 10, - weight: body.weight, - letterSpacing: body.letterSpacing, - kerning: body.kerning, - }) - } diff --git a/qml.qrc b/qml.qrc index 05ec096..fe5b25a 100644 --- a/qml.qrc +++ b/qml.qrc @@ -1,6 +1,6 @@ - Gui/TopBar.qml + Gui/Navigation.qml Gui/AdminUserConfig.qml Gui/EncryptionKey.qml Gui/DbConfiguration.qml