impr: refine DatabaseUpdateSignals

This commit is contained in:
283375 2023-10-17 22:47:16 +08:00
parent 52e618e664
commit 105d5c1dfb
Signed by: 283375
SSH Key Fingerprint: SHA256:UcX0qg6ZOSDOeieKPGokA5h7soykG61nz2uxuQgVLSk
5 changed files with 11 additions and 9 deletions

View File

@ -12,7 +12,8 @@ def create_engine(_url: str | QUrl, pool: Type[Pool] = NullPool) -> Engine:
class DatabaseUpdateSignals(QObject):
songDataUpdated = Signal()
songAddOrDelete = Signal()
chartInfoUpdated = Signal()
databaseUpdateSignals = DatabaseUpdateSignals()

View File

@ -35,10 +35,11 @@ class ChartSelector(Ui_ChartSelector, QWidget):
self.ratingClassSelector.valueChanged.connect(self.valueChanged)
# handle `songIdSelector.updateDatabase` by this component
databaseUpdateSignals.songDataUpdated.disconnect(
databaseUpdateSignals.songAddOrDelete.disconnect(
self.songIdSelector.updateDatabase
)
databaseUpdateSignals.songDataUpdated.connect(self.updateDatabase)
databaseUpdateSignals.songAddOrDelete.connect(self.updateDatabase)
databaseUpdateSignals.chartInfoUpdated.connect(self.updateResultLabel)
def setSongIdSelectorMode(self, mode: SongIdSelectorMode):
self.songIdSelector.setMode(mode)

View File

@ -72,7 +72,7 @@ class SongIdSelector(Ui_SongIdSelector, QWidget):
self.songIdComboBox.currentIndexChanged.connect(self.valueChanged)
self.updateDatabase()
databaseUpdateSignals.songDataUpdated.connect(self.updateDatabase)
databaseUpdateSignals.songAddOrDelete.connect(self.updateDatabase)
def setMode(self, mode: SongIdSelectorMode):
self.mode = mode

View File

@ -48,7 +48,7 @@ class TabDb_ChartInfoEditor(Ui_TabDb_ChartInfoEditor, QWidget):
self.chartSelector.setSongIdSelectorMode(SongIdSelectorMode.SongId)
self.chartSelector.valueChanged.connect(self.chartSelectorValueChanged)
databaseUpdateSignals.songDataUpdated.connect(self.updateChartInfoAbsentModel)
databaseUpdateSignals.chartInfoUpdated.connect(self.updateChartInfoAbsentModel)
self.updateChartInfoAbsentModel()
self.commitButton.clicked.connect(self.commitChartInfo)
@ -193,7 +193,7 @@ class TabDb_ChartInfoEditor(Ui_TabDb_ChartInfoEditor, QWidget):
with self.db.sessionmaker() as session:
session.merge(chartInfo)
session.commit()
databaseUpdateSignals.songDataUpdated.emit()
databaseUpdateSignals.chartInfoUpdated.emit()
def deleteChartInfo(self):
chart = self.chartSelector.value()
@ -223,4 +223,4 @@ class TabDb_ChartInfoEditor(Ui_TabDb_ChartInfoEditor, QWidget):
with self.db.sessionmaker() as session:
session.delete(chartInfo)
session.commit()
databaseUpdateSignals.songDataUpdated.emit()
databaseUpdateSignals.chartInfoUpdated.emit()

View File

@ -46,7 +46,7 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget):
with db.sessionmaker() as session:
parser.write_database(session)
session.commit()
databaseUpdateSignals.songDataUpdated.emit()
databaseUpdateSignals.chartInfoUpdated.emit()
QMessageBox.information(self, None, "OK")
except Exception as e:
logging.exception("Sync arcsong.db error")
@ -62,7 +62,7 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget):
with db.sessionmaker() as session:
parser.write_database(session)
session.commit()
databaseUpdateSignals.songDataUpdated.emit()
databaseUpdateSignals.songAddOrDelete.emit()
itemNum = len([item for item in parser.parse() if isinstance(item, instance)])
logger.info(f"updated {itemNum} {logName} from {path}")
return itemNum