mirror of
https://github.com/KeksPirates/SoftwareManager.git
synced 2026-08-03 17:39:42 +02:00
Refactor: streamline update notification logic and enhance settings dialog for cross-platform compatibility
This commit is contained in:
@@ -79,7 +79,6 @@ def settings_dialog(self):
|
|||||||
|
|
||||||
# Ignore Updates checkbox
|
# Ignore Updates checkbox
|
||||||
update_checkbox_container, update_checkbox = create_widget(QCheckBox, "Ignore Updates: ")
|
update_checkbox_container, update_checkbox = create_widget(QCheckBox, "Ignore Updates: ")
|
||||||
if platform.system() == "Windows":
|
|
||||||
update_checkbox.setChecked(state.ignore_updates)
|
update_checkbox.setChecked(state.ignore_updates)
|
||||||
update_checkbox.toggled.connect(lambda checked: setattr(state, 'ignore_updates', checked))
|
update_checkbox.toggled.connect(lambda checked: setattr(state, 'ignore_updates', checked))
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
from utils.network.update_checker import get_updates
|
from utils.network.update_checker import get_updates
|
||||||
from PySide6.QtWidgets import QDialog, QMessageBox
|
from PySide6.QtWidgets import QDialog, QMessageBox, QCheckBox, QDialogButtonBox, QVBoxLayout, QLabel
|
||||||
from utils.network.updater import download_update
|
from utils.network.updater import download_update
|
||||||
|
from utils.config.config import create_config
|
||||||
from utils.logging.logs import consoleLog
|
from utils.logging.logs import consoleLog
|
||||||
from utils.data.state import state
|
from utils.data.state import state
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import webbrowser
|
||||||
import platform
|
import platform
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
RELEASES_URL = "https://github.com/KeksPirates/SoftwareManager/releases/latest"
|
||||||
|
|
||||||
def _get_build_info_path() -> (Path | None):
|
def _get_build_info_path() -> (Path | None):
|
||||||
current_dir = Path(__file__).resolve().parent
|
current_dir = Path(__file__).resolve().parent
|
||||||
|
|
||||||
@@ -31,12 +35,40 @@ def get_version() -> None:
|
|||||||
else:
|
else:
|
||||||
consoleLog(f"Could not find build info file (Path: {build_info_path})")
|
consoleLog(f"Could not find build info file (Path: {build_info_path})")
|
||||||
|
|
||||||
|
|
||||||
|
def _show_notify_dialog(latest: str) -> None:
|
||||||
|
msg = QMessageBox()
|
||||||
|
msg.setIcon(QMessageBox.Icon.Information)
|
||||||
|
msg.setWindowTitle("Update Available")
|
||||||
|
msg.setText(f"A new version is available: <b>{latest}</b>")
|
||||||
|
msg.setInformativeText("Visit the releases page to download it.")
|
||||||
|
|
||||||
|
dont_show = QCheckBox("Don't show again")
|
||||||
|
msg.setCheckBox(dont_show)
|
||||||
|
|
||||||
|
open_btn = msg.addButton("Open Releases Page", QMessageBox.ButtonRole.AcceptRole)
|
||||||
|
msg.addButton("Dismiss", QMessageBox.ButtonRole.RejectRole)
|
||||||
|
|
||||||
|
msg.exec()
|
||||||
|
|
||||||
|
if dont_show.isChecked():
|
||||||
|
state.ignore_updates = True
|
||||||
|
create_config()
|
||||||
|
|
||||||
|
if msg.clickedButton() == open_btn:
|
||||||
|
webbrowser.open(RELEASES_URL)
|
||||||
|
|
||||||
|
|
||||||
class UpdateDialog(QDialog):
|
class UpdateDialog(QDialog):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
if state.ignore_updates is False and platform.system() == "Windows":
|
if state.ignore_updates:
|
||||||
|
return
|
||||||
|
|
||||||
assets, latest = get_updates()
|
assets, latest = get_updates()
|
||||||
if assets != None:
|
if assets is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if platform.system() == "Windows":
|
||||||
msg = QMessageBox()
|
msg = QMessageBox()
|
||||||
msg.setIcon(QMessageBox.Icon.Information)
|
msg.setIcon(QMessageBox.Icon.Information)
|
||||||
msg.setWindowTitle("Update Available")
|
msg.setWindowTitle("Update Available")
|
||||||
@@ -46,4 +78,6 @@ class UpdateDialog(QDialog):
|
|||||||
response = msg.exec_()
|
response = msg.exec_()
|
||||||
if response == QMessageBox.StandardButton.Ok:
|
if response == QMessageBox.StandardButton.Ok:
|
||||||
download_update(assets)
|
download_update(assets)
|
||||||
|
else:
|
||||||
|
_show_notify_dialog(latest)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user