1919from ..common .methods import getLinkInfo , bringWindowToTop , addDownloadTask , showMessageBox , \
2020 isGreaterEqualWin10 , isLessThanWin10 , isGreaterEqualWin11
2121from ..common .signal_bus import signalBus
22+ from ..common .concurrent .TaskExecutor import TaskExecutor
2223from ..components .add_task_dialog import AddTaskOptionDialog
2324from ..components .custom_tray import CustomSystemTrayIcon
2425from ..components .update_dialog import checkUpdate
2526
2627
2728def 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