import QtQuick import QtQuick.Layouts import QtQuick.Controls import Qt.labs.qmlmodels ColumnLayout { property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"] function viewEmployees(criterion) { employee_model.viewCriterion(criterion, showProcessed.checked, showFired.checked, showEveryone.checked); } anchors.fill: parent spacing: Dimensions.s Component.onCompleted: employeesStack.pop() RowLayout { Layout.fillWidth: true Layout.horizontalStretchFactor: 1 spacing: Dimensions.l SearchBar { } QuickFilter { model: ListModel { ListElement { name: "Alle" selected: true text: qsTr("Alle") } ListElement { name: "Bewerber" selected: false text: qsTr("Bewerber") } ListElement { name: "Mitarbeiter" text: qsTr("Mitarbeiter") } } onSelectedChanged: name => { viewEmployees(name); } } Button { id: addEmployeeBtn Layout.alignment: Qt.AlignRight icon.source: "qrc:/images/PlusCircle.svg" text: qsTr("Mitarbeiter Hinzufügen") onClicked: appLoader.source = "AddApplicant.qml" } } RowLayout { id: viewCriterion CheckBox { id: showEveryone checked: true text: qsTr("Alle Stati") onCheckedChanged: { showFired.checked = false; showProcessed.checked = false; } onClicked: viewEmployees(criterion.checkedButton.text) } CheckBox { id: showProcessed checked: false enabled: !showEveryone.checked text: qsTr("Erledigt") onClicked: { showFired.checked = false; viewEmployees(criterion.checkedButton.text); } } CheckBox { id: showFired checked: false enabled: !showEveryone.checked text: qsTr("Ausgeschieden") onClicked: { showProcessed.checked = false; viewEmployees(criterion.checkedButton.text); } } } ColumnLayout { id: tableParent Layout.fillWidth: true Layout.fillHeight: true Layout.verticalStretchFactor: 1 clip: true HorizontalHeaderView { id: employeeTableHeader Layout.fillWidth: true width: tableParent.width implicitHeight: 40 movableColumns: true //@disable-check M16 syncView: appliEmpTable delegate: Rectangle { Layout.fillWidth: true border.color: palette.base color: addEmployeeBtn.palette.alternateBase implicitHeight: 40 implicitWidth: 1 Text { color: palette.text elide: Text.ElideRight height: parent.height horizontalAlignment: Text.AlignHCenter text: model.display verticalAlignment: Text.AlignVCenter width: parent.width } } } TableView { id: appliEmpTable Layout.fillWidth: true Layout.fillHeight: true Layout.verticalStretchFactor: 1 columnSpacing: 1 height: tableParent.height - employeeTableHeader.height model: employee_model resizableColumns: true rowSpacing: 2 selectionBehavior: TableView.SelectRows ScrollBar.vertical: ScrollBar { policy: appliEmpTable.contentHeight > appliEmpTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff } delegate: Rectangle { required property bool current required property bool selected color: selected ? addEmployeeBtn.palette.highlight //palette.highlight : (appliEmpTable.alternatingRows && row % 2 !== 0 ? addEmployeeBtn.palette.base // palette.base : addEmployeeBtn.palette.alternateBase) //palette.alternateBase) implicitHeight: 25 implicitWidth: appliEmpTable.width / appliEmpTable.columns Text { color: palette.text elide: Text.ElideRight height: parent.height leftPadding: 9 //@d isable-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: { employeesStack.push("EmployeeDetails.qml", { selectedEmployee: row }); } onEntered: { appliEmpTable.selectionModel.select(appliEmpTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows); } } } selectionModel: ItemSelectionModel { id: selModel model: appliEmpTable.model } } Item { Layout.fillWidth: true } } }