From 8236bd32e6d74a2fcce4c4bee098bc6c7570801d9a58c0e2b23763b245f4cbd9 Mon Sep 17 00:00:00 2001 From: Daniel Stoppek Date: Mon, 24 Mar 2025 11:21:50 +0100 Subject: [PATCH] positioning searchbar and quickfilter --- Gui/EmployeesTable.qml | 255 +++++++++++++++++++++++++---------------- Gui/ObjectsTable.qml | 101 ++++++++++++---- Gui/OffersTable.qml | 70 ++++++++++- TeroStyle/qmldir | 1 + 4 files changed, 300 insertions(+), 127 deletions(-) diff --git a/Gui/EmployeesTable.qml b/Gui/EmployeesTable.qml index aaffbec..02a11aa 100644 --- a/Gui/EmployeesTable.qml +++ b/Gui/EmployeesTable.qml @@ -3,114 +3,170 @@ import QtQuick.Layouts import QtQuick.Controls import Qt.labs.qmlmodels -Item +ColumnLayout { - property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"] - SearchBar + function viewEmployees(criterion) { - id:searchBar - anchors.margins: 9 + employee_model.viewCriterion(criterion) + // employee_model.viewCriterion(criterion, showProcessed.checked, showFired.checked, showEveryone.checked) } - Button - { - id: addEmployeeBtn - text: qsTr("Mitarbeiter Hinzufügen") - icon.source: "qrc:/images/PlusCircle.svg" - anchors.right: parent.right - flat: true - onClicked: appLoader.source = "AddApplicant.qml" - } + anchors.fill: parent - ButtonGroup + Component.onCompleted: employeesStack.pop() + // property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"] + RowLayout { - id: criterion - // buttons: criterion.children - onClicked: + SearchBar { - viewEmployees(criterion.checkedButton.text) + id:searchBar + } + QuickFilter + { + onSelectedChanged: (name) => + { + business_model.viewCriterion(name) + } + + model: ListModel + { + ListElement + { + + name: "Alle" + text: qsTr("Alle") + selected: true + } + ListElement + { + name: "Bewerber" + text: qsTr("Bewerber") + selected: false + } + ListElement + { + name: "Mitarbeiter" + text: qsTr("Kunde") + selected: false + } + ListElement + { + name: "Lieferant" + text: qsTr("Lieferant") + selected: false + } + ListElement + { + name: "Erledigt" + text: qsTr("Erledigt") + selected: false + } + } + } + Button + { + id: addEmployeeBtn + text: qsTr("Mitarbeiter Hinzufügen") + icon.source: "qrc:/images/PlusCircle.svg" + Layout.alignment: Qt.AlignRight + flat: true + onClicked: appLoader.source = "AddApplicant.qml" } } - ColumnLayout - { - id: tableParent - clip: true - anchors - { - top: searchBar.bottom - bottom: parent.bottom - left: parent.left - right: parent.right - } - RowLayout - { - id: viewCriterion - RadioButton - { - //id: showAll - checked: true - text: qsTr("Alle") - ButtonGroup.group: criterion - //onClicked: viewEmployees(showAll) - } - RadioButton - { - //id: showApplicant - text: qsTr("Bewerber") - ButtonGroup.group: criterion - //onClicked: viewEmployees(showApplicant) - } - RadioButton - { - //id: showEmployee - text: qsTr("Mitarbeiter") - ButtonGroup.group: criterion - //onClicked: viewEmployees(showEmployee) - } - CheckBox - { - id: showEveryone - text: qsTr("Alle Stati") - checked: true - onClicked: viewEmployees(criterion.checkedButton.text) - onCheckedChanged: - { - showFired.checked = false - showProcessed.checked = false - } - } - CheckBox - { - id: showProcessed - text: qsTr("Erledigt") - enabled: !showEveryone.checked - checked: false - onClicked: - { - showFired.checked = false - viewEmployees(criterion.checkedButton.text) - } - } - CheckBox - { - id: showFired - text: qsTr("Ausgeschieden") - enabled: !showEveryone.checked - checked: false - onClicked: - { - showProcessed.checked = false - viewEmployees(criterion.checkedButton.text) - } - } + // ButtonGroup + // { + // id: criterion + // // buttons: criterion.children + // onClicked: + // { + // viewEmployees(criterion.checkedButton.text) + // } + // } - } + // ColumnLayout + // { + // id: tableParent + // clip: true + // anchors + // { + + // top: searchBar.bottom + // bottom: parent.bottom + // left: parent.left + // right: parent.right + // } + + // RowLayout + // { + // id: viewCriterion + + // RadioButton + // { + // //id: showAll + // checked: true + // text: qsTr("Alle") + // ButtonGroup.group: criterion + // //onClicked: viewEmployees(showAll) + // } + // RadioButton + // { + // //id: showApplicant + // text: qsTr("Bewerber") + // ButtonGroup.group: criterion + // //onClicked: viewEmployees(showApplicant) + // } + // RadioButton + // { + // //id: showEmployee + // text: qsTr("Mitarbeiter") + // ButtonGroup.group: criterion + // //onClicked: viewEmployees(showEmployee) + // } + + // CheckBox + // { + // id: showEveryone + // text: qsTr("Alle Stati") + // checked: true + // onClicked: viewEmployees(criterion.checkedButton.text) + // onCheckedChanged: + // { + // showFired.checked = false + // showProcessed.checked = false + // } + // } + // CheckBox + // { + // id: showProcessed + // text: qsTr("Erledigt") + // enabled: !showEveryone.checked + // checked: false + // onClicked: + // { + // showFired.checked = false + // viewEmployees(criterion.checkedButton.text) + // } + // } + // CheckBox + // { + // id: showFired + // text: qsTr("Ausgeschieden") + // enabled: !showEveryone.checked + // checked: false + // onClicked: + // { + // showProcessed.checked = false + // viewEmployees(criterion.checkedButton.text) + // } + // } + + // } HorizontalHeaderView { @@ -143,8 +199,9 @@ Item { id: appliEmpTable //Layout.fillHeight: true - height: tableParent.height - (viewCriterion.height + employeeTableHeader.height) + //height: tableParent.height - (viewCriterion.height + employeeTableHeader.height) Layout.fillWidth: true + Layout.fillHeight: true columnSpacing: 1 rowSpacing: 2 alternatingRows: true @@ -216,9 +273,9 @@ Item } } - function viewEmployees(criterion) - { - employee_model.viewCriterion(criterion, showProcessed.checked, showFired.checked, showEveryone.checked) - } - Component.onCompleted: employeesStack.pop() -} + // function viewEmployees(criterion) + // { + // employee_model.viewCriterion(criterion, showProcessed.checked, showFired.checked, showEveryone.checked) + // } + // Component.onCompleted: employeesStack.pop() + diff --git a/Gui/ObjectsTable.qml b/Gui/ObjectsTable.qml index fcd01d9..57b7c6a 100644 --- a/Gui/ObjectsTable.qml +++ b/Gui/ObjectsTable.qml @@ -5,37 +5,86 @@ import Qt.labs.qmlmodels 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") - anchors.right: parent.right + Layout.alignment: Qt.AlignRight onClicked: appLoader.source = "AddObject.qml" } } + ColumnLayout { id: tableColumn clip: true - anchors - { - top: searchBar.bottom - bottom: parent.bottom - left: parent.left - right: parent.right - topMargin: 15 - } + // anchors + // { + // top: searchBar.bottom + // bottom: parent.bottom + // left: parent.left + // right: parent.right + // topMargin: 15 + // } HorizontalHeaderView { id: horizontalHeaderview @@ -134,26 +183,32 @@ ColumnLayout // } } - Item - { - Layout.fillWidth: true - } } + 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() - } + // Component.onCompleted: + // { + // contact_model.objectContactAdded.connect(onObjectContactAdded) + // objectsStack.pop() + // } - function onObjectContactAdded(added) - { - console.log(added) - if (added) object_model.viewCriterion("") - } + // function onObjectContactAdded(added) + // { + // console.log(added) + // if (added) object_model.viewCriterion("") + // } } diff --git a/Gui/OffersTable.qml b/Gui/OffersTable.qml index 2b3c3fc..1d4210e 100644 --- a/Gui/OffersTable.qml +++ b/Gui/OffersTable.qml @@ -3,12 +3,72 @@ import QtQuick.Layouts import QtQuick.Controls import Qt.labs.qmlmodels -Item +ColumnLayout { - property var availableFilters: [] - - SearchBar + anchors.fill: parent + function viewOffers(criterion) { - id:searchBar + //offer_model.viewCriterion(criterion) } + + 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/TeroStyle/qmldir b/TeroStyle/qmldir index a41b3cf..2b7975c 100644 --- a/TeroStyle/qmldir +++ b/TeroStyle/qmldir @@ -11,3 +11,4 @@ Label Label.qml QuickFilter QuickFilter.qml +