diff --git a/Gui/CustomerDetails.qml b/Gui/CustomerDetails.qml
new file mode 100644
index 0000000..9860d47
--- /dev/null
+++ b/Gui/CustomerDetails.qml
@@ -0,0 +1,27 @@
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item
+{
+ property int selectedClient: -1
+ id: clDet
+ ColumnLayout
+ {
+ Label
+ {
+ text: qsTr("Ausgewählter Kunde " + selectedClient)
+ }
+
+ Button
+ {
+ text: qsTr("Kunden zeigen")
+ onClicked: customersStack.pop()
+ }
+ }
+
+ Component.onCompleted:
+ {
+ business_model.onRowClicked(selectedClient)
+ }
+}
diff --git a/Gui/CustomerTable.qml b/Gui/CustomerTable.qml
index 292d5ce..c00a91c 100644
--- a/Gui/CustomerTable.qml
+++ b/Gui/CustomerTable.qml
@@ -9,206 +9,11 @@ Item {
property var availableFilters: ["Name", "Adresse", "PLZ", "Ort"]
id: test
- SearchBar
+ StackView
{
- id:searchBar
- anchors.margins: 9
- }
-
- Button
- {
- id: addBusinessBtn
- icon.source: "qrc:/images/addbusiness.svg"
- icon.color: "olive"
- anchors.right: parent.right
- flat: true
- onClicked: appLoader.source = "AddCustomer.qml"
- }
-
-
- ColumnLayout
- {
- id: tableColumn
- anchors
- {
- top: searchBar.bottom
- bottom: parent.bottom
- left: parent.left
- right: parent.right
- }
-
- RowLayout
- {
- RadioButton
- {
- id: showAll
- checked: true
- text: qsTr("Alle")
- onClicked: viewCriterion(showAll)
- }
- RadioButton
- {
- id: showInterested
- text: qsTr("Interessent")
- onClicked: viewCriterion(showInterested)
- }
- RadioButton
- {
- id: showClientele
- text: qsTr("Kunden")
- onClicked: viewCriterion(showClientele)
- }
- RadioButton
- {
- id: showProvider
- text: qsTr("Lieferant")
- onClicked: viewCriterion(showProvider)
- }
- RadioButton
- {
- id: showFinished
- text: qsTr("Erledigt")
- onClicked: viewCriterion(showFinished)
- }
-
- }
-
- HorizontalHeaderView
- {
- id: horizontalHeader
- Layout.fillWidth: true
- implicitHeight: 40
- movableColumns: true //@disable-check M16
- syncView: customerTable
-
- delegate: Rectangle {
- color: addBusinessBtn.palette.alternateBase
- border.color: addBusinessBtn.palette.base
- implicitHeight: 40
- Layout.fillWidth: true
- implicitWidth: 1
- Text
- {
- text: model.display
- elide: Text.ElideRight
- width: parent.width
- height: parent.height
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- color: addBusinessBtn.palette.text
- }
- }
- }
-
- TableView
- {
- //property var customWidths: [0.2, 0.5, 0.3, 05, 0.2, 0.2]
- property real newWidth: 0
- id: customerTable
- Layout.fillHeight: true
- Layout.fillWidth: true
- ScrollBar.vertical: ScrollBar
- {
- policy: customerTable.contentHeight > customerTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
- }
- columnSpacing: 1
- rowSpacing: 2
- model: business_model
- alternatingRows: true
- resizableColumns: true // @disable-check M16
- selectionBehavior: TableView.SelectRows
- selectionModel: ItemSelectionModel
- {
- id: selModel
- model: customerTable.model
- }
-
- // columnWidthProvider: function(column)
- // {
- // switch (column)
- // {
- // case 0: return width * 0.2;
- // case 1: return width * 0.5;
- // case 2: return width * 0.3;
- // default: return width / model.columnCount();
- // }
- //return customWidths[column] * width;
- //return tableColumn.content.implicitWidth // model.columnCount()
- // newWidth = columnWidth(column)
- // return newWidth
- // }
-
- Timer
- {
- id: redrawTable
- running: true
- interval: 1
- repeat: false
- onTriggered:
- {
- customerTable.forceLayout();
- }
- }
-
-
-
- delegate:Rectangle
- {
- required property bool selected
- required property bool current
- implicitWidth: customerTable.width / customerTable.columns
- implicitHeight: 25
- color: selected
- ? addBusinessBtn.palette.highlight //palette.highlight
- : (customerTable.alternatingRows && row % 2 !== 0
- ? addBusinessBtn.palette.base // palette.base
- : addBusinessBtn.palette.alternateBase) //palette.alternateBase)
-
- Text
- {
- text: model.display == null? "": model.display
- elide: Text.ElideRight
- width: parent.width
- height: parent.height
- verticalAlignment: Text.AlignVCenter
- leftPadding: 9 //@d isable-check M16
- color: addBusinessBtn.palette.text
- }
-
- MouseArea
- {
- property bool hovered: false
- id: mouseArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked:
- {
- business_model.onRowClicked(row)
- }
- onEntered:
- {
- customerTable.selectionModel.select(customerTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows)
- }
- }
- }
-
- onContentWidthChanged:
- {
- //console.log("Model changed!!")
- redrawTable.start()
- }
- }
-
- Item
- {
- //Layout.fillHeight: true
- Layout.fillWidth: true
- }
- }
-
- function viewCriterion(criterion)
- {
- business_model.viewCriterion(criterion.text)
+ id: customersStack
+ anchors.fill: parent
+ initialItem: "CustomersTable.qml"
}
}
diff --git a/Gui/CustomersTable.qml b/Gui/CustomersTable.qml
new file mode 100644
index 0000000..7f16047
--- /dev/null
+++ b/Gui/CustomersTable.qml
@@ -0,0 +1,219 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.qmlmodels
+import QtQuick.Controls.Fusion
+
+Item
+{
+ SearchBar
+ {
+ id:searchBar
+ anchors.margins: 9
+ }
+
+ Button
+ {
+ id: addBusinessBtn
+ icon.source: "qrc:/images/addbusiness.svg"
+ icon.color: "olive"
+ anchors.right: parent.right
+ flat: true
+ onClicked: appLoader.source = "AddCustomer.qml"
+ }
+
+
+ ColumnLayout
+ {
+ id: tableColumn
+ anchors
+ {
+ top: searchBar.bottom
+ bottom: parent.bottom
+ left: parent.left
+ right: parent.right
+ }
+
+ RowLayout
+ {
+ RadioButton
+ {
+ id: showAll
+ checked: true
+ text: qsTr("Alle")
+ onClicked: viewCriterion(showAll)
+ }
+ RadioButton
+ {
+ id: showInterested
+ text: qsTr("Interessent")
+ onClicked: viewCriterion(showInterested)
+ }
+ RadioButton
+ {
+ id: showClientele
+ text: qsTr("Kunden")
+ onClicked: viewCriterion(showClientele)
+ }
+ RadioButton
+ {
+ id: showProvider
+ text: qsTr("Lieferant")
+ onClicked: viewCriterion(showProvider)
+ }
+ RadioButton
+ {
+ id: showFinished
+ text: qsTr("Erledigt")
+ onClicked: viewCriterion(showFinished)
+ }
+
+ }
+
+ HorizontalHeaderView
+ {
+ id: horizontalHeader
+ Layout.fillWidth: true
+ implicitHeight: 40
+ movableColumns: true //@disable-check M16
+ syncView: customerTable
+
+ delegate: Rectangle {
+ color: addBusinessBtn.palette.alternateBase
+ border.color: addBusinessBtn.palette.base
+ implicitHeight: 40
+ Layout.fillWidth: true
+ implicitWidth: 1
+ Text
+ {
+ text: model.display
+ elide: Text.ElideRight
+ width: parent.width
+ height: parent.height
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: addBusinessBtn.palette.text
+ }
+ }
+ }
+
+ TableView
+ {
+ //property var customWidths: [0.2, 0.5, 0.3, 05, 0.2, 0.2]
+ property real newWidth: 0
+ id: customerTable
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ ScrollBar.vertical: ScrollBar
+ {
+ policy: customerTable.contentHeight > customerTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
+ }
+ columnSpacing: 1
+ rowSpacing: 2
+ model: business_model
+ alternatingRows: true
+ resizableColumns: true // @disable-check M16
+ selectionBehavior: TableView.SelectRows
+ selectionModel: ItemSelectionModel
+ {
+ id: selModel
+ model: customerTable.model
+ }
+
+ // columnWidthProvider: function(column)
+ // {
+ // switch (column)
+ // {
+ // case 0: return width * 0.2;
+ // case 1: return width * 0.5;
+ // case 2: return width * 0.3;
+ // default: return width / model.columnCount();
+ // }
+ //return customWidths[column] * width;
+ //return tableColumn.content.implicitWidth // model.columnCount()
+ // newWidth = columnWidth(column)
+ // return newWidth
+ // }
+
+ Timer
+ {
+ id: redrawTable
+ running: true
+ interval: 1
+ repeat: false
+ onTriggered:
+ {
+ customerTable.forceLayout();
+ }
+ }
+
+
+
+ delegate:Rectangle
+ {
+ required property bool selected
+ required property bool current
+ implicitWidth: customerTable.width / customerTable.columns
+ implicitHeight: 25
+ color: selected
+ ? addBusinessBtn.palette.highlight //palette.highlight
+ : (customerTable.alternatingRows && row % 2 !== 0
+ ? addBusinessBtn.palette.base // palette.base
+ : addBusinessBtn.palette.alternateBase) //palette.alternateBase)
+
+ Text
+ {
+ text: model.display == null? "": model.display
+ elide: Text.ElideRight
+ width: parent.width
+ height: parent.height
+ verticalAlignment: Text.AlignVCenter
+ leftPadding: 9 //@d isable-check M16
+ color: addBusinessBtn.palette.text
+ }
+
+ MouseArea
+ {
+ property bool hovered: false
+ id: mouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+
+ // onClicked:
+ // {
+ // business_model.onRowClicked(row)
+ // }
+
+ onDoubleClicked:
+ {
+ customersStack.push("CustomerDetails.qml", {selectedClient: row});
+ }
+
+ onEntered:
+ {
+ customerTable.selectionModel.select(customerTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows)
+ }
+ }
+ }
+
+ onContentWidthChanged:
+ {
+ //console.log("Model changed!!")
+ redrawTable.start()
+ }
+ }
+
+ Item
+ {
+ //Layout.fillHeight: true
+ Layout.fillWidth: true
+ }
+ }
+
+ function viewCriterion(criterion)
+ {
+ business_model.viewCriterion(criterion.text)
+ }
+
+ Component.onCompleted: customersStack.pop()
+}
diff --git a/Gui/Dashboard.qml b/Gui/Dashboard.qml
index f633c1e..22bf6c2 100644
--- a/Gui/Dashboard.qml
+++ b/Gui/Dashboard.qml
@@ -8,9 +8,124 @@ ColumnLayout
Rectangle
{
- color: "blue"
+ color: "dimgrey"
Layout.fillHeight: true
Layout.fillWidth: true
- Layout.bottomMargin: 9
+ Layout.bottomMargin: 3
+ radius: 45
+
+ RowLayout
+ {
+ anchors.fill: parent
+
+ 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"
+ }
+
+ 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...")
+ }
+
+ 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
+ }
+
+ onExited:
+ {
+
+ contractButton.color = "darkslategray"
+ contractButton.border.color = "steelblue"
+ contractButton.border.width = 1
+ }
+ }
+ }
+
+ 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")
+ anchors.centerIn: parent
+ font.pixelSize: 45
+ font.bold: true
+ color: "lightgoldenrodyellow"
+ }
+ MouseArea
+ {
+ anchors.fill: parent
+ cursorShape: Qt.PointingHandCursor
+ hoverEnabled: true
+
+ onPressed:
+ {
+ offerButton.color = "darkolivegreen"
+ offerButton.border.width = 3
+ offerButton.border.color = "skyblue"
+ console.log("Angebote...")
+ }
+ 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
+ }
+
+ onExited:
+ {
+
+ offerButton.color = "darkslategray"
+ offerButton.border.color = "steelblue"
+ offerButton.border.width = 1
+ }
+ }
+ }
+ }
}
}
diff --git a/Gui/EmployeeDetails.qml b/Gui/EmployeeDetails.qml
new file mode 100644
index 0000000..fe1b8ba
--- /dev/null
+++ b/Gui/EmployeeDetails.qml
@@ -0,0 +1,27 @@
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item
+{
+ property int selectedEmployee: -1
+ id: emDet
+ ColumnLayout
+ {
+ Label
+ {
+ text: qsTr("Ausgewählter Mitarbeiter " + selectedEmployee)
+ }
+
+ Button
+ {
+ text: qsTr("Mitarbeiter zeigen")
+ onClicked: employeesStack.pop()
+ }
+ }
+
+ Component.onCompleted:
+ {
+ business_model.onRowClicked(selectedEmployee)
+ }
+}
diff --git a/Gui/EmployeeTable.qml b/Gui/EmployeeTable.qml
index 068b4ca..f10f85a 100644
--- a/Gui/EmployeeTable.qml
+++ b/Gui/EmployeeTable.qml
@@ -4,131 +4,13 @@ import QtQuick.Controls
import Qt.labs.qmlmodels
-Item {
- property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"]
-
- SearchBar
+Item
+{
+ StackView
{
- id:searchBar
- anchors.margins: 9
- }
-
- Button
- {
- id: addEmployeeBtn
- icon.source: "qrc:/images/addbusiness.svg"
- icon.color: "olive"
- anchors.right: parent.right
- flat: true
- onClicked: appLoader.source = "AddApplicant.qml"
- }
-
- ColumnLayout
- {
- anchors
- {
-
- top: searchBar.bottom
- bottom: parent.bottom
- left: parent.left
- right: parent.right
-
- }
-
- RowLayout
- {
-
- RadioButton
- {
-
- checked: true
- text: qsTr("Alle")
- }
- RadioButton
- {
-
- text: qsTr("Bewerber")
- }
- RadioButton
- {
-
- text: qsTr("Mitarbeiter")
- }
- RadioButton
- {
-
- text: qsTr("Erledigt")
- }
- RadioButton
- {
-
- text: qsTr("Ausgeschieden")
- }
-
- }
-
- HorizontalHeaderView
- {
- id: horizontalHeader
- Layout.fillWidth: true
- syncView: testTable
-
- }
-
- TableView
- {
- id: testTable
- Layout.fillHeight: true
- Layout.fillWidth: true
- columnSpacing: 1
- rowSpacing: 2
- model: business_model
- selectionBehavior: TableView.SelectRows
- selectionModel: ItemSelectionModel
-
-
- {
- id: selModel
- model: testTable.model
- }
-
-
- delegate:Rectangle
- {
- required property bool selected
- required property bool current
- implicitWidth: 200
- implicitHeight: 25
- color: selected? "lightblue": palette.base
-
- Text
- {
- Layout.fillWidth: true
- text: model.display? model.display: ""
-
- }
-
- MouseArea
- {
- id: mouseArea
- property bool hovered:false
-
- anchors.fill: parent
- hoverEnabled: true
-
-
- onClicked:
- {
- business_model.onRowClicked(row)
- testTable.selectionModel.select(testTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows)
-
-
- }
-
- }
- }
- }
-
+ id: employeesStack
+ anchors.fill: parent
+ initialItem: "EmployeesTable.qml"
}
}
diff --git a/Gui/EmployeesTable.qml b/Gui/EmployeesTable.qml
new file mode 100644
index 0000000..5cb3cac
--- /dev/null
+++ b/Gui/EmployeesTable.qml
@@ -0,0 +1,132 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.qmlmodels
+
+Item
+{
+ property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"]
+
+ SearchBar
+ {
+ id:searchBar
+ anchors.margins: 9
+ }
+
+ Button
+ {
+ id: addEmployeeBtn
+ icon.source: "qrc:/images/addbusiness.svg"
+ icon.color: "olive"
+ anchors.right: parent.right
+ flat: true
+ onClicked: appLoader.source = "AddApplicant.qml"
+ }
+
+ ColumnLayout
+ {
+ anchors
+ {
+
+ top: searchBar.bottom
+ bottom: parent.bottom
+ left: parent.left
+ right: parent.right
+
+ }
+
+ RowLayout
+ {
+
+ RadioButton
+ {
+
+ checked: true
+ text: qsTr("Alle")
+ }
+ RadioButton
+ {
+
+ text: qsTr("Bewerber")
+ }
+ RadioButton
+ {
+
+ text: qsTr("Mitarbeiter")
+ }
+ RadioButton
+ {
+
+ text: qsTr("Erledigt")
+ }
+ RadioButton
+ {
+
+ text: qsTr("Ausgeschieden")
+ }
+
+ }
+
+ HorizontalHeaderView
+ {
+ id: horizontalHeader
+ Layout.fillWidth: true
+ syncView: testTable
+
+ }
+
+ TableView
+ {
+ id: testTable
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ columnSpacing: 1
+ rowSpacing: 2
+ model: business_model
+ selectionBehavior: TableView.SelectRows
+ selectionModel: ItemSelectionModel
+
+
+ {
+ id: selModel
+ model: testTable.model
+ }
+
+
+ delegate:Rectangle
+ {
+ required property bool selected
+ required property bool current
+ implicitWidth: 200
+ implicitHeight: 25
+ color: selected? "lightblue": palette.base
+
+ Text
+ {
+ Layout.fillWidth: true
+ text: model.display? model.display: ""
+
+ }
+
+ MouseArea
+ {
+ id: mouseArea
+ property bool hovered:false
+
+ anchors.fill: parent
+ hoverEnabled: true
+
+
+ onDoubleClicked:
+ {
+ employeesStack.push("EmployeeDetails.qml", {selectedEmployee: row});
+ }
+
+ }
+ }
+ }
+
+ }
+
+ Component.onCompleted: employeesStack.pop()
+}
diff --git a/Gui/ObjectDetails.qml b/Gui/ObjectDetails.qml
new file mode 100644
index 0000000..7f19e8e
--- /dev/null
+++ b/Gui/ObjectDetails.qml
@@ -0,0 +1,27 @@
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item
+{
+ property int selectedObject: -1
+ id: obDet
+ ColumnLayout
+ {
+ Label
+ {
+ text: qsTr("Ausgewählter Objekt " + selectedObject)
+ }
+
+ Button
+ {
+ text: qsTr("Objekts zeigen")
+ onClicked: customersStack.pop()
+ }
+ }
+
+ Component.onCompleted:
+ {
+ business_model.onRowClicked(selectedObject)
+ }
+}
diff --git a/Gui/ObjectTable.qml b/Gui/ObjectTable.qml
index 4e1dd17..5ee6ed7 100644
--- a/Gui/ObjectTable.qml
+++ b/Gui/ObjectTable.qml
@@ -6,155 +6,13 @@ import QtQuick.Controls.Fusion
Item {
property var availableFilters: [""]
- SearchBar
+
+ StackView
{
- id:searchBar
- anchors.margins: 9
+ id: objectsStack
+ anchors.fill: parent
+ initialItem: "ObjectsTable.qml"
}
-
- Button
- {
- id: addObjectBtn
- icon.source: "qrc:/images/addbusiness.svg"
- icon.color: "olive"
- anchors.right: parent.right
- flat: true
- onClicked: appLoader.source = "AddObject.qml"
- }
-
-
- ColumnLayout
- {
- id: tableColumn
- anchors
- {
- top: searchBar.bottom
- bottom: parent.bottom
- left: parent.left
- right: parent.right
- }
-
- HorizontalHeaderView
- {
- id: horizontalHeaderview
- Layout.fillWidth: true
- implicitHeight: 40
- visible: false
- movableColumns: true //@disable-check M16
- syncView: objectTable
-
- delegate: Rectangle {
- color: addObjectBtn.palette.alternateBase
- border.color: addObjectBtn.palette.base
- implicitHeight: 40
- Layout.fillWidth: true
- implicitWidth: 1
- Text
- {
- text: model.display
- elide: Text.ElideRight
- width: parent.width
- height: parent.height
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- color: addObjectBtn.palette.text
- }
- }
- }
-
- TableView
- {
- property real newWidth: 0
- id: objectTable
- Layout.fillHeight: true
- Layout.fillWidth: true
- ScrollBar.vertical: ScrollBar
- {
- policy: objectTable.contentHeight > objectTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
- }
- columnSpacing: 1
- rowSpacing: 2
- //model: object_model
- alternatingRows: true
- resizableColumns: true // @disable-check M16
- selectionBehavior: TableView.SelectRows
- selectionModel: ItemSelectionModel
- {
- id: obmodel
- model: objectTable.model
- }
-
- // Timer
- // {
- // id: redrawTable
- // running: true
- // interval: 1
- // repeat: false
- // onTriggered:
- // {
- // objectTable.forceLayout();
- // }
- // }
-
-
-
- delegate:Rectangle
- {
- required property bool selected
- required property bool current
- implicitWidth: objectTable.width / objectTable.columns
- implicitHeight: 25
- color: selected
- ? addObjectBtn.palette.highlight //palette.highlight
- : (objectTable.alternatingRows && row % 2 !== 0
- ? addObjectBtn.palette.base // palette.base
- : addObjectBtn.palette.alternateBase) //palette.alternateBase)
-
- Text
- {
- text: model.display == null? "": model.display
- elide: Text.ElideRight
- width: parent.width
- height: parent.height
- verticalAlignment: Text.AlignVCenter
- leftPadding: 9 //@d isable-check M16
- color: addObjectBtn.palette.text
- }
-
- MouseArea
- {
- property bool hovered: false
- id: mouseArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked:
- {
- object_model.onRowClicked(row)
- }
- onEntered:
- {
- objectTable.selectionModel.select(objectTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows)
- }
- }
- }
-
- // onContentWidthChanged:
- // {
-
- // redrawTable.start()
- // }
- }
-
- Item
- {
-
- Layout.fillWidth: true
- }
- }
- // function viewCriterion(criterion)
- // {
- // object_model.viewCriterion(criterion.text)
- // }
}
diff --git a/Gui/ObjectsTable.qml b/Gui/ObjectsTable.qml
new file mode 100644
index 0000000..c29f779
--- /dev/null
+++ b/Gui/ObjectsTable.qml
@@ -0,0 +1,160 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.qmlmodels
+import QtQuick.Controls.Fusion
+
+Item
+{
+ SearchBar
+ {
+ id:searchBar
+ anchors.margins: 9
+ }
+
+ Button
+ {
+ id: addObjectBtn
+ icon.source: "qrc:/images/addbusiness.svg"
+ icon.color: "olive"
+ anchors.right: parent.right
+ flat: true
+ onClicked: appLoader.source = "AddObject.qml"
+ }
+
+
+ ColumnLayout
+ {
+ id: tableColumn
+ anchors
+ {
+ top: searchBar.bottom
+ bottom: parent.bottom
+ left: parent.left
+ right: parent.right
+ }
+
+ HorizontalHeaderView
+ {
+ id: horizontalHeaderview
+ Layout.fillWidth: true
+ implicitHeight: 40
+ visible: false
+ movableColumns: true //@disable-check M16
+ syncView: objectTable
+
+ delegate: Rectangle {
+ color: addObjectBtn.palette.alternateBase
+ border.color: addObjectBtn.palette.base
+ implicitHeight: 40
+ Layout.fillWidth: true
+ implicitWidth: 1
+ Text
+ {
+ text: model.display
+ elide: Text.ElideRight
+ width: parent.width
+ height: parent.height
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: addObjectBtn.palette.text
+ }
+ }
+ }
+
+ TableView
+ {
+ property real newWidth: 0
+ id: objectTable
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ ScrollBar.vertical: ScrollBar
+ {
+ policy: objectTable.contentHeight > objectTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
+ }
+ columnSpacing: 1
+ rowSpacing: 2
+ //model: object_model
+ alternatingRows: true
+ resizableColumns: true // @disable-check M16
+ selectionBehavior: TableView.SelectRows
+ selectionModel: ItemSelectionModel
+ {
+ id: obmodel
+ model: objectTable.model
+ }
+
+ // Timer
+ // {
+ // id: redrawTable
+ // running: true
+ // interval: 1
+ // repeat: false
+ // onTriggered:
+ // {
+ // objectTable.forceLayout();
+ // }
+ // }
+
+
+
+ delegate:Rectangle
+ {
+ required property bool selected
+ required property bool current
+ implicitWidth: objectTable.width / objectTable.columns
+ implicitHeight: 25
+ color: selected
+ ? addObjectBtn.palette.highlight //palette.highlight
+ : (objectTable.alternatingRows && row % 2 !== 0
+ ? addObjectBtn.palette.base // palette.base
+ : addObjectBtn.palette.alternateBase) //palette.alternateBase)
+
+ Text
+ {
+ text: model.display == null? "": model.display
+ elide: Text.ElideRight
+ width: parent.width
+ height: parent.height
+ verticalAlignment: Text.AlignVCenter
+ leftPadding: 9 //@d isable-check M16
+ color: addObjectBtn.palette.text
+ }
+
+ MouseArea
+ {
+ property bool hovered: false
+ id: mouseArea
+ 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)
+ }
+ }
+ }
+
+ // onContentWidthChanged:
+ // {
+
+ // redrawTable.start()
+ // }
+ }
+
+ Item
+ {
+
+ Layout.fillWidth: true
+ }
+ }
+ // function viewCriterion(criterion)
+ // {
+ // object_model.viewCriterion(criterion.text)
+ // }
+
+ Component.onCompleted: objectsStack.pop()
+}
diff --git a/Gui/main.qml b/Gui/main.qml
index 593cf2b..1ae8060 100644
--- a/Gui/main.qml
+++ b/Gui/main.qml
@@ -41,7 +41,7 @@ ApplicationWindow
top: topBar.bottom
bottom: parent.bottom
topMargin: 0
- bottomMargin: 9
+ bottomMargin: 5
rightMargin: 9
leftMargin: 9
}
diff --git a/doc/PYQCRM_DATENBANK.odt b/doc/PYQCRM_DATENBANK.odt
new file mode 100644
index 0000000..9f4297b
Binary files /dev/null and b/doc/PYQCRM_DATENBANK.odt differ
diff --git a/qml.qrc b/qml.qrc
index d701366..bc3469c 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -33,5 +33,11 @@
Gui/ApplicantMiniJob.qml
Gui/ApplicantVarious.qml
Gui/ApplicantBirthData.qml
+ Gui/CustomersTable.qml
+ Gui/CustomerDetails.qml
+ Gui/ObjectsTable.qml
+ Gui/EmployeesTable.qml
+ Gui/EmployeeDetails.qml
+ Gui/ObjectDetails.qml