Automatic theme (#29)

* add "automatic" theme

set the theme and icons based on the system theme

* update the default icons based on system theme

* update pyqt to 6.5.0 to get the colorSchemeChanged callback

* rename style to theme

* remove unused svg files for default theme

* ServerInfoDialog: update feedback colors in dark mode
This commit is contained in:
seird
2023-05-21 11:41:01 +02:00
committed by GitHub
parent 34d81ef6d0
commit bc221d6c8f
17 changed files with 105 additions and 272 deletions

View File

@@ -47,10 +47,18 @@ class ServerInfoDialog(QtWidgets.QDialog, Ui_Dialog):
self.task.incorrect_url.connect(self.incorrect_url_callback)
self.task.start()
def update_widget_state(self, widget: QtWidgets.QWidget, state: str):
widget.setProperty("state", state)
widget.style().unpolish(widget)
widget.style().polish(widget)
widget.update()
def server_info_success(self, version: GotifyVersionModel):
self.pb_test.setEnabled(True)
self.label_server_info.setText(f"Version: {version.version}")
self.pb_test.setStyleSheet("background-color: rgba(0, 255, 0, 100);")
self.update_widget_state(self.pb_test, "success")
self.update_widget_state(self.line_token, "success")
self.update_widget_state(self.line_url, "success")
self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(
True
)
@@ -59,15 +67,17 @@ class ServerInfoDialog(QtWidgets.QDialog, Ui_Dialog):
def incorrect_token_callback(self, version: GotifyVersionModel):
self.pb_test.setEnabled(True)
self.label_server_info.setText(f"Version: {version.version}")
self.pb_test.setStyleSheet("background-color: rgba(255, 0, 0, 100);")
self.line_token.setStyleSheet("border: 1px solid red;")
self.update_widget_state(self.pb_test, "failed")
self.update_widget_state(self.line_token, "failed")
self.update_widget_state(self.line_url, "success")
self.line_token.setFocus()
def incorrect_url_callback(self):
self.pb_test.setEnabled(True)
self.label_server_info.clear()
self.pb_test.setStyleSheet("background-color: rgba(255, 0, 0, 100);")
self.line_url.setStyleSheet("border: 1px solid red;")
self.update_widget_state(self.pb_test, "failed")
self.update_widget_state(self.line_token, "success")
self.update_widget_state(self.line_url, "failed")
self.line_url.setFocus()
def import_success_callback(self):