玖玖资源站亚洲av_日本乱偷中文字幕一二三区_久久这里只有精品98_亚洲特级黄片视频_男女很舒服爽视频免费_国产一二三四2021精字窝_国产高潮白浆一区_自拍日本高清三级_秘书高跟黑色丝袜国产在线_亚洲A v永久无码精品网站色欲

NEWS

新聞

了解優(yōu)麒麟最新資訊,關(guān)注社區(qū)和產(chǎn)品動態(tài)。

NEWS

Learn about the latest news.

【麒麟在線講堂】Peony文件操作介紹

2021-06-24 17:05:26

01 概述

本文主要介紹Peony文件管理器中的文件操作流程,及其相關(guān)的類之間的關(guān)系。

02 文件操作的框架

優(yōu)麒麟

圖1 文件操作框架圖

文件操作類之間的關(guān)系如圖1所示:

  • FileOperationUtils類對文件操作進(jìn)行封裝,對外提供文件操作的接口,并通過FileOperationManager完成對文件的操作。

  • FileOperationManager是文件操作的管理類,負(fù)責(zé)文件操作的執(zhí)行、進(jìn)度更新、錯誤彈窗提示及其其他的一些操作。

  • FileOperation是具體的文件的操作,包括:創(chuàng)建、刪除、創(chuàng)建link、刪除到回收站、還原等。

  • progressBar進(jìn)度條提示文件操作的進(jìn)度。

  • errordialog錯誤提示窗口,當(dāng)存在沖突或錯誤的時候,彈出對應(yīng)的提示窗口。

  • other是FileOperationManager其他的一些輔助功能。

2.1 文件操作封裝類

類FileOperationUtils對文件/文件夾的基本操作做了封裝,對外提供文件/文件夾操作的接口。這些接口包括:文件/文件夾的創(chuàng)建、刪除到回收站、永久刪除、回收站的還原、創(chuàng)建link和重命名等。

在菜單或者是快捷鍵操作時就會調(diào)用該接口,比如右鍵菜單中的刪除、創(chuàng)建等。

類FileOperateUtils中的具體操作是通過FileOperationManager類具體執(zhí)行的。

2.2 文件操作管理

文件操作包括:永久刪除、刪除到回收站、還原、清空回收站、復(fù)制、移動、創(chuàng)建和重命名等。

  • CreateTemplateOperation類實現(xiàn)空文件/空文件夾、模板文件的創(chuàng)建功能。

  • FileCopyOperation類實現(xiàn)文件/文件夾的復(fù)制操作。

  • FileDeleteOperation類實現(xiàn)文件的永久刪除和清空回收站的功能。

  • FileLinkOperation類創(chuàng)建link操作。

  • FileMoveOperation文件/文件夾的移動操作。

  • FileRenameOperation完成文件/文件夾的重命名,即改變文件或者文件夾的名字。

  • FileTrashOperation將文件/文件夾刪除到回收站。

  • FileUntrashOperation將文件/文件夾從回收站還原到原來的位置。

上述的文件操作都是由FileOperationManager類進(jìn)行管理,其主要功能:文件操作執(zhí)行、進(jìn)度條更新和錯誤提示。

文件操作包括執(zhí)行、撤銷與恢復(fù),文件的具體操作既可以多線程執(zhí)行,也可以單線程執(zhí)行,執(zhí)行文件的操作是否為單線程是可以設(shè)置的,如果是單線程執(zhí)行,將會影響文件的并發(fā)操作。

文件操作進(jìn)度更新,文件操作的類將操作進(jìn)度通過信號發(fā)送給 FileOperationManager,然后轉(zhuǎn)發(fā)給進(jìn)度條,更新進(jìn)度。

錯誤提示,當(dāng)文件操作出現(xiàn)錯誤的時候,通過發(fā)送信號(errored)將錯誤信息傳遞給FileOperationManager,然后彈出提示對話框。

文件操作的執(zhí)行、撤銷和恢復(fù)是通過菜單或者快捷鍵進(jìn)行的,比如ctrl+z觸發(fā)撤銷操作,ctrl+y恢復(fù)撤銷的操作。

2.3 文件操作進(jìn)度條

文件操作的進(jìn)度條如圖2所示,它是由主進(jìn)度條、下拉按鈕和下拉進(jìn)度條組成的。

優(yōu)麒麟

圖2 進(jìn)度條

進(jìn)度條涉及的主要類:

  • MainProgressBar類對應(yīng)圖2中主進(jìn)度條。

  • OtherButton類對應(yīng)圖2中的下拉按鈕。

  • ProgressBar對應(yīng)圖2中的下拉進(jìn)度條,目前程序限制最多可以顯示2個下拉進(jìn)度條。

  • FileOperationProgressBar負(fù)責(zé)進(jìn)度條的管理,主要是進(jìn)度條的布局,主進(jìn)度條進(jìn)度的更新,以及主進(jìn)度條的切換等。

進(jìn)度信息的傳遞流程如圖3所示,以文件拷貝為例:

拷貝文件的gio函數(shù)g_file_copy通過回調(diào)函數(shù)發(fā)送出信號FileProgressCallback給FileOperationManager,然后觸發(fā)progressbar的槽函數(shù)updateProgress,更新對應(yīng)progressBar的進(jìn)度,同時向FileOperationProgressBar發(fā)送信號sendValue,觸發(fā)MainProgressBar的槽函數(shù)updateValue,更新主進(jìn)度條的進(jìn)度,如果現(xiàn)在主進(jìn)度條顯示的是該 progressBar 的進(jìn)度的話。 

優(yōu)麒麟

圖3 進(jìn)度信息傳遞流程

2.4 文件操作提示窗口

當(dāng)文件/文件夾操作出現(xiàn)錯誤的時候,會彈出圖4所示窗口。提示操作遇到的錯誤信息,對應(yīng)的類FileOperationErrorDialogWarning。

優(yōu)麒麟

圖4 操作錯誤

當(dāng)操作出現(xiàn)沖突的時候,會彈出如圖5所示的窗口。該窗口會提供取消、忽略、覆蓋、備份等選擇。對應(yīng)的類FileOperationErrorDialogConflict。

優(yōu)麒麟

圖5 操作沖突

沖突備份時,默認(rèn)的備份方式是在文件/文件夾名字的后面添加數(shù)字,如果不想用這種方式可以自己重命名。重命名的窗口如圖6所示,對應(yīng)的類FileRenameDialog。

優(yōu)麒麟

圖6 重命名

下面以copy操作出現(xiàn)沖突為例說明窗口的彈出(信號的發(fā)送)流程,如圖7所示:

優(yōu)麒麟

圖7 窗口彈出信號發(fā)送流程

當(dāng)存在文件沖突時,類FileCopyOperation會發(fā)出errored信號,F(xiàn)ileOperationManager類接收到errored信號時,會根據(jù)錯誤類型彈出沖突的窗口,并且阻塞操作流程,等待用戶做出選擇,并將選擇的結(jié)果傳遞給FileCopyOperation類。

之所以彈出的窗口會阻塞操作流程,是因為FileOperationManager注冊的槽函數(shù)具有BlockingQueuedConnection屬性。

2.5 其它

當(dāng)文件操作完成時,F(xiàn)ileOperationManager會通過FIleWatch向view/model發(fā)出目錄更新的信號,即能夠彌補(bǔ)FileWatch無法監(jiān)測到變化事件。