增加解除占用功能

This commit is contained in:
2026-04-08 00:07:40 +08:00
parent 005fc3a77c
commit ff8aa0269d
9 changed files with 823 additions and 8 deletions
+57 -2
View File
@@ -3,7 +3,7 @@ import os
from PyQt6.QtWidgets import (
QDialog, QHBoxLayout, QVBoxLayout, QListWidget, QListWidgetItem,
QStackedWidget, QWidget, QLabel, QSlider, QPushButton,
QCheckBox, QGroupBox, QFormLayout, QSpinBox, QFrame
QCheckBox, QGroupBox, QFormLayout, QSpinBox, QFrame, QLineEdit, QFileDialog
)
from PyQt6.QtCore import Qt, QSize
from PyQt6.QtWidgets import QMessageBox
@@ -12,6 +12,7 @@ import qtawesome as qta
from db import database
import ui.theme as theme
import ui.dialog_style as dialog_style
from app_info import APP_NAME, __VERSION__
class SettingsWindow(QDialog):
@@ -51,6 +52,7 @@ class SettingsWindow(QDialog):
("fa5s.paint-brush", "外观"),
("fa5s.window-maximize", "窗口"),
("fa5s.rocket", "启动"),
("fa5s.folder-open", "缓存"),
("fa5s.heart", "捐赠"),
("fa5s.eraser", "初始化"),
]
@@ -75,6 +77,7 @@ class SettingsWindow(QDialog):
self.stack.addWidget(self._page_appearance())
self.stack.addWidget(self._page_window())
self.stack.addWidget(self._page_startup())
self.stack.addWidget(self._page_cache())
self.stack.addWidget(self._page_donate())
self.stack.addWidget(self._page_initialization())
# 此时 stack 已就绪,允许导航回调正常工作
@@ -241,13 +244,65 @@ class SettingsWindow(QDialog):
layout.addWidget(self._divider())
layout.addWidget(self._section_title("关于"))
about = QLabel("桌面文件整理 v1.0\n整理你的桌面快捷方式,保持桌面干净。")
about = QLabel(f"{APP_NAME} v{__VERSION__}\n整理你的桌面快捷方式,保持桌面干净。")
about.setStyleSheet("color:#888; font-size:12px; line-height:1.6;")
layout.addWidget(about)
layout.addStretch()
return page
# ── 缓存页 ───────────────────────────────────────────
def _page_cache(self) -> QWidget:
page = QWidget()
layout = QVBoxLayout(page)
layout.setContentsMargins(24, 20, 24, 20)
layout.setSpacing(16)
layout.addWidget(self._section_title("缓存目录"))
desc = QLabel("下载的免安装软件/安装包默认保存到该目录。")
desc.setWordWrap(True)
desc.setStyleSheet("color:#888; font-size:12px; line-height:1.6;")
layout.addWidget(desc)
row = QHBoxLayout()
row.setSpacing(10)
self._cache_path_edit = QLineEdit()
self._cache_path_edit.setPlaceholderText("请选择缓存目录…")
self._cache_path_edit.setText(database.get_setting("cache_dir", ""))
browse = QPushButton("浏览…")
browse.clicked.connect(self._choose_cache_dir)
save = QPushButton("保存")
save.clicked.connect(self._save_cache_dir)
row.addWidget(self._cache_path_edit)
row.addWidget(browse)
row.addWidget(save)
layout.addLayout(row)
layout.addStretch()
return page
def _choose_cache_dir(self):
cur = ""
if hasattr(self, "_cache_path_edit"):
cur = self._cache_path_edit.text().strip()
start = cur if cur else os.path.expanduser("~")
p = QFileDialog.getExistingDirectory(self, "选择缓存目录", start)
if p:
self._cache_path_edit.setText(p)
def _save_cache_dir(self):
p = self._cache_path_edit.text().strip() if hasattr(self, "_cache_path_edit") else ""
if p and not os.path.isdir(p):
dialog_style.warning(self, "无效目录", "选择的缓存目录不存在,请重新选择。")
return
database.set_setting("cache_dir", p)
dialog_style.information(self, "已保存", "缓存目录已保存。")
# ── 捐赠页 ───────────────────────────────────────────
def _page_donate(self) -> QWidget:
page = QWidget()