Skip to content

Commit 2fcb2c0

Browse files
committed
feat: 重置窗口托盘菜单
1 parent 9d6bc26 commit 2fcb2c0

5 files changed

Lines changed: 43 additions & 0 deletions

File tree

aao/app.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ def __init__(
162162
self._force_quit = False
163163
self.tray = TrayController(self)
164164
self.tray.show_requested.connect(self._restore_from_tray)
165+
self.tray.reset_layout_requested.connect(self._reset_window_layout)
165166
self.tray.quit_requested.connect(self._quit_from_tray)
166167
self.tray.show()
167168

@@ -513,6 +514,26 @@ def _restore_from_tray(self) -> None:
513514
self.raise_()
514515
self.activateWindow()
515516

517+
def _reset_window_layout(self) -> None:
518+
"""托盘菜单:重置主窗口位置/大小,并清除悬浮窗持久化布局。"""
519+
from aao.ui import floating_state
520+
521+
floating_state.clear_all()
522+
geo = self.screen().availableGeometry()
523+
self.resize(860, 560)
524+
self.move(geo.center().x() - self.width() // 2, geo.center().y() - self.height() // 2)
525+
self._restore_from_tray()
526+
527+
margin = 20
528+
if self.overlay is not None:
529+
self.overlay.reset_layout(geo.right() - 170 - margin, geo.top() + margin)
530+
log = getattr(self.farm_page, "_floating_log", None)
531+
if log is not None:
532+
x = geo.right() - 360 - margin
533+
y = geo.top() + margin + (self.overlay.height() + 12 if self.overlay is not None else 0)
534+
log.reset_layout(x, y)
535+
self.tray.show_message("ArknightsAutoOperator", "已重置主窗口和悬浮窗布局。")
536+
516537
def _quit_from_tray(self) -> None:
517538
"""托盘「退出」:停所有 worker + 退出应用。"""
518539
self._force_quit = True

aao/measure/overlay.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@ def paintEvent(self, _event: QPaintEvent) -> None:
124124
painter.setPen(border)
125125
painter.drawPath(path)
126126

127+
def reset_layout(self, x: int, y: int) -> None:
128+
self._snap_follow = None
129+
self.resize(170, 72)
130+
self.move(x, y)
131+
self._save_window_state()
132+
127133
def on_state(self, state: dict) -> None:
128134
running = state.get("isRunning", False)
129135
cf = state.get("currentFrame")

aao/ui/floating_log_window.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,12 @@ def _save_window_state(self) -> None:
197197
_WINDOW_ID, self._snap_follow.to_dict() if self._snap_follow is not None else None
198198
)
199199

200+
def reset_layout(self, x: int, y: int) -> None:
201+
self._snap_follow = None
202+
self.resize(360, 220)
203+
self.move(x, y)
204+
self._save_window_state()
205+
200206
def set_always_on_top(self, enabled: bool) -> None:
201207
visible = self.isVisible()
202208
self.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint, enabled)

aao/ui/floating_state.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
from PySide6.QtWidgets import QWidget
1818

1919

20+
def clear_all() -> None:
21+
s = _load_settings()
22+
s.pop("floating_windows", None)
23+
_save_settings(s)
24+
25+
2026
def load_state(window_id: str) -> dict[str, Any]:
2127
s = _load_settings()
2228
data = s.get("floating_windows", {})

aao/ui/tray.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class TrayController(QObject):
2828

2929
quit_requested = Signal() # 用户点「退出」
3030
show_requested = Signal() # 用户点「显示」/ 双击图标
31+
reset_layout_requested = Signal() # 重置主窗口 + 悬浮窗布局
3132

3233
def __init__(self, parent: QWidget):
3334
super().__init__(parent)
@@ -37,9 +38,12 @@ def __init__(self, parent: QWidget):
3738
menu = QMenu(parent)
3839
act_show = QAction("显示窗口", parent)
3940
act_show.triggered.connect(self.show_requested.emit)
41+
act_reset = QAction("重置窗口布局", parent)
42+
act_reset.triggered.connect(self.reset_layout_requested.emit)
4043
act_quit = QAction("退出", parent)
4144
act_quit.triggered.connect(self.quit_requested.emit)
4245
menu.addAction(act_show)
46+
menu.addAction(act_reset)
4347
menu.addSeparator()
4448
menu.addAction(act_quit)
4549

0 commit comments

Comments
 (0)