aboutsummaryrefslogtreecommitdiff
path: root/gui/tab_drivers.py
diff options
context:
space:
mode:
Diffstat (limited to 'gui/tab_drivers.py')
-rw-r--r--gui/tab_drivers.py100
1 files changed, 93 insertions, 7 deletions
diff --git a/gui/tab_drivers.py b/gui/tab_drivers.py
index d9a6098..a94ee14 100644
--- a/gui/tab_drivers.py
+++ b/gui/tab_drivers.py
@@ -1,18 +1,104 @@
import os
-from PyQt6.QtGui import *
-from PyQt6.QtWidgets import *
+import mariadb
+from PySide6.QtGui import *
+from PySide6.QtWidgets import *
+from PySide6.QtCore import *
+from PySide6.QtCore import Qt
from split_view_layout import *
+from dataclasses import dataclass
+
+@dataclass
+class DBDriver():
+ id: int
+ first_name: str
+ last_name: str
+
+class DriverModel(QAbstractTableModel):
+ cursor: mariadb.Cursor
+
+ _header = ["first name", "last name"]
+ _data: [DBDriver] = []
+
+ def update(self):
+ self.beginResetModel()
+ self.cursor.execute("select `ID`, `firstName`, `lastName` from `member`")
+ self._data = list()
+ for result in self.cursor.fetchall():
+ self._data.append(DBDriver(*result))
+ self.endResetModel()
+
+ def __init__(self, cursor):
+ super().__init__()
+ self.cursor = cursor
+ self.update()
+
+ def rowCount(self, index=0):
+ return len(self._data)
+
+ def columnCount(self, index=0):
+ return len(self._header)
+
+ def headerData(self, section, orientation, role):
+ if role == Qt.DisplayRole:
+ if orientation == Qt.Horizontal:
+ return self._header[section]
+ else:
+ return self._data[section].id
+
+ def data(self, index, role):
+ if role == Qt.DisplayRole:
+ driver = self._data[index.row()]
+ return (
+ driver.first_name,
+ driver.last_name,
+ )[index.column()]
+
+class DriverDetailsWidget(QWidget):
+ def __init__(self, cursor: mariadb.Cursor, parent=None):
+ super(DriverDetailsWidget, self).__init__(parent)
+
+ layout = QVBoxLayout(self)
+ # layout.setAlignment(Qt.AlignmentFlag.AlignTop)
+
+ label_portrait = QLabel("Driver portrait")
+ layout.addWidget(label_portrait)
+
+ details_form = QFormLayout(self)
+ details_form.addRow("First name", QLineEdit("hoi"))
+ details_form.addRow("Middle name", QLineEdit("hoi"))
+ details_form.addRow("Last name", QLineEdit("hoi"))
+ layout.addLayout(details_form)
+
+ self.setLayout(layout)
+
class TabDrivers(QWidget):
layout: SplitViewLayout
+ cursor: mariadb.Cursor
+
+ widget_driver_table: QTableView
+ model_driver_table: DriverModel
+ model_proxy: QSortFilterProxyModel
+
+ driver_details: DriverDetailsWidget
- def __init__(self, parent=None):
+ def __init__(self, cursor: mariadb.Cursor, parent=None):
super(TabDrivers, self).__init__(parent)
+ self.cursor = cursor
+ self.layout = SplitViewLayout(self)
- layout = SplitViewLayout(self)
- layout.leftWidget(QLabel("hoi"))
- layout.rightWidget(QLabel("doei"))
+ self.widget_driver_table = QTableView(self)
+ self.widget_driver_table.setSelectionBehavior(QAbstractItemView.SelectRows)
+ self.model_driver_table = DriverModel(self.cursor)
+ self.model_proxy = QSortFilterProxyModel()
+ self.model_proxy.setSourceModel(self.model_driver_table)
+ self.widget_driver_table.setModel(self.model_proxy)
+ self.widget_driver_table.setSortingEnabled(True)
+ self.layout.leftWidget(self.widget_driver_table)
- self.setLayout(layout)
+ self.driver_details = DriverDetailsWidget(self)
+ self.layout.rightWidget(self.driver_details)
+
+ self.setLayout(self.layout)