diff --git a/ui/extends/shared/database.py b/ui/extends/shared/database.py index 50e07f3..58dc750 100644 --- a/ui/extends/shared/database.py +++ b/ui/extends/shared/database.py @@ -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() diff --git a/ui/implements/components/chartSelector.py b/ui/implements/components/chartSelector.py index 5096b5b..3e5ac77 100644 --- a/ui/implements/components/chartSelector.py +++ b/ui/implements/components/chartSelector.py @@ -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) diff --git a/ui/implements/components/songIdSelector.py b/ui/implements/components/songIdSelector.py index ad610ac..e681f76 100644 --- a/ui/implements/components/songIdSelector.py +++ b/ui/implements/components/songIdSelector.py @@ -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 diff --git a/ui/implements/tabs/tabDb/tabDb_ChartInfoEditor.py b/ui/implements/tabs/tabDb/tabDb_ChartInfoEditor.py index d636ae6..d3c32be 100644 --- a/ui/implements/tabs/tabDb/tabDb_ChartInfoEditor.py +++ b/ui/implements/tabs/tabDb/tabDb_ChartInfoEditor.py @@ -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() diff --git a/ui/implements/tabs/tabDb/tabDb_Manage.py b/ui/implements/tabs/tabDb/tabDb_Manage.py index 3da4cdc..c4447d0 100644 --- a/ui/implements/tabs/tabDb/tabDb_Manage.py +++ b/ui/implements/tabs/tabDb/tabDb_Manage.py @@ -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