Clean up Cases Display
Subclass QTableModel to return checkbox indicators. Fix column headers
This commit is contained in:
@@ -40,11 +40,10 @@ class dateDelegate(QStyledItemDelegate):
|
|||||||
options = cast(QStyleOptionViewItemInit, option)
|
options = cast(QStyleOptionViewItemInit, option)
|
||||||
super().initStyleOption(options, index)
|
super().initStyleOption(options, index)
|
||||||
assert isinstance(index, QModelIndex)
|
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)
|
options.backgroundBrush = QColor(0x444444)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class activeDelegate(QStyledItemDelegate):
|
class activeDelegate(QStyledItemDelegate):
|
||||||
def initStyleOption(
|
def initStyleOption(
|
||||||
self,
|
self,
|
||||||
@@ -55,10 +54,35 @@ class activeDelegate(QStyledItemDelegate):
|
|||||||
options = cast(QStyleOptionViewItemInit, option)
|
options = cast(QStyleOptionViewItemInit, option)
|
||||||
super().initStyleOption(options, index)
|
super().initStyleOption(options, index)
|
||||||
assert isinstance(index, QModelIndex)
|
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)
|
options.backgroundBrush = QColor(0x444444)
|
||||||
return
|
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):
|
class MainWindow(QMainWindow, Ui_MainWindow):
|
||||||
show_entries = Signal(int)
|
show_entries = Signal(int)
|
||||||
@@ -69,13 +93,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||||||
super(MainWindow, self).__init__()
|
super(MainWindow, self).__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
|
|
||||||
model = QSqlTableModel()
|
model = casesModel()
|
||||||
model.setTable("cases")
|
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.select()
|
||||||
model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket")
|
model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket")
|
||||||
model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners")
|
model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners")
|
||||||
model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents")
|
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.setModel(model)
|
||||||
|
|
||||||
self.casesView.setSelectionMode(
|
self.casesView.setSelectionMode(
|
||||||
|
|||||||
Reference in New Issue
Block a user