diff --git a/MainWindow.py b/MainWindow.py index a58f5dc..41ca448 100644 --- a/MainWindow.py +++ b/MainWindow.py @@ -40,11 +40,10 @@ class dateDelegate(QStyledItemDelegate): options = cast(QStyleOptionViewItemInit, option) super().initStyleOption(options, index) assert isinstance(index, QModelIndex) - if index.siblingAtColumn(5).data() == 0: + if index.siblingAtColumn(5).data(Qt.ItemDataRole.CheckStateRole) == Qt.CheckState.Unchecked: options.backgroundBrush = QColor(0x444444) return - class activeDelegate(QStyledItemDelegate): def initStyleOption( self, @@ -55,10 +54,35 @@ class activeDelegate(QStyledItemDelegate): options = cast(QStyleOptionViewItemInit, option) super().initStyleOption(options, index) assert isinstance(index, QModelIndex) - if index.siblingAtColumn(5).data() == 0: + if index.siblingAtColumn(5).data(Qt.ItemDataRole.CheckStateRole) == Qt.CheckState.Unchecked: options.backgroundBrush = QColor(0x444444) return +class casesModel(QSqlTableModel): + def flags(self, index: QModelIndex | QPersistentModelIndex) -> Qt.ItemFlag: + if not index.isValid(): + return Qt.ItemFlag.NoItemFlags + flags = super(casesModel,self).flags(index) + if index.column() == 5: + flags = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsEditable | Qt.ItemFlag.ItemIsUserCheckable + return flags + + def data(self, index: QModelIndex | QPersistentModelIndex, role: int) -> Any: + if not index.isValid(): + return None + if index.column() == 5: + if role == Qt.ItemDataRole.CheckStateRole: + value = super(casesModel,self).data(index) + return Qt.CheckState.Checked if value == 1 else Qt.CheckState.Unchecked + elif role == Qt.ItemDataRole.DisplayRole: + return '' + return super().data(index, role) + + def setData(self, index: QModelIndex | QPersistentModelIndex, value: Any, role: int) -> bool: + if role == Qt.ItemDataRole.CheckStateRole and index.column() == 5: + super(casesModel,self).setData(index, 1 if value else 0) + return True + return super().setData(index, value, role) class MainWindow(QMainWindow, Ui_MainWindow): show_entries = Signal(int) @@ -69,13 +93,16 @@ class MainWindow(QMainWindow, Ui_MainWindow): super(MainWindow, self).__init__() self.setupUi(self) - model = QSqlTableModel() + model = casesModel() model.setTable("cases") - model.sort(1, Qt.SortOrder.AscendingOrder) + #model.sort(1, Qt.SortOrder.AscendingOrder) + model.setFilter("1=1 ORDER BY SUBSTRING(docket_id, 1, 3), CAST(SUBSTRING(docket_id,4) AS INTEGER)") model.select() model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket") model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners") model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents") + model.setHeaderData(4, Qt.Orientation.Horizontal, "Date") + model.setHeaderData(5, Qt.Orientation.Horizontal, "Active") self.casesView.setModel(model) self.casesView.setSelectionMode(