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)
|
||||
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(
|
||||
|
||||
Reference in New Issue
Block a user