66
77from PyQt6 import uic , QtWidgets
88from PyQt6 .QtWidgets import QDockWidget
9+ from PyQt6 .QtCore import pyqtSignal , QTimer
910
1011# from PyQt6.QtGui import QColorConstants, QPalette, QColor
11- from PyQt6 .QtCore import pyqtSignal
1212
1313import not1mm .fsutils as fsutils
1414from not1mm .lib .database import DataBase
@@ -43,6 +43,9 @@ def __init__(self):
4343 self .database = DataBase (self .dbname , fsutils .APP_DATA_PATH )
4444 self .database .current_contest = self .pref .get ("contest" , 0 )
4545 uic .loadUi (fsutils .APP_DATA_PATH / "statistics.ui" , self )
46+ self .timer = QTimer ()
47+ self .timer .timeout .connect (self .get_run_and_total_qs )
48+ self .timer .start (5000 )
4649
4750 def msg_from_main (self , packet ):
4851 """"""
@@ -100,9 +103,13 @@ def load_pref(self) -> None:
100103
101104 def get_run_and_total_qs (self ):
102105 """get numbers"""
106+ if self .active is False :
107+ return
103108 self .tableWidget .clear ()
104- self .tableWidget .setColumnCount (4 )
105- self .tableWidget .setHorizontalHeaderLabels (["BAND" , "QSO" , "CALLS" , "POINTS" ])
109+ self .tableWidget .setColumnCount (7 )
110+ self .tableWidget .setHorizontalHeaderLabels (
111+ ["BAND" , "QSO" , "CALLS" , "CW" , "PH" , "DI" , "PTS" ]
112+ )
106113 self .tableWidget .verticalHeader ().setVisible (False )
107114 self .tableWidget .setEditTriggers (
108115 QtWidgets .QAbstractItemView .EditTrigger .NoEditTriggers
@@ -128,7 +135,19 @@ def get_run_and_total_qs(self):
128135 self .tableWidget .setItem (row , 2 , item )
129136 item = QtWidgets .QTableWidgetItem (str (result ["points" ]))
130137 item .setTextAlignment (0x0002 )
138+ self .tableWidget .setItem (row , 6 , item )
139+ query = f"select sum(sortedmode.mode == 'CW') as CW, sum(sortedmode.mode == 'PH') as PH, sum(sortedmode.mode == 'DI') as DI from (select CASE Mode WHEN 'LSB' THEN 'PH' WHEN 'USB' THEN 'PH' WHEN 'CW' THEN 'CW' WHEN 'RTTY' THEN 'DI' ELSE 'OTHER' END mode from DXLOG where ContestNR = { self .database .current_contest } and Band = '{ band ['band' ]} ') as sortedmode;"
140+ result = self .database .exec_sql (query )
141+ item = QtWidgets .QTableWidgetItem (str (result ["CW" ]))
142+ item .setTextAlignment (0x0002 )
131143 self .tableWidget .setItem (row , 3 , item )
144+ item = QtWidgets .QTableWidgetItem (str (result ["PH" ]))
145+ item .setTextAlignment (0x0002 )
146+ self .tableWidget .setItem (row , 4 , item )
147+ item = QtWidgets .QTableWidgetItem (str (result ["DI" ]))
148+ item .setTextAlignment (0x0002 )
149+ self .tableWidget .setItem (row , 5 , item )
150+
132151 row += 1
133152 query = f"select count(*) as qs, count(DISTINCT(Call)) as calls, sum(Points) as points from DXLOG where ContestNR = { self .database .current_contest } ;"
134153 result = self .database .exec_sql (query )
@@ -143,7 +162,19 @@ def get_run_and_total_qs(self):
143162 self .tableWidget .setItem (row , 2 , item )
144163 item = QtWidgets .QTableWidgetItem (str (result ["points" ]))
145164 item .setTextAlignment (0x0002 )
165+ self .tableWidget .setItem (row , 6 , item )
166+
167+ query = f"select sum(sortedmode.mode == 'CW') as CW, sum(sortedmode.mode == 'PH') as PH, sum(sortedmode.mode == 'DI') as DI from (select CASE Mode WHEN 'LSB' THEN 'PH' WHEN 'USB' THEN 'PH' WHEN 'CW' THEN 'CW' WHEN 'RTTY' THEN 'DI' ELSE 'OTHER' END mode from DXLOG where ContestNR = { self .database .current_contest } ) as sortedmode;"
168+ result = self .database .exec_sql (query )
169+ item = QtWidgets .QTableWidgetItem (str (result ["CW" ]))
170+ item .setTextAlignment (0x0002 )
146171 self .tableWidget .setItem (row , 3 , item )
172+ item = QtWidgets .QTableWidgetItem (str (result ["PH" ]))
173+ item .setTextAlignment (0x0002 )
174+ self .tableWidget .setItem (row , 4 , item )
175+ item = QtWidgets .QTableWidgetItem (str (result ["DI" ]))
176+ item .setTextAlignment (0x0002 )
177+ self .tableWidget .setItem (row , 5 , item )
147178 self .tableWidget .resizeColumnsToContents ()
148179 self .tableWidget .resizeRowsToContents ()
149180
0 commit comments