Change to mysql and QSqlTableModel
This commit is contained in:
@@ -1,22 +1,24 @@
|
||||
#!venv/bin/python3
|
||||
import datetime
|
||||
import re
|
||||
import sys
|
||||
from typing import Any, cast
|
||||
|
||||
from PySide6.QtCore import (
|
||||
QCoreApplication,
|
||||
QDate,
|
||||
QEvent,
|
||||
QModelIndex,
|
||||
QObject,
|
||||
QPersistentModelIndex,
|
||||
QRect,
|
||||
QSize,
|
||||
Qt,
|
||||
Signal,
|
||||
Slot,
|
||||
)
|
||||
from PySide6.QtGui import QColor, QPainter, QTextDocument
|
||||
from PySide6.QtSql import (
|
||||
QSqlDatabase,
|
||||
QSqlQuery,
|
||||
QSqlTableModel,
|
||||
)
|
||||
from PySide6.QtWidgets import (
|
||||
@@ -31,7 +33,6 @@ from PySide6.QtWidgets import (
|
||||
)
|
||||
|
||||
from docketModel import docketModel
|
||||
from lib.utils import query_error
|
||||
from ui.MainWindow import Ui_MainWindow
|
||||
from workers import loadCases, updateThread
|
||||
|
||||
@@ -39,9 +40,8 @@ translate = QCoreApplication.translate
|
||||
|
||||
|
||||
class dateDelegate(QStyledItemDelegate):
|
||||
def displayText(self, value: int, _: Any) -> str:
|
||||
date = datetime.date.fromtimestamp(value)
|
||||
return date.strftime("%B %-d, %Y")
|
||||
def displayText(self, value: QDate, _: Any) -> str:
|
||||
return value.toString("MMMM d, yyyy")
|
||||
|
||||
|
||||
class QStyleOptionViewItemInit(QStyleOptionViewItem):
|
||||
@@ -61,7 +61,7 @@ class activeDelegate(QStyledItemDelegate):
|
||||
options = cast(QStyleOptionViewItemInit, option)
|
||||
super().initStyleOption(options, index)
|
||||
assert isinstance(index, QModelIndex)
|
||||
if index.siblingAtColumn(6).data() == 0:
|
||||
if index.siblingAtColumn(5).data() == 0:
|
||||
options.backgroundBrush = QColor(0x444444)
|
||||
return
|
||||
|
||||
@@ -80,6 +80,16 @@ class documentDelegate(QStyledItemDelegate):
|
||||
options.backgroundBrush = QColor(0x444444)
|
||||
return
|
||||
|
||||
def eventFilter(self, object: QObject, event: QEvent) -> bool:
|
||||
if event.type() in [ QEvent.Type.MouseButtonPress,
|
||||
QEvent.Type.MouseButtonRelease]:
|
||||
return False
|
||||
return super().eventFilter(object, event)
|
||||
|
||||
def event(self, ev:QEvent) -> bool:
|
||||
print(ev)
|
||||
return super(documentDelegate,self).event(ev)
|
||||
|
||||
def paint(
|
||||
self,
|
||||
painter: QPainter,
|
||||
@@ -130,15 +140,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.loadThread.finished.connect(self.updateDone)
|
||||
self.loadThread.start()
|
||||
|
||||
# model = QSqlQueryModel()
|
||||
model = QSqlTableModel()
|
||||
query = QSqlQuery(
|
||||
"SELECT * FROM cases ORDER BY SUBSTR(docket_id,1,3), "
|
||||
"CAST(SUBSTR(docket_id,4) AS INT)"
|
||||
)
|
||||
if not query.exec():
|
||||
query_error(query)
|
||||
model.setQuery(query)
|
||||
model.setTable("cases")
|
||||
model.select()
|
||||
model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket")
|
||||
model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners")
|
||||
model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents")
|
||||
self.casesView.setModel(model)
|
||||
|
||||
self.casesView.setSelectionMode(
|
||||
@@ -148,14 +155,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
QAbstractItemView.SelectionBehavior.SelectRows
|
||||
)
|
||||
self.casesView.hideColumn(0)
|
||||
self.casesView.hideColumn(2)
|
||||
self.casesView.setItemDelegateForColumn(5, dateDelegate())
|
||||
self.casesView.setItemDelegate(activeDelegate())
|
||||
self.casesView.setItemDelegateForColumn(4, dateDelegate())
|
||||
self.casesView.resizeColumnToContents(1)
|
||||
self.casesView.resizeColumnToContents(5)
|
||||
header = self.casesView.horizontalHeader()
|
||||
header.setSectionResizeMode(2, QHeaderView.ResizeMode.Fixed)
|
||||
header.setSectionResizeMode(3, QHeaderView.ResizeMode.Fixed)
|
||||
header.setSectionResizeMode(4, QHeaderView.ResizeMode.Fixed)
|
||||
self.show()
|
||||
remaining = (
|
||||
self.casesView.width()
|
||||
@@ -163,8 +169,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
- header.sectionSize(5)
|
||||
- 5
|
||||
)
|
||||
self.casesView.setColumnWidth(2, int(remaining * 0.5))
|
||||
self.casesView.setColumnWidth(3, int(remaining * 0.5))
|
||||
self.casesView.setColumnWidth(4, int(remaining * 0.5))
|
||||
self.casesView.verticalHeader().hide()
|
||||
self.casesView.resizeRowsToContents()
|
||||
self.casesView.doubleClicked.connect(self.rowClicked)
|
||||
@@ -205,6 +211,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.updateThread.start()
|
||||
return
|
||||
|
||||
@Slot(QModelIndex) # type: ignore
|
||||
def on_docketView_clicked(self, index: QModelIndex) -> None:
|
||||
print(f"view clicked, cell: {index.column()}, {index.row()}")
|
||||
return
|
||||
|
||||
@Slot()
|
||||
def updateDone(self) -> None:
|
||||
self.updateThread = None
|
||||
|
||||
Reference in New Issue
Block a user