From 3083406b1b13c4424982a5d5628e3d4aea1177119a90151d667eed461ec80e0d Mon Sep 17 00:00:00 2001 From: Yuri Becker Date: Thu, 3 Apr 2025 13:06:37 +0200 Subject: [PATCH] Use common StackView --- Gui/AddCustomer.qml | 6 +- Gui/AddObject.qml | 4 +- Gui/AddOffer.qml | 2 +- Gui/CustomerDetails.qml | 3 +- Gui/CustomerTable.qml | 21 ----- Gui/CustomersTable.qml | 7 +- Gui/Employees/AddApplicant.qml | 4 +- Gui/{ => Employees}/ApplicantBankData.qml | 0 .../ApplicantNationalInsurance.qml | 0 Gui/{ => Employees}/ApplicantPersonalData.qml | 0 Gui/{ => Employees}/ApplicantVarious.qml | 0 Gui/Employees/EmployeeDetails.qml | 2 +- Gui/Employees/EmployeesTable.qml | 4 +- Gui/Employees/EmployeesView.qml | 16 ---- Gui/Firststart.qml | 4 +- Gui/LoginScreen.qml | 14 ++-- Gui/Navigation.qml | 27 ++---- Gui/NoDbConnection.qml | 83 ++++--------------- Gui/Notifications.qml | 2 - Gui/ObjectDetails.qml | 2 +- Gui/ObjectTable.qml | 22 ----- Gui/ObjectsTable.qml | 10 ++- Gui/OfferTable.qml | 17 ---- Gui/OffersTable.qml | 73 +++++++--------- Gui/PyqcrmConf.qml | 2 +- Gui/UtilityDialogs.qml | 2 +- Gui/main.qml | 21 ++--- TeroStyle/BarButton.qml | 20 +++-- TeroStyle/H1.qml | 5 ++ TeroStyle/H2.qml | 5 ++ TeroStyle/qmldir | 9 +- doc/README.md | 4 - enc_key_backup.txt | 2 +- lib/DB/EmployeeModel.py | 1 - qml.qrc | 14 ++-- 35 files changed, 131 insertions(+), 277 deletions(-) delete mode 100644 Gui/CustomerTable.qml rename Gui/{ => Employees}/ApplicantBankData.qml (100%) rename Gui/{ => Employees}/ApplicantNationalInsurance.qml (100%) rename Gui/{ => Employees}/ApplicantPersonalData.qml (100%) rename Gui/{ => Employees}/ApplicantVarious.qml (100%) delete mode 100644 Gui/Employees/EmployeesView.qml delete mode 100644 Gui/ObjectTable.qml delete mode 100644 Gui/OfferTable.qml create mode 100644 TeroStyle/H1.qml create mode 100644 TeroStyle/H2.qml delete mode 100644 doc/README.md diff --git a/Gui/AddCustomer.qml b/Gui/AddCustomer.qml index fca1a07..23c04f6 100644 --- a/Gui/AddCustomer.qml +++ b/Gui/AddCustomer.qml @@ -59,7 +59,7 @@ ColumnLayout Button { text: qsTr("Abbrechen") - onClicked: appLoader.source = "CustomerTable.qml" + onClicked: contentStack.pop() } Button { @@ -72,7 +72,7 @@ ColumnLayout { new_business = JsLib.parseForm(customerView) business_model.addBusiness(new_business, 0) - appLoader.source = "CustomerTable.qml" + contentStack.pop() } else { @@ -99,7 +99,7 @@ ColumnLayout { var con_id = arguments[0] business_model.addBusiness(new_business, con_id) - appLoader.source = "CustomerTable.qml" + contentStack.pop() } } diff --git a/Gui/AddObject.qml b/Gui/AddObject.qml index dd061bb..d0c2cd3 100644 --- a/Gui/AddObject.qml +++ b/Gui/AddObject.qml @@ -61,7 +61,7 @@ ColumnLayout Button { text: qsTr("Abbrechen") - onClicked: appLoader.source = "ObjectTable.qml" + onClicked: contentStack.pop() } Button { @@ -105,7 +105,7 @@ ColumnLayout object_model.viewCriterion("Alle") } - appLoader.source = "ObjectTable.qml" + contentStack.pop() } } diff --git a/Gui/AddOffer.qml b/Gui/AddOffer.qml index 5aba818..88fe235 100644 --- a/Gui/AddOffer.qml +++ b/Gui/AddOffer.qml @@ -47,7 +47,7 @@ ColumnLayout Button { text: qsTr("Abbrechen") - onClicked: appLoader.source = "OfferTable.qml" + onClicked: contentStack.pop() } Button { diff --git a/Gui/CustomerDetails.qml b/Gui/CustomerDetails.qml index fbd4e54..e0c13d3 100644 --- a/Gui/CustomerDetails.qml +++ b/Gui/CustomerDetails.qml @@ -12,8 +12,7 @@ ColumnLayout Button { text: qsTr("Zurück") - //Layout.columnSpan: 2 - onClicked: customersStack.pop() + onClicked: contentStack.pop() } SplitView diff --git a/Gui/CustomerTable.qml b/Gui/CustomerTable.qml deleted file mode 100644 index c0e8485..0000000 --- a/Gui/CustomerTable.qml +++ /dev/null @@ -1,21 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - - -Item { - anchors.fill: parent - property var availableFilters: ["Name", "Adresse", "PLZ", "Ort"] - - StackView - { - id: customersStack - anchors.fill: parent - initialItem: "CustomersTable.qml" - } -} - - - - diff --git a/Gui/CustomersTable.qml b/Gui/CustomersTable.qml index 930801c..661ebec 100644 --- a/Gui/CustomersTable.qml +++ b/Gui/CustomersTable.qml @@ -4,6 +4,7 @@ import QtQuick.Controls import Qt.labs.qmlmodels ColumnLayout { + property var availableFilters: ["Name", "Adresse", "PLZ", "Ort"] function viewCriterion(criterion) { @@ -15,7 +16,7 @@ ColumnLayout { anchors.fill: parent spacing: Dimensions.l - Component.onCompleted: customersStack.pop() + Component.onCompleted: contentStack.pop() RowLayout { @@ -67,7 +68,7 @@ ColumnLayout { Layout.alignment: Qt.AlignRight icon.source: "qrc:/images/PlusCircle.svg" text: qsTr("Kunde Hinzufügen") - onClicked: appLoader.source = "AddCustomer.qml" + onClicked: contentStack.push("AddCustomer.qml") } } ColumnLayout @@ -153,7 +154,7 @@ ColumnLayout { onDoubleClicked: { business_model.onRowClicked(row); - customersStack.push("CustomerDetails.qml", { + contentStack.push("CustomerDetails.qml", { selectedClient: row }); } diff --git a/Gui/Employees/AddApplicant.qml b/Gui/Employees/AddApplicant.qml index 6210d0b..b71afb5 100644 --- a/Gui/Employees/AddApplicant.qml +++ b/Gui/Employees/AddApplicant.qml @@ -114,7 +114,7 @@ ColumnLayout Button { text: qsTr("Abbrechen") - onClicked: appLoader.source = "Employees/EmployeesView.qml" + onClicked: contentStack.pop() } Button { @@ -156,7 +156,7 @@ ColumnLayout console.log('addedsuccesfully') else console.log('failedtoadd') - appLoader.source = 'Employees/EmployeesView.qml' + contentStack.pop() } function checkFields() diff --git a/Gui/ApplicantBankData.qml b/Gui/Employees/ApplicantBankData.qml similarity index 100% rename from Gui/ApplicantBankData.qml rename to Gui/Employees/ApplicantBankData.qml diff --git a/Gui/ApplicantNationalInsurance.qml b/Gui/Employees/ApplicantNationalInsurance.qml similarity index 100% rename from Gui/ApplicantNationalInsurance.qml rename to Gui/Employees/ApplicantNationalInsurance.qml diff --git a/Gui/ApplicantPersonalData.qml b/Gui/Employees/ApplicantPersonalData.qml similarity index 100% rename from Gui/ApplicantPersonalData.qml rename to Gui/Employees/ApplicantPersonalData.qml diff --git a/Gui/ApplicantVarious.qml b/Gui/Employees/ApplicantVarious.qml similarity index 100% rename from Gui/ApplicantVarious.qml rename to Gui/Employees/ApplicantVarious.qml diff --git a/Gui/Employees/EmployeeDetails.qml b/Gui/Employees/EmployeeDetails.qml index c310f7d..ab4b84e 100644 --- a/Gui/Employees/EmployeeDetails.qml +++ b/Gui/Employees/EmployeeDetails.qml @@ -16,7 +16,7 @@ Item Button { text: qsTr("Mitarbeiter zeigen") - onClicked: employeesStack.pop() + onClicked: contentStack.pop() } } diff --git a/Gui/Employees/EmployeesTable.qml b/Gui/Employees/EmployeesTable.qml index 3e44acc..7ab25d0 100644 --- a/Gui/Employees/EmployeesTable.qml +++ b/Gui/Employees/EmployeesTable.qml @@ -47,7 +47,7 @@ ColumnLayout { icon.source: "qrc:/images/PlusCircle.svg" text: qsTr("Mitarbeiter Hinzufügen") - onClicked: appLoader.source = "Employees/AddApplicant.qml" + onClicked: contentStack.push("AddApplicant.qml") } } HorizontalHeaderView { @@ -114,7 +114,7 @@ ColumnLayout { hoverEnabled: true onDoubleClicked: { - employeesStack.push("EmployeeDetails.qml", { + contentStack.push("EmployeeDetails.qml", { selectedEmployee: row }); } diff --git a/Gui/Employees/EmployeesView.qml b/Gui/Employees/EmployeesView.qml deleted file mode 100644 index efd43e5..0000000 --- a/Gui/Employees/EmployeesView.qml +++ /dev/null @@ -1,16 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Qt.labs.qmlmodels - -Item { - anchors.fill: parent - - StackView { - id: employeesStack - - anchors.fill: parent - initialItem: "EmployeesTable.qml" - } -} - diff --git a/Gui/Firststart.qml b/Gui/Firststart.qml index 1f87c58..a4e63ff 100644 --- a/Gui/Firststart.qml +++ b/Gui/Firststart.qml @@ -77,7 +77,7 @@ Item title: qsTr("Wiederherstellen") buttons: MessageDialog.Yes | MessageDialog.No onAccepted: recoveryPaswordDialog.open() - onRejected: gotoLogin() + onRejected: contentStack.replace("LoginSreen.qml") } MessageDialog @@ -147,7 +147,7 @@ Item if (!adminAvailable) config.saveRecoveryKey(saveRecoveryDialog.currentFile, recpass) else config.getRecoveryKey(saveRecoveryDialog.currentFile, recpass) - gotoLogin() + contentStack.replace("LoginSreen.qml") } onRejected: diff --git a/Gui/LoginScreen.qml b/Gui/LoginScreen.qml index a00d58c..fa80131 100644 --- a/Gui/LoginScreen.qml +++ b/Gui/LoginScreen.qml @@ -4,20 +4,19 @@ import QtQuick.Controls import QtQuick.Dialogs import QtQuick.Layouts - Item { property string recpass: "" function dbConnectionFailed(msg) { - oschkar.notificationBox.informativeText = msg; - oschkar.notificationBox.text = "Verbindung zum Datenbankserver verloren"; - oschkar.notificationBox.open(); + notifications.notificationDialog.informativeText = msg; + notifications.notificationDialog.text = "Verbindung zum Datenbankserver verloren"; + notifications.notificationDialog.open(); } function getEncryptionKey() { recoveryPaswordDialog.open(); } function loggedin() { - appLoader.source = "Dashboard.qml"; + contentStack.replace("Dashboard.qml"); } anchors.fill: parent @@ -79,8 +78,8 @@ Item { } Button { Layout.topMargin: Dimensions.m - implicitWidth: parent.width icon.source: "qrc:/images/ArrowRightEndOnRectangle.svg" + implicitWidth: parent.width text: qsTr("Login") onClicked: { @@ -132,8 +131,7 @@ Item { onRejected: quit() } Notifications { - id: oschkar - + id: notifications } } } diff --git a/Gui/Navigation.qml b/Gui/Navigation.qml index 351019c..76ca16b 100644 --- a/Gui/Navigation.qml +++ b/Gui/Navigation.qml @@ -19,10 +19,7 @@ ColumnLayout { ButtonGroup.group: buttonBar icon.source: "qrc:/images/dash.svg" text: qsTr("Dashboard") - - onClicked: { - appLoader.source = "Dashboard.qml"; - } + target: "/Gui/Dashboard.qml" } BarButton { id: kunden @@ -30,10 +27,7 @@ ColumnLayout { ButtonGroup.group: buttonBar icon.source: "qrc:/images/customer.svg" text: qsTr("Kunden") - - onClicked: { - appLoader.source = "CustomerTable.qml"; - } + target: "/Gui/CustomersTable.qml" } BarButton { id: objekt @@ -41,10 +35,7 @@ ColumnLayout { ButtonGroup.group: buttonBar icon.source: "qrc:/images/object.svg" text: qsTr("Objekt") - - onClicked: { - appLoader.source = "ObjectTable.qml"; - } + target: "/Gui/ObjectsTable.qml" } BarButton { id: mitarbeiter @@ -52,10 +43,7 @@ ColumnLayout { ButtonGroup.group: buttonBar icon.source: "qrc:/images/employee.svg" text: qsTr("Mitarbeiter") - - onClicked: { - appLoader.source = "Employees/EmployeesView.qml"; - } + target: "/Gui/Employees/EmployeesTable.qml" } BarButton { id: offers @@ -63,10 +51,7 @@ ColumnLayout { ButtonGroup.group: buttonBar icon.source: "qrc:/images/offer.svg" text: qsTr("Angebote") - - onClicked: { - appLoader.source = "OfferTable.qml"; - } + target: "/Gui/OffersTable.qml" } BarButton { id: abrechnung @@ -101,7 +86,7 @@ ColumnLayout { onTriggered: { // TODO: Check if logged-in user is admin first!! - appLoader.source = "PyqcrmConf.qml"; + contentStack.push("PyqcrmConf.qml"); } } MenuSeparator { diff --git a/Gui/NoDbConnection.qml b/Gui/NoDbConnection.qml index 1e8740f..26bb328 100644 --- a/Gui/NoDbConnection.qml +++ b/Gui/NoDbConnection.qml @@ -1,74 +1,27 @@ import QtQuick import QtQuick.Controls +import QtQuick.Layouts -Rectangle -{ - anchors.fill: parent - color: "slateblue" +ColumnLayout { + anchors.centerIn: parent + spacing: Dimensions.s + height: implicitHeight - Rectangle - { - id: info - anchors.horizontalCenter: parent.horizontalCenter - color: "slateblue" - implicitHeight: 55 - implicitWidth: parent.width / 4 - y: parent.height / 4 - Text - { - anchors.centerIn: parent - text: qsTr("Keine Verbindung zur Datenbank!") - color: "moccasin" - font.bold: true - font.pixelSize: 45 - } + H1 { + Layout.alignment: Qt.AlignCenter + text: qsTr("Keine Verbindung zur Datenbank!") + color: Colors.foreground } - - Rectangle - { - id: nostart - anchors.top: info.bottom - color: "slateblue" - anchors.horizontalCenter: parent.horizontalCenter - implicitHeight: 55 - implicitWidth: parent.width / 4 - Text - { - text: qsTr("Programm kann nicht starten..") - color: "moccasin" - anchors.centerIn: parent - font.bold: true - font.pixelSize: 45 - } + H2 { + Layout.alignment: Qt.AlignCenter + text: qsTr("Programm kann nicht starten…") + color: Colors.foreground } + Button { + Layout.topMargin: Dimensions.l + Layout.alignment: Qt.AlignCenter + text: qsTr("Beenden") - Rectangle - { - anchors.top: nostart.bottom - anchors.topMargin: 25 - anchors.horizontalCenter: parent.horizontalCenter - color: "slateblue" - implicitHeight: 55 - implicitWidth: parent.width / 4 - Button - { - width: parent.width - height: 75 - Text - { - text: qsTr("Beenden") - color: "moccasin" - anchors.centerIn: parent - font.bold: true - font.pixelSize: 45 - } - anchors.centerIn: parent - background: Rectangle - { - color: "dodgerblue" - radius: 50 - } - onClicked: Qt.quit() - } + onClicked: Qt.quit() } } diff --git a/Gui/Notifications.qml b/Gui/Notifications.qml index 875d059..9bfe432 100644 --- a/Gui/Notifications.qml +++ b/Gui/Notifications.qml @@ -3,8 +3,6 @@ import QtQuick.Dialogs Item { - id: oschkar - property alias notificationBox: notificationDialog MessageDialog { id: notificationDialog diff --git a/Gui/ObjectDetails.qml b/Gui/ObjectDetails.qml index eaff8f0..9b0ccc3 100644 --- a/Gui/ObjectDetails.qml +++ b/Gui/ObjectDetails.qml @@ -16,7 +16,7 @@ Item Button { text: qsTr("Zurück zu den Objekten") - onClicked: objectsStack.pop() + onClicked: contentStack.pop() } } diff --git a/Gui/ObjectTable.qml b/Gui/ObjectTable.qml deleted file mode 100644 index 19c9865..0000000 --- a/Gui/ObjectTable.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 b/Gui/ObjectsTable.qml index 8013121..5c5188c 100644 --- a/Gui/ObjectsTable.qml +++ b/Gui/ObjectsTable.qml @@ -5,9 +5,11 @@ import Qt.labs.qmlmodels ColumnLayout { + property var availableFilters: [""] + anchors.fill: parent spacing: Dimensions.l - + function viewCriterion(criterion) { business_model.viewCriterion(criterion.text); @@ -21,7 +23,7 @@ ColumnLayout Component.onCompleted: { contact_model.objectContactAdded.connect(onObjectContactAdded) - objectsStack.pop() + contentStack.pop() } RowLayout { @@ -70,7 +72,7 @@ ColumnLayout icon.source: "qrc:/images/PlusCircle.svg" text: qsTr("Objekt Hinzufügen") Layout.alignment: Qt.AlignRight - onClicked: appLoader.source = "AddObject.qml" + onClicked: contentStack.push("AddObject.qml") } } @@ -172,7 +174,7 @@ ColumnLayout hoverEnabled: true onDoubleClicked: { - objectsStack.push("ObjectDetails.qml", {selectedObject: row}); + contentStack.push("ObjectDetails.qml", {selectedObject: row}); } onEntered: { diff --git a/Gui/OfferTable.qml b/Gui/OfferTable.qml deleted file mode 100644 index 247a50b..0000000 --- a/Gui/OfferTable.qml +++ /dev/null @@ -1,17 +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" - } -} - diff --git a/Gui/OffersTable.qml b/Gui/OffersTable.qml index 6414a68..0db9bad 100644 --- a/Gui/OffersTable.qml +++ b/Gui/OffersTable.qml @@ -3,75 +3,64 @@ import QtQuick.Layouts import QtQuick.Controls import Qt.labs.qmlmodels -ColumnLayout -{ - anchors.fill: parent - spacing: Dimensions.l - function viewOffers(criterion) - { - //offer_model.viewCriterion(criterion) +ColumnLayout { + function viewOffers(criterion) { + //offer_model.viewCriterion(criterion) } - RowLayout - { + anchors.fill: parent + spacing: Dimensions.l + + RowLayout { Layout.fillWidth: true spacing: Dimensions.l - SearchBar - { + + SearchBar { id: searchBar + } - QuickFilter - { - onSelectedChanged: (name) => - { - business_model.viewCriterion(name) - } - - model: ListModel - { - ListElement - { - + QuickFilter { + model: ListModel { + ListElement { name: "Alle" - text: qsTr("Alle") selected: true + text: qsTr("Alle") } - ListElement - { + ListElement { name: "Offen" + selected: false text: qsTr("Offen") - selected: false } - ListElement - { + ListElement { name: "Abgeschlossen" + selected: false text: qsTr("Abgeschlossen") - selected: false } - - ListElement - { + ListElement { name: "Erledigt" - text: qsTr("Erledigt") selected: false + text: qsTr("Erledigt") } } + + onSelectedChanged: name => { + business_model.viewCriterion(name); + } } - Button - { + 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" + icon.source: "qrc:/images/PlusCircle.svg" + text: qsTr("Angebote Hinzufügen") + + onClicked: contentStack.push("AddOffer.qml") } } Item { id: spacer + Layout.fillHeight: true - } - - } diff --git a/Gui/PyqcrmConf.qml b/Gui/PyqcrmConf.qml index c5883f2..aebe897 100644 --- a/Gui/PyqcrmConf.qml +++ b/Gui/PyqcrmConf.qml @@ -101,7 +101,7 @@ Item Button { text: qsTr("Ablehnen") - onClicked: appLoader.source = "Dashboard.qml" + onClicked: contentStack.pop() } Button diff --git a/Gui/UtilityDialogs.qml b/Gui/UtilityDialogs.qml index 2a19905..d719f51 100644 --- a/Gui/UtilityDialogs.qml +++ b/Gui/UtilityDialogs.qml @@ -97,7 +97,7 @@ Item title: qsTr("Wiederherstellen") buttons: MessageDialog.Yes | MessageDialog.No onAccepted: recoveryPasswordDialog.open() - onRejected: gotoLogin() + onRejected: contentStack.replace("LoginSreen.qml") } MessageDialog diff --git a/Gui/main.qml b/Gui/main.qml index 393c4b7..52d813d 100644 --- a/Gui/main.qml +++ b/Gui/main.qml @@ -10,10 +10,6 @@ ApplicationWindow { 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); @@ -30,16 +26,15 @@ ApplicationWindow { width: Screen.width * .75 Component.onCompleted: { - config.configurationReady.connect(goToLogin); systray.activated.connect(showWindow); if (bad_config) { importDialog.open(); } else { if (db_con) - appLoader.source = "LoginScreen.qml"; + contentStack.replace("LoginScreen.qml") else - appLoader.source = "NoDbConnection.qml"; + contentStack.replace("NoDbConnection.qml"); } } onClosing: close => { @@ -63,7 +58,7 @@ ApplicationWindow { Navigation { id: navigation - visible: bad_config || !db_con ? false : true + visible: !(bad_config || !db_con) } PrinterDialog { id: printerDialog @@ -82,17 +77,15 @@ ApplicationWindow { id: contentBackground anchors { bottom: parent.bottom - left: navigation.right + left: navigation.visible ? navigation.right : parent.left right: parent.right top: parent.top } color: Colors.background } - Loader { - id: appLoader - - property alias window: appWindow + StackView { + id: contentStack anchors { fill: contentBackground @@ -109,7 +102,7 @@ ApplicationWindow { title: qsTr("Einstellungen importieren") onAccepted: settingsFiledialog.open() - onRejected: appLoader.source = "Firststart.qml" + onRejected: contentStack.replace("Firststart.qml") } FileDialog { id: settingsFiledialog diff --git a/TeroStyle/BarButton.qml b/TeroStyle/BarButton.qml index c29de2e..d28202d 100644 --- a/TeroStyle/BarButton.qml +++ b/TeroStyle/BarButton.qml @@ -6,6 +6,8 @@ import QtQuick.Templates as T T.ToolButton { id: control + property string target + checkable: true icon.color: Colors.foreground icon.height: 36 @@ -18,16 +20,16 @@ T.ToolButton { readonly property color color: control.checked ? Colors.primaryShade : control.hovered ? Colors.primary : Colors.foreground IconLabel { - icon.color: parent.color - icon.source: control.icon.source - icon.height: control.icon.height - icon.width: control.icon.width color: parent.color + icon.color: parent.color + icon.height: control.icon.height + icon.source: control.icon.source + icon.width: control.icon.width x: parent.width * .5 - width * .5 } Label { - font: Typography.small color: parent.color + font: Typography.small text: control.text x: parent.width * .5 - width * .5 } @@ -49,4 +51,12 @@ T.ToolButton { onPressed: mouse => mouse.accepted = false } + + onClicked: { + if(!target) { + console.warn(`BarButton with text ${this.text} has no target.`) + return + } + contentStack.replace(target) + } } diff --git a/TeroStyle/H1.qml b/TeroStyle/H1.qml new file mode 100644 index 0000000..949e2dd --- /dev/null +++ b/TeroStyle/H1.qml @@ -0,0 +1,5 @@ +import QtQuick + +Text { + font: Typography.h1 +} \ No newline at end of file diff --git a/TeroStyle/H2.qml b/TeroStyle/H2.qml new file mode 100644 index 0000000..48d08bb --- /dev/null +++ b/TeroStyle/H2.qml @@ -0,0 +1,5 @@ +import QtQuick + +Text { + font: Typography.h2 +} \ No newline at end of file diff --git a/TeroStyle/qmldir b/TeroStyle/qmldir index 0273944..9a0b567 100644 --- a/TeroStyle/qmldir +++ b/TeroStyle/qmldir @@ -2,14 +2,13 @@ module TeroStyle singleton Colors Colors.qml singleton Dimensions Dimensions.qml singleton Typography Typography.qml +BarButton BarButton.qml Button Button.qml ComboBox ComboBox.qml Field Field.qml -TextField TextField.qml -BarButton BarButton.qml +H1 H1.qml +H2 H2.qml Label Label.qml QuickFilter QuickFilter.qml SearchBar SearchBar.qml - - - +TextField TextField.qml diff --git a/doc/README.md b/doc/README.md deleted file mode 100644 index 77556cb..0000000 --- a/doc/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# pyqcrm - -CRM - Tero -Python + QML \ No newline at end of file diff --git a/enc_key_backup.txt b/enc_key_backup.txt index a4915d4..fe00ac1 100644 --- a/enc_key_backup.txt +++ b/enc_key_backup.txt @@ -1 +1 @@ -Lj30yFOP7hJmY5Cub1Go8fJz0UE+Zyo9cEqNxfY23Sc= +Lj30yFOP7hJmY5Cub1Go8fJz0UE+Zyo9cEqNxfY23Sc= \ No newline at end of file diff --git a/lib/DB/EmployeeModel.py b/lib/DB/EmployeeModel.py index 1ea26b7..8876603 100644 --- a/lib/DB/EmployeeModel.py +++ b/lib/DB/EmployeeModel.py @@ -12,7 +12,6 @@ class EmployeeModel(QAbstractTableModel): __visible_index = None __visible_columns = None __col_name = "" - __employee_dao = None __col_skip = 2 __everyone = True diff --git a/qml.qrc b/qml.qrc index dfb6c82..1a50d90 100644 --- a/qml.qrc +++ b/qml.qrc @@ -7,24 +7,22 @@ Gui/LoginScreen.qml Gui/AddContact.qml Gui/AddCustomer.qml - Gui/CustomerTable.qml Gui/Dashboard.qml Gui/main.qml js/qmldict.js Gui/CustomerView.qml Gui/NoDbConnection.qml Gui/Notifications.qml - Gui/ObjectTable.qml Gui/AddObject.qml Gui/ObjectView.qml Gui/ObjectAddOns.qml Gui/ObjectAddOnContactPerson.qml Gui/ObjectAddOnEmployee.qml Gui/AddObjectEmployee.qml - Gui/ApplicantPersonalData.qml - Gui/ApplicantBankData.qml - Gui/ApplicantNationalInsurance.qml - Gui/ApplicantVarious.qml + Gui/Employees/ApplicantPersonalData.qml + Gui/Employees/ApplicantBankData.qml + Gui/Employees/ApplicantNationalInsurance.qml + Gui/Employees/ApplicantVarious.qml Gui/CustomersTable.qml Gui/CustomerDetails.qml Gui/ObjectsTable.qml @@ -43,11 +41,9 @@ Gui/MiscConf.qml Gui/UtilityDialogs.qml Gui/OffersTable.qml - Gui/OfferTable.qml Gui/Employees/AddApplicant.qml Gui/Employees/EmployeeDetails.qml Gui/Employees/EmployeesTable.qml - Gui/Employees/EmployeesView.qml Gui/Employees/qmldir TeroStyle/BarButton.qml TeroStyle/Button.qml @@ -55,6 +51,8 @@ TeroStyle/ComboBox.qml TeroStyle/Dimensions.qml TeroStyle/Field.qml + TeroStyle/H1.qml + TeroStyle/H2.qml TeroStyle/Label.qml TeroStyle/qmldir TeroStyle/QuickFilter.qml