Skip to content

Commit 9e6c7b4

Browse files
committed
feat(main_window): 优化 clipboard URL 检查逻辑
- Fix #221
1 parent 509cd21 commit 9e6c7b4

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

app/view/main_window.py

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@
1919
from ..common.methods import getLinkInfo, bringWindowToTop, addDownloadTask, showMessageBox, \
2020
isGreaterEqualWin10, isLessThanWin10, isGreaterEqualWin11
2121
from ..common.signal_bus import signalBus
22+
from ..common.concurrent.TaskExecutor import TaskExecutor
2223
from ..components.add_task_dialog import AddTaskOptionDialog
2324
from ..components.custom_tray import CustomSystemTrayIcon
2425
from ..components.update_dialog import checkUpdate
2526

2627

2728
def updateFrameless(self):
28-
stayOnTop = Qt.WindowStaysOnTopHint if self.windowFlags() & Qt.WindowStaysOnTopHint else 0
29-
self.setWindowFlags(Qt.FramelessWindowHint | stayOnTop)
29+
stayOnTop = Qt.WindowType.WindowStaysOnTopHint if self.windowFlags() & Qt.WindowType.WindowStaysOnTopHint else 0
30+
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | stayOnTop)
3031

3132
self.windowEffect.enableBlurBehindWindow(self.winId())
3233
self.windowEffect.addWindowAnimation(self.winId())
@@ -290,7 +291,7 @@ def onAppError(self, message: str):
290291
lambda: QDesktopServices.openUrl(QUrl(FEEDBACK_URL))
291292
)
292293

293-
def showAddTaskDialog(self, text:str="", headers:dict=None):
294+
def showAddTaskDialog(self, text: str = "", headers: dict = None):
294295
AddTaskOptionDialog.showAddTaskOptionDialog(text, self, headers)
295296

296297
def closeEvent(self, event):
@@ -340,7 +341,7 @@ def dropEvent(self, event: QDropEvent):
340341
event.accept()
341342

342343
def keyPressEvent(self, event):
343-
if event.matches(QKeySequence.Paste):
344+
if event.matches(QKeySequence.StandardKey.Paste):
344345
text = self.clipboard.text()
345346
self.__setUrlsAndShowAddTaskMsg(text)
346347
else:
@@ -355,6 +356,28 @@ def __checkUrl(self, url):
355356
except ValueError:
356357
return False
357358

359+
def __checkUrlsAsync(self, urls):
360+
"""异步检查URL列表的有效性"""
361+
validUrls = []
362+
for url in urls:
363+
if self.__checkUrl(url):
364+
validUrls.append(url)
365+
else:
366+
logger.debug(f"Invalid url: {url}")
367+
return validUrls
368+
369+
def __onUrlCheckCompleted(self, results):
370+
try:
371+
if not results:
372+
return
373+
374+
resultsText = '\n'.join(results)
375+
logger.debug(f"Clipboard changed: {resultsText}")
376+
bringWindowToTop(self)
377+
self.__setUrlsAndShowAddTaskMsg(resultsText)
378+
except Exception as e:
379+
logger.warning(f"Failed to process checked URLs: {e}")
380+
358381
def __clipboardChanged(self):
359382
try:
360383
mime = self.clipboard.mimeData()
@@ -368,22 +391,8 @@ def __clipboardChanged(self):
368391
else:
369392
return
370393

371-
results = []
372-
373-
for url in urls:
374-
if self.__checkUrl(url):
375-
results.append(url)
376-
else:
377-
logger.debug(f"Invalid url: {url}")
378-
379-
if not results:
380-
return
381-
382-
results = '\n'.join(results)
383-
384-
logger.debug(f"Clipboard changed: {results}")
385-
bringWindowToTop(self)
386-
self.__setUrlsAndShowAddTaskMsg(results)
394+
future = TaskExecutor.run(self.__checkUrlsAsync, urls)
395+
future.result.connect(self.__onUrlCheckCompleted)
387396
except Exception as e:
388397
logger.warning(f"Failed to check clipboard: {e}")
389398

0 commit comments

Comments
 (0)