Add StatusBar information
Updated workers.py to hold "current" values. Status bar is three widgets, status label, progressbar and load button. Fixes: #8, #9
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
from typing import Any, cast
|
||||
|
||||
from PySide6.QtCore import (
|
||||
QByteArray,
|
||||
QDate,
|
||||
QModelIndex,
|
||||
QPersistentModelIndex,
|
||||
QPoint,
|
||||
QSettings,
|
||||
Qt,
|
||||
Signal,
|
||||
Slot,
|
||||
@@ -15,19 +13,25 @@ from PySide6.QtGui import (
|
||||
QCloseEvent,
|
||||
QColor,
|
||||
)
|
||||
from PySide6.QtSql import QSqlTableModel
|
||||
from PySide6.QtSql import QSqlQuery, QSqlTableModel
|
||||
from PySide6.QtWidgets import (
|
||||
QAbstractItemView,
|
||||
QHBoxLayout,
|
||||
QHeaderView,
|
||||
QLabel,
|
||||
QMainWindow,
|
||||
QProgressBar,
|
||||
QPushButton,
|
||||
QSizePolicy,
|
||||
QStyledItemDelegate,
|
||||
QStyleOptionViewItem,
|
||||
QWidget,
|
||||
)
|
||||
|
||||
from docketModel import docketModel
|
||||
from lib.utils import QStyleOptionViewItemInit, readGeometry, writeGeometry
|
||||
from lib.utils import QStyleOptionViewItemInit, query_error, readGeometry, writeGeometry
|
||||
from ui.MainWindow import Ui_MainWindow
|
||||
from workers import updateThread
|
||||
from workers import loadCases, updateThread
|
||||
|
||||
|
||||
class dateDelegate(QStyledItemDelegate):
|
||||
@@ -115,7 +119,8 @@ class casesModel(QSqlTableModel):
|
||||
|
||||
class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
show_entries = Signal(int)
|
||||
|
||||
update_status = Signal()
|
||||
|
||||
loadThread = None
|
||||
|
||||
def __init__(self) -> None:
|
||||
@@ -169,6 +174,28 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.docketView.horizontalHeader().setSectionResizeMode(
|
||||
1, QHeaderView.ResizeMode.Stretch
|
||||
)
|
||||
|
||||
widget = QWidget()
|
||||
layout = QHBoxLayout(widget)
|
||||
self.status = QLabel("Status")
|
||||
layout.addWidget(self.status)
|
||||
layout.addStretch()
|
||||
self.progress = QProgressBar()
|
||||
self.progress.setRange(0,100)
|
||||
self.progress.setValue(0)
|
||||
self.progress.setMinimumWidth(150)
|
||||
self.progress.setMaximumWidth(150)
|
||||
self.progress.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
|
||||
layout.addWidget(self.progress)
|
||||
self.loadButton = QPushButton()
|
||||
self.loadButton.setObjectName("loadButton")
|
||||
self.loadButton.setText("Load Cases")
|
||||
layout.addWidget(self.loadButton)
|
||||
self.statusbar.addWidget(widget,10)
|
||||
|
||||
self.loadButton.clicked.connect(self.loadCases)
|
||||
self.update_status.connect(self.statusBarUpdate)
|
||||
self.update_status.emit()
|
||||
return
|
||||
|
||||
def closeEvent(self, event: QCloseEvent) -> None:
|
||||
@@ -176,6 +203,48 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
super().closeEvent(event)
|
||||
return
|
||||
|
||||
@Slot()
|
||||
def loadCases(self) -> None:
|
||||
if self.loadThread is None:
|
||||
self.loadThread = loadCases()
|
||||
self.loadThread.caseLoaded.connect(self.progress.setValue)
|
||||
self.loadThread.finished.connect(self.loadCasesDone)
|
||||
self.loadButton.setEnabled(False)
|
||||
self.loadThread.start()
|
||||
return
|
||||
@Slot()
|
||||
def loadCasesDone(self) -> None:
|
||||
self.loadButton.setEnabled(True)
|
||||
self.update_status.emit()
|
||||
return
|
||||
|
||||
@Slot()
|
||||
def statusBarUpdate(self) -> None:
|
||||
if self.loadThread is None:
|
||||
year = ''
|
||||
max = 'unknown'
|
||||
else:
|
||||
year = self.loadThread.year
|
||||
max = self.loadThread.number
|
||||
query = QSqlQuery()
|
||||
query.prepare("SELECT COUNT(*) AS number_active FROM cases WHERE active=1")
|
||||
if not query.exec():
|
||||
query_error(query)
|
||||
if query.next():
|
||||
active = query.value('number_active')
|
||||
query.prepare("select SUBSTRING(docket_id,1,2) AS year, "
|
||||
"SUBSTRING(docket_id,3,1) AS type, "
|
||||
"MAX(CAST(SUBSTRING(docket_id,4) AS INTEGER)) AS number "
|
||||
"FROM cases "
|
||||
"GROUP BY year, type "
|
||||
"ORDER BY type, year, number"
|
||||
"LIMIT 2")
|
||||
#if not query.exec():
|
||||
# query_error(query)
|
||||
msg=f"Oldest: {year}, Active: {active}, Max. Case: {max}"
|
||||
self.status.setText(msg)
|
||||
return
|
||||
|
||||
@Slot(QModelIndex) # type: ignore
|
||||
def rowClicked(self, index: QModelIndex) -> None:
|
||||
if not index.isValid():
|
||||
|
||||
Reference in New Issue
Block a user