Add basic dark & light theme (#18)

This commit is contained in:
seird
2022-11-02 19:31:56 +01:00
committed by GitHub
parent 7fd412e80b
commit a8a854ce6b
41 changed files with 833 additions and 52 deletions

View File

@@ -10,7 +10,7 @@ from . import MessageWidget
from gotify_tray.__version__ import __title__
from gotify_tray.database import Settings
from gotify_tray.utils import get_abs_path
from gotify_tray.gui.themes import get_theme_file
settings = Settings("gotify-tray")
@@ -44,30 +44,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# Do not collapse the message list
self.splitter.setCollapsible(1, False)
self.status_widget = StatusWidget()
self.horizontalLayout.insertWidget(0, self.status_widget)
# Set button icons
self.pb_refresh.setIcon(
QtGui.QIcon(get_abs_path(f"gotify_tray/gui/images/refresh.svg"))
)
self.pb_delete_all.setIcon(
QtGui.QIcon(get_abs_path(f"gotify_tray/gui/images/trashcan.svg"))
)
# Resize the labels and icons
size = settings.value("MainWindow/label/size", type=int)
self.status_widget.setFixedSize(QtCore.QSize(size, size))
size = settings.value("MainWindow/button/size", type=int)
self.pb_refresh.setFixedSize(QtCore.QSize(size, size))
self.pb_delete_all.setFixedSize(QtCore.QSize(size, size))
self.pb_refresh.setIconSize(QtCore.QSize(int(0.7 * size), int(0.7 * size)))
self.pb_delete_all.setIconSize(QtCore.QSize(int(0.9 * size), int(0.9 * size)))
size = settings.value("MainWindow/application/icon/size", type=int)
self.listView_applications.setIconSize(QtCore.QSize(size, size))
self.set_icons()
font_title = QtGui.QFont()
if s := settings.value("MainWindow/font/application", type=str):
@@ -85,6 +65,24 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.link_callbacks()
def set_icons(self):
# Set button icons
self.pb_refresh.setIcon(QtGui.QIcon(get_theme_file("refresh.svg")))
self.pb_delete_all.setIcon(QtGui.QIcon(get_theme_file("trashcan.svg")))
# Resize the labels and icons
size = settings.value("MainWindow/label/size", type=int)
self.status_widget.setFixedSize(QtCore.QSize(size, size))
size = settings.value("MainWindow/button/size", type=int)
self.pb_refresh.setFixedSize(QtCore.QSize(size, size))
self.pb_delete_all.setFixedSize(QtCore.QSize(size, size))
self.pb_refresh.setIconSize(QtCore.QSize(int(0.7 * size), int(0.7 * size)))
self.pb_delete_all.setIconSize(QtCore.QSize(int(0.9 * size), int(0.9 * size)))
size = settings.value("MainWindow/application/icon/size", type=int)
self.listView_applications.setIconSize(QtCore.QSize(size, size))
def set_active(self):
self.status_widget.set_active()

View File

@@ -5,7 +5,8 @@ from PyQt6 import QtCore, QtGui, QtWidgets
from ..models.MessagesModel import MessageItemDataRole, MessagesModelItem
from ..designs.widget_message import Ui_Form
from gotify_tray.database import Settings
from gotify_tray.utils import convert_links, get_abs_path
from gotify_tray.utils import convert_links
from gotify_tray.gui.themes import get_theme_file
settings = Settings("gotify-tray")
@@ -60,9 +61,7 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
size_hint = self.message_item.sizeHint()
self.message_item.setSizeHint(QtCore.QSize(size_hint.width(), self.height()))
self.pb_delete.setIcon(
QtGui.QIcon(get_abs_path("gotify_tray/gui/images/trashcan.svg"))
)
self.pb_delete.setIcon(QtGui.QIcon(get_theme_file("trashcan.svg")))
self.pb_delete.setIconSize(QtCore.QSize(24, 24))
self.link_callbacks()
@@ -92,7 +91,7 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
def link_hovered_callback(self, link: str):
if not settings.value("ImagePopup/enabled", type=bool):
return
qurl = QtCore.QUrl(link)
_, ext = os.path.splitext(qurl.fileName())
if ext in settings.value("ImagePopup/extensions", type=list):

View File

@@ -8,6 +8,7 @@ from gotify_tray.gui.models import MessagesModelItem
from . import MessageWidget
from gotify_tray.utils import get_icon, verify_server, open_file
from gotify_tray.tasks import ExportSettingsTask, ImportSettingsTask
from gotify_tray.gui.themes import get_themes
from PyQt6 import QtCore, QtGui, QtWidgets
from ..designs.widget_settings import Ui_Dialog
@@ -19,6 +20,7 @@ settings = Settings("gotify-tray")
class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
quit_requested = QtCore.pyqtSignal()
theme_change_requested = QtCore.pyqtSignal(str)
def __init__(self):
super(SettingsDialog, self).__init__()
@@ -60,6 +62,10 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
settings.value("tray/notifications/click", type=bool)
)
# Theme
self.combo_theme.addItems(get_themes())
self.combo_theme.setCurrentText(settings.value("theme", type=str))
# Logging
self.combo_logging.addItems(
[
@@ -163,6 +169,9 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
self.cb_notify.stateChanged.connect(self.settings_changed_callback)
self.cb_notification_click.stateChanged.connect(self.settings_changed_callback)
# Theme
self.combo_theme.currentTextChanged.connect(self.settings_changed_callback)
# Server info
self.pb_change_server_info.clicked.connect(self.change_server_info_callback)
@@ -200,6 +209,13 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
"tray/notifications/click", self.cb_notification_click.isChecked()
)
# Theme
current_theme = settings.value("theme", type=str)
selected_theme = self.combo_theme.currentText()
if current_theme != selected_theme:
settings.setValue("theme", selected_theme)
self.theme_change_requested.emit(selected_theme)
# Logging
selected_level = self.combo_logging.currentText()
settings.setValue("logging/level", selected_level)

View File

@@ -1,7 +1,7 @@
from PyQt6 import QtCore, QtGui, QtWidgets
from gotify_tray.database import Settings
from gotify_tray.utils import get_abs_path
from gotify_tray.gui.themes import get_theme_file
settings = Settings("gotify-tray")
@@ -15,7 +15,7 @@ class StatusWidget(QtWidgets.QLabel):
self.set_connecting()
def set_status(self, image: str):
self.setPixmap(QtGui.QPixmap(get_abs_path(f"gotify_tray/gui/images/{image}")))
self.setPixmap(QtGui.QPixmap(get_theme_file(image)))
def set_active(self):
self.setToolTip("Listening for new messages")