From 5f08aa4fe60fb95506cd8f83c85b48be66aaf1c4 Mon Sep 17 00:00:00 2001 From: Zhang Sheng Date: Mon, 27 Feb 2023 10:01:10 +0800 Subject: [PATCH] refactor: [io] remove redundant code 1. Remove factory classes 2. Remove `DLocal*` classes Log: refactor dfm-io Task: https://pms.uniontech.com/task-view-247375.html Change-Id: Ic52137fef0d8b8a23046ab846916aa986879f3ce --- docs/inner/code-style.md | 819 ---------- include/dfm-io/dfm-io/denumerator.h | 125 ++ include/dfm-io/dfm-io/dfile.h | 145 ++ .../dfm-io/dfm-io}/dfilefuture.h | 8 +- .../dfm-io/dfm-io}/dfileinfo.h | 111 +- .../dfm-io/dfm-io}/dfmio_global.h | 7 +- .../dfm-io/dfm-io}/dfmio_utils.h | 2 +- include/dfm-io/dfm-io/doperator.h | 74 + include/dfm-io/dfm-io/dwatcher.h | 61 + .../dfm-io/dfm-io}/error/en.h | 0 .../dfm-io/dfm-io}/error/error.h | 0 misc/dfm-io/dfm-io.pc.in | 7 + misc/dfm-io/dfm-ioConfig.cmake.in | 3 + po/.gitkeep | 0 src/dfm-io/dfm-io/CMakeLists.txt | 121 +- .../dlocalenumerator.cpp => denumerator.cpp} | 722 ++++----- .../{src/local/dlocalfile.cpp => dfile.cpp} | 1370 ++++++++--------- .../dfm-io/{src/core => }/dfilefuture.cpp | 9 +- .../dlocalfileinfo.cpp => dfileinfo.cpp} | 1000 ++++++------ src/dfm-io/dfm-io/dfm-io.pc.in | 12 - src/dfm-io/dfm-io/{src => }/dfmio_utils.cpp | 5 +- src/dfm-io/dfm-io/doperator.cpp | 519 +++++++ .../local/dlocalwatcher.cpp => dwatcher.cpp} | 270 ++-- src/dfm-io/dfm-io/include/core/denumerator.h | 168 -- src/dfm-io/dfm-io/include/core/dfile.h | 233 --- src/dfm-io/dfm-io/include/core/diofactory.h | 72 - src/dfm-io/dfm-io/include/core/doperator.h | 130 -- src/dfm-io/dfm-io/include/core/dwatcher.h | 76 - src/dfm-io/dfm-io/include/dfmio_register.h | 98 -- .../dfm-io/include/factory/dafciofactory.h | 34 - .../include/factory/dafpbrowseiofactory.h | 34 - .../dfm-io/include/factory/dafpiofactory.h | 34 - .../include/factory/darchiveiofactory.h | 34 - .../dfm-io/include/factory/dburniofactory.h | 34 - .../dfm-io/include/factory/dcddaiofactory.h | 34 - .../include/factory/dcomputeriofactory.h | 34 - .../dfm-io/include/factory/ddaviofactory.h | 34 - .../dfm-io/include/factory/dddaviofactory.h | 34 - .../dfm-io/include/factory/ddnssdiofactory.h | 34 - .../dfm-io/include/factory/dftpiofactory.h | 34 - .../dfm-io/include/factory/dgoogleiofactory.h | 34 - .../include/factory/dgphoto2iofactory.h | 34 - .../dfm-io/include/factory/dhttpiofactory.h | 34 - .../dfm-io/include/factory/dlocaliofactory.h | 37 - .../dfm-io/include/factory/dmtpiofactory.h | 34 - .../include/factory/dnetworkiofactory.h | 34 - .../dfm-io/include/factory/dnfsiofactory.h | 34 - .../dfm-io/include/factory/drecentiofactory.h | 34 - .../dfm-io/include/factory/dsftpiofactory.h | 34 - .../include/factory/dsmbbrowseiofactory.h | 34 - .../dfm-io/include/factory/dsmbiofactory.h | 34 - .../dfm-io/include/factory/dtrashiofactory.h | 34 - .../dfm-io/include/local/dlocalenumerator.h | 41 - src/dfm-io/dfm-io/include/local/dlocalfile.h | 72 - .../dfm-io/include/local/dlocalfileinfo.h | 54 - .../dfm-io/include/local/dlocaloperator.h | 61 - .../dfm-io/include/local/dlocalwatcher.h | 38 - .../dfm-io/private/core/denumerator_p.h | 50 - src/dfm-io/dfm-io/private/core/dfile_p.h | 71 - src/dfm-io/dfm-io/private/core/dfileinfo_p.h | 81 - src/dfm-io/dfm-io/private/core/diofactory_p.h | 51 - src/dfm-io/dfm-io/private/core/doperator_p.h | 52 - src/dfm-io/dfm-io/private/core/dwatcher_p.h | 41 - src/dfm-io/dfm-io/private/denumerator_p.h | 76 + src/dfm-io/dfm-io/private/dfile_p.h | 105 ++ .../dfm-io/private/{core => }/dfilefuture_p.h | 6 +- src/dfm-io/dfm-io/private/dfileinfo_p.h | 90 ++ src/dfm-io/dfm-io/private/doperator_p.h | 45 + src/dfm-io/dfm-io/private/dwatcher_p.h | 73 + .../dfm-io/private/factory/dafciofactory_p.h | 41 - .../private/factory/dafpbrowseiofactory_p.h | 41 - .../dfm-io/private/factory/dafpiofactory_p.h | 41 - .../private/factory/darchiveiofactory_p.h | 41 - .../dfm-io/private/factory/dburniofactory_p.h | 41 - .../dfm-io/private/factory/dcddaiofactory_p.h | 41 - .../private/factory/dcomputeriofactory_p.h | 41 - .../dfm-io/private/factory/ddaviofactory_p.h | 41 - .../dfm-io/private/factory/dddaviofactory_p.h | 41 - .../private/factory/ddnssdiofactory_p.h | 41 - .../dfm-io/private/factory/dftpiofactory_p.h | 41 - .../private/factory/dgoogleiofactory_p.h | 41 - .../private/factory/dgphoto2iofactory_p.h | 41 - .../dfm-io/private/factory/dhttpiofactory_p.h | 41 - .../private/factory/dlocaliofactory_p.h | 42 - .../dfm-io/private/factory/dmtpiofactory_p.h | 41 - .../private/factory/dnetworkiofactory_p.h | 41 - .../dfm-io/private/factory/dnfsiofactory_p.h | 41 - .../private/factory/drecentiofactory_p.h | 41 - .../dfm-io/private/factory/dsftpiofactory_p.h | 41 - .../private/factory/dsmbbrowseiofactory_p.h | 41 - .../dfm-io/private/factory/dsmbiofactory_p.h | 41 - .../private/factory/dtrashiofactory_p.h | 41 - .../dfm-io/private/local/dlocalenumerator_p.h | 104 -- .../dfm-io/private/local/dlocalfile_p.h | 146 -- .../dfm-io/private/local/dlocalfileinfo_p.h | 91 -- .../dfm-io/private/local/dlocaloperator_p.h | 78 - .../dfm-io/private/local/dlocalwatcher_p.h | 80 - src/dfm-io/dfm-io/src/core/denumerator.cpp | 195 --- src/dfm-io/dfm-io/src/core/dfile.cpp | 514 ------- src/dfm-io/dfm-io/src/core/dfileinfo.cpp | 511 ------ src/dfm-io/dfm-io/src/core/diofactory.cpp | 118 -- src/dfm-io/dfm-io/src/core/doperator.cpp | 318 ---- src/dfm-io/dfm-io/src/core/dwatcher.cpp | 122 -- src/dfm-io/dfm-io/src/dfmio_register.cpp | 104 -- .../dfm-io/src/factory/dafciofactory.cpp | 98 -- .../src/factory/dafpbrowseiofactory.cpp | 98 -- .../dfm-io/src/factory/dafpiofactory.cpp | 98 -- .../dfm-io/src/factory/darchiveiofactory.cpp | 98 -- .../dfm-io/src/factory/dburniofactory.cpp | 98 -- .../dfm-io/src/factory/dcddaiofactory.cpp | 98 -- .../dfm-io/src/factory/dcomputeriofactory.cpp | 98 -- .../dfm-io/src/factory/ddaviofactory.cpp | 98 -- .../dfm-io/src/factory/dddaviofactory.cpp | 98 -- .../dfm-io/src/factory/ddnssdiofactory.cpp | 98 -- .../dfm-io/src/factory/dftpiofactory.cpp | 98 -- .../dfm-io/src/factory/dgoogleiofactory.cpp | 98 -- .../dfm-io/src/factory/dgphoto2iofactory.cpp | 98 -- .../dfm-io/src/factory/dhttpiofactory.cpp | 98 -- .../dfm-io/src/factory/dlocaliofactory.cpp | 100 -- .../dfm-io/src/factory/dmtpiofactory.cpp | 98 -- .../dfm-io/src/factory/dnetworkiofactory.cpp | 98 -- .../dfm-io/src/factory/dnfsiofactory.cpp | 98 -- .../dfm-io/src/factory/drecentiofactory.cpp | 98 -- .../dfm-io/src/factory/dsftpiofactory.cpp | 98 -- .../src/factory/dsmbbrowseiofactory.cpp | 98 -- .../dfm-io/src/factory/dsmbiofactory.cpp | 98 -- .../dfm-io/src/factory/dtrashiofactory.cpp | 98 -- .../dfm-io/src/local/dlocaloperator.cpp | 649 -------- .../{src/local => utils}/dlocalhelper.cpp | 134 +- .../{include/local => utils}/dlocalhelper.h | 11 +- src/dfm-io/dfm-io/utils/dmediainfo.cpp | 4 +- src/dfm-io/dfm-io/utils/dmediainfo.h | 4 +- src/dfm-io/dfm-io/utils/trashfilehelper.h | 6 +- src/dfm-io/tools/CMakeLists.txt | 57 +- src/dfm-io/tools/dfm-cat.cpp | 31 +- src/dfm-io/tools/dfm-copy-gio.cpp | 11 +- src/dfm-io/tools/dfm-copy-system.cpp | 11 - src/dfm-io/tools/dfm-copy.cpp | 31 +- src/dfm-io/tools/dfm-copy3.cpp | 18 +- src/dfm-io/tools/dfm-delete.cpp | 21 +- src/dfm-io/tools/dfm-info.cpp | 19 +- src/dfm-io/tools/dfm-link.cpp | 20 +- src/dfm-io/tools/dfm-list.cpp | 23 +- src/dfm-io/tools/dfm-mkdir.cpp | 19 +- src/dfm-io/tools/dfm-move.cpp | 28 +- src/dfm-io/tools/dfm-rename.cpp | 18 +- src/dfm-io/tools/dfm-restore.cpp | 19 +- src/dfm-io/tools/dfm-save.cpp | 24 +- src/dfm-io/tools/dfm-sort-list.cpp | 29 +- src/dfm-io/tools/dfm-touch.cpp | 21 +- src/dfm-io/tools/dfm-trash.cpp | 19 +- src/dfm-io/tools/dfm-watcher.cpp | 19 +- 152 files changed, 3259 insertions(+), 11527 deletions(-) delete mode 100644 docs/inner/code-style.md create mode 100644 include/dfm-io/dfm-io/denumerator.h create mode 100644 include/dfm-io/dfm-io/dfile.h rename {src/dfm-io/dfm-io/include/core => include/dfm-io/dfm-io}/dfilefuture.h (92%) rename {src/dfm-io/dfm-io/include/core => include/dfm-io/dfm-io}/dfileinfo.h (58%) rename {src/dfm-io/dfm-io/include => include/dfm-io/dfm-io}/dfmio_global.h (67%) rename {src/dfm-io/dfm-io/include => include/dfm-io/dfm-io}/dfmio_utils.h (97%) create mode 100644 include/dfm-io/dfm-io/doperator.h create mode 100644 include/dfm-io/dfm-io/dwatcher.h rename {src/dfm-io/dfm-io/include => include/dfm-io/dfm-io}/error/en.h (100%) rename {src/dfm-io/dfm-io/include => include/dfm-io/dfm-io}/error/error.h (100%) create mode 100644 misc/dfm-io/dfm-io.pc.in create mode 100644 misc/dfm-io/dfm-ioConfig.cmake.in delete mode 100644 po/.gitkeep rename src/dfm-io/dfm-io/{src/local/dlocalenumerator.cpp => denumerator.cpp} (51%) rename src/dfm-io/dfm-io/{src/local/dlocalfile.cpp => dfile.cpp} (58%) rename src/dfm-io/dfm-io/{src/core => }/dfilefuture.cpp (84%) rename src/dfm-io/dfm-io/{src/local/dlocalfileinfo.cpp => dfileinfo.cpp} (60%) delete mode 100644 src/dfm-io/dfm-io/dfm-io.pc.in rename src/dfm-io/dfm-io/{src => }/dfmio_utils.cpp (98%) create mode 100644 src/dfm-io/dfm-io/doperator.cpp rename src/dfm-io/dfm-io/{src/local/dlocalwatcher.cpp => dwatcher.cpp} (74%) delete mode 100644 src/dfm-io/dfm-io/include/core/denumerator.h delete mode 100644 src/dfm-io/dfm-io/include/core/dfile.h delete mode 100644 src/dfm-io/dfm-io/include/core/diofactory.h delete mode 100644 src/dfm-io/dfm-io/include/core/doperator.h delete mode 100644 src/dfm-io/dfm-io/include/core/dwatcher.h delete mode 100644 src/dfm-io/dfm-io/include/dfmio_register.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dafciofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dafpbrowseiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dafpiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/darchiveiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dburniofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dcddaiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dcomputeriofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/ddaviofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dddaviofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/ddnssdiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dftpiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dgoogleiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dgphoto2iofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dhttpiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dlocaliofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dmtpiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dnetworkiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dnfsiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/drecentiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dsftpiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dsmbbrowseiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dsmbiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/factory/dtrashiofactory.h delete mode 100644 src/dfm-io/dfm-io/include/local/dlocalenumerator.h delete mode 100644 src/dfm-io/dfm-io/include/local/dlocalfile.h delete mode 100644 src/dfm-io/dfm-io/include/local/dlocalfileinfo.h delete mode 100644 src/dfm-io/dfm-io/include/local/dlocaloperator.h delete mode 100644 src/dfm-io/dfm-io/include/local/dlocalwatcher.h delete mode 100644 src/dfm-io/dfm-io/private/core/denumerator_p.h delete mode 100644 src/dfm-io/dfm-io/private/core/dfile_p.h delete mode 100644 src/dfm-io/dfm-io/private/core/dfileinfo_p.h delete mode 100644 src/dfm-io/dfm-io/private/core/diofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/core/doperator_p.h delete mode 100644 src/dfm-io/dfm-io/private/core/dwatcher_p.h create mode 100644 src/dfm-io/dfm-io/private/denumerator_p.h create mode 100644 src/dfm-io/dfm-io/private/dfile_p.h rename src/dfm-io/dfm-io/private/{core => }/dfilefuture_p.h (77%) create mode 100644 src/dfm-io/dfm-io/private/dfileinfo_p.h create mode 100644 src/dfm-io/dfm-io/private/doperator_p.h create mode 100644 src/dfm-io/dfm-io/private/dwatcher_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dafciofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dafpbrowseiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dafpiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/darchiveiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dburniofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dcddaiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dcomputeriofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/ddaviofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dddaviofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/ddnssdiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dftpiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dgoogleiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dgphoto2iofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dhttpiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dlocaliofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dmtpiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dnetworkiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dnfsiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/drecentiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dsftpiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dsmbbrowseiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dsmbiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/factory/dtrashiofactory_p.h delete mode 100644 src/dfm-io/dfm-io/private/local/dlocalenumerator_p.h delete mode 100644 src/dfm-io/dfm-io/private/local/dlocalfile_p.h delete mode 100644 src/dfm-io/dfm-io/private/local/dlocalfileinfo_p.h delete mode 100644 src/dfm-io/dfm-io/private/local/dlocaloperator_p.h delete mode 100644 src/dfm-io/dfm-io/private/local/dlocalwatcher_p.h delete mode 100644 src/dfm-io/dfm-io/src/core/denumerator.cpp delete mode 100644 src/dfm-io/dfm-io/src/core/dfile.cpp delete mode 100644 src/dfm-io/dfm-io/src/core/dfileinfo.cpp delete mode 100644 src/dfm-io/dfm-io/src/core/diofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/core/doperator.cpp delete mode 100644 src/dfm-io/dfm-io/src/core/dwatcher.cpp delete mode 100644 src/dfm-io/dfm-io/src/dfmio_register.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dafciofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dafpbrowseiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dafpiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/darchiveiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dburniofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dcddaiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dcomputeriofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/ddaviofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dddaviofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/ddnssdiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dftpiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dgoogleiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dgphoto2iofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dhttpiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dlocaliofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dmtpiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dnetworkiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dnfsiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/drecentiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dsftpiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dsmbbrowseiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dsmbiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/factory/dtrashiofactory.cpp delete mode 100644 src/dfm-io/dfm-io/src/local/dlocaloperator.cpp rename src/dfm-io/dfm-io/{src/local => utils}/dlocalhelper.cpp (64%) rename src/dfm-io/dfm-io/{include/local => utils}/dlocalhelper.h (89%) diff --git a/docs/inner/code-style.md b/docs/inner/code-style.md deleted file mode 100644 index 5d3fb28..0000000 --- a/docs/inner/code-style.md +++ /dev/null @@ -1,819 +0,0 @@ -# util-dfm 编码规范(试行) - -## 基本原则 - -- C++ 类设计的代码风格主要依据 [Qt Coding Style](https://wiki.qt.io/Qt_Coding_Style) -- 以 [google C++ style](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/) 作为补充说明 - -## 头文件 - -### #define 保护 - -- 所有头文件都应该使用 `#define` 来防止头文件被多重包含,命名格式为 `PREFIX_H` - - ```c++ - // opticaldisc.h - #ifndef OPTICALDISCINFO_H - #define OPTICALDISCINFO_H - - // ... - - #endif // OPTICALDISCINFO_H - ``` - -### 内联函数 - -- 只有当函数只有 10 行甚至更少时才将其定义为内联函数. - -### `#include` 的路径及顺序 - -- 项目内头文件应按照项目源代码目录树结构排列, 避免使用 UNIX 特殊的快捷目录 `.` (当前目录) 或 `..` (上级目录) - - ```C++ - /* - * 目录树 - * --- project - * --- base - * --- logging.h - * --- util - * --- util.h - */ - - /// util.h 头文件 - // 坏 -> 包含了快捷目录 - #include "../base/logging.h" - - // 好 -> 使用源码目录树 - #include "base/logging.h" - ``` - -- 一个 cpp 文件中,引入头文件的顺序如下 - - ​ 区分划分示例: - ​ // 区域1:项目自身文件 - ​ #include "xxx.h" - ​ // 区域2:DTK库文件 - ​ #include - ​ // 区域3:Qt库文件 - ​ #include - ​ // 区域4:其它库文件 - ​ #include - ​ // 区域5:CPP标准库文件 - ​ #include - ​ // 区域6:Linux系统库文件 - ​ #include - - - - 总结就是 **include 中越上层的代码越靠上,越偏底层的头文件越往下放** - -- 按字母顺序分别对每种类型的头文件进行二次排序 - -- 例外:有时,平台特定(system-specific)代码需要条件编译(conditional includes),这些代码可以放到其它 includes 之后 - - ```c++ - #include "foo/public/fooserver.h" - - #include "base/port.h" // For LANG_CXX11. - - #ifdef LANG_CXX11 - #include - #endif // LANG_CXX11 - ``` - -## 作用域 - -### 命名空间 - -- 每个类必须有命名空间,在统一的头文件中使用宏封装命名空间,在代码中使用宏来使用命名空间 - - ```c++ - // dfm-burn.h - // namespace - #define BEGIN_BURN_NAMESPACE namespace dfm_burn { - #define END_BURN_NAMESPACE } - #define USING_BURN_NAMESPACE using namespace dfm_burn; - ``` - -- 代码中可以根据业务需求自定义命名空间,但要注意 - - - 小写 - - 没有缩进 - - 最后大括号使用命名空间名称注释 - - ```c++ - // 在 .h 中使用别名缩短常用的命名空间 - namespace librarian { - namespace impl { // 仅限内部使用 - namespace sidetable = ::pipeline_diagnostics::sidetable; - } // namespace impl - - inline void my_inline_function() { - // 限制在一个函数中的命名空间别名 - namespace baz = ::foo::bar::baz; - ... - } - } // namespace librarian - ``` - -### 匿名命名空间和静态变量 - -- 在 `.cpp` 文件中定义一个不需要被外部引用的变量时,可以将它们放在匿名命名空间或声明为 `static` , 但是不要在 `.h` 文件中这么做 - - ```c++ - // *.cpp - // 定义一个不需要被外部引用的变量, 有两种方式: - - // [1] static 声明 - static const char *const kStr = "string"; - - // [2] 匿名命名空间 - namespace { - const char *const kStr = "string"; - } // namespace - - ``` - -### 非成员函数、静态成员函数和全局函数 - -- 使用静态成员函数或命名空间内的非成员函数, 尽量不要用裸的全局函数 - -- 一系列函数直接置于命名空间中,不要用类的静态方法模拟出命名空间的效果,**类的静态方法应当和类的实例或静态数据紧密相关** - - ```c++ - // 好 -> 函数的定义同类的实例脱钩 - // 函数可以被定义成静态成员, 或是非成员函数. 非成员函数不应依赖于外部变量 - namespace myproject { - namespace foo_bar { - void Function1(); - void Function2(); - } // namespace foo_bar - } // namespace myproject - - // 坏 -> 单纯为了封装若干不共享任何静态数据的静态成员函数而创建类 - namespace myproject { - class FooBar { - public: - static void Function1(); - static void Function2(); - }; - } // namespace myproject - ``` - -### 局部变量 - -- 将函数变量尽可能置于最小作用域内, 并在变量声明时进行初始化. - - ```c++ - int i; - i = f(); // 坏 -> 初始化和声明分离 - - int j = g(); // 好 -> 初始化时声明 - - vector v; - v.push_back(1); // 坏 -> 用花括号初始化更好 - v.push_back(2); - - vector v = {1, 2}; // 好 -> v 一开始就初始化 - ``` - -- 属于 `if`, `while` 和 `for` 语句的变量应当在这些语句中正常地声明,这样子这些变量的作用域就被限制在这些语句中了 - - ```c++ - while (const char* p = strchr(str, '/')) str = p + 1; - ``` - -- 例外:如果变量是一个对象, 每次进入作用域都要调用其构造函数, 每次退出作用域都要调用其析构函数. 这会导致效率降低 - - ```c++ - // 坏 -> 低效的实现 - for (int i = 0; i < 1000000; ++i) { - Foo f; // 构造函数和析构函数分别调用 1000000 次! - f.DoSomething(i); - } - - // 好 -> 构造函数和析构函数只调用 1 次 - Foo f; - for (int i = 0; i < 1000000; ++i) { - f.DoSomething(i); - } - ``` - -### 静态和全局变量 - -- 禁止使用类的**静态储存周期变量**:由于构造和析构函数调用顺序的不确定性,它们会导致难以发现的 bug 。不过 `constexpr` 变量除外,毕竟它们又不涉及动态初始化或析构 - - > 静态生存周期的对象,即包括了全局变量,静态变量,静态类成员变量和函数静态变量,都必须是原生数据类型 (POD : Plain Old Data): 即 int, char 和 float, 以及 POD 类型的指针、数组和结构体 - -## 类 - -### 构造函数的职责 - -- 不要在构造函数中调用虚函数 -- 不要在无法报出错误时进行可能失败的初始化, 否则, 考虑用 `init()` 方法或工厂函数 - -### 结构体 & 类 - -- 仅当只有数据成员时使用 `struct`, 其它一概使用 `class` - -### 使用私有类 - -- 私有类能良好的保证 ABI,请参考 Qt 私有类的实现方式 - -## 函数 - -### 参数顺序 - -- 数的参数顺序为: 输入参数在先, 后跟输出参数 - -- 输入参数通常是值参或 `const` 引用, 输出参数或输入/输出参数则一般为非 `const` 指针 - - ```c++ - void func(int a, const Type &b. Type *out); - ``` - -### 引用参数 - -- 所有按左值引用传递的参数必须加上 `const` - - ```c++ - void foo(const string &in, string *out); - ``` - -## 命名 - -### 通用规则 - -- 函数命名, 变量命名, 文件命名要有描述性; 少用缩写 - - ```c++ - // 尽可能使用描述性的命名, 别心疼空间, 毕竟相比之下让代码易于新读者理解更重要. - // 不要用只有项目开发者能理解的缩写, 也不要通过砍掉几个字母来缩写单词 - - // 好 - int priceCountReader; // 无缩写 - int numErrors; // "num" 是一个常见的写法 - int numDnsConnections; // 人人都知道 "DNS" 是什么 - - // 坏 - int n; // 毫无意义. - int nerr; // 含糊不清的缩写. - int nCompConns; // 含糊不清的缩写. - int wgcConnections; // 只有贵团队知道是什么意思. - int pcReader; // "pc" 有太多可能的解释了. - int cstmID; // 删减了若干字母. - ``` - -- 一些特定的广为人知的缩写是允许的, 例如用 `i` 表示迭代变量和用 `T` 表示模板参数 - -### 文件命名 - -- 文件名要全部小写, 可以包含下划线 (`_`) - - `myusefulclass.cpp` - - `my-useful_class.cpp` -- 普通类头文件后缀为 `.h` -- 所有功能内联实现的头文件后缀为 `.hpp` -- c++ 文件后缀为 `.cpp` -- 单元测试文件前缀为 `ut_` - -### 类型命名 - -- 大驼峰命名:类型名称的每个单词首字母均大写, 不包含下划线 - - ```c++ - // 类和结构体 - class UrlTable { ... - class UrlTableTester { ... - struct UrlTableProperties { ... - - // 类型定义 - typedef hash_map PropertiesMap; - - // using 别名 - using PropertiesMap = hash_map; - - // 枚举 - enum UrlTableErrors { ... - ``` - -- 抽象类使用 `Absract` 为前缀命名 - -### 变量命名 - -- 小驼峰命名:变量 (包括函数参数) 和数据成员名一律小写, 不包含下划线(d_ptr除外) - - ```c++ - string tableName; - - class TableInfo { - ... - private: - string tableName; // 不要使用 m_ 前缀 - }; - ``` - -### 常量命名 - -- 声明为 `constexpr` 或 `const` 的变量, 或在程序运行期间其值始终保持不变的, 大小写混合 - - ```C++ - const int DaysInAWeek = 7; - ``` - -### 函数命名 - -- 小驼峰命名 - - ```c++ - addTableEntry(); - deleteUrl(); - openFileOrDie(); - ``` - -### 枚举命名 - -- 枚举的命名应当和 [常量](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/#constant-names) 或 [宏](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/#macro-names) 一致: `EnumName` 或是 `ENUM_NAME` - -- 单独的枚举值应该优先采用 [常量](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/#constant-names) 的命名方式命名 - - ```c++ - enum UrlTableErrors { - OK = 0, - ErrorOutOfMemory, - ErrorMalformedInput, - }; - ``` - -### 宏命名 - -- 尽量不使用宏,如果你一定要用,像这样命名: `MY_MACRO_THAT_SCARES_SMALL_CHILDREN` - -## 注释 - -### 文件头 - -- 每个代码文件的开头请加上开源协议头(将 xx 改为自己的昵称) - - ```c++ - /* - * Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd. - * - * Author: xx - * - * Maintainer: xx - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - ``` - -- 如果你使用的是 QtCreator,将 License 保存为文件,在“工具 -> 选项 ->C++“中的 License_template 进行添加 - -### 类注释 - -- 类注释在类定义文件(cpp)中,位于它的第一个成员函数之前 - -- 每个类的定义都要附带一份注释, 描述类的功能和用法, 除非它的功能相当明显(如私有类) - - ```C++ - #include - #include - #include - #include - #include - - DFM_USE_NAMESPACE - - ErrorHandleInfc::~ErrorHandleInfc() - { - } - - - /*! - * \class DAttachedUdisks2Device - * - * \brief An attached (mounted) block device (partition) - */ - - DAttachedUdisks2Device::DAttachedUdisks2Device(const DBlockDevice *blockDevicePointer) - { - QByteArrayList mountPoints = blockDevicePointer->mountPoints(); - mountPoint = mountPoints.isEmpty() ? "" : mountPoints.first(); - deviceDBusId = blockDevicePointer->path(); - c_blockDevice.reset(DDiskManager::createBlockDevice(deviceDBusId)); // not take the ownership of the passed pointer. - } - - ``` - - - -### 命名空间、枚举注释 - -- 命名空间要看名知意,如果需要注释说明,形式和类注释一样 - -- 命名空间要在最后的大括号收注释命名空间名称(匿名明明空间只需写 namespace) - -- 枚举注释的说明与类注释类似,如果枚举向不能见名知意,成员需要在行后加说明文字 - - ```C++ - /*! - * \brief ... - */ - namespace qt { - ... - } // namespace qt - - namespace { - ... - } // namespace - - /*! - * \brief ... - */ - enum AppItemRole AppItemRole { - 成员1, // 说明文字 - 成员2, // 说明文字 - 成员3, // 说明文字 - } - ``` - -### 函数注释 - -- 函数声明处的注**释描述函数功能**; 定义处的注释描述函数实现. - -- 基本上每个函数**定义处**前都应当加上注释, 描述函数的功能和用途. 只有在函数的功能简单而明显时才能省略这些注释(例如, 简单的取值和设值函数) - - ```c++ - /*! - * \brief Gets the identifier of the given kind for drive. - * - * Wrapper of Gio::Drive::get_identifier() - * - * The only identifier currently available is DGIODRIVE_IDENTIFIER_KIND_UNIX_DEVICE. - * - * \param kind the kind of identifier to return - * - * \return A string containing the requested identfier, or empty string if the drive doesn't have this kind of identifier. - */ - QString DGioDrive::identifier(const QString &kind) const - { - Q_D(const DGioDrive); - - return QString::fromStdString(d->getGmmDriveInstence()->get_identifier(kind.toStdString())); - } - ``` - -### 变量注释 - -- 通常变量名本身足以很好说明变量用途. 某些情况下, 也需要额外的注释说明. - - ```c++ - // 简要说明 - int failNum; - - // 需要详细说明的 - /*! - * /brief 成员变量variable要说明 - * - * 成员变量variable的详细说明,这里可以对变量进行 - * 详细的说明和描述,具体方法和函数的标注是一样的 - */ - bool variable; - ``` - -### 实现注释 - -- 代码前:对于代码中巧妙的, 晦涩的, 有趣的, 重要的地方加以注释 - - ```c++ - // Divide result by two, taking into account that x - // contains the carry from the add. - for (int i = 0; i < result->size(); i++) { - x = (x << 8) + (*result)[i]; - (*result)[i] = x >> 1; - x &= 1; - } - ``` - -- 行注释:比较隐晦的地方要在行尾加入注释. 在行尾空两格进行注释 - - ```c++ - // If we have enough memory, mmap the data portion too. - mmap_budget = max(0, mmap_budget - index_->length()); - if (mmap_budget >= data_size_ && !MmapData(mmap_chunk_bytes, mlock)) - return; // Error already logged. - ``` - -- 如果你需要连续进行多行注释, 可以使之对齐获得更好的可读 - - ```c++ - DoSomething(); // Comment here so the comments line up. - DoSomethingElseThatIsLonger(); // Two spaces between the code and the comment. - { // One space before comment when opening a new scope is allowed, - // thus the comment lines up with the following comments and code. - DoSomethingElse(); // Two spaces before line comments normally. - } - std::vector list{ - // Comments in braced lists describe the next element... - "First item", - // .. and should be aligned appropriately. - "Second item"}; - DoSomething(); /* For trailing block comments, one space is fine. */ - ``` - -### TODO 注释 - -- 对那些临时的, 短期的解决方案, 或已经够好但仍不完美的代码使用 `TODO` 注释. - -- `TODO` 注释要使用全大写的字符串 `TODO`, 在随后的圆括号里写上你的名字, 邮件地址, bug ID, 或其它身份标识和与这一 `TODO` 相关的 issue. - - ```C++ - // TODO(zhangsheng@uniontech.com): Use a "*" here for concatenation operator. - // TODO(zhangsheng) change this to use relations. - // TODO(bug-12345): remove the "Last visitors" feature - ``` - - - -## 格式 - -### 行长度 - -- 每一行代码字符数不超过 80 - -### 缩进 - -- 4个空格用于缩进 -- 空格,而不是制表符! - -### 声明变量 - -- 在单独的行中声明每个变量 - -- 避免使用简短或无意义的名称(例如“ a”,“ rbarr”,“ nughdeget”) - -- 单字符变量名称仅适用于计数器和临时变量,其中变量的用途显而易见 - -- 在声明变量之前等待,直到需要它为止 - - ```c++ - // 坏 - int a, b; - char *c, *d; - - // 好 - int height; - int width; - char *nameOfThis; - char *nameOfThat; - ``` - -### 空格 - -- 使用空行将语句组合在一起 - -- 始终只使用一个空白行 - -- 始终在关键字之后和花括号前使用一个空格 - - ```c++ - // 坏 - if(foo){ - } - - // 好 - if (foo) { - } - ``` - -- 对于指针或引用,请始终在类型和’*‘或’&‘之间使用单个空格,但在’*‘或’&'与变量名称之间请勿使用空格 - - ```c++ - char *x; - const QString &myString; - const char * const y = "hello"; - ``` - -- 在每个逗号后留一个空格 - -- 尽可能避免使用C型转换 - - ```c++ - // 坏 - char* blockOfMemory = (char* ) malloc(data.size()); - - // 好 - char *blockOfMemory = reinterpret_cast(malloc(data.size())); - ``` - -- 不要在一行上放置多个语句 - -- 通过扩展,对控制流语句的主体使用新行 - - ```c++ - // 坏 - if (foo) bar(); - - // 好 - if (foo) - bar(); - ``` - -### 大括号 - -- 使用附带的括号:开头的括号与语句的开头在同一行。如果右括号后面紧跟着另一个关键字,则它也会进入同一行 - - ```c++ - // 坏 - if (codec) - { - } - else - { - } - - // 好 - if (codec) { - } else { - } - ``` - -- 例外:函数实现(但不包括lambdas)和类声明始终在行首处使用左括号 - - ```c++ - static void foo(int g) - { - qDebug("foo: %i", g); - } - - class Moo - { - }; - ``` - -- 仅当条件语句的主体包含多行时才使用花括号 - - ```c++ - // 坏 - if (address.isEmpty()) { - return false; - } - - for (int i = 0; i < 10; ++i) { - qDebug("%i", i); - } - - // 好 - if (address.isEmpty()) - return false; - - for (int i = 0; i < 10; ++i) - qDebug("%i", i); - ``` - - - 例外1:如果父语句包含多行/自动换行,也请使用花括号 - - ```c++ - // 好 - if (address.isEmpty() || !isValid() - || !codec) { - return false; - } - ``` - - - 例外2:花括号对称:在if-then-else块中,如果if代码或else代码覆盖几行,也要使用花括号 - - ```c++ - // 坏 - if (address.isEmpty()) - qDebug("empty!"); - else { - qDebug("%s", qPrintable(address)); - it; - } - - // 好 - if (address.isEmpty()) { - qDebug("empty!"); - } else { - qDebug("%s", qPrintable(address)); - it; - } - - // 坏 - if (a) - … - else - if (b) - … - - // 好 - if (a) { - … - } else { - if (b) - … - } - ``` - -- 条件语句的主体为空时使用花括号 - - ```c++ - // 坏 - while (a); - - // 好 - while (a) {} - ``` - -### 小括号 - -- 使用小括号将表达式分组 - - ```c++ - // 坏 - if (a && b || c) - - // 好 - if ((a && b) || c) - - // 坏 - a + b & c - - // 好 - (a + b) & c - ``` - -### 切换语句(switch) - -- `case`标签与开关在同一列中 - -- 每个`case`的末尾都必须有一个`break`(或`return`)语句,或者Q_FALLTHROUGH()用来表明没有故意的中断,除非立即发生另一`case`。 - - ```c++ - switch (myEnum) { - case Value1: - doSomething(); - break; - case Value2: - case Value3: - doSomethingElse(); - Q_FALLTHROUGH(); - default: - defaultHandling(); - break; - } - ``` - -### 跳转语句(return、break、continue) - -- 不要在跳转语句后加上`else` - - ```c++ - // 坏 - if (thisOrThat) - return; - else - somethingElse(); - - // 好 - if (thisOrThat) - return; - somethingElse(); - ``` - -### Lambda 表达式 - -- Lambda 表达式对形参和函数体的格式化和其他函数一致; 捕获列表同理, 表项用逗号隔开 - -- lambda 尽量不要写太长 - - ```c++ - int x = 0; - auto add_to_x = [&x](int n) { x += n; }; - - std::set blacklist = {7, 8, 9}; - std::vector digits = {3, 9, 1, 8, 4, 7, 1}; - digits.erase(std::remove_if(digits.begin(), digits.end(), [&blacklist](int i) { - return blacklist.find(i) != blacklist.end(); - }), - digits.end()); - ``` - - - - - -## 其他 C++ 特性 - -均参考 [google C++ style-6](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/others/#id12) \ No newline at end of file diff --git a/include/dfm-io/dfm-io/denumerator.h b/include/dfm-io/dfm-io/denumerator.h new file mode 100644 index 0000000..075cd29 --- /dev/null +++ b/include/dfm-io/dfm-io/denumerator.h @@ -0,0 +1,125 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DENUMERATOR_H +#define DENUMERATOR_H + +#include +#include + +#include +#include + +#include + +BEGIN_IO_NAMESPACE + +class DEnumeratorPrivate; +class DFileInfo; + +class DEnumerator +{ +public: + enum class DirFilter : int16_t { + kNoFilter = -1, // no filter + kDirs = 0x001, // List directories that match the filters. + kFiles = 0x002, // List files. + kDrives = 0x004, // List disk drives (ignored under Unix). + kAllEntries = 0x001 | 0x002 | 0x004, // List directories, files, drives and symlinks (this does not list broken symlinks unless you specify System). + kNoSymLinks = 0x008, // Do not list symbolic links (ignored by operating systems that don't support symbolic links). + + kReadable = 0x010, // List files for which the application has read access. The Readable value needs to be combined with Dirs or Files. + kWritable = 0x020, // List files for which the application has write access. The Writable value needs to be combined with Dirs or Files. + kExecutable = 0x040, // List files for which the application has execute access. The Executable value needs to be combined with Dirs or Files. + kModified = 0x080, // Only list files that have been modified (ignored on Unix). + + kHidden = 0x100, // List hidden files (on Unix, files starting with a "."). + kSystem = 0x200, // List system files (on Unix, FIFOs, sockets and device files are included; on Windows, .lnk files are included) + kAllDirs = 0x400, // List all directories; i.e. don't apply the filters to directory names. + kCaseSensitive = 0x800, // The filter should be case sensitive. + + kNoDot = 0x2000, // Do not list the special entry ".". + kNoDotDot = 0x4000, // Do not list the special entry "..". + kNoDotAndDotDot = 0x2000 | 0x4000, // Do not list the special entries "." and "..". + }; + Q_DECLARE_FLAGS(DirFilters, DirFilter) + + enum class IteratorFlag : uint8_t { + kNoIteratorFlags = 0x00, // The default value, representing no flags. The iterator will return entries for the assigned path. + kFollowSymlinks = 0x01, // When combined with Subdirectories, this flag enables iterating through all subdirectories of the assigned path, following all symbolic links. Symbolic link loops (e.g., "link" => "." or "link" => "..") are automatically detected and ignored. + kSubdirectories = 0x02, // List entries inside all subdirectories as well. + }; + Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag) + + enum class SortRoleCompareFlag : uint8_t { + kSortRoleCompareDefault = 0, // The default value + kSortRoleCompareFileName = 1, // compare by file path + kSortRoleCompareFileSize = 2, // compare by file size + kSortRoleCompareFileLastModified = 3, // compare by last modified time + kSortRoleCompareFileLastRead = 4, // compare by last read time + }; + + struct SortFileInfo + { + QUrl url; + bool isFile { false }; + bool isDir { false }; + bool isSymLink { false }; + bool isHide { false }; + bool isReadable { false }; + bool isWriteable { false }; + bool isExecutable { false }; + }; + +public: + explicit DEnumerator(const QUrl &uri); + explicit DEnumerator(const QUrl &uri, const QStringList &nameFilters, DirFilters filters, IteratorFlags flags); + ~DEnumerator(); + QUrl uri() const; + + void setNameFilters(const QStringList &filters); + QStringList nameFilters() const; + + void setDirFilters(DirFilters filters); + DirFilters dirFilters() const; + + void setIteratorFlags(IteratorFlags flags); + IteratorFlags iteratorFlags() const; + + void setTimeout(ulong timeout); + ulong timeout() const; + + void setSortRole(SortRoleCompareFlag role); + SortRoleCompareFlag sortRole() const; + + void setSortOrder(Qt::SortOrder order); + Qt::SortOrder sortOrder() const; + + void setSortMixed(bool mix); + bool isSortMixed() const; + +public: + bool cancel(); + bool hasNext() const; + QUrl next() const; + QSharedPointer fileInfo() const; + quint64 fileCount(); + QList> fileInfoList(); + QList> sortFileInfoList(); + DFMIOError lastError() const; + +private: + QScopedPointer d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(DEnumerator::DirFilters); +Q_DECLARE_OPERATORS_FOR_FLAGS(DEnumerator::IteratorFlags); + +END_IO_NAMESPACE + +Q_DECLARE_METATYPE(DFMIO::DEnumerator::SortRoleCompareFlag) +Q_DECLARE_METATYPE(QSharedPointer) +Q_DECLARE_METATYPE(QList>) + +#endif // DENUMERATOR_H diff --git a/include/dfm-io/dfm-io/dfile.h b/include/dfm-io/dfm-io/dfile.h new file mode 100644 index 0000000..7671251 --- /dev/null +++ b/include/dfm-io/dfm-io/dfile.h @@ -0,0 +1,145 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DFILE_H +#define DFILE_H + +#include +#include + +#include +#include + +#include + +BEGIN_IO_NAMESPACE + +class DFileFuture; +class DFilePrivate; + +class DFile +{ +public: + enum class OpenFlag : uint16_t { + kNotOpen = 0x0000, + kReadOnly = 0x0001, + kWriteOnly = 0x0002, // auto create + kReadWrite = kReadOnly | kWriteOnly, // auto create + kAppend = 0x0004, + kTruncate = 0x0008, + kText = 0x0010, + kUnbuffered = 0x0020, + kNewOnly = 0x0040, + kExistingOnly = 0x0080, + + kCustomStart = 0x0100, + }; + Q_DECLARE_FLAGS(OpenFlags, OpenFlag) + + enum class CopyFlag : uint8_t { + kNone = 0, // No flags set. + kOverwrite = 1, // Overwrite any existing files. + kBackup = 2, // Make a backup of any existing files. + kNoFollowSymlinks = 3, // Don’t follow symlinks. + kAllMetadata = 4, // Copy all file metadata instead of just default set used for copy. + kNoFallbackForMove = 5, // Don’t use copy and delete fallback if native move not supported. + kTargetDefaultPerms = 6, // Leaves target file with default perms, instead of setting the source file perms. + + kUserFlag = 0x10 + }; + + enum class SeekType : uint8_t { + kBegin = 0x00, + kCurrent = 0x01, + kEnd = 0x02 + }; + + enum class Permission : uint16_t { + kNoPermission = 0x0000, + + kExeOther = 0x0001, + kWriteOther = 0x0002, + kReadOther = 0x0004, + + kExeGroup = 0x0010, + kWriteGroup = 0x0020, + kReadGroup = 0x0040, + + kExeUser = 0x0100, + kWriteUser = 0x0200, + kReadUser = 0x0400, + + kExeOwner = 0x1000, + kWriteOwner = 0x2000, + kReadOwner = 0x4000, + }; + Q_DECLARE_FLAGS(Permissions, Permission) + + // callback, use function pointer + using ReadCallbackFunc = void (*)(qint64, void *); + using ReadQCallbackFunc = void (*)(QByteArray, void *); + using ReadAllCallbackFunc = void (*)(QByteArray, void *); + + using WriteCallbackFunc = void (*)(qint64, void *); + using WriteAllCallbackFunc = void (*)(qint64, void *); + using WriteQCallbackFunc = void (*)(qint64, void *); + +public: + explicit DFile(const QUrl &uri); + explicit DFile(const QString &path); + ~DFile(); + QUrl uri() const; + bool isOpen() const; + qint64 size() const; + bool exists() const; + qint64 pos() const; + Permissions permissions() const; + DFMIOError lastError() const; + + bool open(OpenFlags mode); + bool close(); + bool cancel(); + bool seek(qint64 pos, SeekType type = SeekType::kBegin) const; + bool flush(); + bool setPermissions(Permissions permission); + + // read and write + qint64 read(char *data, qint64 maxSize); + QByteArray read(qint64 maxSize); + QByteArray readAll(); + qint64 write(const char *data, qint64 len); + qint64 write(const char *data); + qint64 write(const QByteArray &byteArray); + + // async callback + void readAsync(char *data, qint64 maxSize, int ioPriority = 0, ReadCallbackFunc func = nullptr, void *userData = nullptr); + void readQAsync(qint64 maxSize, int ioPriority = 0, ReadQCallbackFunc func = nullptr, void *userData = nullptr); + void readAllAsync(int ioPriority = 0, ReadAllCallbackFunc func = nullptr, void *userData = nullptr); + void writeAsync(const char *data, qint64 maxSize, int ioPriority = 0, WriteCallbackFunc func = nullptr, void *userData = nullptr); + void writeAllAsync(const char *data, int ioPriority = 0, WriteAllCallbackFunc func = nullptr, void *userData = nullptr); + void writeQAsync(const QByteArray &byteArray, int ioPriority = 0, WriteQCallbackFunc func = nullptr, void *userData = nullptr); + + // future callback + [[nodiscard]] DFileFuture *openAsync(OpenFlags mode, int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *closeAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *readAsync(quint64 maxSize, int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *readAllAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *flushAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *sizeAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent = nullptr); + +private: + QScopedPointer d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(DFile::OpenFlags); +Q_DECLARE_OPERATORS_FOR_FLAGS(DFile::Permissions); + +END_IO_NAMESPACE + +#endif // DFILE_H diff --git a/src/dfm-io/dfm-io/include/core/dfilefuture.h b/include/dfm-io/dfm-io/dfilefuture.h similarity index 92% rename from src/dfm-io/dfm-io/include/core/dfilefuture.h rename to include/dfm-io/dfm-io/dfilefuture.h index 764a5b9..704dc0f 100644 --- a/src/dfm-io/dfm-io/include/core/dfilefuture.h +++ b/include/dfm-io/dfm-io/dfilefuture.h @@ -5,13 +5,13 @@ #ifndef DFILEFUTURE_H #define DFILEFUTURE_H +#include +#include +#include + #include #include -#include "dfmio_global.h" -#include "dfileinfo.h" -#include "error.h" - BEGIN_IO_NAMESPACE class DFuturePrivate; class DFileFuture : public QObject diff --git a/src/dfm-io/dfm-io/include/core/dfileinfo.h b/include/dfm-io/dfm-io/dfileinfo.h similarity index 58% rename from src/dfm-io/dfm-io/include/core/dfileinfo.h rename to include/dfm-io/dfm-io/dfileinfo.h index 0bb3fba..410e85a 100644 --- a/src/dfm-io/dfm-io/include/core/dfileinfo.h +++ b/include/dfm-io/dfm-io/dfileinfo.h @@ -5,9 +5,9 @@ #ifndef DFILEINFO_H #define DFILEINFO_H -#include "dfmio_global.h" -#include "error/error.h" -#include "dfile.h" +#include +#include +#include #include #include @@ -20,7 +20,7 @@ BEGIN_IO_NAMESPACE class DFileFuture; class DFileInfoPrivate; -class DFileInfo : public QEnableSharedFromThis +class DFileInfo { public: enum class DFileType : uint16_t { @@ -187,101 +187,52 @@ class DFileInfo : public QEnableSharedFromThis kExtendMediaHeight, // xattr::media-height }; - using AttributeInfoMap = std::unordered_map>; - static AttributeInfoMap attributeInfoMap; - // callback, use function pointer using InitQuerierAsyncCallback = std::function; using AttributeAsyncCallback = std::function; using AttributeExtendFuncCallback = std::function)>; - // register function, use std::function - using InitQuerierFunc = std::function; - using InitQuerierAsyncFunc = std::function; - using AttributeFunc = std::function; - using AttributeAsyncFunc = std::function; - using SetAttributeFunc = std::function; - using HasAttributeFunc = std::function; - using ExistsFunc = std::function; - using RefreshFunc = std::function; - using SetCustomAttributeFunc = std::function; - using CustomAttributeFunc = std::function; - using LastErrorFunc = std::function; - // feture - using InitQuerierAsyncFunc2 = std::function; - using AttributeAsyncFunc2 = std::function; - using AttributeAsyncFunc3 = std::function; - using ExistsAsyncFunc = std::function; - using RefreshAsyncFunc = std::function; - using PermissionsAsyncFunc = std::function; - public: explicit DFileInfo(const QUrl &uri, const char *attributes = "*", const FileQueryInfoFlags flag = FileQueryInfoFlags::kTypeNone); - explicit DFileInfo(const DFileInfo &info); - virtual ~DFileInfo(); - DFileInfo &operator=(const DFileInfo &info); - - DFM_VIRTUAL bool initQuerier(); - DFM_VIRTUAL QVariant attribute(DFileInfo::AttributeID id, bool *success = nullptr) const; - - DFM_VIRTUAL void initQuerierAsync(int ioPriority = 0, InitQuerierAsyncCallback func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void attributeAsync(DFileInfo::AttributeID id, bool *success = nullptr, int ioPriority = 0, AttributeAsyncCallback func = nullptr, void *userData = nullptr) const; - - DFM_VIRTUAL [[nodiscard]] DFileFuture *initQuerierAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *attributeAsync(AttributeID id, int ioPriority, QObject *parent = nullptr) const; - DFM_VIRTUAL [[nodiscard]] DFileFuture *attributeAsync(const QByteArray &key, const DFileAttributeType type, int ioPriority, QObject *parent = nullptr) const; - DFM_VIRTUAL [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr) const; - DFM_VIRTUAL [[nodiscard]] DFileFuture *refreshAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr); - - DFM_VIRTUAL bool setAttribute(DFileInfo::AttributeID id, const QVariant &value); - DFM_VIRTUAL bool hasAttribute(DFileInfo::AttributeID id) const; - - DFM_VIRTUAL bool exists() const; - DFM_VIRTUAL bool refresh(); - DFM_VIRTUAL DFile::Permissions permissions() const; + explicit DFileInfo(const QUrl &uri, void *fileInfo, + const char *attributes = "*", const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone); + DFileInfo(const DFileInfo &other); + DFileInfo &operator=(const DFileInfo &other); + ~DFileInfo(); + + bool initQuerier(); + QVariant attribute(DFileInfo::AttributeID id, bool *success = nullptr) const; + void initQuerierAsync(int ioPriority = 0, InitQuerierAsyncCallback func = nullptr, void *userData = nullptr); + void attributeAsync(DFileInfo::AttributeID id, bool *success = nullptr, int ioPriority = 0, AttributeAsyncCallback func = nullptr, void *userData = nullptr); + + [[nodiscard]] DFileFuture *initQuerierAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *attributeAsync(AttributeID id, int ioPriority, QObject *parent = nullptr) const; + [[nodiscard]] DFileFuture *attributeAsync(const QByteArray &key, const DFileAttributeType type, int ioPriority, QObject *parent = nullptr) const; + [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr) const; + [[nodiscard]] DFileFuture *refreshAsync(int ioPriority, QObject *parent = nullptr); + [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr); + + bool hasAttribute(DFileInfo::AttributeID id) const; + bool exists() const; + bool refresh(); + DFile::Permissions permissions() const; // custom attribute - DFM_VIRTUAL bool setCustomAttribute(const char *key, const DFileAttributeType type, const void *value, const FileQueryInfoFlags flag = FileQueryInfoFlags::kTypeNone); - DFM_VIRTUAL QVariant customAttribute(const char *key, const DFileAttributeType type) const; + bool setCustomAttribute(const char *key, const DFileAttributeType type, const void *value, const FileQueryInfoFlags flag = FileQueryInfoFlags::kTypeNone); + QVariant customAttribute(const char *key, const DFileAttributeType type) const; + DFMIOError lastError() const; // extend attribute void attributeExtend(MediaType type, QList ids, AttributeExtendFuncCallback callback = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *attributeExtend(MediaType type, QList ids, int ioPriority, QObject *parent = nullptr); - + [[nodiscard]] DFileFuture *attributeExtend(MediaType type, QList ids, int ioPriority, QObject *parent = nullptr); bool cancelAttributeExtend(); - - DFM_VIRTUAL DFMIOError lastError() const; - - // register - void registerInitQuerier(const InitQuerierFunc &func); - void registerInitQuerierAsync(const InitQuerierAsyncFunc &func); - void registerAttribute(const AttributeFunc &func); - void registerAttributeAsync(const AttributeAsyncFunc &func); - void registerSetAttribute(const SetAttributeFunc &func); - void registerHasAttribute(const HasAttributeFunc &func); - void registerExists(const ExistsFunc &func); - void registerRefresh(const RefreshFunc &func); - void registerPermissions(const DFile::PermissionFunc &func); - void registerSetCustomAttribute(const SetCustomAttributeFunc &func); - void registerCustomAttribute(const CustomAttributeFunc &func); - void registerLastError(const LastErrorFunc &func); - - // future - void registerInitQuerierAsync2(const InitQuerierAsyncFunc2 &func); - void registerAttributeAsync2(const AttributeAsyncFunc2 &func); - void registerAttributeAsync3(const AttributeAsyncFunc3 &func); - void registerExistsAsync(const ExistsAsyncFunc &func); - void registerRefreshAsync(const RefreshAsyncFunc &func); - void registerPermissionsAsync(const PermissionsAsyncFunc &func); - QUrl uri() const; char *queryAttributes() const; DFileInfo::FileQueryInfoFlags queryInfoFlag() const; QString dump() const; private: - QSharedPointer d = nullptr; + QSharedDataPointer d; }; END_IO_NAMESPACE diff --git a/src/dfm-io/dfm-io/include/dfmio_global.h b/include/dfm-io/dfm-io/dfmio_global.h similarity index 67% rename from src/dfm-io/dfm-io/include/dfmio_global.h rename to include/dfm-io/dfm-io/dfmio_global.h index fd50430..a4f030d 100644 --- a/src/dfm-io/dfm-io/include/dfmio_global.h +++ b/include/dfm-io/dfm-io/dfmio_global.h @@ -11,9 +11,4 @@ #define USING_IO_NAMESPACE using namespace DFMIO; #define END_IO_NAMESPACE } -// fake virtual and override -// remind developers that they can override member functions -#define DFM_VIRTUAL -#define DFM_OVERRIDE - -#endif // DFMIO_GLOBAL_H +#endif // DFMIO_GLOBAL_H diff --git a/src/dfm-io/dfm-io/include/dfmio_utils.h b/include/dfm-io/dfm-io/dfmio_utils.h similarity index 97% rename from src/dfm-io/dfm-io/include/dfmio_utils.h rename to include/dfm-io/dfm-io/dfmio_utils.h index 8497fbb..b504e6f 100644 --- a/src/dfm-io/dfm-io/include/dfmio_utils.h +++ b/include/dfm-io/dfm-io/dfmio_utils.h @@ -5,7 +5,7 @@ #ifndef DFMIO_UTILS_H #define DFMIO_UTILS_H -#include "dfmio_global.h" +#include #include #include diff --git a/include/dfm-io/dfm-io/doperator.h b/include/dfm-io/dfm-io/doperator.h new file mode 100644 index 0000000..9bee816 --- /dev/null +++ b/include/dfm-io/dfm-io/doperator.h @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DOPERATOR_H +#define DOPERATOR_H + +#include +#include +#include + +#include +#include + +#include + +BEGIN_IO_NAMESPACE + +class DOperatorPrivate; +class DFileInfo; + +class DOperator +{ +public: + // callback, use function pointer + using ProgressCallbackFunc = void (*)(int64_t, int64_t, void *); // current_num_bytes, total_num_bytes, user_data + using FileOperateCallbackFunc = void (*)(bool, void *); + +public: + explicit DOperator(const QUrl &uri); + virtual ~DOperator(); + + QUrl uri() const; + + bool renameFile(const QString &newName); + bool renameFile(const QUrl &toUrl); + bool copyFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); + bool moveFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); + // async + void renameFileAsync(const QString &newName, int ioPriority = 0, FileOperateCallbackFunc func = nullptr, void *userData = nullptr); + void copyFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc progressfunc = nullptr, void *progressCallbackData = nullptr, + int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + void moveFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc progressFunc = nullptr, void *progressCallbackData = nullptr, + int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + + QString trashFile(); + bool deleteFile(); + bool restoreFile(ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); + // async + void trashFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + void deleteFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + void restoreFileAsync(ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, + int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + + bool touchFile(); + bool makeDirectory(); + bool createLink(const QUrl &link); + // async + void touchFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + void makeDirectoryAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + void createLinkAsync(const QUrl &link, int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); + + bool setFileInfo(const DFileInfo &fileInfo); + + bool cancel(); + DFMIOError lastError() const; + +private: + QScopedPointer d; +}; + +END_IO_NAMESPACE + +#endif // DOPERATOR_H diff --git a/include/dfm-io/dfm-io/dwatcher.h b/include/dfm-io/dfm-io/dwatcher.h new file mode 100644 index 0000000..1f2c82b --- /dev/null +++ b/include/dfm-io/dfm-io/dwatcher.h @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DWATCHER_H +#define DWATCHER_H + +#include +#include + +#include +#include + +#include + +BEGIN_IO_NAMESPACE + +class DFileInfo; +class DWatcherPrivate; + +class DWatcher : public QObject +{ + Q_OBJECT +public: + enum class WatchType : uint8_t { + kAuto = 0x00, + kDir = 0x01, + kFile = 0x02, + }; + +public: + explicit DWatcher(const QUrl &uri, QObject *parent = nullptr); + virtual ~DWatcher() override; + + QUrl uri() const; + + void setTimeRate(int msec); + int timeRate() const; + + void setWatchType(WatchType type); + WatchType watchType() const; + + bool running() const; + bool start(int timeRate = 200); + bool stop(); + + DFMIOError lastError() const; + +Q_SIGNALS: + void fileChanged(const QUrl &url); + void fileDeleted(const QUrl &url); + void fileAdded(const QUrl &url); + void fileRenamed(const QUrl &fromUrl, const QUrl &toUrl); + +private: + QScopedPointer d; +}; + +END_IO_NAMESPACE + +#endif // DWATCHER_H diff --git a/src/dfm-io/dfm-io/include/error/en.h b/include/dfm-io/dfm-io/error/en.h similarity index 100% rename from src/dfm-io/dfm-io/include/error/en.h rename to include/dfm-io/dfm-io/error/en.h diff --git a/src/dfm-io/dfm-io/include/error/error.h b/include/dfm-io/dfm-io/error/error.h similarity index 100% rename from src/dfm-io/dfm-io/include/error/error.h rename to include/dfm-io/dfm-io/error/error.h diff --git a/misc/dfm-io/dfm-io.pc.in b/misc/dfm-io/dfm-io.pc.in new file mode 100644 index 0000000..7f890c1 --- /dev/null +++ b/misc/dfm-io/dfm-io.pc.in @@ -0,0 +1,7 @@ +Name: @BIN_NAME@ +Description: @CMAKE_PROJECT_DESCRIPTION@ +URL: @CMAKE_PROJECT_HOMEPAGE_URL@ +Version: @PROJECT_VERSION@ +Cflags: -I"@CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@" +Libs: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@ +Libs.private: -L"@CMAKE_INSTALL_FULL_LIBDIR@" -l@BIN_NAME@ diff --git a/misc/dfm-io/dfm-ioConfig.cmake.in b/misc/dfm-io/dfm-ioConfig.cmake.in new file mode 100644 index 0000000..a2d7592 --- /dev/null +++ b/misc/dfm-io/dfm-ioConfig.cmake.in @@ -0,0 +1,3 @@ +set(@BIN_NAME@_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@/@BIN_NAME@) +set(@BIN_NAME@_LIBRARIES @BIN_NAME@) +include_directories("${@BIN_NAME@_INCLUDE_DIR}") diff --git a/po/.gitkeep b/po/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/dfm-io/dfm-io/CMakeLists.txt b/src/dfm-io/dfm-io/CMakeLists.txt index 7556dce..3d5f2d6 100644 --- a/src/dfm-io/dfm-io/CMakeLists.txt +++ b/src/dfm-io/dfm-io/CMakeLists.txt @@ -1,4 +1,4 @@ -project(dfm-io) +set(BIN_NAME dfm-io) # Version if (NOT PROJECT_VERSION) @@ -10,50 +10,29 @@ if (NOT PROJECT_VERSION_MAJOR) endif() # Setup the environment -find_package(Qt5Core REQUIRED) +find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Concurrent REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(GLIB glib-2.0 gobject-2.0 gio-2.0) - pkg_check_modules(mediainfoVal REQUIRED libmediainfo IMPORTED_TARGET) list(APPEND mediainfos ${mediainfoVal_LDFLAGS}) # gio signals conflicts with qt signals add_definitions(-DQT_NO_KEYWORDS) -# include -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/inlcude - ${CMAKE_CURRENT_SOURCE_DIR}/private -) - # public include -FILE (GLOB IO_PUBLIC_INCLUDES "include/*.h" "include/*.hpp" - "include/core/*.h" "include/core/*.hpp" #core - "include/error/*.h" "include/error/*.hpp" #error - "include/factory/*.h" "include/factory/*.hpp" #factory - "include/local/*.h" "include/local/*.hpp" #local -) - - -# private include -FILE (GLOB IO_PRIVATE_INCLUDES "private/*.h" "private/*.hpp" - "private/core/*.h" "private/core/*.hpp" #core - "private/factory/*.h" "private/factory/*.hpp" #factory - "private/local/*.h" "private/local/*.hpp" #local - "utils/*.h" #utils -) - +file(GLOB_RECURSE IO_PUBLIC_INCLUDES CONFIGURE_DEPENDS + "${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/*") # src -FILE (GLOB IO_SRCS "src/*.c" "src/*.cpp" - "src/core/*.c" "src/core/*.cpp" #core - "src/factory/*.c" "src/factory/*.cpp" #factory - "src/local/*.c" "src/local/*.cpp" #local - "utils/*.cpp" #utils +FILE (GLOB_RECURSE IO_SRCS CONFIGURE_DEPENDS + "./*.c" + "./*.cpp" + "./*.h" ) # Build -add_library(${PROJECT_NAME} SHARED +add_library(${BIN_NAME} SHARED ${IO_PUBLIC_INCLUDES} ${IO_PRIVATE_INCLUDES} ${IO_SRCS} @@ -65,80 +44,38 @@ set_target_properties( SOVERSION ${PROJECT_VERSION_MAJOR} ) -target_link_libraries(${PROJECT_NAME} +target_link_libraries(${BIN_NAME} Qt5::Core + Qt5::Concurrent PkgConfig::mediainfoVal ${mediainfos} ${GLIB_LIBRARIES} ) -target_include_directories(${PROJECT_NAME} +target_include_directories(${BIN_NAME} PUBLIC ${GLIB_INCLUDE_DIRS} - ${CMAKE_CURRENT_LIST_DIR}/private - ${CMAKE_CURRENT_LIST_DIR}/include -) - -qt5_use_modules(${PROJECT_NAME} - Core -) - -# Install -FILE (GLOB IO_INCLUDES_INSTALL - "include/*.h" "include/*.hpp" + ${PROJECT_SOURCE_DIR}/include/${BIN_NAME} ) -FILE (GLOB IO_INCLUDES_INSTALL_CORE - "include/core/*.h" "include/core/*.hpp" -) -FILE (GLOB IO_INCLUDES_INSTALL_ERROR - "include/error/*.h" "include/error/*.hpp" -) -FILE (GLOB IO_INCLUDES_INSTALL_FACTORY - "include/factory/*.h" "include/factory/*.hpp" -) -FILE (GLOB IO_INCLUDES_INSTALL_LOCAL - "include/local/*.h" "include/local/*.hpp" -) - -# private -#FILE (GLOB IO_INCLUDES_INSTALL_CORE -# "private/core/*.h" "private/core/*.hpp" -#) -#FILE (GLOB IO_INCLUDES_INSTALL_ERROR -# "private/error/*.h" "private/error/*.hpp" -#) -#FILE (GLOB IO_INCLUDES_INSTALL_FACTORY -# "private/factory/*.h" "private/factory/*.hpp" -#) -#FILE (GLOB IO_INCLUDES_INSTALL_LOCAL -# "private/local/*.h" "private/local/*.hpp" -#) include(GNUInstallDirs) - -install (FILES ${IO_INCLUDES_INSTALL} - DESTINATION include/dfm-io +install(DIRECTORY + ${PROJECT_SOURCE_DIR}/include/${BIN_NAME} + DESTINATION include + FILES_MATCHING PATTERN "*.h" ) -install (FILES ${IO_INCLUDES_INSTALL_CORE} - DESTINATION include/dfm-io/core -) -install (FILES ${IO_INCLUDES_INSTALL_ERROR} - DESTINATION include/dfm-io/error -) -install (FILES ${IO_INCLUDES_INSTALL_FACTORY} - DESTINATION include/dfm-io/factory -) -install (FILES ${IO_INCLUDES_INSTALL_LOCAL} - DESTINATION include/dfm-io/local -) - +install(TARGETS ${BIN_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -# todo install private +# for pc file config +set(PC_LIBS_PRIVATE Qt${QT_VERSION_MAJOR}Core) +set(PC_REQ_PRIVATE) +set(PC_REQ_PUBLIC) -install_targets ("/${CMAKE_INSTALL_LIBDIR}" dfm-io) +# config pkgconfig file +configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +# config cmake file +configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME}) -configure_file ("dfm-io.pc.in" "dfm-io.pc" @ONLY) -install (FILES ${CMAKE_CURRENT_BINARY_DIR}/dfm-io.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig -) diff --git a/src/dfm-io/dfm-io/src/local/dlocalenumerator.cpp b/src/dfm-io/dfm-io/denumerator.cpp similarity index 51% rename from src/dfm-io/dfm-io/src/local/dlocalenumerator.cpp rename to src/dfm-io/dfm-io/denumerator.cpp index c48c04d..4bf96cf 100644 --- a/src/dfm-io/dfm-io/src/local/dlocalenumerator.cpp +++ b/src/dfm-io/dfm-io/denumerator.cpp @@ -2,16 +2,16 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "local/dlocalenumerator_p.h" -#include "local/dlocalenumerator.h" -#include "local/dlocalhelper.h" +#include "private/denumerator_p.h" -#include "core/dfileinfo.h" +#include "utils/dlocalhelper.h" -#include +#include +#include +#include #include -#include +#include #include #include @@ -21,12 +21,16 @@ owner::*,thumbnail::*,preview::*,filesystem::*,gvfs::*,selinux::*,trash::*,recen USING_IO_NAMESPACE -DLocalEnumeratorPrivate::DLocalEnumeratorPrivate(DLocalEnumerator *q) +/************************************************ + * DEnumeratorPrivate + ***********************************************/ + +DEnumeratorPrivate::DEnumeratorPrivate(DEnumerator *q) : q(q) { } -DLocalEnumeratorPrivate::~DLocalEnumeratorPrivate() +DEnumeratorPrivate::~DEnumeratorPrivate() { clean(); if (cancellable) { @@ -35,147 +39,105 @@ DLocalEnumeratorPrivate::~DLocalEnumeratorPrivate() } } -QList> DLocalEnumeratorPrivate::fileInfoList() +bool DEnumeratorPrivate::init(const QUrl &url) { - g_autoptr(GFileEnumerator) enumerator = nullptr; - g_autoptr(GError) gerror = nullptr; - - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); - - checkAndResetCancel(); - enumerator = g_file_enumerate_children(gfile, - FILE_DEFAULT_ATTRIBUTES, - enumLinks ? G_FILE_QUERY_INFO_NONE : G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, - cancellable, - &gerror); - - if (nullptr == enumerator) { - if (gerror) { - setErrorFromGError(gerror); - } - return list_; - } - - GFile *gfileIn = nullptr; - GFileInfo *gfileInfoIn = nullptr; - - checkAndResetCancel(); - while (g_file_enumerator_iterate(enumerator, &gfileInfoIn, &gfileIn, cancellable, &gerror)) { - if (!gfileInfoIn) - break; - - g_autofree gchar *uri = g_file_get_uri(gfileIn); - const QUrl &url = QUrl(QString::fromLocal8Bit(uri)); - QSharedPointer info = DLocalHelper::createFileInfoByUri(url); - if (info) - list_.append(info); - - if (gerror) { - setErrorFromGError(gerror); - gerror = nullptr; - } - } - - if (gerror) { - setErrorFromGError(gerror); + QPointer me = this; + const bool needTimeOut = q->timeout() != 0; + if (!needTimeOut) { + return createEnumerator(url, me); + } else { + mutex.lock(); + bool succ = false; + QtConcurrent::run([this, me, url, &succ]() { + succ = createEnumerator(url, me); + }); + bool wait = waitCondition.wait(&mutex, q->timeout()); + mutex.unlock(); + if (!wait) + qWarning() << "createEnumeratorInThread failed, url: " << url << " error: " << error.errorMsg(); + return succ && wait; } - - return list_; } -bool DLocalEnumeratorPrivate::hasNext() +bool DEnumeratorPrivate::init() { - if (!inited) - init(); - - if (stackEnumerator.isEmpty()) - return false; + const QUrl &uri = q->uri(); + bool ret = init(uri); + inited = true; + return ret; +} - // sub dir enumerator - if (enumSubDir && dfileInfoNext && dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsDir).toBool()) { - bool showDir = true; - if (dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsSymlink).toBool()) { - // is symlink, need enumSymlink - showDir = enumLinks; - } - if (showDir) { - init(nextUrl); +void DEnumeratorPrivate::clean() +{ + if (!stackEnumerator.isEmpty()) { + while (true) { + GFileEnumerator *enumerator = stackEnumerator.pop(); + g_object_unref(enumerator); + if (stackEnumerator.isEmpty()) + break; } } - if (stackEnumerator.isEmpty()) - return false; - - GFileEnumerator *enumerator = stackEnumerator.top(); +} - GFileInfo *gfileInfo = nullptr; - GFile *gfile = nullptr; +bool DEnumeratorPrivate::createEnumerator(const QUrl &url, QPointer me) +{ + const QString &uriPath = url.toString(); + g_autoptr(GFile) gfile = g_file_new_for_uri(uriPath.toLocal8Bit().data()); g_autoptr(GError) gerror = nullptr; checkAndResetCancel(); - bool hasNext = g_file_enumerator_iterate(enumerator, &gfileInfo, &gfile, cancellable, &gerror); - if (hasNext) { - if (!gfileInfo || !gfile) { - GFileEnumerator *enumeratorPop = stackEnumerator.pop(); - g_object_unref(enumeratorPop); - return this->hasNext(); - } - - g_autofree gchar *path = g_file_get_path(gfile); - if (path) { - nextUrl = QUrl::fromLocalFile(QString::fromLocal8Bit(path)); - } else { - g_autofree gchar *uri = g_file_get_uri(gfile); - nextUrl = QUrl(QString::fromLocal8Bit(uri)); - } - dfileInfoNext = DLocalHelper::createFileInfoByUri(nextUrl, g_file_info_dup(gfileInfo), FILE_DEFAULT_ATTRIBUTES, - enumLinks ? DFileInfo::FileQueryInfoFlags::kTypeNone : DFileInfo::FileQueryInfoFlags::kTypeNoFollowSymlinks); - - if (!checkFilter()) - return this->hasNext(); - - return true; + GFileEnumerator *genumerator = g_file_enumerate_children(gfile, + FILE_DEFAULT_ATTRIBUTES, + enumLinks ? G_FILE_QUERY_INFO_NONE : G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + cancellable, + &gerror); + if (!me) { + error.setCode(DFMIOErrorCode(DFM_IO_ERROR_NOT_FOUND)); + return false; } - - if (gerror) - setErrorFromGError(gerror); - - return false; -} - -QUrl DLocalEnumeratorPrivate::next() const -{ - return nextUrl; + bool ret = true; + if (!genumerator || gerror) { + if (gerror) + setErrorFromGError(gerror); + ret = false; + qWarning() << "create enumerator failed, url: " << uriPath << " error: " << error.errorMsg(); + } else { + stackEnumerator.push_back(genumerator); + } + waitCondition.wakeAll(); + return ret; } -QSharedPointer DLocalEnumeratorPrivate::fileInfo() const +void DEnumeratorPrivate::checkAndResetCancel() { - return dfileInfoNext; + if (cancellable) { + g_object_unref(cancellable); + cancellable = nullptr; + } + cancellable = g_cancellable_new(); } -quint64 DLocalEnumeratorPrivate::fileCount() +void DEnumeratorPrivate::setErrorFromGError(GError *gerror) { - if (!inited) - init(); - - quint64 count = 0; - - while (hasNext()) { - ++count; + if (!gerror) + return; + error.setCode(DFMIOErrorCode(gerror->code)); + if (gerror->domain != G_IO_ERROR || gerror->message) { + error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); + error.setMessage(gerror->message); } - - return count; } -bool DLocalEnumeratorPrivate::checkFilter() +bool DEnumeratorPrivate::checkFilter() { - if (dirFilters == kDirFilterNofilter) + if (dirFilters.testFlag(DEnumerator::DirFilter::kNoFilter)) return true; if (!dfileInfoNext) return false; const bool isDir = dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsDir).toBool(); - if ((dirFilters & DEnumerator::DirFilter::kAllDirs) == kDirFilterAllDirs) { // all dir, no apply filters rules + if ((dirFilters & DEnumerator::DirFilter::kAllDirs).testFlag(DEnumerator::DirFilter::kAllDirs)) { // all dir, no apply filters rules if (isDir) return true; } @@ -188,27 +150,27 @@ bool DLocalEnumeratorPrivate::checkFilter() const bool executable = dfileInfoNext->attribute(DFileInfo::AttributeID::kAccessCanExecute).toBool(); auto checkRWE = [&]() -> bool { - if ((dirFilters & DEnumerator::DirFilter::kReadable) == kDirFilterReadable) { + if ((dirFilters & DEnumerator::DirFilter::kReadable).testFlag(DEnumerator::DirFilter::kReadable)) { if (!readable) return false; } - if ((dirFilters & DEnumerator::DirFilter::kWritable) == kDirFilterWritable) { + if ((dirFilters & DEnumerator::DirFilter::kWritable).testFlag(DEnumerator::DirFilter::kWritable)) { if (!writable) return false; } - if ((dirFilters & DEnumerator::DirFilter::kExecutable) == kDirFilterExecutable) { + if ((dirFilters & DEnumerator::DirFilter::kExecutable).testFlag(DEnumerator::DirFilter::kExecutable)) { if (!executable) return false; } return true; }; - if ((dirFilters & DEnumerator::DirFilter::kAllEntries) == kDirFilterAllEntries + if ((dirFilters & DEnumerator::DirFilter::kAllEntries).testFlag(DEnumerator::DirFilter::kAllEntries) || ((dirFilters & DEnumerator::DirFilter::kDirs) && (dirFilters & DEnumerator::DirFilter::kFiles))) { // 判断读写执行 if (!checkRWE()) ret = false; - } else if ((dirFilters & DEnumerator::DirFilter::kDirs) == kDirFilterDirs) { + } else if ((dirFilters & DEnumerator::DirFilter::kDirs).testFlag(DEnumerator::DirFilter::kDirs)) { if (!isDir) { ret = false; } else { @@ -216,7 +178,7 @@ bool DLocalEnumeratorPrivate::checkFilter() if (!checkRWE()) ret = false; } - } else if ((dirFilters & DEnumerator::DirFilter::kFiles) == kDirFilterFiles) { + } else if ((dirFilters & DEnumerator::DirFilter::kFiles).testFlag(DEnumerator::DirFilter::kFiles)) { const bool isFile = dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsFile).toBool(); if (!isFile) { ret = false; @@ -227,14 +189,14 @@ bool DLocalEnumeratorPrivate::checkFilter() } } - if ((dirFilters & DEnumerator::DirFilter::kNoSymLinks) == kDirFilterNoSymLinks) { + if ((dirFilters & DEnumerator::DirFilter::kNoSymLinks).testFlag(DEnumerator::DirFilter::kNoSymLinks)) { const bool isSymlinks = dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsSymlink).toBool(); if (isSymlinks) ret = false; } const QString &fileInfoName = dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardName).toString(); - const bool showHidden = (dirFilters & DEnumerator::DirFilter::kHidden) == kDirFilterHidden; + const bool showHidden = (dirFilters & DEnumerator::DirFilter::kHidden).testFlag(DEnumerator::DirFilter::kHidden); if (!showHidden) { // hide files const QString &parentPath = dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardParentPath).toString(); const QUrl &urlHidden = QUrl::fromLocalFile(parentPath + "/.hidden"); @@ -246,18 +208,20 @@ bool DLocalEnumeratorPrivate::checkFilter() hideList = DLocalHelper::hideListFromUrl(urlHidden); hideListMap.insert(urlHidden, hideList); } - bool isHidden = DLocalHelper::fileIsHidden(dfileInfoNext, hideList, false); + bool isHidden = DLocalHelper::fileIsHidden(dfileInfoNext.data(), hideList, false); if (isHidden) ret = false; } // filter name - const bool caseSensitive = (dirFilters & DEnumerator::DirFilter::kCaseSensitive) == kDirFilterCaseSensitive; + const bool caseSensitive = (dirFilters & DEnumerator::DirFilter::kCaseSensitive).testFlag(DEnumerator::DirFilter::kCaseSensitive); if (nameFilters.contains(fileInfoName, caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive)) ret = false; - const bool showDot = !((dirFilters & DEnumerator::DirFilter::kNoDotAndDotDot) == kDirFilterNoDotAndDotDot) && !((dirFilters & DEnumerator::DirFilter::kNoDot) == kDirFilterNoDot); - const bool showDotDot = !((dirFilters & DEnumerator::DirFilter::kNoDotAndDotDot) == kDirFilterNoDotAndDotDot) && !((dirFilters & DEnumerator::DirFilter::kNoDotDot) == kDirFilterNoDotDot); + const bool showDot = !((dirFilters & DEnumerator::DirFilter::kNoDotAndDotDot).testFlag(DEnumerator::DirFilter::kNoDotAndDotDot)) + && !((dirFilters & DEnumerator::DirFilter::kNoDot).testFlag(DEnumerator::DirFilter::kNoDot)); + const bool showDotDot = !((dirFilters & DEnumerator::DirFilter::kNoDotAndDotDot).testFlag(DEnumerator::DirFilter::kNoDotAndDotDot)) + && !((dirFilters & DEnumerator::DirFilter::kNoDotDot).testFlag(DEnumerator::DirFilter::kNoDotDot)); if (!showDot && fileInfoName == ".") ret = false; if (!showDotDot && fileInfoName == "..") @@ -266,87 +230,41 @@ bool DLocalEnumeratorPrivate::checkFilter() return ret; } -DFMIOError DLocalEnumeratorPrivate::lastError() +FTS *DEnumeratorPrivate::openDirByfts() { - return error; -} - -bool DLocalEnumeratorPrivate::init(const QUrl &url) -{ - QPointer me = this; - const bool needTimeOut = q->timeout() != 0; - if (!needTimeOut) { - return createEnumerator(url, me); - } else { - mutex.lock(); - bool succ = false; - QtConcurrent::run([this, me, url, &succ]() { - succ = createEnumerator(url, me); - }); - bool wait = waitCondition.wait(&mutex, q->timeout()); - mutex.unlock(); - if (!wait) - qWarning() << "createEnumeratorInThread failed, url: " << url << " error: " << error.errorMsg(); - return succ && wait; + FTS *fts { nullptr }; + QString path = q->uri().path(); + if (path != "/" && path.endsWith("/")) + path = path.left(path.length() - 1); + char *paths[2] = { nullptr, nullptr }; + paths[0] = strdup(path.toUtf8().toStdString().data()); + int (*compare)(const FTSENT **, const FTSENT **); + compare = nullptr; + if (sortRoleFlag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileName) { + compare = DLocalHelper::compareByName; + } else if (sortRoleFlag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileSize) { + compare = DLocalHelper::compareBySize; + } else if (sortRoleFlag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileLastModified) { + compare = DLocalHelper::compareByLastModifed; + } else if (sortRoleFlag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileLastRead) { + compare = DLocalHelper::compareByLastRead; } -} - -bool DLocalEnumeratorPrivate::init() -{ - const QUrl &uri = q->uri(); - bool ret = init(uri); - inited = true; - return ret; -} -void DLocalEnumeratorPrivate::initAsync(int ioPriority, DEnumerator::InitCallbackFunc func, void *userData) -{ - const QUrl &uri = q->uri(); - QPointer me = this; - createEnumneratorAsync(uri, me, ioPriority, func, userData); -} - -bool DLocalEnumeratorPrivate::cancel() -{ - if (cancellable && !g_cancellable_is_cancelled(cancellable)) - g_cancellable_cancel(cancellable); - ftsCanceled = true; - return true; -} + fts = fts_open(paths, FTS_COMFOLLOW, compare); -void DLocalEnumeratorPrivate::setErrorFromGError(GError *gerror) -{ - if (!gerror) - return; - error.setCode(DFMIOErrorCode(gerror->code)); - if (gerror->domain != G_IO_ERROR || gerror->message) { - error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); - error.setMessage(gerror->message); - } -} + if (paths[0]) + free(paths[0]); -void DLocalEnumeratorPrivate::clean() -{ - if (!stackEnumerator.isEmpty()) { - while (1) { - GFileEnumerator *enumerator = stackEnumerator.pop(); - g_object_unref(enumerator); - if (stackEnumerator.isEmpty()) - break; - } + if (nullptr == fts) { + qWarning() << "fts_open open error : " << QString::fromLocal8Bit(strerror(errno)); + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_FTS_OPEN); + return nullptr; } -} -void DLocalEnumeratorPrivate::checkAndResetCancel() -{ - if (cancellable) { - g_object_unref(cancellable); - cancellable = nullptr; - } - cancellable = g_cancellable_new(); + return fts; } -void DLocalEnumeratorPrivate::insertSortFileInfoList(QList> &fileList, QList> &dirList, FTSENT *ent, FTS *fts, const QSet &hideList) +void DEnumeratorPrivate::insertSortFileInfoList(QList> &fileList, QList> &dirList, FTSENT *ent, FTS *fts, const QSet &hideList) { QSharedPointer info(nullptr); bool isDir = S_ISDIR(ent->fts_statp->st_mode); @@ -373,254 +291,282 @@ void DLocalEnumeratorPrivate::insertSortFileInfoList(QListuri().path(); - if (path != "/" && path.endsWith("/")) - path = path.left(path.length() - 1); - char *paths[2] = { nullptr, nullptr }; - paths[0] = strdup(path.toUtf8().toStdString().data()); - int (*compare)(const FTSENT **, const FTSENT **); - compare = nullptr; - if (flag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileName) { - compare = DLocalHelper::compareByName; - } else if (flag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileSize) { - compare = DLocalHelper::compareBySize; - } else if (flag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileLastModified) { - compare = DLocalHelper::compareByLastModifed; - } else if (flag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileLastRead) { - compare = DLocalHelper::compareByLastRead; - } + d->uri = uri; +} - fts = fts_open(paths, FTS_COMFOLLOW, compare); +DEnumerator::DEnumerator(const QUrl &uri, const QStringList &nameFilters, DirFilters filters, IteratorFlags flags) + : d(new DEnumeratorPrivate(this)) +{ + d->uri = uri; + d->nameFilters = nameFilters; + d->dirFilters = filters; + d->iteratorFlags = flags; - if (paths[0]) - free(paths[0]); + d->enumSubDir = d->iteratorFlags & DEnumerator::IteratorFlag::kSubdirectories; + d->enumLinks = d->iteratorFlags & DEnumerator::IteratorFlag::kFollowSymlinks; +} - if (nullptr == fts) { - qWarning() << "fts_open open error : " << QString::fromLocal8Bit(strerror(errno)); - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_FTS_OPEN); - return nullptr; - } +DEnumerator::~DEnumerator() +{ +} - return fts; +QUrl DEnumerator::uri() const +{ + return d->uri; } -bool DLocalEnumeratorPrivate::createEnumerator(const QUrl &url, QPointer me) +void DEnumerator::setNameFilters(const QStringList &filters) { - const QString &uriPath = url.toString(); - g_autoptr(GFile) gfile = g_file_new_for_uri(uriPath.toLocal8Bit().data()); + d->nameFilters = filters; +} - g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - GFileEnumerator *genumerator = g_file_enumerate_children(gfile, - FILE_DEFAULT_ATTRIBUTES, - enumLinks ? G_FILE_QUERY_INFO_NONE : G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, - cancellable, - &gerror); - if (!me) { - error.setCode(DFMIOErrorCode(DFM_IO_ERROR_NOT_FOUND)); - return false; - } - bool ret = true; - if (!genumerator || gerror) { - if (gerror) { - setErrorFromGError(gerror); - } - ret = false; - qWarning() << "create enumerator failed, url: " << uriPath << " error: " << error.errorMsg(); - } else { - stackEnumerator.push_back(genumerator); - } - waitCondition.wakeAll(); - return ret; +QStringList DEnumerator::nameFilters() const +{ + return d->nameFilters; } -void DLocalEnumeratorPrivate::createEnumneratorAsync(const QUrl &url, QPointer me, int ioPriority, DEnumerator::InitCallbackFunc func, void *userData) +void DEnumerator::setDirFilters(DirFilters filters) { - const QString &uriPath = url.toString(); - g_autoptr(GFile) gfile = g_file_new_for_uri(uriPath.toLocal8Bit().data()); + d->dirFilters = filters; +} - InitAsyncOp *dataOp = g_new0(InitAsyncOp, 1); - dataOp->callback = func; - dataOp->userData = userData; - dataOp->me = me; +DEnumerator::DirFilters DEnumerator::dirFilters() const +{ + return d->dirFilters; +} - checkAndResetCancel(); - g_file_enumerate_children_async(gfile, - FILE_DEFAULT_ATTRIBUTES, - enumLinks ? G_FILE_QUERY_INFO_NONE : G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, - ioPriority, - cancellable, - initAsyncCallback, - dataOp); +void DEnumerator::setIteratorFlags(IteratorFlags flags) +{ + d->iteratorFlags = flags; } -void DLocalEnumeratorPrivate::setArguments(const QMap &argus) +DEnumerator::IteratorFlags DEnumerator::iteratorFlags() const { - flag = argus.value(DEnumerator::ArgumentKey::kArgumentSortRole).value(); - sortOrder = argus.value(DEnumerator::ArgumentKey::kArgumentSortOrder).value(); - isMixDirAndFile = argus.value(DEnumerator::ArgumentKey::kArgumentMixDirAndFile).toBool(); + return d->iteratorFlags; } -QList> DLocalEnumeratorPrivate::sortFileInfoList() +void DEnumerator::setTimeout(ulong timeout) { - FTS *fts = openDirByfts(); - if (!fts) - return {}; + d->enumTimeout = timeout; +} - QList> listFile; - QList> listDir; - QSet hideList; - const QUrl &urlHidden = QUrl::fromLocalFile(q->uri().path() + "/.hidden"); - hideList = DLocalHelper::hideListFromUrl(urlHidden); - while (1) { - FTSENT *ent = fts_read(fts); - if (ent == nullptr) { - break; - } +ulong DEnumerator::timeout() const +{ + return d->enumTimeout; +} - if (ftsCanceled) - break; +void DEnumerator::setSortRole(SortRoleCompareFlag role) +{ + d->sortRoleFlag = role; +} - unsigned short flag = ent->fts_info; +DEnumerator::SortRoleCompareFlag DEnumerator::sortRole() const +{ + return d->sortRoleFlag; +} - if (QString(ent->fts_path) == q->uri().path() || flag == FTS_DP) - continue; +void DEnumerator::setSortOrder(Qt::SortOrder order) +{ + d->sortOrder = order; +} - insertSortFileInfoList(listFile, listDir, ent, fts, hideList); - } +Qt::SortOrder DEnumerator::sortOrder() const +{ + return d->sortOrder; +} - fts_close(fts); - fts = nullptr; +void DEnumerator::setSortMixed(bool mix) +{ + d->isMixDirAndFile = mix; +} - if (isMixDirAndFile) - return listFile; +bool DEnumerator::isSortMixed() const +{ + return d->isMixDirAndFile; +} - listDir.append(listFile); - return listDir; +bool DEnumerator::cancel() +{ + if (d->cancellable && !g_cancellable_is_cancelled(d->cancellable)) + g_cancellable_cancel(d->cancellable); + d->ftsCanceled = true; + return true; } -void DLocalEnumeratorPrivate::initAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +bool DEnumerator::hasNext() const { - InitAsyncOp *data = static_cast(userData); - if (!data) - return; + if (!d->inited) + d->init(); - if (!data->me) { - freeInitAsyncOp(data); - return; + if (d->stackEnumerator.isEmpty()) + return false; + + // sub dir enumerator + if (d->enumSubDir && d->dfileInfoNext && d->dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsDir).toBool()) { + bool showDir = true; + if (d->dfileInfoNext->attribute(DFileInfo::AttributeID::kStandardIsSymlink).toBool()) { + // is symlink, need enumSymlink + showDir = d->enumLinks; + } + if (showDir) + d->init(d->nextUrl); } + if (d->stackEnumerator.isEmpty()) + return false; - data->me->inited = true; + GFileEnumerator *enumerator = d->stackEnumerator.top(); - GFile *gfile = (GFile *)(sourceObject); - if (!gfile) { - data->me->error.setCode(DFMIOErrorCode(DFM_IO_ERROR_NOT_FOUND)); - freeInitAsyncOp(data); - return; - } + GFileInfo *gfileInfo = nullptr; + GFile *gfile = nullptr; g_autoptr(GError) gerror = nullptr; - GFileEnumerator *genumerator = g_file_enumerate_children_finish(gfile, res, &gerror); - if (gerror) - data->me->setErrorFromGError(gerror); - if (data->callback) - data->callback(genumerator, data->userData); - - if (genumerator) - data->me->stackEnumerator.push_back(genumerator); + d->checkAndResetCancel(); + bool hasNext = g_file_enumerator_iterate(enumerator, &gfileInfo, &gfile, d->cancellable, &gerror); + if (hasNext) { + if (!gfileInfo || !gfile) { + GFileEnumerator *enumeratorPop = d->stackEnumerator.pop(); + g_object_unref(enumeratorPop); + return this->hasNext(); + } - freeInitAsyncOp(data); -} + g_autofree gchar *path = g_file_get_path(gfile); + if (path) { + d->nextUrl = QUrl::fromLocalFile(QString::fromLocal8Bit(path)); + } else { + g_autofree gchar *uri = g_file_get_uri(gfile); + d->nextUrl = QUrl(QString::fromLocal8Bit(uri)); + } + d->dfileInfoNext = DLocalHelper::createFileInfoByUri(d->nextUrl, g_file_info_dup(gfileInfo), FILE_DEFAULT_ATTRIBUTES, + d->enumLinks ? DFileInfo::FileQueryInfoFlags::kTypeNone : DFileInfo::FileQueryInfoFlags::kTypeNoFollowSymlinks); -void DLocalEnumeratorPrivate::freeInitAsyncOp(DLocalEnumeratorPrivate::InitAsyncOp *op) -{ - op->callback = nullptr; - op->userData = nullptr; - op->me = nullptr; - g_free(op); -} + if (!d->checkFilter()) + return this->hasNext(); -DLocalEnumerator::DLocalEnumerator(const QUrl &uri, const QStringList &nameFilters, DirFilters filters, IteratorFlags flags) - : DEnumerator(uri, nameFilters, filters, flags), d(new DLocalEnumeratorPrivate(this)) -{ - registerInit(std::bind(&DLocalEnumerator::init, this)); - registerInitAsync(bind_field(this, &DLocalEnumerator::initAsync)); - registerCancel(std::bind(&DLocalEnumerator::cancel, this)); - registerFileInfoList(std::bind(&DLocalEnumerator::fileInfoList, this)); - registerSetArguments(bind_field(this, &DLocalEnumerator::setArguments)); - registerSortFileInfoList(std::bind(&DLocalEnumerator::sortFileInfoList, this)); - registerHasNext(std::bind(&DLocalEnumerator::hasNext, this)); - registerNext(std::bind(&DLocalEnumerator::next, this)); - registerFileInfo(std::bind(&DLocalEnumerator::fileInfo, this)); - registerFileCount(std::bind(&DLocalEnumerator::fileCount, this)); - registerLastError(std::bind(&DLocalEnumerator::lastError, this)); + return true; + } - d->nameFilters = nameFilters; - d->dirFilters = filters; - d->iteratorFlags = flags; + if (gerror) + d->setErrorFromGError(gerror); - d->enumSubDir = d->iteratorFlags & DEnumerator::IteratorFlag::kSubdirectories; - d->enumLinks = d->iteratorFlags & DEnumerator::IteratorFlag::kFollowSymlinks; + return false; } -DLocalEnumerator::~DLocalEnumerator() +QUrl DEnumerator::next() const { + return d->nextUrl; } -bool DLocalEnumerator::init() +QSharedPointer DEnumerator::fileInfo() const { - return d->init(); + return d->dfileInfoNext; } -void DLocalEnumerator::initAsync(int ioPriority, DEnumerator::InitCallbackFunc func, void *userData) +quint64 DEnumerator::fileCount() { - d->initAsync(ioPriority, func, userData); -} + if (!d->inited) + d->init(); -bool DLocalEnumerator::cancel() -{ - return d->cancel(); -} + quint64 count = 0; -bool DLocalEnumerator::hasNext() const -{ - return d->hasNext(); -} + while (hasNext()) + ++count; -QUrl DLocalEnumerator::next() const -{ - return d->next(); + return count; } -QSharedPointer DLocalEnumerator::fileInfo() const +QList> DEnumerator::fileInfoList() { - return d->fileInfo(); -} + g_autoptr(GFileEnumerator) enumerator = nullptr; + g_autoptr(GError) gerror = nullptr; -quint64 DLocalEnumerator::fileCount() -{ - return d->fileCount(); -} + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); -DFMIOError DLocalEnumerator::lastError() const -{ - return d->lastError(); -} + d->checkAndResetCancel(); + enumerator = g_file_enumerate_children(gfile, + FILE_DEFAULT_ATTRIBUTES, + d->enumLinks ? G_FILE_QUERY_INFO_NONE : G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + d->cancellable, + &gerror); -QList> DLocalEnumerator::fileInfoList() -{ - return d->fileInfoList(); + if (nullptr == enumerator) { + if (gerror) { + d->setErrorFromGError(gerror); + } + return d->infoList; + } + + GFile *gfileIn = nullptr; + GFileInfo *gfileInfoIn = nullptr; + + d->checkAndResetCancel(); + while (g_file_enumerator_iterate(enumerator, &gfileInfoIn, &gfileIn, d->cancellable, &gerror)) { + if (!gfileInfoIn) + break; + + g_autofree gchar *uri = g_file_get_uri(gfileIn); + const QUrl &url = QUrl(QString::fromLocal8Bit(uri)); + QSharedPointer info = DLocalHelper::createFileInfoByUri(url); + if (info) + d->infoList.append(info); + + if (gerror) { + d->setErrorFromGError(gerror); + gerror = nullptr; + } + } + + if (gerror) + d->setErrorFromGError(gerror); + + return d->infoList; } -QList> DLocalEnumerator::sortFileInfoList() +QList> DEnumerator::sortFileInfoList() { - return d->sortFileInfoList(); + FTS *fts = d->openDirByfts(); + if (!fts) + return {}; + + QList> listFile; + QList> listDir; + QSet hideList; + const QUrl &urlHidden = QUrl::fromLocalFile(d->uri.path() + "/.hidden"); + hideList = DLocalHelper::hideListFromUrl(urlHidden); + while (1) { + FTSENT *ent = fts_read(fts); + if (ent == nullptr) { + break; + } + + if (d->ftsCanceled) + break; + + unsigned short flag = ent->fts_info; + + if (QString(ent->fts_path) == d->uri.path() || flag == FTS_DP) + continue; + + d->insertSortFileInfoList(listFile, listDir, ent, fts, hideList); + } + + fts_close(fts); + fts = nullptr; + + if (d->isMixDirAndFile) + return listFile; + + listDir.append(listFile); + return listDir; } -void DLocalEnumerator::setArguments(const QMap &argus) +DFMIOError DEnumerator::lastError() const { - return d->setArguments(argus); + return d->error; } diff --git a/src/dfm-io/dfm-io/src/local/dlocalfile.cpp b/src/dfm-io/dfm-io/dfile.cpp similarity index 58% rename from src/dfm-io/dfm-io/src/local/dlocalfile.cpp rename to src/dfm-io/dfm-io/dfile.cpp index ad6fdab..4f5f450 100644 --- a/src/dfm-io/dfm-io/src/local/dlocalfile.cpp +++ b/src/dfm-io/dfm-io/dfile.cpp @@ -2,31 +2,191 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "local/dlocalfile.h" -#include "local/dlocalfile_p.h" -#include "local/dlocalhelper.h" -#include "core/dfilefuture.h" +#include "private/dfile_p.h" +#include "utils/dlocalhelper.h" -#include "core/dfile_p.h" +#include -#include +#include #include #include +#include + #include USING_IO_NAMESPACE -DLocalFilePrivate::DLocalFilePrivate(DLocalFile *q) +/************************************************ + * DFilePrivate + ***********************************************/ + +DFilePrivate::DFilePrivate(DFile *q) : q(q) { } -DLocalFilePrivate::~DLocalFilePrivate() +void DFilePrivate::setError(DFMIOError error) +{ + this->error = error; +} + +void DFilePrivate::setErrorFromGError(GError *gerror) +{ + if (!gerror) + return; + error.setCode(DFMIOErrorCode(gerror->code)); + if (gerror->domain != G_IO_ERROR || gerror->message) { + error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); + error.setMessage(gerror->message); + } +} + +void DFilePrivate::checkAndResetCancel() +{ + if (cancellable) { + g_object_unref(cancellable); + cancellable = nullptr; + } + cancellable = g_cancellable_new(); +} + +GInputStream *DFilePrivate::inputStream() +{ + if (iStream) + return iStream; + + if (ioStream) { + GInputStream *inputStream = g_io_stream_get_input_stream(ioStream); + if (inputStream) + return inputStream; + } + + return nullptr; +} + +GOutputStream *DFilePrivate::outputStream() +{ + if (oStream) + return oStream; + + if (ioStream) { + GOutputStream *outputStream = g_io_stream_get_output_stream(ioStream); + if (outputStream) + return outputStream; + } + + return nullptr; +} + +DFile::Permissions DFilePrivate::permissionsFromGFileInfo(GFileInfo *gfileinfo) +{ + DFile::Permissions retValue = DFile::Permission::kNoPermission; + if (!gfileinfo) + return retValue; + + const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); + const quint32 &stMode = g_file_info_get_attribute_uint32(gfileinfo, attributeKey.c_str()); + if (!stMode) + return retValue; + + if ((stMode & S_IXUSR) == S_IXUSR) { + retValue |= DFile::Permission::kExeOwner; + retValue |= DFile::Permission::kExeUser; + } + if ((stMode & S_IWUSR) == S_IWUSR) { + retValue |= DFile::Permission::kWriteOwner; + retValue |= DFile::Permission::kWriteUser; + } + if ((stMode & S_IRUSR) == S_IRUSR) { + retValue |= DFile::Permission::kReadOwner; + retValue |= DFile::Permission::kReadUser; + } + + if ((stMode & S_IXGRP) == S_IXGRP) + retValue |= DFile::Permission::kExeGroup; + if ((stMode & S_IWGRP) == S_IWGRP) + retValue |= DFile::Permission::kWriteGroup; + if ((stMode & S_IRGRP) == S_IRGRP) + retValue |= DFile::Permission::kReadGroup; + + if ((stMode & S_IXOTH) == S_IXOTH) + retValue |= DFile::Permission::kExeOther; + if ((stMode & S_IWOTH) == S_IWOTH) + retValue |= DFile::Permission::kWriteOther; + if ((stMode & S_IROTH) == S_IROTH) + retValue |= DFile::Permission::kReadOther; + + return retValue; +} + +bool DFilePrivate::checkOpenFlags(DFile::OpenFlags *modeIn) +{ + DFile::OpenFlags &mode = *modeIn; + + if (mode & DFile::OpenFlag::kNewOnly) { + if (q->exists()) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); + return false; + } + } + if (mode & DFile::OpenFlag::kExistingOnly) { + if (!q->exists()) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); + return false; + } + } + if ((mode & DFile::OpenFlag::kNewOnly) && (mode & DFile::OpenFlag::kExistingOnly)) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); + return false; + } + + // WriteOnly implies Truncate when ReadOnly, Append, and NewOnly are not set. + if ((mode & DFile::OpenFlag::kWriteOnly) && !(mode & (DFile::OpenFlag::kReadOnly | DFile::OpenFlag::kAppend | DFile::OpenFlag::kNewOnly))) + mode |= DFile::OpenFlag::kTruncate; + + if (mode & (DFile::OpenFlag::kAppend | DFile::OpenFlag::kNewOnly)) + mode |= DFile::OpenFlag::kWriteOnly; + + if ((mode & (DFile::OpenFlag::kReadOnly | DFile::OpenFlag::kWriteOnly)) == 0) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); + return false; + } + if ((mode & DFile::OpenFlag::kExistingOnly) && !(mode & (DFile::OpenFlag::kReadOnly | DFile::OpenFlag::kWriteOnly))) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); + return false; + } + + return true; +} + +quint32 DFilePrivate::buildPermissions(DFile::Permissions permission) { + quint32 stMode = 0000; + if (permission.testFlag(DFile::Permission::kExeOwner) | permission.testFlag(DFile::Permission::kExeUser)) + stMode |= S_IXUSR; + if (permission.testFlag(DFile::Permission::kWriteOwner) | permission.testFlag(DFile::Permission::kWriteUser)) + stMode |= S_IWUSR; + if (permission.testFlag(DFile::Permission::kReadOwner) | permission.testFlag(DFile::Permission::kReadUser)) + stMode |= S_IRUSR; + + if (permission.testFlag(DFile::Permission::kExeGroup)) + stMode |= S_IXGRP; + if (permission.testFlag(DFile::Permission::kWriteGroup)) + stMode |= S_IWGRP; + if (permission.testFlag(DFile::Permission::kReadGroup)) + stMode |= S_IRGRP; + + if (permission.testFlag(DFile::Permission::kExeOther)) + stMode |= S_IXOTH; + if (permission.testFlag(DFile::Permission::kWriteOther)) + stMode |= S_IWOTH; + if (permission.testFlag(DFile::Permission::kReadOther)) + stMode |= S_IROTH; + return stMode; } -bool DLocalFilePrivate::open(DFile::OpenFlags mode) +bool DFilePrivate::doOpen(DFile::OpenFlags mode) { if (q->isOpen()) { error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); @@ -45,7 +205,7 @@ bool DLocalFilePrivate::open(DFile::OpenFlags mode) checkAndResetCancel(); if (mode & DFile::OpenFlag::kReadOnly && !(mode & DFile::OpenFlag::kWriteOnly)) { - if (!exists()) { + if (!q->exists()) { return false; } iStream = (GInputStream *)g_file_read(gfile, cancellable, &gerror); @@ -123,7 +283,7 @@ bool DLocalFilePrivate::open(DFile::OpenFlags mode) } } -bool DLocalFilePrivate::close() +bool DFilePrivate::doClose() { if (iStream) { if (!g_input_stream_is_closed(iStream)) @@ -151,57 +311,7 @@ bool DLocalFilePrivate::close() return true; } -qint64 DLocalFilePrivate::read(char *data, qint64 maxSize) -{ - GInputStream *inputStream = this->inputStream(); - if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - return -1; - } - - g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - gssize read = g_input_stream_read(inputStream, - data, - static_cast(maxSize), - cancellable, - &gerror); - - if (gerror) { - setErrorFromGError(gerror); - return -1; - } - - return read; -} - -QByteArray DLocalFilePrivate::read(qint64 maxSize) -{ - GInputStream *inputStream = this->inputStream(); - if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - return QByteArray(); - } - - char data[maxSize + 1]; - memset(&data, 0, maxSize + 1); - - g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - g_input_stream_read(inputStream, - data, - static_cast(maxSize), - cancellable, - &gerror); - if (gerror) { - setErrorFromGError(gerror); - return QByteArray(); - } - - return QByteArray(data); -} - -QByteArray DLocalFilePrivate::readAll() +QByteArray DFilePrivate::doReadAll() { GInputStream *inputStream = this->inputStream(); if (!inputStream) { @@ -217,8 +327,8 @@ QByteArray DLocalFilePrivate::readAll() while (true) { gsize bytesRead; - char data[size + 1]; - memset(data, 0, size + 1); + char data[size]; + memset(data, 0, size); checkAndResetCancel(); gboolean read = g_input_stream_read_all(inputStream, @@ -243,89 +353,85 @@ QByteArray DLocalFilePrivate::readAll() return dataRet; } -void DLocalFilePrivate::readAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +qint64 DFilePrivate::doWrite(const char *data, qint64 maxSize) { - ReadAsyncOp *data = static_cast(userData); - GInputStream *stream = (GInputStream *)(sourceObject); + GOutputStream *outputStream = this->outputStream(); + if (!outputStream) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + return -1; + } + g_autoptr(GError) gerror = nullptr; - gssize size = g_input_stream_read_finish(stream, res, &gerror); - if (data->callback) - data->callback(size, data->userData); + checkAndResetCancel(); + gssize write = g_output_stream_write(outputStream, + data, + static_cast(maxSize), + cancellable, + &gerror); + if (gerror) + setErrorFromGError(gerror); - data->callback = nullptr; - data->userData = nullptr; - g_free(data); + return write; } -void DLocalFilePrivate::readAsync(char *data, qint64 maxSize, int ioPriority, DFile::ReadCallbackFunc func, void *userData) +qint64 DFilePrivate::doWrite(const char *data) { - GInputStream *inputStream = this->inputStream(); - if (!inputStream) { + GOutputStream *outputStream = this->outputStream(); + if (!outputStream) { error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - if (func) - func(-1, userData); - return; } - ReadAsyncOp *dataOp = g_new0(ReadAsyncOp, 1); - dataOp->callback = func; - dataOp->userData = userData; - + gsize bytes_write; + g_autoptr(GError) gerror = nullptr; checkAndResetCancel(); - g_input_stream_read_async(inputStream, - data, - static_cast(maxSize), - ioPriority, - cancellable, - readAsyncCallback, - dataOp); + gssize write = g_output_stream_write_all(outputStream, + data, + strlen(data), + &bytes_write, + cancellable, + &gerror); + if (gerror) + setErrorFromGError(gerror); + + return write; } -void DLocalFilePrivate::readQAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +qint64 DFilePrivate::doWrite(const QByteArray &data) { - ReadQAsyncOp *data = static_cast(userData); + return doWrite(data.data(), data.length()); +} + +void DFilePrivate::readAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + ReadAsyncOp *data = static_cast(userData); GInputStream *stream = (GInputStream *)(sourceObject); g_autoptr(GError) gerror = nullptr; gssize size = g_input_stream_read_finish(stream, res, &gerror); - QByteArray dataRet = size >= 0 ? QByteArray(data->data) : QByteArray(); if (data->callback) - data->callback(dataRet, data->userData); + data->callback(size, data->userData); data->callback = nullptr; data->userData = nullptr; - data->data = nullptr; g_free(data); } -void DLocalFilePrivate::readQAsync(qint64 maxSize, int ioPriority, DFile::ReadQCallbackFunc func, void *userData) +void DFilePrivate::readQAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { - GInputStream *inputStream = this->inputStream(); - if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - if (func) - func(QByteArray(), userData); - return; - } - - char data[maxSize + 1]; - memset(&data, 0, maxSize + 1); - - ReadQAsyncOp *dataOp = g_new0(ReadQAsyncOp, 1); - dataOp->callback = func; - dataOp->userData = userData; - dataOp->data = data; + ReadQAsyncOp *data = static_cast(userData); + GInputStream *stream = (GInputStream *)(sourceObject); + g_autoptr(GError) gerror = nullptr; + gssize size = g_input_stream_read_finish(stream, res, &gerror); + QByteArray dataRet = size >= 0 ? QByteArray(data->data) : QByteArray(); + if (data->callback) + data->callback(dataRet, data->userData); - checkAndResetCancel(); - g_input_stream_read_async(inputStream, - data, - static_cast(maxSize), - ioPriority, - cancellable, - readQAsyncCallback, - dataOp); + data->callback = nullptr; + data->userData = nullptr; + data->data = nullptr; + g_free(data); } -void DLocalFilePrivate::readAllAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::readAllAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { ReadAllAsyncOp *data = static_cast(userData); GInputStream *stream = (GInputStream *)(sourceObject); @@ -345,7 +451,7 @@ void DLocalFilePrivate::readAllAsyncCallback(GObject *sourceObject, GAsyncResult if (data->me) { data->me->readAllAsyncRet.append(data->data); - data->me->readAllAsync(data->ioPriority, data->callback, data->userData); + data->me->q->readAllAsync(data->ioPriority, data->callback, data->userData); } data->callback = nullptr; @@ -356,87 +462,7 @@ void DLocalFilePrivate::readAllAsyncCallback(GObject *sourceObject, GAsyncResult g_free(data); } -void DLocalFilePrivate::readAllAsync(int ioPriority, DFile::ReadAllCallbackFunc func, void *userData) -{ - GInputStream *inputStream = this->inputStream(); - if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - if (func) - func(QByteArray(), userData); - return; - } - - const gsize size = 8192; - - char data[size + 1]; - memset(data, 0, size + 1); - - ReadAllAsyncOp *dataOp = g_new0(ReadAllAsyncOp, 1); - dataOp->callback = func; - dataOp->userData = userData; - dataOp->data = data; - dataOp->ioPriority = ioPriority; - dataOp->me = this; - - checkAndResetCancel(); - g_input_stream_read_all_async(inputStream, - data, - size, - ioPriority, - cancellable, - readAllAsyncCallback, - dataOp); -} - -qint64 DLocalFilePrivate::write(const char *data, qint64 maxSize) -{ - GOutputStream *outputStream = this->outputStream(); - if (!outputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - return -1; - } - - g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - gssize write = g_output_stream_write(outputStream, - data, - static_cast(maxSize), - cancellable, - &gerror); - if (gerror) - setErrorFromGError(gerror); - - return write; -} - -qint64 DLocalFilePrivate::write(const char *data) -{ - GOutputStream *outputStream = this->outputStream(); - if (!outputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - } - - gsize bytes_write; - g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - gssize write = g_output_stream_write_all(outputStream, - data, - strlen(data), - &bytes_write, - cancellable, - &gerror); - if (gerror) - setErrorFromGError(gerror); - - return write; -} - -qint64 DLocalFilePrivate::write(const QByteArray &data) -{ - return write(data.data(), data.length()); -} - -void DLocalFilePrivate::writeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::writeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { WriteAsyncOp *data = static_cast(userData); GOutputStream *stream = (GOutputStream *)(sourceObject); @@ -450,13 +476,13 @@ void DLocalFilePrivate::writeAsyncCallback(GObject *sourceObject, GAsyncResult * g_free(data); } -void DLocalFilePrivate::permissionsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::permissionsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { NormalFutureAsyncOp *data = static_cast(userData); if (!data) return; - QPointer me = data->me; + QPointer me = data->me; if (!me) return; DFileFuture *future = data->future; @@ -479,13 +505,13 @@ void DLocalFilePrivate::permissionsAsyncCallback(GObject *sourceObject, GAsyncRe g_free(data); } -void DLocalFilePrivate::existsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::existsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { NormalFutureAsyncOp *data = static_cast(userData); if (!data) return; - QPointer me = data->me; + QPointer me = data->me; if (!me) return; DFileFuture *future = data->future; @@ -511,13 +537,13 @@ void DLocalFilePrivate::existsAsyncCallback(GObject *sourceObject, GAsyncResult g_free(data); } -void DLocalFilePrivate::sizeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::sizeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { NormalFutureAsyncOp *data = static_cast(userData); if (!data) return; - QPointer me = data->me; + QPointer me = data->me; if (!me) return; DFileFuture *future = data->future; @@ -543,10 +569,10 @@ void DLocalFilePrivate::sizeAsyncCallback(GObject *sourceObject, GAsyncResult *r g_free(data); } -void DLocalFilePrivate::flushAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::flushAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { NormalFutureAsyncOp *data = static_cast(userData); - QPointer me = data->me; + QPointer me = data->me; DFileFuture *future = data->future; g_autoptr(GOutputStream) stream = G_OUTPUT_STREAM(sourceObject); g_autoptr(GError) gerror = nullptr; @@ -565,10 +591,10 @@ void DLocalFilePrivate::flushAsyncCallback(GObject *sourceObject, GAsyncResult * g_free(data); } -void DLocalFilePrivate::writeAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::writeAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { NormalFutureAsyncOp *data = static_cast(userData); - QPointer me = data->me; + QPointer me = data->me; DFileFuture *future = data->future; GOutputStream *stream = (GOutputStream *)(sourceObject); g_autoptr(GError) gerror = nullptr; @@ -588,11 +614,11 @@ void DLocalFilePrivate::writeAsyncFutureCallback(GObject *sourceObject, GAsyncRe g_free(data); } -void DLocalFilePrivate::readAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFilePrivate::readAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { ReadAllAsyncFutureOp *data = static_cast(userData); GInputStream *stream = (GInputStream *)(sourceObject); - QPointer me = data->me; + QPointer me = data->me; DFileFuture *future = data->future; g_autoptr(GError) gerror = nullptr; @@ -611,61 +637,147 @@ void DLocalFilePrivate::readAsyncFutureCallback(GObject *sourceObject, GAsyncRes g_free(data); } -void DLocalFilePrivate::checkAndResetCancel() +/************************************************ + * DFile + ***********************************************/ + +DFile::DFile(const QUrl &uri) + : d(new DFilePrivate(this)) { - if (cancellable) { - g_object_unref(cancellable); - cancellable = nullptr; + d->uri = uri; +} + +DFile::DFile(const QString &path) + : d(new DFilePrivate(this)) +{ + d->uri = QUrl::fromLocalFile(path); +} + +DFile::~DFile() +{ + close(); +} + +QUrl DFile::uri() const +{ + return d->uri; +} + +bool DFile::isOpen() const +{ + return d->isOpen; +} + +qint64 DFile::size() const +{ + const QUrl &uri = d->uri; + g_autoptr(GFile) gfile = g_file_new_for_uri(uri.toString().toStdString().c_str()); + + g_autoptr(GError) gerror = nullptr; + d->checkAndResetCancel(); + g_autoptr(GFileInfo) fileInfo = g_file_query_info(gfile, G_FILE_ATTRIBUTE_STANDARD_SIZE, G_FILE_QUERY_INFO_NONE, d->cancellable, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + + if (fileInfo) { + goffset size = g_file_info_get_size(fileInfo); + return qint64(size); } - cancellable = g_cancellable_new(); + + return -1; } -void DLocalFilePrivate::writeAsync(const char *data, qint64 maxSize, int ioPriority, DFile::WriteCallbackFunc func, void *userData) +bool DFile::exists() const { - GOutputStream *outputStream = this->outputStream(); - if (!outputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - if (func) - func(-1, userData); - return; + const QUrl &uri = d->uri; + g_autoptr(GFile) gfile = g_file_new_for_uri(uri.toString().toLocal8Bit().data()); + d->checkAndResetCancel(); + return g_file_query_file_type(gfile, G_FILE_QUERY_INFO_NONE, d->cancellable) != G_FILE_TYPE_UNKNOWN; +} + +qint64 DFile::pos() const +{ + GInputStream *inputStream = d->inputStream(); + if (!inputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + return -1; } - WriteAsyncOp *dataOp = g_new0(WriteAsyncOp, 1); - dataOp->callback = func; - dataOp->userData = userData; + // seems g_seekable_can_seek only support local file, survey after. todo lanxs + gboolean canSeek = G_IS_SEEKABLE(inputStream) /*&& g_seekable_can_seek(G_SEEKABLE(inputStream))*/; + if (!canSeek) { + return false; + } - checkAndResetCancel(); - g_output_stream_write_async(outputStream, - data, - static_cast(maxSize), - ioPriority, - cancellable, - writeAsyncCallback, - dataOp); + GSeekable *seekable = G_SEEKABLE(inputStream); + if (!seekable) { + return false; + } + + goffset pos = g_seekable_tell(seekable); + + return qint64(pos); } -void DLocalFilePrivate::writeAllAsync(const char *data, int ioPriority, DFile::WriteAllCallbackFunc func, void *userData) +DFile::Permissions DFile::permissions() const { - writeAsync(data, strlen(data), ioPriority, func, userData); + DFile::Permissions retValue = DFile::Permission::kNoPermission; + + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); + + g_autoptr(GError) gerror = nullptr; + d->checkAndResetCancel(); + const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); + if (attributeKey.empty()) + return retValue; + g_autoptr(GFileInfo) fileInfo = g_file_query_info(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, d->cancellable, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + + if (!fileInfo) + return retValue; + + return d->permissionsFromGFileInfo(fileInfo); } -void DLocalFilePrivate::writeQAsync(const QByteArray &byteArray, int ioPriority, DFile::WriteQCallbackFunc func, void *userData) +DFMIOError DFile::lastError() const { - writeAsync(byteArray.data(), byteArray.length(), ioPriority, func, userData); + return d->error; +} + +bool DFile::open(DFile::OpenFlags mode) +{ + d->isOpen = d->doOpen(mode); + + return d->isOpen; } -bool DLocalFilePrivate::cancel() +bool DFile::close() { - if (cancellable && !g_cancellable_is_cancelled(cancellable)) - g_cancellable_cancel(cancellable); + if (d->isOpen) { + if (d->doClose()) + d->isOpen = false; + else + return false; + } + return true; } -bool DLocalFilePrivate::seek(qint64 pos, DFile::SeekType type) +bool DFile::cancel() { - GInputStream *inputStream = this->inputStream(); + if (d->cancellable && !g_cancellable_is_cancelled(d->cancellable)) + g_cancellable_cancel(d->cancellable); + return true; +} + +bool DFile::seek(qint64 pos, DFile::SeekType type) const +{ + GInputStream *inputStream = d->inputStream(); if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); return -1; } @@ -695,196 +807,267 @@ bool DLocalFilePrivate::seek(qint64 pos, DFile::SeekType type) break; } - checkAndResetCancel(); - ret = g_seekable_seek(seekable, pos, gtype, cancellable, &gerror); + d->checkAndResetCancel(); + ret = g_seekable_seek(seekable, pos, gtype, d->cancellable, &gerror); if (gerror) { - setErrorFromGError(gerror); + d->setErrorFromGError(gerror); g_error_free(gerror); } return ret; } -qint64 DLocalFilePrivate::pos() +bool DFile::flush() { - GInputStream *inputStream = this->inputStream(); - if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - return -1; - } - - // seems g_seekable_can_seek only support local file, survey after. todo lanxs - gboolean canSeek = G_IS_SEEKABLE(inputStream) /*&& g_seekable_can_seek(G_SEEKABLE(inputStream))*/; - if (!canSeek) { + GOutputStream *outputStream = d->outputStream(); + if (!outputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); return false; } - GSeekable *seekable = G_SEEKABLE(inputStream); - if (!seekable) { - return false; - } + g_autoptr(GError) gerror = nullptr; + d->checkAndResetCancel(); + gboolean ret = g_output_stream_flush(outputStream, d->cancellable, &gerror); - goffset pos = g_seekable_tell(seekable); + if (gerror) + d->setErrorFromGError(gerror); - return qint64(pos); + return ret; } -bool DLocalFilePrivate::flush() +bool DFile::setPermissions(Permissions permission) { - GOutputStream *outputStream = this->outputStream(); - if (!outputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); - return false; - } + quint32 stMode = d->buildPermissions(permission); + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - gboolean ret = g_output_stream_flush(outputStream, cancellable, &gerror); - + d->checkAndResetCancel(); + const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); + bool succ = g_file_set_attribute_uint32(gfile, attributeKey.c_str(), stMode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, d->cancellable, &gerror); if (gerror) - setErrorFromGError(gerror); - - return ret; + d->setErrorFromGError(gerror); + return succ; } -qint64 DLocalFilePrivate::size() +qint64 DFile::read(char *data, qint64 maxSize) { - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = g_file_new_for_uri(uri.toString().toStdString().c_str()); + GInputStream *inputStream = d->inputStream(); + if (!inputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + return -1; + } g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - g_autoptr(GFileInfo) fileInfo = g_file_query_info(gfile, G_FILE_ATTRIBUTE_STANDARD_SIZE, G_FILE_QUERY_INFO_NONE, cancellable, &gerror); - - if (gerror) - setErrorFromGError(gerror); + d->checkAndResetCancel(); + gssize read = g_input_stream_read(inputStream, + data, + static_cast(maxSize), + d->cancellable, + &gerror); - if (fileInfo) { - goffset size = g_file_info_get_size(fileInfo); - return qint64(size); + if (gerror) { + d->setErrorFromGError(gerror); + return -1; } - return -1; + return read; } -bool DLocalFilePrivate::exists() +QByteArray DFile::read(qint64 maxSize) { - const QUrl &&uri = q->uri(); - g_autoptr(GFile) gfile = g_file_new_for_uri(uri.toString().toLocal8Bit().data()); - checkAndResetCancel(); - return g_file_query_file_type(gfile, G_FILE_QUERY_INFO_NONE, cancellable) != G_FILE_TYPE_UNKNOWN; -} + GInputStream *inputStream = d->inputStream(); + if (!inputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + return QByteArray(); + } -DFile::Permissions DLocalFilePrivate::permissions() -{ - DFile::Permissions retValue = DFile::Permission::kNoPermission; - - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); + char data[maxSize + 1]; + memset(&data, 0, maxSize + 1); g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); - if (attributeKey.empty()) - return retValue; - g_autoptr(GFileInfo) fileInfo = g_file_query_info(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, cancellable, &gerror); - - if (gerror) - setErrorFromGError(gerror); + d->checkAndResetCancel(); + g_input_stream_read(inputStream, + data, + static_cast(maxSize), + d->cancellable, + &gerror); + if (gerror) { + d->setErrorFromGError(gerror); + return QByteArray(); + } - if (!fileInfo) - return retValue; + return QByteArray(data); +} - return permissionsFromGFileInfo(fileInfo); +QByteArray DFile::readAll() +{ + bool innerOpen { false }; + if (!d->isOpen) { + if (!open(DFMIO::DFile::OpenFlag::kReadOnly)) + return QByteArray(); + innerOpen = true; + } + const auto &bytes { d->doReadAll() }; + if (innerOpen) + close(); + return bytes; } -bool DLocalFilePrivate::setPermissions(DFile::Permissions permission) +qint64 DFile::write(const char *data, qint64 len) { - quint32 stMode = buildPermissions(permission); + if (!d->isOpen) { + d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); + return -1; + } - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); - g_autoptr(GError) gerror = nullptr; - checkAndResetCancel(); - const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); - bool succ = g_file_set_attribute_uint32(gfile, attributeKey.c_str(), stMode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, &gerror); - if (gerror) - setErrorFromGError(gerror); - return succ; + return d->doWrite(data, len); } -quint32 DLocalFilePrivate::buildPermissions(DFile::Permissions permission) +qint64 DFile::write(const char *data) { - quint32 stMode = 0000; - if (permission.testFlag(DFile::Permission::kExeOwner) | permission.testFlag(DFile::Permission::kExeUser)) - stMode |= S_IXUSR; - if (permission.testFlag(DFile::Permission::kWriteOwner) | permission.testFlag(DFile::Permission::kWriteUser)) - stMode |= S_IWUSR; - if (permission.testFlag(DFile::Permission::kReadOwner) | permission.testFlag(DFile::Permission::kReadUser)) - stMode |= S_IRUSR; + if (!d->isOpen) { + d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); + return -1; + } - if (permission.testFlag(DFile::Permission::kExeGroup)) - stMode |= S_IXGRP; - if (permission.testFlag(DFile::Permission::kWriteGroup)) - stMode |= S_IWGRP; - if (permission.testFlag(DFile::Permission::kReadGroup)) - stMode |= S_IRGRP; + return d->doWrite(data); +} - if (permission.testFlag(DFile::Permission::kExeOther)) - stMode |= S_IXOTH; - if (permission.testFlag(DFile::Permission::kWriteOther)) - stMode |= S_IWOTH; - if (permission.testFlag(DFile::Permission::kReadOther)) - stMode |= S_IROTH; - return stMode; +qint64 DFile::write(const QByteArray &byteArray) +{ + if (!d->isOpen) { + d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); + return -1; + } + + return d->doWrite(byteArray); } -DFile::Permissions DLocalFilePrivate::permissionsFromGFileInfo(GFileInfo *gfileinfo) +void DFile::readAsync(char *data, qint64 maxSize, int ioPriority, DFile::ReadCallbackFunc func, void *userData) { - DFile::Permissions retValue = DFile::Permission::kNoPermission; - if (!gfileinfo) - return retValue; + GInputStream *inputStream = d->inputStream(); + if (!inputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + if (func) + func(-1, userData); + return; + } - const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); - const quint32 &stMode = g_file_info_get_attribute_uint32(gfileinfo, attributeKey.c_str()); - if (!stMode) - return retValue; + DFilePrivate::ReadAsyncOp *dataOp = g_new0(DFilePrivate::ReadAsyncOp, 1); + dataOp->callback = func; + dataOp->userData = userData; - if ((stMode & S_IXUSR) == S_IXUSR) { - retValue |= DFile::Permission::kExeOwner; - retValue |= DFile::Permission::kExeUser; + d->checkAndResetCancel(); + g_input_stream_read_async(inputStream, + data, + static_cast(maxSize), + ioPriority, + d->cancellable, + DFilePrivate::readAsyncCallback, + dataOp); +} + +void DFile::readQAsync(qint64 maxSize, int ioPriority, DFile::ReadQCallbackFunc func, void *userData) +{ + GInputStream *inputStream = d->inputStream(); + if (!inputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + if (func) + func(QByteArray(), userData); + return; } - if ((stMode & S_IWUSR) == S_IWUSR) { - retValue |= DFile::Permission::kWriteOwner; - retValue |= DFile::Permission::kWriteUser; + + char data[maxSize + 1]; + memset(&data, 0, maxSize + 1); + + DFilePrivate::ReadQAsyncOp *dataOp = g_new0(DFilePrivate::ReadQAsyncOp, 1); + dataOp->callback = func; + dataOp->userData = userData; + dataOp->data = data; + + d->checkAndResetCancel(); + g_input_stream_read_async(inputStream, + data, + static_cast(maxSize), + ioPriority, + d->cancellable, + DFilePrivate::readQAsyncCallback, + dataOp); +} + +void DFile::readAllAsync(int ioPriority, DFile::ReadAllCallbackFunc func, void *userData) +{ + GInputStream *inputStream = d->inputStream(); + if (!inputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + if (func) + func(QByteArray(), userData); + return; } - if ((stMode & S_IRUSR) == S_IRUSR) { - retValue |= DFile::Permission::kReadOwner; - retValue |= DFile::Permission::kReadUser; + + const gsize size = 8192; + + char data[size + 1]; + memset(data, 0, size + 1); + + DFilePrivate::ReadAllAsyncOp *dataOp = g_new0(DFilePrivate::ReadAllAsyncOp, 1); + dataOp->callback = func; + dataOp->userData = userData; + dataOp->data = data; + dataOp->ioPriority = ioPriority; + dataOp->me = d.data(); + + d->checkAndResetCancel(); + g_input_stream_read_all_async(inputStream, + data, + size, + ioPriority, + d->cancellable, + DFilePrivate::readAllAsyncCallback, + dataOp); +} + +void DFile::writeAsync(const char *data, qint64 maxSize, int ioPriority, DFile::WriteCallbackFunc func, void *userData) +{ + GOutputStream *outputStream = d->outputStream(); + if (!outputStream) { + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + if (func) + func(-1, userData); + return; } - if ((stMode & S_IXGRP) == S_IXGRP) - retValue |= DFile::Permission::kExeGroup; - if ((stMode & S_IWGRP) == S_IWGRP) - retValue |= DFile::Permission::kWriteGroup; - if ((stMode & S_IRGRP) == S_IRGRP) - retValue |= DFile::Permission::kReadGroup; + DFilePrivate::WriteAsyncOp *dataOp = g_new0(DFilePrivate::WriteAsyncOp, 1); + dataOp->callback = func; + dataOp->userData = userData; - if ((stMode & S_IXOTH) == S_IXOTH) - retValue |= DFile::Permission::kExeOther; - if ((stMode & S_IWOTH) == S_IWOTH) - retValue |= DFile::Permission::kWriteOther; - if ((stMode & S_IROTH) == S_IROTH) - retValue |= DFile::Permission::kReadOther; + d->checkAndResetCancel(); + g_output_stream_write_async(outputStream, + data, + static_cast(maxSize), + ioPriority, + d->cancellable, + DFilePrivate::writeAsyncCallback, + dataOp); +} - return retValue; +void DFile::writeAllAsync(const char *data, int ioPriority, DFile::WriteAllCallbackFunc func, void *userData) +{ + writeAsync(data, strlen(data), ioPriority, func, userData); } -DFileFuture *DLocalFilePrivate::openAsync(DFile::OpenFlags mode, int ioPriority, QObject *parent) +void DFile::writeQAsync(const QByteArray &byteArray, int ioPriority, DFile::WriteQCallbackFunc func, void *userData) +{ + writeAsync(byteArray.data(), byteArray.length(), ioPriority, func, userData); +} + +DFileFuture *DFile::openAsync(OpenFlags mode, int ioPriority, QObject *parent) { Q_UNUSED(ioPriority); DFileFuture *future = new DFileFuture(parent); - QPointer me = this; + QPointer me = d.data(); QtConcurrent::run([&]() { this->open(mode); if (!me) @@ -894,13 +1077,13 @@ DFileFuture *DLocalFilePrivate::openAsync(DFile::OpenFlags mode, int ioPriority, return future; } -DFileFuture *DLocalFilePrivate::closeAsync(int ioPriority, QObject *parent) +DFileFuture *DFile::closeAsync(int ioPriority, QObject *parent) { Q_UNUSED(ioPriority); DFileFuture *future = new DFileFuture(parent); - QPointer me = this; + QPointer me = d.data(); QtConcurrent::run([&]() { this->close(); if (!me) @@ -910,490 +1093,157 @@ DFileFuture *DLocalFilePrivate::closeAsync(int ioPriority, QObject *parent) return future; } -DFileFuture *DLocalFilePrivate::readAsync(qint64 maxSize, int ioPriority, QObject *parent) +DFileFuture *DFile::readAsync(quint64 maxSize, int ioPriority, QObject *parent) { DFileFuture *future = new DFileFuture(parent); - GInputStream *inputStream = this->inputStream(); + GInputStream *inputStream = d->inputStream(); if (!inputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); return future; } QByteArray data; - ReadAllAsyncFutureOp *dataOp = g_new0(ReadAllAsyncFutureOp, 1); - dataOp->me = this; + DFilePrivate::ReadAllAsyncFutureOp *dataOp = g_new0(DFilePrivate::ReadAllAsyncFutureOp, 1); + dataOp->me = d.data(); dataOp->future = future; dataOp->data = data; - checkAndResetCancel(); + d->checkAndResetCancel(); g_input_stream_read_all_async(inputStream, &data, maxSize, ioPriority, - cancellable, - readAsyncFutureCallback, + d->cancellable, + DFilePrivate::readAsyncFutureCallback, dataOp); return future; } -DFileFuture *DLocalFilePrivate::readAllAsync(int ioPriority, QObject *parent) +DFileFuture *DFile::readAllAsync(int ioPriority, QObject *parent) { return readAsync(G_MAXSSIZE, ioPriority, parent); } -DFileFuture *DLocalFilePrivate::writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent) +DFileFuture *DFile::writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent) { DFileFuture *future = new DFileFuture(parent); - GOutputStream *outputStream = this->outputStream(); + GOutputStream *outputStream = d->outputStream(); if (!outputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); return future; } - NormalFutureAsyncOp *dataOp = g_new0(NormalFutureAsyncOp, 1); - dataOp->me = this; + DFilePrivate::NormalFutureAsyncOp *dataOp = g_new0(DFilePrivate::NormalFutureAsyncOp, 1); + dataOp->me = d.data(); dataOp->future = future; - checkAndResetCancel(); + d->checkAndResetCancel(); g_output_stream_write_async(outputStream, data, static_cast(len), ioPriority, - cancellable, - writeAsyncFutureCallback, + d->cancellable, + DFilePrivate::writeAsyncFutureCallback, dataOp); return future; } -DFileFuture *DLocalFilePrivate::writeAsync(const QByteArray &data, int ioPriority, QObject *parent) +DFileFuture *DFile::writeAsync(const QByteArray &data, int ioPriority, QObject *parent) { return writeAsync(data, strlen(data), ioPriority, parent); } -DFileFuture *DLocalFilePrivate::flushAsync(int ioPriority, QObject *parent) +DFileFuture *DFile::flushAsync(int ioPriority, QObject *parent) { DFileFuture *future = new DFileFuture(parent); - GOutputStream *outputStream = this->outputStream(); + GOutputStream *outputStream = d->outputStream(); if (!outputStream) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FAILED); return future; } - NormalFutureAsyncOp *data = g_new0(NormalFutureAsyncOp, 1); - data->me = this; + DFilePrivate::NormalFutureAsyncOp *data = g_new0(DFilePrivate::NormalFutureAsyncOp, 1); + data->me = d.data(); data->future = future; - checkAndResetCancel(); - g_output_stream_flush_async(outputStream, ioPriority, cancellable, flushAsyncCallback, data); + d->checkAndResetCancel(); + g_output_stream_flush_async(outputStream, ioPriority, d->cancellable, d->flushAsyncCallback, data); return future; } -DFileFuture *DLocalFilePrivate::sizeAsync(int ioPriority, QObject *parent) +DFileFuture *DFile::sizeAsync(int ioPriority, QObject *parent) { DFileFuture *future = new DFileFuture(parent); - NormalFutureAsyncOp *data = g_new0(NormalFutureAsyncOp, 1); - data->me = this; + DFilePrivate::NormalFutureAsyncOp *data = g_new0(DFilePrivate::NormalFutureAsyncOp, 1); + data->me = d.data(); data->future = future; - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); - checkAndResetCancel(); + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); + d->checkAndResetCancel(); const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kStandardSize); - g_file_query_info_async(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, ioPriority, cancellable, sizeAsyncCallback, data); + g_file_query_info_async(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, ioPriority, d->cancellable, DFilePrivate::sizeAsyncCallback, data); return future; } -DFileFuture *DLocalFilePrivate::existsAsync(int ioPriority, QObject *parent) +DFileFuture *DFile::existsAsync(int ioPriority, QObject *parent) { DFileFuture *future = new DFileFuture(parent); - NormalFutureAsyncOp *data = g_new0(NormalFutureAsyncOp, 1); - data->me = this; + DFilePrivate::NormalFutureAsyncOp *data = g_new0(DFilePrivate::NormalFutureAsyncOp, 1); + data->me = d.data(); data->future = future; - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); - checkAndResetCancel(); + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); + d->checkAndResetCancel(); const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kStandardType); - g_file_query_info_async(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, ioPriority, cancellable, existsAsyncCallback, data); + g_file_query_info_async(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, ioPriority, d->cancellable, d->existsAsyncCallback, data); return future; } -DFileFuture *DLocalFilePrivate::permissionsAsync(int ioPriority, QObject *parent) +DFileFuture *DFile::permissionsAsync(int ioPriority, QObject *parent) { DFileFuture *future = new DFileFuture(parent); - NormalFutureAsyncOp *data = g_new0(NormalFutureAsyncOp, 1); - data->me = this; + DFilePrivate::NormalFutureAsyncOp *data = g_new0(DFilePrivate::NormalFutureAsyncOp, 1); + data->me = d.data(); data->future = future; - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); - checkAndResetCancel(); + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); + d->checkAndResetCancel(); const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); - g_file_query_info_async(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, ioPriority, cancellable, permissionsAsyncCallback, data); + g_file_query_info_async(gfile, attributeKey.c_str(), G_FILE_QUERY_INFO_NONE, ioPriority, d->cancellable, d->permissionsAsyncCallback, data); return future; } -DFileFuture *DLocalFilePrivate::setPermissionsAsync(DFile::Permissions permission, int ioPriority, QObject *parent) +DFileFuture *DFile::setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent) { Q_UNUSED(ioPriority) DFileFuture *future = new DFileFuture(parent); - quint32 stMode = buildPermissions(permission); - g_autoptr(GFile) gfile = g_file_new_for_uri(q->uri().toString().toStdString().c_str()); - checkAndResetCancel(); + quint32 stMode = d->buildPermissions(permission); + g_autoptr(GFile) gfile = g_file_new_for_uri(d->uri.toString().toStdString().c_str()); + d->checkAndResetCancel(); g_autoptr(GError) gerror = nullptr; const std::string &attributeKey = DLocalHelper::attributeStringById(DFileInfo::AttributeID::kUnixMode); - QPointer me = this; + QPointer me = d.data(); QtConcurrent::run([&]() { - g_file_set_attribute_uint32(gfile, attributeKey.c_str(), stMode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, &gerror); + g_file_set_attribute_uint32(gfile, attributeKey.c_str(), stMode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, d->cancellable, &gerror); if (!me) return; if (gerror) - setErrorFromGError(gerror); + d->setErrorFromGError(gerror); future->finished(); }); return future; } - -DFMIOError DLocalFilePrivate::lastError() -{ - return error; -} - -void DLocalFilePrivate::setError(DFMIOError error) -{ - this->error = error; -} - -void DLocalFilePrivate::setErrorFromGError(GError *gerror) -{ - if (!gerror) - return; - error.setCode(DFMIOErrorCode(gerror->code)); - if (gerror->domain != G_IO_ERROR || gerror->message) { - error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); - error.setMessage(gerror->message); - } -} - -bool DLocalFilePrivate::checkOpenFlags(DFile::OpenFlags *modeIn) -{ - DFile::OpenFlags &mode = *modeIn; - - if (mode & DFile::OpenFlag::kNewOnly) { - if (exists()) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); - return false; - } - } - if (mode & DFile::OpenFlag::kExistingOnly) { - if (!exists()) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); - return false; - } - } - if ((mode & DFile::OpenFlag::kNewOnly) && (mode & DFile::OpenFlag::kExistingOnly)) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); - return false; - } - - // WriteOnly implies Truncate when ReadOnly, Append, and NewOnly are not set. - if ((mode & DFile::OpenFlag::kWriteOnly) && !(mode & (DFile::OpenFlag::kReadOnly | DFile::OpenFlag::kAppend | DFile::OpenFlag::kNewOnly))) - mode |= DFile::OpenFlag::kTruncate; - - if (mode & (DFile::OpenFlag::kAppend | DFile::OpenFlag::kNewOnly)) - mode |= DFile::OpenFlag::kWriteOnly; - - if ((mode & (DFile::OpenFlag::kReadOnly | DFile::OpenFlag::kWriteOnly)) == 0) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); - return false; - } - if ((mode & DFile::OpenFlag::kExistingOnly) && !(mode & (DFile::OpenFlag::kReadOnly | DFile::OpenFlag::kWriteOnly))) { - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_OPEN_FLAG_ERROR); - return false; - } - - return true; -} - -GInputStream *DLocalFilePrivate::inputStream() -{ - if (iStream) - return iStream; - - if (ioStream) { - GInputStream *inputStream = g_io_stream_get_input_stream(ioStream); - if (inputStream) - return inputStream; - } - - return nullptr; -} - -GOutputStream *DLocalFilePrivate::outputStream() -{ - if (oStream) - return oStream; - - if (ioStream) { - GOutputStream *outputStream = g_io_stream_get_output_stream(ioStream); - if (outputStream) - return outputStream; - } - - return nullptr; -} - -DLocalFile::DLocalFile(const QUrl &uri) - : DFile(uri), d(new DLocalFilePrivate(this)) -{ - using namespace std::placeholders; - - using bind_read = qint64 (DLocalFile::*)(char *, qint64); - using bind_readQ = QByteArray (DLocalFile::*)(qint64); - - using bind_write = qint64 (DLocalFile::*)(const char *, qint64); - using bind_writeAll = qint64 (DLocalFile::*)(const char *); - using bind_writeQ = qint64 (DLocalFile::*)(const QByteArray &); - - registerOpen(std::bind(&DLocalFile::open, this, std::placeholders::_1)); - registerClose(std::bind(&DLocalFile::close, this)); - - registerRead(std::bind(&DLocalFile::read, this, std::placeholders::_1, std::placeholders::_2)); - registerReadQ(std::bind(&DLocalFile::read, this, std::placeholders::_1)); - registerReadAll(std::bind(&DLocalFile::readAll, this)); - // async - using funcReadAsync = void (DLocalFile::*)(char *, qint64, int, DFile::ReadCallbackFunc, void *); - registerReadAsync(std::bind((funcReadAsync)&DLocalFile::readAsync, this, _1, _2, _3, _4, _5)); - registerReadQAsync(bind_field(this, &DLocalFile::readQAsync)); - using funcReadAllAsync = void (DLocalFile::*)(int, DFile::ReadAllCallbackFunc, void *); - registerReadAllAsync(std::bind((funcReadAllAsync)&DLocalFile::readAllAsync, this, _1, _2, _3)); - - registerWrite(std::bind(&DLocalFile::write, this, std::placeholders::_1, std::placeholders::_2)); - registerWriteAll(std::bind(&DLocalFile::write, this, std::placeholders::_1)); - registerWriteQ(std::bind(&DLocalFile::write, this, std::placeholders::_1)); - // async - using funcWriteAsync = void (DLocalFile::*)(const char *, qint64, int, DFile::WriteCallbackFunc, void *); - registerWriteAsync(std::bind((funcWriteAsync)&DLocalFile::writeAsync, this, _1, _2, _3, _4, _5)); - registerWriteAllAsync(bind_field(this, &DLocalFile::writeAllAsync)); - registerWriteQAsync(bind_field(this, &DLocalFile::writeQAsync)); - - registerCancel(std::bind(&DLocalFile::cancel, this)); - registerSeek(std::bind(&DLocalFile::seek, this, std::placeholders::_1, std::placeholders::_2)); - registerPos(std::bind(&DLocalFile::pos, this)); - registerFlush(std::bind(&DLocalFile::flush, this)); - registerSize(std::bind(&DLocalFile::size, this)); - registerExists(std::bind(&DLocalFile::exists, this)); - registerPermissions(std::bind(&DLocalFile::permissions, this)); - registerSetPermissions(std::bind(&DLocalFile::setPermissions, this, std::placeholders::_1)); - - // future - registerOpenAsyncFuture(std::bind(&DLocalFile::openAsync, this, _1, _2, _3)); - registerCloseAsyncFuture(std::bind(&DLocalFile::closeAsync, this, _1, _2)); - using funcReadAsyncFuture = DFileFuture *(DLocalFile::*)(qint64, int, QObject *); - registerReadAsyncFuture(std::bind((funcReadAsyncFuture)&DLocalFile::readAsync, this, _1, _2, _3)); - using funcReadAllAsyncFuture = DFileFuture *(DLocalFile::*)(int, QObject *); - registerReadAllAsyncFuture(std::bind((funcReadAllAsyncFuture)&DLocalFile::readAllAsync, this, _1, _2)); - using funcWriteAsyncFuture = DFileFuture *(DLocalFile::*)(const QByteArray &, qint64, int, QObject *); - registerWriteAsyncFuture(std::bind((funcWriteAsyncFuture)&DLocalFile::writeAsync, this, _1, _2, _3, _4)); - using funcWriteAllAsyncFuture = DFileFuture *(DLocalFile::*)(const QByteArray &, int, QObject *); - registerWriteAllAsyncFuture(std::bind((funcWriteAllAsyncFuture)&DLocalFile::writeAsync, this, _1, _2, _3)); - registerFlushAsyncFuture(std::bind(&DLocalFile::flushAsync, this, _1, _2)); - registerSizeAsyncFuture(std::bind(&DLocalFile::sizeAsync, this, _1, _2)); - registerExistsAsyncFuture(std::bind(&DLocalFile::existsAsync, this, _1, _2)); - registerPermissionsAsyncFuture(std::bind(&DLocalFile::permissionsAsync, this, _1, _2)); - registerSetPermissionsAsyncFuture(std::bind(&DLocalFile::setPermissionsAsync, this, _1, _2, _3)); - - registerSetError(std::bind(&DLocalFile::setError, this, std::placeholders::_1)); - registerLastError(std::bind(&DLocalFile::lastError, this)); -} - -DLocalFile::~DLocalFile() -{ - close(); -} - -bool DLocalFile::open(DFile::OpenFlags mode) -{ - return d->open(mode); -} - -bool DLocalFile::close() -{ - return d->close(); -} - -qint64 DLocalFile::read(char *data, qint64 maxSize) -{ - return d->read(data, maxSize); -} - -QByteArray DLocalFile::read(qint64 maxSize) -{ - return d->read(maxSize); -} - -QByteArray DLocalFile::readAll() -{ - return d->readAll(); -} - -void DLocalFile::readAsync(char *data, qint64 maxSize, int ioPriority, DFile::ReadCallbackFunc func, void *userData) -{ - d->readAsync(data, maxSize, ioPriority, func, userData); -} - -void DLocalFile::readQAsync(qint64 maxSize, int ioPriority, DFile::ReadQCallbackFunc func, void *userData) -{ - d->readQAsync(maxSize, ioPriority, func, userData); -} - -void DLocalFile::readAllAsync(int ioPriority, DFile::ReadAllCallbackFunc func, void *userData) -{ - d->readAllAsync(ioPriority, func, userData); -} - -qint64 DLocalFile::write(const char *data, qint64 len) -{ - return d->write(data, len); -} - -qint64 DLocalFile::write(const char *data) -{ - return d->write(data); -} - -qint64 DLocalFile::write(const QByteArray &byteArray) -{ - return d->write(byteArray); -} - -void DLocalFile::writeAsync(const char *data, qint64 len, int ioPriority, DFile::WriteCallbackFunc func, void *userData) -{ - d->writeAsync(data, len, ioPriority, func, userData); -} - -void DLocalFile::writeAllAsync(const char *data, int ioPriority, DFile::WriteAllCallbackFunc func, void *userData) -{ - d->writeAllAsync(data, ioPriority, func, userData); -} - -void DLocalFile::writeQAsync(const QByteArray &byteArray, int ioPriority, DFile::WriteQCallbackFunc func, void *userData) -{ - d->writeQAsync(byteArray, ioPriority, func, userData); -} - -bool DLocalFile::cancel() const -{ - return d->cancel(); -} - -bool DLocalFile::seek(qint64 pos, DFile::SeekType type) const -{ - return d->seek(pos, type); -} - -qint64 DLocalFile::pos() const -{ - return d->pos(); -} - -bool DLocalFile::flush() -{ - return d->flush(); -} - -qint64 DLocalFile::size() const -{ - return d->size(); -} - -bool DLocalFile::exists() const -{ - return d->exists(); -} - -DFile::Permissions DLocalFile::permissions() const -{ - return d->permissions(); -} - -bool DLocalFile::setPermissions(DFile::Permissions permission) -{ - return d->setPermissions(permission); -} - -DFileFuture *DLocalFile::openAsync(DFile::OpenFlags mode, int ioPriority, QObject *parent) -{ - return d->openAsync(mode, ioPriority, parent); -} - -DFileFuture *DLocalFile::closeAsync(int ioPriority, QObject *parent) -{ - return d->closeAsync(ioPriority, parent); -} - -DFileFuture *DLocalFile::readAsync(qint64 maxSize, int ioPriority, QObject *parent) -{ - return d->readAsync(maxSize, ioPriority, parent); -} - -DFileFuture *DLocalFile::readAllAsync(int ioPriority, QObject *parent) -{ - return d->readAllAsync(ioPriority, parent); -} - -DFileFuture *DLocalFile::writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent) -{ - return d->writeAsync(data, len, ioPriority, parent); -} - -DFileFuture *DLocalFile::writeAsync(const QByteArray &data, int ioPriority, QObject *parent) -{ - return d->writeAsync(data, ioPriority, parent); -} - -DFileFuture *DLocalFile::flushAsync(int ioPriority, QObject *parent) -{ - return d->flushAsync(ioPriority, parent); -} - -DFileFuture *DLocalFile::sizeAsync(int ioPriority, QObject *parent) -{ - return d->sizeAsync(ioPriority, parent); -} - -DFileFuture *DLocalFile::existsAsync(int ioPriority, QObject *parent) -{ - return d->existsAsync(ioPriority, parent); -} - -DFileFuture *DLocalFile::permissionsAsync(int ioPriority, QObject *parent) -{ - return d->permissionsAsync(ioPriority, parent); -} - -DFileFuture *DLocalFile::setPermissionsAsync(DFile::Permissions permission, int ioPriority, QObject *parent) -{ - return d->setPermissionsAsync(permission, ioPriority, parent); -} - -void DLocalFile::setError(DFMIOError error) -{ - d->setError(error); -} - -DFMIOError DLocalFile::lastError() const -{ - return d->lastError(); -} diff --git a/src/dfm-io/dfm-io/src/core/dfilefuture.cpp b/src/dfm-io/dfm-io/dfilefuture.cpp similarity index 84% rename from src/dfm-io/dfm-io/src/core/dfilefuture.cpp rename to src/dfm-io/dfm-io/dfilefuture.cpp index ff4a708..59dc24d 100644 --- a/src/dfm-io/dfm-io/src/core/dfilefuture.cpp +++ b/src/dfm-io/dfm-io/dfilefuture.cpp @@ -2,12 +2,13 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "core/dfilefuture_p.h" -#include "core/dfilefuture.h" +#include "private/dfilefuture_p.h" + +#include BEGIN_IO_NAMESPACE -DFuturePrivate::DFuturePrivate(DFileFuture *q) +DFuturePrivate::DFuturePrivate(DFileFuture *qq) + : q(qq) { } diff --git a/src/dfm-io/dfm-io/src/local/dlocalfileinfo.cpp b/src/dfm-io/dfm-io/dfileinfo.cpp similarity index 60% rename from src/dfm-io/dfm-io/src/local/dlocalfileinfo.cpp rename to src/dfm-io/dfm-io/dfileinfo.cpp index 152cc8c..9ad8523 100644 --- a/src/dfm-io/dfm-io/src/local/dlocalfileinfo.cpp +++ b/src/dfm-io/dfm-io/dfileinfo.cpp @@ -2,12 +2,12 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "local/dlocalfileinfo.h" -#include "local/dlocalfileinfo_p.h" -#include "local/dlocalhelper.h" -#include "core/diofactory.h" -#include "core/dfilefuture.h" -#include "dfmio_register.h" +#include "private/dfileinfo_p.h" + +#include "utils/dmediainfo.h" +#include "utils/dlocalhelper.h" + +#include #include #include @@ -19,8 +19,42 @@ USING_IO_NAMESPACE -DLocalFileInfoPrivate::DLocalFileInfoPrivate(DLocalFileInfo *q) - : q(q) +/************************************************ + * DFileInfoPrivate + ***********************************************/ + +typedef struct +{ + DFileInfo::AttributeAsyncCallback callback; + gpointer user_data; + DFileInfo::AttributeID id; + QPointer me; +} QueryFileInfoFromAttributeOp; + +static void queryFileInfoFromAttributeCallback(bool ok, void *userData) +{ + QueryFileInfoFromAttributeOp *dataOp = static_cast(userData); + if (!dataOp) + return; + + if (dataOp->callback) { + if (ok) { + bool success = false; + const QVariant &value = dataOp->me->q->attribute(dataOp->id, &success); + dataOp->callback(success, dataOp->user_data, value); + } else { + dataOp->callback(false, dataOp->user_data, QVariant()); + } + } + + dataOp->callback = nullptr; + dataOp->user_data = nullptr; + dataOp->me = nullptr; + g_free(dataOp); +} + +DFileInfoPrivate::DFileInfoPrivate(DFileInfo *qq) + : q(qq) { attributesRealizationSelf.push_back(DFileInfo::AttributeID::kStandardIsHidden); attributesRealizationSelf.push_back(DFileInfo::AttributeID::kTimeCreated); @@ -43,7 +77,18 @@ DLocalFileInfoPrivate::DLocalFileInfoPrivate(DLocalFileInfo *q) attributesNoBlockIO.push_back(DFileInfo::AttributeID::kStandardCompleteBaseName); } -DLocalFileInfoPrivate::~DLocalFileInfoPrivate() +DFileInfoPrivate::DFileInfoPrivate(const DFileInfoPrivate &other) +{ + q = other.q; +} + +DFileInfoPrivate &DFileInfoPrivate::operator=(const DFileInfoPrivate &other) +{ + q = other.q; + return *this; +} + +DFileInfoPrivate::~DFileInfoPrivate() { if (gfileinfo) { g_object_unref(gfileinfo); @@ -55,7 +100,7 @@ DLocalFileInfoPrivate::~DLocalFileInfoPrivate() } } -void DLocalFileInfoPrivate::initNormal() +void DFileInfoPrivate::initNormal() { if (this->gfile) return; @@ -66,267 +111,156 @@ void DLocalFileInfoPrivate::initNormal() this->gfile = g_file_new_for_uri(urlStr.toLocal8Bit().data()); } -bool DLocalFileInfoPrivate::queryInfoSync() +void DFileInfoPrivate::attributeExtend(DFileInfo::MediaType type, QList ids, DFileInfo::AttributeExtendFuncCallback callback) { - if (!infoReseted && this->gfileinfo) { - initFinished = true; - return true; - } + if (ids.contains(DFileInfo::AttributeExtendID::kExtendMediaDuration) + || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaWidth) + || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaHeight)) { - const char *attributes = q->queryAttributes(); - const DFileInfo::FileQueryInfoFlags flag = q->queryInfoFlag(); - - g_autoptr(GError) gerror = nullptr; - GFileInfo *fileinfo = g_file_query_info(gfile, attributes, GFileQueryInfoFlags(flag), nullptr, &gerror); - if (gerror) - setErrorFromGError(gerror); - if (!fileinfo) - return false; + const QString &filePath = q->attribute(DFileInfo::AttributeID::kStandardFilePath, nullptr).toString(); + if (!filePath.isEmpty()) { + mediaType = type; + extendIDs = ids; + attributeExtendFuncCallback = callback; - if (this->gfileinfo) { - g_object_unref(this->gfileinfo); - this->gfileinfo = nullptr; + this->mediaInfo.reset(new DMediaInfo(filePath)); + this->mediaInfo->startReadInfo(std::bind(&DFileInfoPrivate::attributeExtendCallback, this)); + } else { + if (callback) + callback(false, {}); + } } - this->gfileinfo = fileinfo; - initFinished = true; - - return true; } -void DLocalFileInfoPrivate::queryInfoAsync(int ioPriority, DFileInfo::InitQuerierAsyncCallback func, void *userData) +DFileFuture *DFileInfoPrivate::attributeExtend(DFileInfo::MediaType type, QList ids, int ioPriority, QObject *parent) { - if (!infoReseted && this->gfileinfo) { - initFinished = true; + Q_UNUSED(ioPriority); - if (func) - func(true, userData); - return; - } + if (ids.contains(DFileInfo::AttributeExtendID::kExtendMediaDuration) + || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaWidth) + || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaHeight)) { - const char *attributes = q->queryAttributes(); - const DFileInfo::FileQueryInfoFlags flag = q->queryInfoFlag(); + DFileFuture *future = new DFileFuture(parent); - QueryInfoAsyncOp *dataOp = g_new0(QueryInfoAsyncOp, 1); - dataOp->callback = func; - dataOp->userData = userData; - dataOp->me = this; + const QString &filePath = q->attribute(DFileInfo::AttributeID::kStandardFilePath, nullptr).toString(); + if (!filePath.isEmpty()) { + mediaType = type; + extendIDs = ids; + this->future = future; - g_file_query_info_async(this->gfile, attributes, GFileQueryInfoFlags(flag), ioPriority, nullptr, queryInfoAsyncCallback, dataOp); -} + this->mediaInfo.reset(new DMediaInfo(filePath)); + this->mediaInfo->startReadInfo(std::bind(&DFileInfoPrivate::attributeExtendCallback, this)); -QVariant DLocalFileInfoPrivate::attribute(DFileInfo::AttributeID id, bool *success) -{ - if (!initFinished) { - bool succ = queryInfoSync(); - if (!succ) { - if (!attributesNoBlockIO.contains(id)) - return QVariant(); - else - return attributesFromUrl(id); + return future; + } else { + return nullptr; } - } - - QVariant retValue; - if (id > DFileInfo::AttributeID::kCustomStart) { - const QString &path = q->uri().path(); - retValue = DLocalHelper::customAttributeFromPathAndInfo(path, gfileinfo, id); } else { - if (gfileinfo) { - DFMIOErrorCode errorCode(DFM_IO_ERROR_NONE); - if (!attributesRealizationSelf.contains(id)) { - retValue = DLocalHelper::attributeFromGFileInfo(gfileinfo, id, errorCode); - if (errorCode != DFM_IO_ERROR_NONE) - error.setCode(errorCode); - } else { - retValue = attributesBySelf(id); - } - } + return nullptr; } - - if (success) - *success = retValue.isValid(); - - if (!retValue.isValid()) - retValue = std::get<1>(DFileInfo::attributeInfoMap.at(id)); - - return retValue; } -typedef struct +bool DFileInfoPrivate::cancelAttributeExtend() { - DFileInfo::AttributeAsyncCallback callback; - gpointer user_data; - DFileInfo::AttributeID id; - QPointer me; -} QueryFileInfoFromAttributeOp; + if (this->mediaInfo) + this->mediaInfo->stopReadInfo(); + return true; +} -void queryFileInfoFromAttributeCallback(bool ok, void *userData) +void DFileInfoPrivate::attributeExtendCallback() { - QueryFileInfoFromAttributeOp *dataOp = static_cast(userData); - if (!dataOp) - return; + if (this->mediaInfo) { + QMap map; - if (dataOp->callback) { - if (ok) { - bool success = false; - const QVariant &value = dataOp->me->attribute(dataOp->id, &success); - dataOp->callback(success, dataOp->user_data, value); - } else { - dataOp->callback(false, dataOp->user_data, QVariant()); + if (extendIDs.contains(DFileInfo::AttributeExtendID::kExtendMediaDuration)) { + QString duration = mediaInfo->value("Duration", mediaType); + if (duration.isEmpty()) { + duration = mediaInfo->value("Duration", DFileInfo::MediaType::kGeneral); + } + map.insert(DFileInfo::AttributeExtendID::kExtendMediaDuration, duration); + } + if (extendIDs.contains(DFileInfo::AttributeExtendID::kExtendMediaWidth)) { + const QString &width = mediaInfo->value("Width", mediaType); + map.insert(DFileInfo::AttributeExtendID::kExtendMediaWidth, width); + } + if (extendIDs.contains(DFileInfo::AttributeExtendID::kExtendMediaHeight)) { + const QString &height = mediaInfo->value("Height", mediaType); + map.insert(DFileInfo::AttributeExtendID::kExtendMediaHeight, height); } - } - dataOp->callback = nullptr; - dataOp->user_data = nullptr; - dataOp->me = nullptr; - g_free(dataOp); + if (attributeExtendFuncCallback) + attributeExtendFuncCallback(true, map); + + if (this->future) + this->future->infoMedia(uri, map); + } } -void DLocalFileInfoPrivate::attributeAsync(DFileInfo::AttributeID id, bool *success, int ioPriority, DFileInfo::AttributeAsyncCallback func, void *userData) +void DFileInfoPrivate::setErrorFromGError(GError *gerror) { - if (!initFinished) { - // query async - QueryFileInfoFromAttributeOp *dataOp = g_new0(QueryFileInfoFromAttributeOp, 1); - dataOp->callback = func; - dataOp->user_data = userData; - dataOp->id = id; - dataOp->me = this; - - queryInfoAsync(ioPriority, queryFileInfoFromAttributeCallback, dataOp); + if (!gerror) return; + error.setCode(DFMIOErrorCode(gerror->code)); + if (gerror->domain != G_IO_ERROR || gerror->message) { + error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); + error.setMessage(gerror->message); } - - const QVariant &value = attribute(id, success); - if (func) - func(success, userData, value); } -DFileFuture *DLocalFileInfoPrivate::initQuerierAsync(int ioPriority, QObject *parent) +bool DFileInfoPrivate::queryInfoSync() { + if (!infoReseted && this->gfileinfo) { + initFinished = true; + return true; + } + const char *attributes = q->queryAttributes(); const DFileInfo::FileQueryInfoFlags flag = q->queryInfoFlag(); - DFileFuture *future = new DFileFuture(parent); - QueryInfoAsyncOp2 *dataOp = g_new0(QueryInfoAsyncOp2, 1); - dataOp->future = future; - dataOp->me = this; - - g_autoptr(GCancellable) cancellable = g_cancellable_new(); - g_file_query_info_async(this->gfile, attributes, GFileQueryInfoFlags(flag), ioPriority, cancellable, queryInfoAsyncCallback2, dataOp); - return future; -} - -DFileFuture *DLocalFileInfoPrivate::attributeAsync(DFileInfo::AttributeID id, int ioPriority, QObject *parent) -{ - DFileFuture *futureRet = new DFileFuture(parent); - if (!initFinished) { - DFileFuture *future = this->initQuerierAsync(ioPriority, nullptr); - connect(future, &DFileFuture::finished, this, [=]() { - if (!future->hasError()) { - futureRet->infoAttribute(id, attribute(id)); - futureRet->finished(); - } - future->deleteLater(); - }); - } - QTimer::singleShot(10, this, [=]() { - futureRet->infoAttribute(id, attribute(id)); - futureRet->finished(); - }); - return futureRet; -} - -DFileFuture *DLocalFileInfoPrivate::attributeAsync(const QByteArray &key, const DFileInfo::DFileAttributeType type, int ioPriority, QObject *parent) -{ - DFileFuture *futureRet = new DFileFuture(parent); - if (!initFinished) { - DFileFuture *future = this->initQuerierAsync(ioPriority, nullptr); - connect(future, &DFileFuture::finished, this, [=]() { - if (!future->hasError()) { - futureRet->infoAttribute(key, customAttribute(key, type)); - futureRet->finished(); - } - future->deleteLater(); - }); - } - QTimer::singleShot(10, this, [=]() { - futureRet->infoAttribute(key, customAttribute(key, type)); - futureRet->finished(); - }); - return futureRet; -} + g_autoptr(GError) gerror = nullptr; + GFileInfo *fileinfo = g_file_query_info(gfile, attributes, GFileQueryInfoFlags(flag), nullptr, &gerror); + if (gerror) + setErrorFromGError(gerror); + if (!fileinfo) + return false; -DFileFuture *DLocalFileInfoPrivate::existsAsync(int ioPriority, QObject *parent) -{ - DFileFuture *futureRet = new DFileFuture(parent); - if (!initFinished) { - DFileFuture *future = this->initQuerierAsync(ioPriority, nullptr); - connect(future, &DFileFuture::finished, this, [=]() { - if (!future->hasError()) { - const bool exists = this->exists(); - futureRet->infoExists(exists); - futureRet->finished(); - } - future->deleteLater(); - }); + if (this->gfileinfo) { + g_object_unref(this->gfileinfo); + this->gfileinfo = nullptr; } - QTimer::singleShot(10, this, [=]() { - const bool exists = this->exists(); - futureRet->infoExists(exists); - futureRet->finished(); - }); - return futureRet; -} - -DFileFuture *DLocalFileInfoPrivate::refreshAsync(int ioPriority, QObject *parent) -{ - DFileFuture *future = this->initQuerierAsync(ioPriority, parent); - connect(future, &DFileFuture::finished, this, [=]() { - future->finished(); - }); - return future; -} + this->gfileinfo = fileinfo; + initFinished = true; -DFileFuture *DLocalFileInfoPrivate::permissionsAsync(int ioPriority, QObject *parent) -{ - DFileFuture *future = this->initQuerierAsync(ioPriority, parent); - connect(future, &DFileFuture::finished, this, [=]() { - future->infoPermissions(this->permissions()); - future->finished(); - }); - return future; + return true; } -bool DLocalFileInfoPrivate::setAttribute(DFileInfo::AttributeID id, const QVariant &value) +void DFileInfoPrivate::queryInfoAsync(int ioPriority, DFileInfo::InitQuerierAsyncCallback func, void *userData) { - // discard - return false; -} + if (!infoReseted && this->gfileinfo) { + initFinished = true; -bool DLocalFileInfoPrivate::hasAttribute(DFileInfo::AttributeID id) -{ - if (!initFinished) { - bool succ = queryInfoSync(); - if (!succ) - return false; + if (func) + func(true, userData); + return; } - if (gfileinfo) { - const std::string &key = DLocalHelper::attributeStringById(id); - if (key.empty()) - return false; - return g_file_info_has_attribute(gfileinfo, key.c_str()); - } + const char *attributes = q->queryAttributes(); + const DFileInfo::FileQueryInfoFlags flag = q->queryInfoFlag(); - return false; + QueryInfoAsyncOp *dataOp = g_new0(QueryInfoAsyncOp, 1); + dataOp->callback = func; + dataOp->userData = userData; + dataOp->me = this; + + g_file_query_info_async(this->gfile, attributes, GFileQueryInfoFlags(flag), ioPriority, nullptr, queryInfoAsyncCallback, dataOp); } -QVariant DLocalFileInfoPrivate::attributesBySelf(DFileInfo::AttributeID id) +QVariant DFileInfoPrivate::attributesBySelf(DFileInfo::AttributeID id) { QVariant retValue; switch (id) { case DFileInfo::AttributeID::kStandardIsHidden: { - retValue = DLocalHelper::fileIsHidden(q->sharedFromThis(), {}); + retValue = DLocalHelper::fileIsHidden(q, {}); break; } case DFileInfo::AttributeID::kTimeCreated: { @@ -443,7 +377,7 @@ QVariant DLocalFileInfoPrivate::attributesBySelf(DFileInfo::AttributeID id) return retValue; } -QVariant DLocalFileInfoPrivate::attributesFromUrl(DFileInfo::AttributeID id) +QVariant DFileInfoPrivate::attributesFromUrl(DFileInfo::AttributeID id) { if (!attributesNoBlockIO.contains(id)) return QVariant(); @@ -519,164 +453,22 @@ QVariant DLocalFileInfoPrivate::attributesFromUrl(DFileInfo::AttributeID id) return retValue; } -void DLocalFileInfoPrivate::freeQueryInfoAsyncOp(QueryInfoAsyncOp *op) +DFileFuture *DFileInfoPrivate::initQuerierAsync(int ioPriority, QObject *parent) const { - op->callback = nullptr; - op->userData = nullptr; - op->me = nullptr; - g_free(op); + const char *attributes = q->queryAttributes(); + const DFileInfo::FileQueryInfoFlags flag = q->queryInfoFlag(); + + DFileFuture *future = new DFileFuture(parent); + QueryInfoAsyncOp2 *dataOp = g_new0(QueryInfoAsyncOp2, 1); + dataOp->future = future; + dataOp->me = const_cast(this); + + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_file_query_info_async(this->gfile, attributes, GFileQueryInfoFlags(flag), ioPriority, cancellable, queryInfoAsyncCallback2, dataOp); + return future; } -void DLocalFileInfoPrivate::freeQueryInfoAsyncOp2(DLocalFileInfoPrivate::QueryInfoAsyncOp2 *op) -{ - op->me = nullptr; - g_free(op); -} - -bool DLocalFileInfoPrivate::exists() const -{ - if (!gfileinfo) - return false; - return g_file_info_get_file_type(gfileinfo) != G_FILE_TYPE_UNKNOWN; -} - -bool DLocalFileInfoPrivate::refresh() -{ - infoReseted = true; - bool ret = queryInfoSync(); - infoReseted = false; - - return ret; -} - -DFile::Permissions DLocalFileInfoPrivate::permissions() -{ - DFile::Permissions retValue = DFile::Permission::kNoPermission; - - if (!initFinished) { - bool succ = queryInfoSync(); - if (!succ) - return retValue; - } - - const QVariant &value = this->attribute(DFileInfo::AttributeID::kUnixMode); - if (!value.isValid()) - return retValue; - const uint32_t stMode = value.toUInt(); - - if ((stMode & S_IXUSR) == S_IXUSR) { - retValue |= DFile::Permission::kExeOwner; - retValue |= DFile::Permission::kExeUser; - } - if ((stMode & S_IWUSR) == S_IWUSR) { - retValue |= DFile::Permission::kWriteOwner; - retValue |= DFile::Permission::kWriteUser; - } - if ((stMode & S_IRUSR) == S_IRUSR) { - retValue |= DFile::Permission::kReadOwner; - retValue |= DFile::Permission::kReadUser; - } - - if ((stMode & S_IXGRP) == S_IXGRP) - retValue |= DFile::Permission::kExeGroup; - if ((stMode & S_IWGRP) == S_IWGRP) - retValue |= DFile::Permission::kWriteGroup; - if ((stMode & S_IRGRP) == S_IRGRP) - retValue |= DFile::Permission::kReadGroup; - - if ((stMode & S_IXOTH) == S_IXOTH) - retValue |= DFile::Permission::kExeOther; - if ((stMode & S_IWOTH) == S_IWOTH) - retValue |= DFile::Permission::kWriteOther; - if ((stMode & S_IROTH) == S_IROTH) - retValue |= DFile::Permission::kReadOther; - - return retValue; -} - -bool DLocalFileInfoPrivate::setCustomAttribute(const char *key, const DFileInfo::DFileAttributeType type, const void *value, const DFileInfo::FileQueryInfoFlags flag) -{ - if (gfile) { - g_autoptr(GError) gerror = nullptr; - bool ret = g_file_set_attribute(gfile, key, GFileAttributeType(type), (gpointer)(value), GFileQueryInfoFlags(flag), nullptr, &gerror); - - if (gerror) - setErrorFromGError(gerror); - return ret; - } - return false; -} - -QVariant DLocalFileInfoPrivate::customAttribute(const char *key, const DFileInfo::DFileAttributeType type) -{ - if (!initFinished) { - bool succ = queryInfoSync(); - if (!succ) - return QVariant(); - } - - if (!gfileinfo) - return QVariant(); - - switch (type) { - case DFileInfo::DFileAttributeType::kTypeString: { - const char *ret = g_file_info_get_attribute_string(gfileinfo, key); - return QVariant(ret); - } - case DFileInfo::DFileAttributeType::kTypeByteString: { - const char *ret = g_file_info_get_attribute_byte_string(gfileinfo, key); - return QVariant(ret); - } - case DFileInfo::DFileAttributeType::kTypeBool: { - bool ret = g_file_info_get_attribute_boolean(gfileinfo, key); - return QVariant(ret); - } - case DFileInfo::DFileAttributeType::kTypeUInt32: { - uint32_t ret = g_file_info_get_attribute_uint32(gfileinfo, key); - return QVariant(ret); - } - case DFileInfo::DFileAttributeType::kTypeInt32: { - int32_t ret = g_file_info_get_attribute_int32(gfileinfo, key); - return QVariant(ret); - } - case DFileInfo::DFileAttributeType::kTypeUInt64: { - uint64_t ret = g_file_info_get_attribute_uint64(gfileinfo, key); - return QVariant(qulonglong(ret)); - } - case DFileInfo::DFileAttributeType::kTypeInt64: { - int64_t ret = g_file_info_get_attribute_int64(gfileinfo, key); - return QVariant(qulonglong(ret)); - } - case DFileInfo::DFileAttributeType::kTypeStringV: { - char **ret = g_file_info_get_attribute_stringv(gfileinfo, key); - QStringList retValue; - for (int i = 0; ret && ret[i]; ++i) { - retValue.append(QString::fromLocal8Bit(ret[i])); - } - return retValue; - } - default: - return QVariant(); - } -} - -DFMIOError DLocalFileInfoPrivate::lastError() -{ - return error; -} - -void DLocalFileInfoPrivate::setErrorFromGError(GError *gerror) -{ - if (!gerror) - return; - error.setCode(DFMIOErrorCode(gerror->code)); - if (gerror->domain != G_IO_ERROR || gerror->message) { - error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); - error.setMessage(gerror->message); - } -} - -void DLocalFileInfoPrivate::queryInfoAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFileInfoPrivate::queryInfoAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) { QueryInfoAsyncOp *data = static_cast(userData); if (!data) @@ -708,7 +500,7 @@ void DLocalFileInfoPrivate::queryInfoAsyncCallback(GObject *sourceObject, GAsync freeQueryInfoAsyncOp(data); } -void DLocalFileInfoPrivate::queryInfoAsyncCallback2(GObject *sourceObject, GAsyncResult *res, gpointer userData) +void DFileInfoPrivate::queryInfoAsyncCallback2(GObject *sourceObject, GAsyncResult *res, gpointer userData) { QueryInfoAsyncOp2 *data = static_cast(userData); if (!data) @@ -745,136 +537,450 @@ void DLocalFileInfoPrivate::queryInfoAsyncCallback2(GObject *sourceObject, GAsyn freeQueryInfoAsyncOp2(data); } -DLocalFileInfo::DLocalFileInfo(const QUrl &uri, - const char *attributes /*= "*"*/, - const DFMIO::DFileInfo::FileQueryInfoFlags flag /*= DFMIO::DFileInfo::FileQueryInfoFlags::TypeNone*/) - : DFileInfo(uri, attributes, flag), d(new DLocalFileInfoPrivate(this)) -{ - using namespace std::placeholders; - registerInitQuerier(std::bind(&DLocalFileInfo::initQuerier, this)); - using funcinitQuerierAsync = void (DLocalFileInfo::*)(int, InitQuerierAsyncCallback, void *); - registerInitQuerierAsync(std::bind((funcinitQuerierAsync)&DLocalFileInfo::initQuerierAsync, this, _1, _2, _3)); - registerAttribute(std::bind(&DLocalFileInfo::attribute, this, _1, _2)); - using funcAttributeAsync = void (DLocalFileInfo::*)(DFileInfo::AttributeID, bool *, int, AttributeAsyncCallback, void *) const; - registerAttributeAsync(std::bind((funcAttributeAsync)&DLocalFileInfo::attributeAsync, this, _1, _2, _3, _4, _5)); - registerSetAttribute(std::bind(&DLocalFileInfo::setAttribute, this, _1, _2)); - registerHasAttribute(std::bind(&DLocalFileInfo::hasAttribute, this, _1)); - registerExists(std::bind(&DLocalFileInfo::exists, this)); - registerRefresh(std::bind(&DLocalFileInfo::refresh, this)); - registerPermissions(std::bind(&DLocalFileInfo::permissions, this)); - registerSetCustomAttribute(std::bind(&DLocalFileInfo::setCustomAttribute, this, _1, _2, _3, _4)); - registerCustomAttribute(std::bind(&DLocalFileInfo::customAttribute, this, _1, _2)); - registerLastError(std::bind(&DLocalFileInfo::lastError, this)); - // future - using funcInitQuerierAsync2 = DFileFuture *(DLocalFileInfo::*)(int, QObject *); - registerInitQuerierAsync2(std::bind((funcInitQuerierAsync2)&DLocalFileInfo::initQuerierAsync, this, _1, _2)); - using funcAttributeAsync2 = DFileFuture *(DLocalFileInfo::*)(AttributeID, int, QObject *)const; - registerAttributeAsync2(std::bind((funcAttributeAsync2)&DLocalFileInfo::attributeAsync, this, _1, _2, _3)); - using funcAttributeAsync3 = DFileFuture *(DLocalFileInfo::*)(const QByteArray &, const DFileAttributeType, int, QObject *)const; - registerAttributeAsync3(std::bind((funcAttributeAsync3)&DLocalFileInfo::attributeAsync, this, _1, _2, _3, _4)); - registerExistsAsync(std::bind(&DLocalFileInfo::existsAsync, this, _1, _2)); - registerRefreshAsync(std::bind(&DLocalFileInfo::refreshAsync, this, _1, _2)); - registerPermissionsAsync(std::bind(&DLocalFileInfo::permissionsAsync, this, _1, _2)); +void DFileInfoPrivate::freeQueryInfoAsyncOp(DFileInfoPrivate::QueryInfoAsyncOp *op) +{ + op->callback = nullptr; + op->userData = nullptr; + op->me = nullptr; + g_free(op); +} + +void DFileInfoPrivate::freeQueryInfoAsyncOp2(DFileInfoPrivate::QueryInfoAsyncOp2 *op) +{ + op->me = nullptr; + g_free(op); +} + +/************************************************ + * DFileInfo + ***********************************************/ + +DFileInfo::DFileInfo(const QUrl &uri, const char *attributes, const FileQueryInfoFlags flag) + : d(new DFileInfoPrivate(this)) +{ + d->uri = uri; + d->attributes = strdup(attributes); + d->flag = flag; d->initNormal(); } -DLocalFileInfo::DLocalFileInfo(const QUrl &uri, void *fileInfo, const char *attributes, const DFileInfo::FileQueryInfoFlags flag) - : DLocalFileInfo(uri, attributes, flag) +DFileInfo::DFileInfo(const QUrl &uri, void *fileInfo, const char *attributes, const DFileInfo::FileQueryInfoFlags flag) + : DFileInfo(uri, attributes, flag) { d->gfileinfo = static_cast(fileInfo); } -DLocalFileInfo::~DLocalFileInfo() +DFileInfo::DFileInfo(const DFileInfo &info) + : d(info.d) +{ +} + +DFileInfo &DFileInfo::operator=(const DFileInfo &info) +{ + d = info.d; + return *this; +} + +DFileInfo::~DFileInfo() +{ + free(d->attributes); +} + +bool DFileInfo::initQuerier() +{ + if (!d->infoReseted && d->gfileinfo) { + d->initFinished = true; + return true; + } + + const char *attributes = queryAttributes(); + const DFileInfo::FileQueryInfoFlags flag = queryInfoFlag(); + + g_autoptr(GError) gerror = nullptr; + GFileInfo *fileinfo = g_file_query_info(d->gfile, attributes, GFileQueryInfoFlags(flag), nullptr, &gerror); + if (gerror) + d->setErrorFromGError(gerror); + if (!fileinfo) + return false; + + if (d->gfileinfo) { + g_object_unref(d->gfileinfo); + d->gfileinfo = nullptr; + } + d->gfileinfo = fileinfo; + d->initFinished = true; + + return true; +} + +QVariant DFileInfo::attribute(DFileInfo::AttributeID id, bool *success) const +{ + if (!d->initFinished) { + bool succ = const_cast(d.data())->queryInfoSync(); + if (!succ) { + if (!d->attributesNoBlockIO.contains(id)) + return QVariant(); + else + return const_cast(d.data())->attributesFromUrl(id); + } + } + + QVariant retValue; + if (id > DFileInfo::AttributeID::kCustomStart) { + const QString &path = d->uri.path(); + retValue = DLocalHelper::customAttributeFromPathAndInfo(path, d->gfileinfo, id); + } else { + if (d->gfileinfo) { + DFMIOErrorCode errorCode(DFM_IO_ERROR_NONE); + if (!d->attributesRealizationSelf.contains(id)) { + retValue = DLocalHelper::attributeFromGFileInfo(d->gfileinfo, id, errorCode); + if (errorCode != DFM_IO_ERROR_NONE) + const_cast(d.data())->error.setCode(errorCode); + } else { + retValue = const_cast(d.data())->attributesBySelf(id); + } + } + } + + if (success) + *success = retValue.isValid(); + + if (!retValue.isValid()) + retValue = std::get<1>(DLocalHelper::attributeInfoMapFunc().at(id)); + + return retValue; +} + +void DFileInfo::initQuerierAsync(int ioPriority, DFileInfo::InitQuerierAsyncCallback func, void *userData) +{ + if (!d->infoReseted && d->gfileinfo) { + d->initFinished = true; + + if (func) + func(true, userData); + return; + } + + const char *attributes = queryAttributes(); + const DFileInfo::FileQueryInfoFlags flag = queryInfoFlag(); + + DFileInfoPrivate::QueryInfoAsyncOp *dataOp = g_new0(DFileInfoPrivate::QueryInfoAsyncOp, 1); + dataOp->callback = func; + dataOp->userData = userData; + dataOp->me = d.data(); + + g_file_query_info_async(d->gfile, attributes, GFileQueryInfoFlags(flag), ioPriority, nullptr, DFileInfoPrivate::queryInfoAsyncCallback, dataOp); +} + +void DFileInfo::attributeAsync(DFileInfo::AttributeID id, bool *success, int ioPriority, DFileInfo::AttributeAsyncCallback func, void *userData) +{ + if (!d->initFinished) { + // query async + QueryFileInfoFromAttributeOp *dataOp = g_new0(QueryFileInfoFromAttributeOp, 1); + dataOp->callback = func; + dataOp->user_data = userData; + dataOp->id = id; + dataOp->me = d.data(); + + d->queryInfoAsync(ioPriority, queryFileInfoFromAttributeCallback, dataOp); + return; + } + + const QVariant &value = attribute(id, success); + if (func) + func(success, userData, value); +} + +DFileFuture *DFileInfo::initQuerierAsync(int ioPriority, QObject *parent) { + const char *attributes = queryAttributes(); + const DFileInfo::FileQueryInfoFlags flag = queryInfoFlag(); + + DFileFuture *future = new DFileFuture(parent); + DFileInfoPrivate::QueryInfoAsyncOp2 *dataOp = g_new0(DFileInfoPrivate::QueryInfoAsyncOp2, 1); + dataOp->future = future; + dataOp->me = d.data(); + + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_file_query_info_async(d->gfile, attributes, GFileQueryInfoFlags(flag), ioPriority, cancellable, DFileInfoPrivate::queryInfoAsyncCallback2, dataOp); + return future; +} + +DFileFuture *DFileInfo::attributeAsync(DFileInfo::AttributeID id, int ioPriority, QObject *parent) const +{ + DFileFuture *futureRet = new DFileFuture(parent); + if (!d->initFinished) { + DFileFuture *future = d->initQuerierAsync(ioPriority, nullptr); + QObject::connect(future, &DFileFuture::finished, d.data(), [=]() { + if (!future->hasError()) { + futureRet->infoAttribute(id, attribute(id)); + futureRet->finished(); + } + future->deleteLater(); + }); + } + QTimer::singleShot(0, [=]() { + futureRet->infoAttribute(id, attribute(id)); + futureRet->finished(); + }); + return futureRet; } -bool DLocalFileInfo::initQuerier() +DFileFuture *DFileInfo::attributeAsync(const QByteArray &key, const DFileInfo::DFileAttributeType type, int ioPriority, QObject *parent) const { - return d->queryInfoSync(); + DFileFuture *futureRet = new DFileFuture(parent); + if (!d->initFinished) { + DFileFuture *future = d->initQuerierAsync(ioPriority, nullptr); + QObject::connect(future, &DFileFuture::finished, d.data(), [=]() { + if (!future->hasError()) { + futureRet->infoAttribute(key, customAttribute(key, type)); + futureRet->finished(); + } + future->deleteLater(); + }); + } + + QTimer::singleShot(0, [=]() { + futureRet->infoAttribute(key, customAttribute(key, type)); + futureRet->finished(); + }); + + return futureRet; } -void DLocalFileInfo::initQuerierAsync(int ioPriority, DFileInfo::InitQuerierAsyncCallback func, void *userData) +DFileFuture *DFileInfo::existsAsync(int ioPriority, QObject *parent) const { - d->queryInfoAsync(ioPriority, func, userData); + DFileFuture *futureRet = new DFileFuture(parent); + if (!d->initFinished) { + DFileFuture *future = d->initQuerierAsync(ioPriority, nullptr); + QObject::connect(future, &DFileFuture::finished, d.data(), [=]() { + if (!future->hasError()) { + const bool exists = this->exists(); + futureRet->infoExists(exists); + futureRet->finished(); + } + future->deleteLater(); + }); + } + QTimer::singleShot(0, [=]() { + const bool exists = this->exists(); + futureRet->infoExists(exists); + futureRet->finished(); + }); + return futureRet; } -QVariant DLocalFileInfo::attribute(DFileInfo::AttributeID id, bool *success /*= nullptr */) const +DFileFuture *DFileInfo::refreshAsync(int ioPriority, QObject *parent) { - return d->attribute(id, success); + DFileFuture *future = this->initQuerierAsync(ioPriority, parent); + QObject::connect(future, &DFileFuture::finished, d.data(), [=]() { + future->finished(); + }); + return future; } -void DLocalFileInfo::attributeAsync(DFileInfo::AttributeID id, bool *success, int ioPriority, DFileInfo::AttributeAsyncCallback func, void *userData) const +DFileFuture *DFileInfo::permissionsAsync(int ioPriority, QObject *parent) { - d->attributeAsync(id, success, ioPriority, func, userData); + DFileFuture *future = this->initQuerierAsync(ioPriority, parent); + QObject::connect(future, &DFileFuture::finished, d.data(), [=]() { + future->infoPermissions(this->permissions()); + future->finished(); + }); + return future; } -DFileFuture *DLocalFileInfo::initQuerierAsync(int ioPriority, QObject *parent) +bool DFileInfo::hasAttribute(DFileInfo::AttributeID id) const { - return d->initQuerierAsync(ioPriority, parent); + if (!d->initFinished) { + bool succ = const_cast(d.data())->queryInfoSync(); + if (!succ) + return false; + } + + if (d->gfileinfo) { + const std::string &key = DLocalHelper::attributeStringById(id); + if (key.empty()) + return false; + return g_file_info_has_attribute(d->gfileinfo, key.c_str()); + } + + return false; } -DFileFuture *DLocalFileInfo::attributeAsync(DFileInfo::AttributeID id, int ioPriority, QObject *parent) const +bool DFileInfo::exists() const { - return d->attributeAsync(id, ioPriority, parent); + if (!d->gfileinfo) + return false; + return g_file_info_get_file_type(d->gfileinfo) != G_FILE_TYPE_UNKNOWN; } -DFileFuture *DLocalFileInfo::attributeAsync(const QByteArray &key, const DFileInfo::DFileAttributeType type, int ioPriority, QObject *parent) const +bool DFileInfo::refresh() { - return d->attributeAsync(key, type, ioPriority, parent); + d->infoReseted = true; + bool ret = d->queryInfoSync(); + d->infoReseted = false; + + return ret; } -DFileFuture *DLocalFileInfo::existsAsync(int ioPriority, QObject *parent) const +DFile::Permissions DFileInfo::permissions() const { - return d->existsAsync(ioPriority, parent); + DFile::Permissions retValue = DFile::Permission::kNoPermission; + + if (!d->initFinished) { + bool succ = const_cast(d.data())->queryInfoSync(); + if (!succ) + return retValue; + } + + const QVariant &value = this->attribute(DFileInfo::AttributeID::kUnixMode); + if (!value.isValid()) + return retValue; + const uint32_t stMode = value.toUInt(); + + if ((stMode & S_IXUSR) == S_IXUSR) { + retValue |= DFile::Permission::kExeOwner; + retValue |= DFile::Permission::kExeUser; + } + if ((stMode & S_IWUSR) == S_IWUSR) { + retValue |= DFile::Permission::kWriteOwner; + retValue |= DFile::Permission::kWriteUser; + } + if ((stMode & S_IRUSR) == S_IRUSR) { + retValue |= DFile::Permission::kReadOwner; + retValue |= DFile::Permission::kReadUser; + } + + if ((stMode & S_IXGRP) == S_IXGRP) + retValue |= DFile::Permission::kExeGroup; + if ((stMode & S_IWGRP) == S_IWGRP) + retValue |= DFile::Permission::kWriteGroup; + if ((stMode & S_IRGRP) == S_IRGRP) + retValue |= DFile::Permission::kReadGroup; + + if ((stMode & S_IXOTH) == S_IXOTH) + retValue |= DFile::Permission::kExeOther; + if ((stMode & S_IWOTH) == S_IWOTH) + retValue |= DFile::Permission::kWriteOther; + if ((stMode & S_IROTH) == S_IROTH) + retValue |= DFile::Permission::kReadOther; + + return retValue; } -DFileFuture *DLocalFileInfo::refreshAsync(int ioPriority, QObject *parent) +bool DFileInfo::setCustomAttribute(const char *key, const DFileInfo::DFileAttributeType type, const void *value, const DFileInfo::FileQueryInfoFlags flag) { - return d->refreshAsync(ioPriority, parent); + if (d->gfile) { + g_autoptr(GError) gerror = nullptr; + bool ret = g_file_set_attribute(d->gfile, key, GFileAttributeType(type), (gpointer)(value), GFileQueryInfoFlags(flag), nullptr, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + return ret; + } + return false; } -DFileFuture *DLocalFileInfo::permissionsAsync(int ioPriority, QObject *parent) +QVariant DFileInfo::customAttribute(const char *key, const DFileInfo::DFileAttributeType type) const { - return d->permissionsAsync(ioPriority, parent); + if (!d->initFinished) { + bool succ = const_cast(d.data())->queryInfoSync(); + if (!succ) + return QVariant(); + } + + if (!d->gfileinfo) + return QVariant(); + + switch (type) { + case DFileInfo::DFileAttributeType::kTypeString: { + const char *ret = g_file_info_get_attribute_string(d->gfileinfo, key); + return QVariant(ret); + } + case DFileInfo::DFileAttributeType::kTypeByteString: { + const char *ret = g_file_info_get_attribute_byte_string(d->gfileinfo, key); + return QVariant(ret); + } + case DFileInfo::DFileAttributeType::kTypeBool: { + bool ret = g_file_info_get_attribute_boolean(d->gfileinfo, key); + return QVariant(ret); + } + case DFileInfo::DFileAttributeType::kTypeUInt32: { + uint32_t ret = g_file_info_get_attribute_uint32(d->gfileinfo, key); + return QVariant(ret); + } + case DFileInfo::DFileAttributeType::kTypeInt32: { + int32_t ret = g_file_info_get_attribute_int32(d->gfileinfo, key); + return QVariant(ret); + } + case DFileInfo::DFileAttributeType::kTypeUInt64: { + uint64_t ret = g_file_info_get_attribute_uint64(d->gfileinfo, key); + return QVariant(qulonglong(ret)); + } + case DFileInfo::DFileAttributeType::kTypeInt64: { + int64_t ret = g_file_info_get_attribute_int64(d->gfileinfo, key); + return QVariant(qulonglong(ret)); + } + case DFileInfo::DFileAttributeType::kTypeStringV: { + char **ret = g_file_info_get_attribute_stringv(d->gfileinfo, key); + QStringList retValue; + for (int i = 0; ret && ret[i]; ++i) { + retValue.append(QString::fromLocal8Bit(ret[i])); + } + return retValue; + } + default: + return QVariant(); + } } -bool DLocalFileInfo::setAttribute(DFileInfo::AttributeID id, const QVariant &value) +DFMIOError DFileInfo::lastError() const { - return d->setAttribute(id, value); + return d->error; } -bool DLocalFileInfo::hasAttribute(DFileInfo::AttributeID id) const +void DFileInfo::attributeExtend(DFileInfo::MediaType type, QList ids, DFileInfo::AttributeExtendFuncCallback callback) { - return d->hasAttribute(id); + d->attributeExtend(type, ids, callback); } -bool DLocalFileInfo::exists() const +DFileFuture *DFileInfo::attributeExtend(DFileInfo::MediaType type, QList ids, int ioPriority, QObject *parent) { - return d->exists(); + return d->attributeExtend(type, ids, ioPriority, parent); } -bool DLocalFileInfo::refresh() +bool DFileInfo::cancelAttributeExtend() { - return d->refresh(); + return d->cancelAttributeExtend(); } -DFile::Permissions DLocalFileInfo::permissions() const +QUrl DFileInfo::uri() const { - return d->permissions(); + return d->uri; } -bool DLocalFileInfo::setCustomAttribute(const char *key, const DFileInfo::DFileAttributeType type, const void *value, const DFileInfo::FileQueryInfoFlags flag) +char *DFileInfo::queryAttributes() const { - return d->setCustomAttribute(key, type, value, flag); + return d->attributes; } -QVariant DLocalFileInfo::customAttribute(const char *key, const DFileInfo::DFileAttributeType type) const +DFileInfo::FileQueryInfoFlags DFileInfo::queryInfoFlag() const { - return d->customAttribute(key, type); + return d->flag; } -DFMIOError DLocalFileInfo::lastError() const +QString DFileInfo::dump() const { - return d->lastError(); + QString ret; + for (const auto &[id, key] : DLocalHelper::attributeInfoMapFunc()) { + const QVariant &&value = attribute(id); + if (value.isValid()) { + ret.append(std::get<0>(DLocalHelper::attributeInfoMapFunc().at(id)).c_str()); + ret.append(":"); + ret.append(value.toString()); + ret.append("\n"); + } + } + return ret; } diff --git a/src/dfm-io/dfm-io/dfm-io.pc.in b/src/dfm-io/dfm-io/dfm-io.pc.in deleted file mode 100644 index 523e8ef..0000000 --- a/src/dfm-io/dfm-io/dfm-io.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ -includedir=${prefix}/include - -Name: dfm-io -Description: the library of io. -Version: @PROJECT_VERSION@ -Requires: glibmm-2.4, Qt5Core - -Libs: -L${libdir} -ldfm-io -Cflags: -I${includedir} -I${includedir}/dfm-io diff --git a/src/dfm-io/dfm-io/src/dfmio_utils.cpp b/src/dfm-io/dfm-io/dfmio_utils.cpp similarity index 98% rename from src/dfm-io/dfm-io/src/dfmio_utils.cpp rename to src/dfm-io/dfm-io/dfmio_utils.cpp index aac729e..6f1d1a3 100644 --- a/src/dfm-io/dfm-io/src/dfmio_utils.cpp +++ b/src/dfm-io/dfm-io/dfmio_utils.cpp @@ -2,8 +2,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_utils.h" -#include "local/dlocalhelper.h" +#include + +#include "utils/dlocalhelper.h" #include #include diff --git a/src/dfm-io/dfm-io/doperator.cpp b/src/dfm-io/dfm-io/doperator.cpp new file mode 100644 index 0000000..75e3093 --- /dev/null +++ b/src/dfm-io/dfm-io/doperator.cpp @@ -0,0 +1,519 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "private/doperator_p.h" + +#include "utils/dlocalhelper.h" +#include "utils/trashfilehelper.h" + +#include +#include + +#include + +USING_IO_NAMESPACE + +/************************************************ + * DOperatorPrivate + ***********************************************/ + +DOperatorPrivate::DOperatorPrivate(DOperator *q) + : q(q) +{ +} + +DOperatorPrivate::~DOperatorPrivate() +{ +} + +void DOperatorPrivate::setErrorFromGError(GError *gerror) +{ + if (!gerror) + return; + error.setCode(DFMIOErrorCode(gerror->code)); + if (gerror->domain != G_IO_ERROR || gerror->message) { + error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); + error.setMessage(gerror->message); + } +} + +GFile *DOperatorPrivate::makeGFile(const QUrl &url) +{ + return g_file_new_for_uri(url.toString().toLocal8Bit().data()); +} + +void DOperatorPrivate::renameCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + OperateFileOp *data = static_cast(userData); + GFile *gfile = G_FILE(sourceObject); + g_autoptr(GError) gerror = nullptr; + GFile *gfileRet = g_file_set_display_name_finish(gfile, res, &gerror); + g_object_unref(gfileRet); + if (data->callback) + data->callback(!gerror, userData); + + data->callback = nullptr; + data->userData = nullptr; + g_free(data); +} + +void DOperatorPrivate::copyCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + OperateFileOp *data = static_cast(userData); + GFile *gfile = G_FILE(sourceObject); + g_autoptr(GError) gerror = nullptr; + gboolean succ = g_file_copy_finish(gfile, res, &gerror); + if (data->callback) + data->callback(succ, userData); + + data->callback = nullptr; + data->userData = nullptr; + g_free(data); +} + +void DOperatorPrivate::trashCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + OperateFileOp *data = static_cast(userData); + GFile *gfile = G_FILE(sourceObject); + g_autoptr(GError) gerror = nullptr; + bool succ = g_file_trash_finish(gfile, res, &gerror); + if (data->callback) + data->callback(succ, userData); + + data->callback = nullptr; + data->userData = nullptr; + g_free(data); +} + +void DOperatorPrivate::deleteCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + OperateFileOp *data = static_cast(userData); + GFile *gfile = G_FILE(sourceObject); + g_autoptr(GError) gerror = nullptr; + bool succ = g_file_delete_finish(gfile, res, &gerror); + if (data->callback) + data->callback(succ, userData); + + data->callback = nullptr; + data->userData = nullptr; + g_free(data); +} + +void DOperatorPrivate::touchCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + OperateFileOp *data = static_cast(userData); + GFile *gfile = G_FILE(sourceObject); + g_autoptr(GError) gerror = nullptr; + g_autoptr(GFileOutputStream) stream = g_file_create_finish(gfile, res, &gerror); + if (data->callback) + data->callback(!stream, userData); + + data->callback = nullptr; + data->userData = nullptr; + g_free(data); +} + +void DOperatorPrivate::makeDirCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) +{ + OperateFileOp *data = static_cast(userData); + GFile *gfile = G_FILE(sourceObject); + g_autoptr(GError) gerror = nullptr; + bool succ = g_file_make_directory_finish(gfile, res, &gerror); + if (data->callback) + data->callback(succ, userData); + + data->callback = nullptr; + data->userData = nullptr; + g_free(data); +} + +/************************************************ + * DOperator + ***********************************************/ + +DOperator::DOperator(const QUrl &uri) + : d(new DOperatorPrivate(this)) +{ + d->uri = uri; +} + +DOperator::~DOperator() +{ +} + +QUrl DOperator::uri() const +{ + return d->uri; +} + +bool DOperator::renameFile(const QString &newName) +{ + const QUrl &url = uri(); + + GError *gerror = nullptr; + + // name must deep copy, otherwise name freed and crash + gchar *name = g_strdup(newName.toLocal8Bit().data()); + + GFile *gfile = d->makeGFile(url); + + GFile *gfile_ret = g_file_set_display_name(gfile, name, nullptr, &gerror); + + g_object_unref(gfile); + g_free(name); + + if (!gfile_ret) { + d->setErrorFromGError(gerror); + g_error_free(gerror); + return false; + } + + if (gerror) + g_error_free(gerror); + g_object_unref(gfile_ret); + + return true; +} + +bool DOperator::renameFile(const QUrl &toUrl) +{ + const QUrl &fromUrl = uri(); + + const std::string &fromStr = fromUrl.toLocalFile().toStdString(); + const std::string &toStr = toUrl.toLocalFile().toStdString(); + + if (fromStr.empty() || toStr.empty()) { + d->error.setCode(DFM_IO_ERROR_INVALID_FILENAME); + return false; + } + + const bool ret = g_rename(fromStr.c_str(), toStr.c_str()) == 0; + + // set error info + if (!ret) + d->error.setCode(DFM_IO_ERROR_PERMISSION_DENIED); + + return ret; +} + +bool DOperator::copyFile(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData) +{ + GError *gerror = nullptr; + + const QUrl &urlFrom = uri(); + + GFile *gfile_from = d->makeGFile(urlFrom); + GFile *gfile_to = d->makeGFile(destUri); + + GFile *gfileTarget = nullptr; + if (DLocalHelper::checkGFileType(gfile_to, G_FILE_TYPE_DIRECTORY)) { + char *basename = g_file_get_basename(gfile_from); + gfileTarget = g_file_get_child(gfile_to, basename); + g_free(basename); + } else { + gfileTarget = d->makeGFile(destUri); + } + g_object_unref(gfile_to); + + bool ret = g_file_copy(gfile_from, gfileTarget, GFileCopyFlags(flag), nullptr, func, progressCallbackData, &gerror); + + if (gerror) { + d->setErrorFromGError(gerror); + g_error_free(gerror); + } + + g_object_unref(gfile_from); + g_object_unref(gfileTarget); + + return ret; +} + +bool DOperator::moveFile(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData) +{ + g_autoptr(GError) gerror = nullptr; + + const QUrl &from = uri(); + g_autoptr(GFile) gfile_from = d->makeGFile(from); + + g_autoptr(GFile) gfile_to = d->makeGFile(destUri); + + bool ret = g_file_move(gfile_from, gfile_to, GFileCopyFlags(flag), nullptr, func, progressCallbackData, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + + return ret; +} + +void DOperator::renameFileAsync(const QString &newName, int ioPriority, DOperator::FileOperateCallbackFunc func, void *userData) +{ + const QUrl &url = uri(); + + // name must deep copy, otherwise name freed and crash + g_autofree gchar *gname = g_strdup(newName.toLocal8Bit().data()); + + g_autoptr(GFile) gfile = d->makeGFile(url); + + DOperatorPrivate::OperateFileOp *data = g_new0(DOperatorPrivate::OperateFileOp, 1); + data->callback = func; + data->userData = userData; + + g_file_set_display_name_async(gfile, gname, ioPriority, + nullptr, DOperatorPrivate::renameCallback, data); +} + +void DOperator::copyFileAsync(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc progressfunc, void *progressCallbackData, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + const QUrl &urlFrom = uri(); + + g_autoptr(GFile) gfile_from = d->makeGFile(urlFrom); + g_autoptr(GFile) gfile_to = d->makeGFile(destUri); + + g_autoptr(GFile) gfileTarget = nullptr; + if (DLocalHelper::checkGFileType(gfile_to, G_FILE_TYPE_DIRECTORY)) { + g_autofree char *basename = g_file_get_basename(gfile_from); + gfileTarget = g_file_get_child(gfile_to, basename); + } else { + gfileTarget = d->makeGFile(destUri); + } + + DOperatorPrivate::OperateFileOp *data = g_new0(DOperatorPrivate::OperateFileOp, 1); + data->callback = operatefunc; + data->userData = userData; + + g_file_copy_async(gfile_from, gfileTarget, GFileCopyFlags(flag), ioPriority, + nullptr, progressfunc, progressCallbackData, DOperatorPrivate::copyCallback, data); +} + +void DOperator::moveFileAsync(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc progressFunc, void *progressCallbackData, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + // TODO: + // since 2.72, but current gio version is 2.58 + // g_file_move_async(gfile_from, gfile_to, GFileCopyFlags(flag), ioPriority, nullptr, progressFunc, progressData, nullptr, userData); + + Q_UNUSED(ioPriority) + Q_UNUSED(operatefunc) + Q_UNUSED(userData) + bool ret = moveFile(destUri, flag, progressFunc, progressCallbackData); + if (operatefunc) + operatefunc(ret, userData); +} + +QString DOperator::trashFile() +{ + g_autoptr(GError) gerror = nullptr; + + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + bool ret = g_file_trash(gfile, nullptr, &gerror); + QString targetTrashPath; + if (ret) { + auto targetTrashPath = TrashFileHelper::trashTargetPath(uri.path(), gfile); + if (targetTrashPath.isEmpty()) + d->error.setCode(DFMIOErrorCode::DFM_IO_ERROR_NONE_TARGET_TRASH); + return targetTrashPath; + } + + if (gerror) + d->setErrorFromGError(gerror); + + return targetTrashPath; +} + +bool DOperator::deleteFile() +{ + g_autoptr(GError) gerror = nullptr; + + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + bool ret = g_file_delete(gfile, nullptr, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + + return ret; +} + +bool DOperator::restoreFile(DOperator::ProgressCallbackFunc func, void *progressCallbackData) +{ + GError *gerror = nullptr; + + const QUrl &uri = this->uri(); + GFile *file = d->makeGFile(uri); + + GFileInfo *gfileinfo = g_file_query_info(file, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH, G_FILE_QUERY_INFO_NONE, nullptr, &gerror); + g_object_unref(file); + + if (!gfileinfo) { + if (gerror) { + d->setErrorFromGError(gerror); + g_error_free(gerror); + } + return false; + } + + const char *srcPath = g_file_info_get_attribute_byte_string(gfileinfo, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH); + + if (srcPath == nullptr) { + g_object_unref(gfileinfo); + return false; + } + + QUrl urlDest; + urlDest.setPath(QString::fromLocal8Bit(srcPath)); + urlDest.setScheme(QString("file")); + + bool ret = moveFile(urlDest, DFile::CopyFlag::kNone, func, progressCallbackData); + + g_object_unref(gfileinfo); + + return ret; +} + +void DOperator::trashFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + DOperatorPrivate::OperateFileOp *data = g_new0(DOperatorPrivate::OperateFileOp, 1); + data->callback = operatefunc; + data->userData = userData; + + g_file_trash_async(gfile, ioPriority, nullptr, DOperatorPrivate::trashCallback, data); +} + +void DOperator::deleteFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + DOperatorPrivate::OperateFileOp *data = g_new0(DOperatorPrivate::OperateFileOp, 1); + data->callback = operatefunc; + data->userData = userData; + + g_file_delete_async(gfile, ioPriority, nullptr, DOperatorPrivate::deleteCallback, data); +} + +void DOperator::restoreFileAsync(DOperator::ProgressCallbackFunc func, void *progressCallbackData, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + // TODO: impl me! + Q_UNUSED(ioPriority) + Q_UNUSED(operatefunc) + Q_UNUSED(userData) + restoreFile(func, progressCallbackData); +} + +bool DOperator::touchFile() +{ + g_autoptr(GError) gerror = nullptr; + + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + // if file exist, return failed + g_autoptr(GFileOutputStream) stream = g_file_create(gfile, GFileCreateFlags::G_FILE_CREATE_REPLACE_DESTINATION, nullptr, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + + return stream != nullptr; +} + +bool DOperator::makeDirectory() +{ + // only create direct path + g_autoptr(GError) gerror = nullptr; + + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + bool ret = g_file_make_directory(gfile, nullptr, &gerror); + + if (gerror) + d->setErrorFromGError(gerror); + + return ret; +} + +bool DOperator::createLink(const QUrl &link) +{ + g_autoptr(GError) gerror = nullptr; + + g_autoptr(GFile) gfile = d->makeGFile(link); + + const QUrl &uri = this->uri(); + const QString &linkValue = uri.toLocalFile(); + + bool ret = g_file_make_symbolic_link(gfile, linkValue.toLocal8Bit().data(), nullptr, &gerror); + + if (!ret) + d->setErrorFromGError(gerror); + + return ret; +} + +void DOperator::touchFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + DOperatorPrivate::OperateFileOp *data = g_new0(DOperatorPrivate::OperateFileOp, 1); + data->callback = operatefunc; + data->userData = userData; + + g_file_create_async(gfile, GFileCreateFlags::G_FILE_CREATE_REPLACE_DESTINATION, ioPriority, nullptr, DOperatorPrivate::touchCallback, data); +} + +void DOperator::makeDirectoryAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + // only create direct path + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + DOperatorPrivate::OperateFileOp *data = g_new0(DOperatorPrivate::OperateFileOp, 1); + data->callback = operatefunc; + data->userData = userData; + + g_file_make_directory_async(gfile, ioPriority, nullptr, DOperatorPrivate::makeDirCallback, data); +} + +void DOperator::createLinkAsync(const QUrl &link, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) +{ + // TODO: imple me! + Q_UNUSED(ioPriority) + Q_UNUSED(operatefunc) + Q_UNUSED(userData) + createLink(link); +} + +bool DOperator::setFileInfo(const DFileInfo &fileInfo) +{ + const QUrl &uri = this->uri(); + g_autoptr(GFile) gfile = d->makeGFile(uri); + + bool ret = true; + for (const auto &[key, value] : DLocalHelper::attributeInfoMapFunc()) { + g_autoptr(GError) gerror = nullptr; + bool succ = DLocalHelper::setAttributeByGFile(gfile, key, fileInfo.attribute(key, nullptr), &gerror); + if (!succ) + ret = false; + if (gerror) + d->setErrorFromGError(gerror); + } + + return ret; +} + +bool DOperator::cancel() +{ + // TODO: imple me! + return true; +} + +DFMIOError DOperator::lastError() const +{ + return d->error; +} diff --git a/src/dfm-io/dfm-io/src/local/dlocalwatcher.cpp b/src/dfm-io/dfm-io/dwatcher.cpp similarity index 74% rename from src/dfm-io/dfm-io/src/local/dlocalwatcher.cpp rename to src/dfm-io/dfm-io/dwatcher.cpp index 450f657..a7dad46 100644 --- a/src/dfm-io/dfm-io/src/local/dlocalwatcher.cpp +++ b/src/dfm-io/dfm-io/dwatcher.cpp @@ -1,13 +1,10 @@ -// SPDX-FileCopyrightText: 2021 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_utils.h" -#include "local/dlocalwatcher.h" -#include "local/dlocalwatcher_p.h" -#include "local/dlocalfileinfo.h" +#include -#include +#include "private/dwatcher_p.h" #include @@ -18,93 +15,43 @@ USING_IO_NAMESPACE -DLocalWatcherPrivate::DLocalWatcherPrivate(DLocalWatcher *q) - : q(q) -{ -} +/************************************************ + * DWatcherPrivate + ***********************************************/ -DLocalWatcherPrivate::~DLocalWatcherPrivate() -{ -} - -void DLocalWatcherPrivate::setWatchType(DWatcher::WatchType type) +DWatcherPrivate::DWatcherPrivate(DWatcher *q) + : q(q) { - this->type = type; } -DWatcher::WatchType DLocalWatcherPrivate::watchType() const +DWatcherPrivate::~DWatcherPrivate() { - return this->type; } -bool DLocalWatcherPrivate::start(int timeRate) +GFileMonitor *DWatcherPrivate::createMonitor(GFile *gfile, DWatcher::WatchType type) { - // stop first - stop(); + Q_UNUSED(type) - const QUrl &uri = q->uri(); - QString url = uri.url(); - if (uri.scheme() == "file" && uri.path() == "/") - url.append("/"); + if (!gfile) { + error.setCode(DFMIOErrorCode(DFM_IO_ERROR_NOT_FOUND)); + return nullptr; + } - gfile = g_file_new_for_uri(url.toStdString().c_str()); + g_autoptr(GError) gerror = nullptr; + g_autoptr(GCancellable) cancel = g_cancellable_new(); - gmonitor = createMonitor(gfile, type); + GFileMonitorFlags flags = GFileMonitorFlags(G_FILE_MONITOR_WATCH_MOUNTS | G_FILE_MONITOR_WATCH_MOVES); + gmonitor = g_file_monitor(gfile, flags, cancel, &gerror); if (!gmonitor) { - g_object_unref(gfile); - gfile = nullptr; - - return startProxy(); - } - - g_file_monitor_set_rate_limit(gmonitor, timeRate); - - g_signal_connect(gmonitor, "changed", G_CALLBACK(&DLocalWatcherPrivate::watchCallback), q); + setErrorFromGError(gerror); - return true; -} -bool DLocalWatcherPrivate::stop() -{ - if (proxy) { - proxy->stop(); - } else { - if (gmonitor) { - g_file_monitor_cancel(gmonitor); - g_object_unref(gmonitor); - gmonitor = nullptr; - } - if (gfile) { - g_object_unref(gfile); - gfile = nullptr; - } + return nullptr; } - - return true; -} - -bool DLocalWatcherPrivate::running() const -{ - if (proxy) - return proxy->running(); - - return gmonitor != nullptr; -} - -bool DLocalWatcherPrivate::startProxy() -{ - if (!proxy) - proxy = new DLocalWatcherProxy(q); - - return proxy->start(); -} - -DFMIOError DLocalWatcherPrivate::lastError() -{ - return error; + return gmonitor; } -void DLocalWatcherPrivate::setErrorFromGError(GError *gerror) +void DWatcherPrivate::setErrorFromGError(GError *gerror) { if (!gerror) return error.setCode(DFMIOErrorCode(DFM_IO_ERROR_FAILED)); @@ -115,15 +62,20 @@ void DLocalWatcherPrivate::setErrorFromGError(GError *gerror) } } -void DLocalWatcherPrivate::watchCallback(GFileMonitor *monitor, - GFile *child, - GFile *other, - GFileMonitorEvent eventType, - gpointer userData) +bool DWatcherPrivate::startProxy() +{ + if (!proxy) + proxy = new DLocalWatcherProxy(q); + + return proxy->start(); +} + +void DWatcherPrivate::watchCallback(GFileMonitor *monitor, GFile *child, GFile *other, + GFileMonitorEvent eventType, gpointer userData) { Q_UNUSED(monitor); - DLocalWatcher *watcher = static_cast(userData); + DWatcher *watcher = static_cast(userData); if (nullptr == watcher) { return; } @@ -191,30 +143,110 @@ void DLocalWatcherPrivate::watchCallback(GFileMonitor *monitor, } } -GFileMonitor *DLocalWatcherPrivate::createMonitor(GFile *gfile, DWatcher::WatchType type) +DWatcher::DWatcher(const QUrl &uri, QObject *parent) + : QObject(parent), d(new DWatcherPrivate(this)) { - Q_UNUSED(type) + d->uri = uri; +} - if (!gfile) { - error.setCode(DFMIOErrorCode(DFM_IO_ERROR_NOT_FOUND)); - return nullptr; +/************************************************ + * DWatcher + ***********************************************/ + +DWatcher::~DWatcher() +{ +} + +QUrl DWatcher::uri() const +{ + return d->uri; +} + +void DWatcher::setTimeRate(int msec) +{ + d->timeRate = msec; +} + +int DWatcher::timeRate() const +{ + return d->timeRate; +} + +void DWatcher::setWatchType(DWatcher::WatchType type) +{ + d->type = type; +} + +DWatcher::WatchType DWatcher::watchType() const +{ + return d->type; +} + +bool DWatcher::running() const +{ + if (d->proxy) + return d->proxy->running(); + + return d->gmonitor != nullptr; +} + +bool DWatcher::start(int timeRate) +{ + // stop first + stop(); + + const QUrl &uri = this->uri(); + QString url = uri.url(); + if (uri.scheme() == "file" && uri.path() == "/") + url.append("/"); + + d->gfile = g_file_new_for_uri(url.toStdString().c_str()); + + d->gmonitor = d->createMonitor(d->gfile, d->type); + + if (!d->gmonitor) { + g_object_unref(d->gfile); + d->gfile = nullptr; + + return d->startProxy(); } - g_autoptr(GError) gerror = nullptr; - g_autoptr(GCancellable) cancel = g_cancellable_new(); + g_file_monitor_set_rate_limit(d->gmonitor, timeRate); - GFileMonitorFlags flags = GFileMonitorFlags(G_FILE_MONITOR_WATCH_MOUNTS | G_FILE_MONITOR_WATCH_MOVES); - gmonitor = g_file_monitor(gfile, flags, cancel, &gerror); + g_signal_connect(d->gmonitor, "changed", G_CALLBACK(&DWatcherPrivate::watchCallback), this); - if (!gmonitor) { - setErrorFromGError(gerror); + return true; +} - return nullptr; +bool DWatcher::stop() +{ + if (d->proxy) { + d->proxy->stop(); + } else { + if (d->gmonitor) { + g_file_monitor_cancel(d->gmonitor); + g_object_unref(d->gmonitor); + d->gmonitor = nullptr; + } + if (d->gfile) { + g_object_unref(d->gfile); + d->gfile = nullptr; + } } - return gmonitor; + + return true; +} + +DFMIOError DWatcher::lastError() const +{ + return d->error; } -DLocalWatcherProxy::DLocalWatcherProxy(DLocalWatcher *qq) +/************************************************ + * DLocalWatcherProxy + ***********************************************/ + +DLocalWatcherProxy::DLocalWatcherProxy(DWatcher *qq) : QObject(qq), q(qq), monitorFile(qq->uri().path()) @@ -397,49 +429,3 @@ void DLocalWatcherProxy::onNotifierActived() q->fileChanged(QUrl::fromLocalFile(filePath)); } } - -DLocalWatcher::DLocalWatcher(const QUrl &uri, QObject *parent) - : DWatcher(uri, parent), d(new DLocalWatcherPrivate(this)) -{ - registerSetWatchType(std::bind(&DLocalWatcher::setWatchType, this, std::placeholders::_1)); - registerWatchType(std::bind(&DLocalWatcher::watchType, this)); - registerRunning(std::bind(&DLocalWatcher::running, this)); - registerStart(std::bind(&DLocalWatcher::start, this, std::placeholders::_1)); - registerStop(std::bind(&DLocalWatcher::stop, this)); - registerLastError(std::bind(&DLocalWatcher::lastError, this)); -} - -DLocalWatcher::~DLocalWatcher() -{ - d->stop(); -} - -void DLocalWatcher::setWatchType(DWatcher::WatchType type) -{ - d->setWatchType(type); -} - -DWatcher::WatchType DLocalWatcher::watchType() const -{ - return d->watchType(); -} - -bool DLocalWatcher::running() const -{ - return d->running(); -} - -bool DLocalWatcher::start(int timeRate /*= 200*/) -{ - return d->start(timeRate); -} - -bool DLocalWatcher::stop() -{ - return d->stop(); -} - -DFMIOError DLocalWatcher::lastError() const -{ - return d->lastError(); -} diff --git a/src/dfm-io/dfm-io/include/core/denumerator.h b/src/dfm-io/dfm-io/include/core/denumerator.h deleted file mode 100644 index 43b76bd..0000000 --- a/src/dfm-io/dfm-io/include/core/denumerator.h +++ /dev/null @@ -1,168 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DENUMERATOR_H -#define DENUMERATOR_H - -#include "dfmio_global.h" - -#include "error/error.h" - -#include -#include - -#include - -const int16_t kDirFilterNofilter = -1; -const uint16_t kDirFilterDirs = 0x001; -const uint16_t kDirFilterFiles = 0x002; -const uint16_t kDirFilterDrives = 0x004; -const uint16_t kDirFilterAllEntries = 0x001 | 0x002 | 0x004; -const uint16_t kDirFilterNoSymLinks = 0x008; - -const uint16_t kDirFilterReadable = 0x010; -const uint16_t kDirFilterWritable = 0x020; -const uint16_t kDirFilterExecutable = 0x040; -const uint16_t kDirFilterModified = 0x080; - -const uint16_t kDirFilterHidden = 0x100; -const uint16_t kDirFilterSystem = 0x200; -const uint16_t kDirFilterAllDirs = 0x400; -const uint16_t kDirFilterCaseSensitive = 0x800; - -const uint16_t kDirFilterNoDot = 0x2000; -const uint16_t kDirFilterNoDotDot = 0x4000; -const uint16_t kDirFilterNoDotAndDotDot = 0x2000 | 0x4000; - -BEGIN_IO_NAMESPACE - -class DEnumeratorPrivate; -class DFileInfo; - -class DEnumerator -{ -public: - enum class DirFilter : int16_t { - kNoFilter = kDirFilterNofilter, // no filter - kDirs = kDirFilterDirs, // List directories that match the filters. - kFiles = kDirFilterFiles, // List files. - kDrives = kDirFilterDrives, // List disk drives (ignored under Unix). - kAllEntries = kDirFilterAllEntries, // List directories, files, drives and symlinks (this does not list broken symlinks unless you specify System). - kNoSymLinks = kDirFilterNoSymLinks, // Do not list symbolic links (ignored by operating systems that don't support symbolic links). - - kReadable = kDirFilterReadable, // List files for which the application has read access. The Readable value needs to be combined with Dirs or Files. - kWritable = kDirFilterWritable, // List files for which the application has write access. The Writable value needs to be combined with Dirs or Files. - kExecutable = kDirFilterExecutable, // List files for which the application has execute access. The Executable value needs to be combined with Dirs or Files. - kModified = kDirFilterModified, // Only list files that have been modified (ignored on Unix). - - kHidden = kDirFilterHidden, // List hidden files (on Unix, files starting with a "."). - kSystem = kDirFilterSystem, // List system files (on Unix, FIFOs, sockets and device files are included; on Windows, .lnk files are included) - kAllDirs = kDirFilterAllDirs, // List all directories; i.e. don't apply the filters to directory names. - kCaseSensitive = kDirFilterCaseSensitive, // The filter should be case sensitive. - - kNoDot = kDirFilterNoDot, // Do not list the special entry ".". - kNoDotDot = kDirFilterNoDotDot, // Do not list the special entry "..". - kNoDotAndDotDot = kDirFilterNoDotAndDotDot, // Do not list the special entries "." and "..". - }; - Q_DECLARE_FLAGS(DirFilters, DirFilter) - - enum class IteratorFlag : uint8_t { - kNoIteratorFlags = 0x00, // The default value, representing no flags. The iterator will return entries for the assigned path. - kFollowSymlinks = 0x01, // When combined with Subdirectories, this flag enables iterating through all subdirectories of the assigned path, following all symbolic links. Symbolic link loops (e.g., "link" => "." or "link" => "..") are automatically detected and ignored. - kSubdirectories = 0x02, // List entries inside all subdirectories as well. - }; - Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag) - enum class SortRoleCompareFlag : uint8_t { - kSortRoleCompareDefault = 0, // The default value - kSortRoleCompareFileName = 1, // compare by file path - kSortRoleCompareFileSize = 2, // compare by file size - kSortRoleCompareFileLastModified = 3, // compare by last modified time - kSortRoleCompareFileLastRead = 4, // compare by last read time - }; - - enum class ArgumentKey : uint8_t { - kArgumentSortRole = 0, // key of sort role - kArgumentSortOrder = 1, // key of sort order - kArgumentMixDirAndFile = 2, // key of mix dir and file - }; - - struct SortFileInfo { - QUrl url; - bool isFile { false }; - bool isDir { false }; - bool isSymLink { false }; - bool isHide {false }; - bool isReadable {false }; - bool isWriteable {false }; - bool isExecutable {false }; - }; - - // call back - using InitCallbackFunc = void (*)(bool, void *); - - using InitFunc = std::function; - using InitAsyncFunc = std::function; - using FileInfoListFunc = std::function>()>; - using SetArgumentsFunc = std::function &)>; - using SortFileInfoListFunc = std::function>()>; - using HasNextFunc = std::function; - using NextFunc = std::function; - using FileInfoFunc = std::function()>; - using FileCountFunc = std::function; - using CancelFunc = std::function; - - using LastErrorFunc = std::function; - -public: - DEnumerator(const QUrl &uri, const QStringList &nameFilters = QStringList(), DirFilters filters = DirFilter::kNoFilter, IteratorFlags flags = IteratorFlag::kNoIteratorFlags); - virtual ~DEnumerator(); - - DFM_VIRTUAL bool init(); - DFM_VIRTUAL void initAsync(int ioPriority = 0, InitCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL bool cancel(); - - QUrl uri() const; - QStringList nameFilters() const; - DirFilters dirFilters(); - IteratorFlags iteratorFlags() const; - void setTimeout(ulong timeout); - ulong timeout() const; - - DFM_VIRTUAL bool hasNext() const; - DFM_VIRTUAL QUrl next() const; - DFM_VIRTUAL QSharedPointer fileInfo() const; - DFM_VIRTUAL quint64 fileCount(); - DFM_VIRTUAL QList> fileInfoList(); - DFM_VIRTUAL void setArguments(const QMap &argus); - DFM_VIRTUAL QList> sortFileInfoList(); - - DFM_VIRTUAL DFMIOError lastError() const; - - // register - void registerInit(const InitFunc &func); - void registerInitAsync(const InitAsyncFunc &func); - void registerCancel(const CancelFunc &func); - void registerFileInfoList(const FileInfoListFunc &func); - void registerSetArguments(const SetArgumentsFunc &func); - void registerSortFileInfoList(const SortFileInfoListFunc &func); - void registerHasNext(const HasNextFunc &func); - void registerNext(const NextFunc &func); - void registerFileInfo(const FileInfoFunc &func); - void registerFileCount(const FileCountFunc &func); - void registerLastError(const LastErrorFunc &func); - -private: - QSharedPointer d = nullptr; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(DEnumerator::DirFilters); -Q_DECLARE_OPERATORS_FOR_FLAGS(DEnumerator::IteratorFlags); - -END_IO_NAMESPACE - -Q_DECLARE_METATYPE(DFMIO::DEnumerator::SortRoleCompareFlag) -Q_DECLARE_METATYPE(QSharedPointer) -Q_DECLARE_METATYPE(QList>) - -#endif // DENUMERATOR_H diff --git a/src/dfm-io/dfm-io/include/core/dfile.h b/src/dfm-io/dfm-io/include/core/dfile.h deleted file mode 100644 index 8cdccbd..0000000 --- a/src/dfm-io/dfm-io/include/core/dfile.h +++ /dev/null @@ -1,233 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DFILE_H -#define DFILE_H - -#include "dfmio_global.h" - -#include "error/error.h" - -#include -#include - -#include - -BEGIN_IO_NAMESPACE - -class DFileFuture; -class DFilePrivate; -class DFile -{ -public: - enum class OpenFlag : uint16_t { - kNotOpen = 0x0000, - kReadOnly = 0x0001, - kWriteOnly = 0x0002, // auto create - kReadWrite = kReadOnly | kWriteOnly, // auto create - kAppend = 0x0004, - kTruncate = 0x0008, - kText = 0x0010, - kUnbuffered = 0x0020, - kNewOnly = 0x0040, - kExistingOnly = 0x0080, - - kCustomStart = 0x0100, - }; - Q_DECLARE_FLAGS(OpenFlags, OpenFlag) - - enum class CopyFlag : uint8_t { - kNone = 0, // No flags set. - kOverwrite = 1, // Overwrite any existing files. - kBackup = 2, // Make a backup of any existing files. - kNoFollowSymlinks = 3, // Don’t follow symlinks. - kAllMetadata = 4, // Copy all file metadata instead of just default set used for copy. - kNoFallbackForMove = 5, // Don’t use copy and delete fallback if native move not supported. - kTargetDefaultPerms = 6, // Leaves target file with default perms, instead of setting the source file perms. - - kUserFlag = 0x10 - }; - - enum class SeekType : uint8_t { - kBegin = 0x00, - kCurrent = 0x01, - kEnd = 0x02 - }; - - enum class Permission : uint16_t { - kNoPermission = 0x0000, - - kExeOther = 0x0001, - kWriteOther = 0x0002, - kReadOther = 0x0004, - - kExeGroup = 0x0010, - kWriteGroup = 0x0020, - kReadGroup = 0x0040, - - kExeUser = 0x0100, - kWriteUser = 0x0200, - kReadUser = 0x0400, - - kExeOwner = 0x1000, - kWriteOwner = 0x2000, - kReadOwner = 0x4000, - }; - Q_DECLARE_FLAGS(Permissions, Permission) - - // callback, use function pointer - using ReadCallbackFunc = void (*)(qint64, void *); - using ReadQCallbackFunc = void (*)(QByteArray, void *); - using ReadAllCallbackFunc = void (*)(QByteArray, void *); - - using WriteCallbackFunc = void (*)(qint64, void *); - using WriteAllCallbackFunc = void (*)(qint64, void *); - using WriteQCallbackFunc = void (*)(qint64, void *); - - // register function, use std::function - // interface - using OpenFunc = std::function; - using CloseFunc = std::function; - // read - using ReadFunc = std::function; - using ReadQFunc = std::function; - using ReadAllFunc = std::function; - using ReadFuncAsync = std::function; - using ReadQFuncAsync = std::function; - using ReadAllFuncAsync = std::function; - - // write - using WriteFunc = std::function; - using WriteAllFunc = std::function; - using WriteQFunc = std::function; - using WriteFuncAsync = std::function; - using WriteAllFuncAsync = std::function; - using WriteQFuncAsync = std::function; - - using CancelFunc = std::function; - using SeekFunc = std::function; - using PosFunc = std::function; - using FlushFunc = std::function; - using SizeFunc = std::function; - using ExistsFunc = std::function; - - using PermissionFunc = std::function; - using SetPermissionFunc = std::function; - using LastErrorFunc = std::function; - using SetErrorFunc = std::function; - - // future - using OpenAsyncFuncFuture = std::function; - using CloseAsyncFuncFuture = std::function; - using ReadAsyncFuncFuture = std::function; - using ReadAllAsyncFuncFuture = std::function; - using WriteAsyncFuncFuture = std::function; - using WriteAllAsyncFuncFuture = std::function; - using FlushAsyncFuncFuture = std::function; - using SizeAsyncFuncFuture = std::function; - using ExistsAsyncFuncFuture = std::function; - using PermissionsAsyncFuncFuture = std::function; - using SetPermissionsAsyncFuncFuture = std::function; - -public: - DFile(const QUrl &uri); - virtual ~DFile(); - - DFM_VIRTUAL bool open(OpenFlags mode); - DFM_VIRTUAL bool close(); - - // read and write - DFM_VIRTUAL qint64 read(char *data, qint64 maxSize); - DFM_VIRTUAL QByteArray read(qint64 maxSize); - DFM_VIRTUAL QByteArray readAll(); - DFM_VIRTUAL qint64 write(const char *data, qint64 len); - DFM_VIRTUAL qint64 write(const char *data); - DFM_VIRTUAL qint64 write(const QByteArray &byteArray); - DFM_VIRTUAL bool cancel(); - // async - DFM_VIRTUAL void readAsync(char *data, qint64 maxSize, int ioPriority = 0, ReadCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void readQAsync(qint64 maxSize, int ioPriority = 0, ReadQCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void readAllAsync(int ioPriority = 0, ReadAllCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void writeAsync(const char *data, qint64 len, int ioPriority = 0, WriteCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void writeAllAsync(const char *data, int ioPriority = 0, WriteAllCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void writeQAsync(const QByteArray &byteArray, int ioPriority = 0, WriteQCallbackFunc func = nullptr, void *userData = nullptr); - - DFM_VIRTUAL bool seek(qint64 pos, SeekType type = SeekType::kBegin) const; - DFM_VIRTUAL qint64 pos() const; - DFM_VIRTUAL bool flush(); - DFM_VIRTUAL qint64 size() const; - DFM_VIRTUAL bool exists() const; - - DFM_VIRTUAL Permissions permissions() const; - DFM_VIRTUAL bool setPermissions(Permissions permission); - - DFM_VIRTUAL DFMIOError lastError() const; - - // future - DFM_VIRTUAL [[nodiscard]] DFileFuture *openAsync(OpenFlags mode, int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *closeAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *readAsync(qint64 maxSize, int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *readAllAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *flushAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *sizeAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent = nullptr); - - // register - void registerOpen(const OpenFunc &func); - void registerClose(const CloseFunc &func); - void registerRead(const ReadFunc &func); - void registerReadQ(const ReadQFunc &func); - void registerReadAll(const ReadAllFunc &func); - void registerReadAsync(const ReadFuncAsync &func); - void registerReadQAsync(const ReadQFuncAsync &func); - void registerReadAllAsync(const ReadAllFuncAsync &func); - - void registerWrite(const WriteFunc &func); - void registerWriteAll(const WriteAllFunc &func); - void registerWriteQ(const WriteQFunc &func); - void registerWriteAsync(const WriteFuncAsync &func); - void registerWriteAllAsync(const WriteAllFuncAsync &func); - void registerWriteQAsync(const WriteQFuncAsync &func); - - void registerCancel(const CancelFunc &func); - void registerSeek(const SeekFunc &func); - void registerPos(const PosFunc &func); - void registerFlush(const FlushFunc &func); - void registerSize(const SizeFunc &func); - void registerExists(const ExistsFunc &func); - void registerPermissions(const PermissionFunc &func); - void registerSetPermissions(const SetPermissionFunc &func); - void registerLastError(const LastErrorFunc &func); - void registerSetError(const SetErrorFunc &func); - - // future - void registerOpenAsyncFuture(const OpenAsyncFuncFuture &func); - void registerCloseAsyncFuture(const CloseAsyncFuncFuture &func); - void registerReadAsyncFuture(const ReadAsyncFuncFuture &func); - void registerReadAllAsyncFuture(const ReadAllAsyncFuncFuture &func); - void registerWriteAsyncFuture(const WriteAsyncFuncFuture &func); - void registerWriteAllAsyncFuture(const WriteAllAsyncFuncFuture &func); - void registerFlushAsyncFuture(const FlushAsyncFuncFuture &func); - void registerSizeAsyncFuture(const SizeAsyncFuncFuture &func); - void registerExistsAsyncFuture(const ExistsAsyncFuncFuture &func); - void registerPermissionsAsyncFuture(const PermissionsAsyncFuncFuture &func); - void registerSetPermissionsAsyncFuture(const SetPermissionsAsyncFuncFuture &func); - - QUrl uri() const; - bool isOpen(); - -private: - QSharedPointer d = nullptr; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(DFile::OpenFlags); -Q_DECLARE_OPERATORS_FOR_FLAGS(DFile::Permissions); - -END_IO_NAMESPACE - -#endif // DFILE_H diff --git a/src/dfm-io/dfm-io/include/core/diofactory.h b/src/dfm-io/dfm-io/include/core/diofactory.h deleted file mode 100644 index 2d044a4..0000000 --- a/src/dfm-io/dfm-io/include/core/diofactory.h +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DIOFACTORY_H -#define DIOFACTORY_H - -#include "dfmio_global.h" -#include "denumerator.h" -#include "error/error.h" -#include "core/dfileinfo.h" - -#include - -#include - -BEGIN_IO_NAMESPACE - -class DIOFactoryPrivate; -class DFileInfo; -class DFile; -class DEnumerator; -class DWatcher; -class DOperator; - -class DIOFactory -{ -public: - using CreateFileInfoFunc = std::function(const char *, const DFMIO::DFileInfo::FileQueryInfoFlags)>; - using CreateFileFunc = std::function()>; - using CreateEnumeratorFunc = std::function(const QStringList &nameFilters, DEnumerator::DirFilters filters, DEnumerator::IteratorFlags flags)>; - using CreateWatcherFunc = std::function()>; - using CreateOperatorFunc = std::function()>; - - DIOFactory(const QUrl &uri); - virtual ~DIOFactory(); - - void setUri(const QUrl &uri); - QUrl uri() const; - - DFM_VIRTUAL QSharedPointer createFileInfo(const char *attributes = "*", - const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone) const; - DFM_VIRTUAL QSharedPointer createFile() const; - DFM_VIRTUAL QSharedPointer createEnumerator(const QStringList &nameFilters = QStringList(), - DEnumerator::DirFilters filters = DEnumerator::DirFilter::kNoFilter, - DEnumerator::IteratorFlags flags = DEnumerator::IteratorFlag::kNoIteratorFlags) const; - DFM_VIRTUAL QSharedPointer createWatcher() const; - DFM_VIRTUAL QSharedPointer createOperator() const; - - /** - * @brief 注册接口 - * @param - * @return - */ - void registerCreateFileInfo(const CreateFileInfoFunc &func); - void registerCreateFile(const CreateFileFunc &func); - void registerCreateEnumerator(const CreateEnumeratorFunc &func); - void registerCreateWatcher(const CreateWatcherFunc &func); - void registerCreateOperator(const CreateOperatorFunc &func); - - DFMIOError lastError() const; - -protected: - QScopedPointer d; - -private: - Q_DISABLE_COPY(DIOFactory) -}; - -END_IO_NAMESPACE - -#endif // DIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/core/doperator.h b/src/dfm-io/dfm-io/include/core/doperator.h deleted file mode 100644 index dea680b..0000000 --- a/src/dfm-io/dfm-io/include/core/doperator.h +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DOPERATOR_H -#define DOPERATOR_H - -#include "dfmio_global.h" -#include "core/dfile.h" -#include "error/error.h" - -#include -#include - -#include - -BEGIN_IO_NAMESPACE - -class DOperatorPrivate; -class DFileInfo; - -class DOperator -{ -public: - // callback, use function pointer - using ProgressCallbackFunc = void (*)(int64_t, int64_t, void *); // current_num_bytes, total_num_bytes, user_data - using FileOperateCallbackFunc = void (*)(bool, void *); - - // register function, use std::function - using RenameFileFunc = std::function; - using RenameFileByStdFunc = std::function; - using RenameFileFuncAsync = std::function; - using CopyFileFunc = std::function; - using CopyFileFuncAsync = std::function; - using MoveFileFunc = std::function; - using MoveFileFuncAsync = std::function; - - using TrashFileFunc = std::function; - using TrashFileFuncAsync = std::function; - using DeleteFileFunc = std::function; - using DeleteFileFuncAsync = std::function; - using RestoreFileFunc = std::function; - using RestoreFileFuncAsync = std::function; - - using TouchFileFunc = std::function; - using TouchFileFuncAsync = std::function; - using MakeDirectoryFunc = std::function; - using MakeDirectoryFuncAsync = std::function; - using CreateLinkFunc = std::function; - using CreateLinkFuncAsync = std::function; - - using SetFileInfoFunc = std::function; - - using CancelFunc = std::function; - using LastErrorFunc = std::function; - -public: - DOperator(const QUrl &uri); - virtual ~DOperator(); - - QUrl uri() const; - - DFM_VIRTUAL bool renameFile(const QString &newName); - DFM_VIRTUAL bool renameFile(const QUrl &toUrl); - DFM_VIRTUAL bool copyFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); - DFM_VIRTUAL bool moveFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); - // async - DFM_VIRTUAL void renameFileAsync(const QString &newName, int ioPriority = 0, FileOperateCallbackFunc func = nullptr, void *userData = nullptr); - DFM_VIRTUAL void copyFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc progressfunc = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - DFM_VIRTUAL void moveFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - - DFM_VIRTUAL QString trashFile(); - DFM_VIRTUAL bool deleteFile(); - DFM_VIRTUAL bool restoreFile(ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); - // async - DFM_VIRTUAL void trashFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - DFM_VIRTUAL void deleteFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - DFM_VIRTUAL void restoreFileAsync(ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - - DFM_VIRTUAL bool touchFile(); - DFM_VIRTUAL bool makeDirectory(); - DFM_VIRTUAL bool createLink(const QUrl &link); - // async - DFM_VIRTUAL void touchFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - DFM_VIRTUAL void makeDirectoryAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - DFM_VIRTUAL void createLinkAsync(const QUrl &link, int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - - DFM_VIRTUAL bool setFileInfo(const DFileInfo &fileInfo); - - DFM_VIRTUAL bool cancel(); - DFM_VIRTUAL DFMIOError lastError() const; - - //register - void registerRenameFile(const RenameFileFunc &func); - void registerRenameFileByStd(const RenameFileByStdFunc &func); - void registerCopyFile(const CopyFileFunc &func); - void registerMoveFile(const MoveFileFunc &func); - void registerRenameFileAsync(const RenameFileFuncAsync &func); - void registerCopyFileAsync(const CopyFileFuncAsync &func); - void registerMoveFileAsync(const MoveFileFuncAsync &func); - - void registerTrashFile(const TrashFileFunc &func); - void registerDeleteFile(const DeleteFileFunc &func); - void registerRestoreFile(const RestoreFileFunc &func); - void registerTrashFileAsync(const TrashFileFuncAsync &func); - void registerDeleteFileAsync(const DeleteFileFuncAsync &func); - void registerRestoreFileAsync(const RestoreFileFuncAsync &func); - - void registerTouchFile(const TouchFileFunc &func); - void registerMakeDirectory(const MakeDirectoryFunc &func); - void registerCreateLink(const CreateLinkFunc &func); - void registerTouchFileAsync(const TouchFileFuncAsync &func); - void registerMakeDirectoryAsync(const MakeDirectoryFuncAsync &func); - void registerCreateLinkAsync(const CreateLinkFuncAsync &func); - - void registerSetFileInfo(const SetFileInfoFunc &func); - - void registerCancel(const CancelFunc &func); - void registerLastError(const LastErrorFunc &func); - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DOPERATOR_H diff --git a/src/dfm-io/dfm-io/include/core/dwatcher.h b/src/dfm-io/dfm-io/include/core/dwatcher.h deleted file mode 100644 index 27f9f12..0000000 --- a/src/dfm-io/dfm-io/include/core/dwatcher.h +++ /dev/null @@ -1,76 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DWATCHER_H -#define DWATCHER_H - -#include "error.h" -#include "core/dfileinfo.h" - -#include -#include - -#include - -BEGIN_IO_NAMESPACE - -class DFileInfo; -class DWatcherPrivate; - -class DWatcher : public QObject -{ - Q_OBJECT -public: - enum class WatchType : uint8_t { - kAuto = 0x00, - kDir = 0x01, - kFile = 0x02, - }; - - using RunningFunc = std::function; - using StartFunc = std::function; - using StopFunc = std::function; - using SetWatchTypeFunc = std::function; - using WatchTypeFunc = std::function; - using LastErrorFunc = std::function; - -public: - explicit DWatcher(const QUrl &uri, QObject *parent = nullptr); - virtual ~DWatcher(); - - QUrl uri() const; - - void setTimeRate(int msec); - int timeRate() const; - - DFM_VIRTUAL void setWatchType(WatchType type); - DFM_VIRTUAL WatchType watchType() const; - - DFM_VIRTUAL bool running() const; - DFM_VIRTUAL bool start(int timeRate = 200); - DFM_VIRTUAL bool stop(); - - DFM_VIRTUAL DFMIOError lastError() const; - - // register - void registerRunning(const RunningFunc &func); - void registerStart(const StartFunc &func); - void registerStop(const StopFunc &func); - void registerSetWatchType(const SetWatchTypeFunc &func); - void registerWatchType(const WatchTypeFunc &func); - void registerLastError(const LastErrorFunc &func); - -Q_SIGNALS: - void fileChanged(const QUrl &url); - void fileDeleted(const QUrl &url); - void fileAdded(const QUrl &url); - void fileRenamed(const QUrl &fromUrl, const QUrl &toUrl); - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DWATCHER_H diff --git a/src/dfm-io/dfm-io/include/dfmio_register.h b/src/dfm-io/dfm-io/include/dfmio_register.h deleted file mode 100644 index 46f7b54..0000000 --- a/src/dfm-io/dfm-io/include/dfmio_register.h +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DFMIO_REGISTER_H -#define DFMIO_REGISTER_H - -#include "dfmio_global.h" - -#include -#include - -#include -#include -#include - -BEGIN_IO_NAMESPACE - -class DIOFactory; - -template -struct Factory { - template - struct Register { - Register(const QString &key) { - Factory::get().map.insert(key, [](U&&... u){ return new T(std::forward(u)...);}); - } - - Register(const QString &key, std::function&& f) { - Factory::get().map.insert(key, std::move(f)); - } - }; - - inline DIOFactory* produce(const QString& key, U&&... u) { - if (map.find(key) == map.end()) - return nullptr; - - return map[key](std::forward(u)...); - } - - inline QSharedPointer produceQShared(const QString& key, U&&... u) { - return QSharedPointer(produce(key, std::forward(u)...)); - } - - inline std::shared_ptr produceShared(const QString& key, U&&... u) { - return std::shared_ptr(produce(key, std::forward(u)...)); - } - - inline static Factory& get() { - static Factory instance; - return instance; - } - -private: - Factory() {} - Factory(const Factory&) = delete; - Factory(Factory&&) = delete; - - QMap> map; -}; - -bool dfmio_init(); -QSet schemesInited(); - -END_IO_NAMESPACE - -// example: -// REGISTER_FACTORY(DFtpFactory, "ftp") -#define REGISTER_FACTORY(T, key) DFMIO::Factory<>::Register REGISTER_FACTORY_VNAME(T)(key); -#define STATIC_REGISTER_FACTORY(T, key) static REGISTER_FACTORY(T, key) - -// example: -// REGISTER_FACTORY1(DLocalFactory, "file", QUrl) -#define REGISTER_FACTORY1(T, key, ...) DFMIO::Factory<__VA_ARGS__>::Register REGISTER_FACTORY_VNAME(T)(key); -#define STATIC_REGISTER_FACTORY1(T, key, ...) static REGISTER_FACTORY1(T, key, ...) - -// example: -// REGISTER_FACTORY2(DMtpFactory, "mtp", [](QUrl uri) {return DMtpFactory(uri};}, QUrl) -#define REGISTER_FACTORY2(T, key, f, ...) DFMIO::Factory<__VA_ARGS__>::Register REGISTER_FACTORY_VNAME(T)(key, f); -#define STATIC_REGISTER_FACTORY2(T, key, f, ...) static REGISTER_FACTORY2(T, key, f, ...) - -#define REGISTER_FACTORY_VNAME(T) reg_factory_##T##_ - -template -inline DFMIO::DIOFactory* produceIOFactory(const QString &key, Args &&... args){ - return DFMIO::Factory::get().produce(key, std::forward(args)...); -} -template -inline QSharedPointer produceQSharedIOFactory(const QString &key, Args &&... args){ - return DFMIO::Factory::get().produceQShared(key, std::forward(args)...); -} - -template -inline std::shared_ptr produceSharedIOFactory(const QString &key, Args &&... args){ - return DFMIO::Factory::get().produceShared(key, std::forward(args)...); -} - -#endif // DFMIO_REGISTER_H diff --git a/src/dfm-io/dfm-io/include/factory/dafciofactory.h b/src/dfm-io/dfm-io/include/factory/dafciofactory.h deleted file mode 100644 index b78c9a9..0000000 --- a/src/dfm-io/dfm-io/include/factory/dafciofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DAFCIOFACTORY_H -#define DAFCIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DAfcIOFactoryPrivate; - -class DAfcIOFactory : public DIOFactory -{ -public: - explicit DAfcIOFactory(const QUrl &uri); - ~DAfcIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DAFCIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dafpbrowseiofactory.h b/src/dfm-io/dfm-io/include/factory/dafpbrowseiofactory.h deleted file mode 100644 index 71cac7d..0000000 --- a/src/dfm-io/dfm-io/include/factory/dafpbrowseiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DAFPBROWSEIOFACTORY_H -#define DAFPBROWSEIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DAfpbrowseIOFactoryPrivate; - -class DAfpbrowseIOFactory : public DIOFactory -{ -public: - explicit DAfpbrowseIOFactory(const QUrl &uri); - ~DAfpbrowseIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DAFPBROWSEIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dafpiofactory.h b/src/dfm-io/dfm-io/include/factory/dafpiofactory.h deleted file mode 100644 index 8d04ce1..0000000 --- a/src/dfm-io/dfm-io/include/factory/dafpiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DAFPIOFACTORY_H -#define DAFPIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DAfpIOFactoryPrivate; - -class DAfpIOFactory : public DIOFactory -{ -public: - explicit DAfpIOFactory(const QUrl &uri); - ~DAfpIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DAFPIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/darchiveiofactory.h b/src/dfm-io/dfm-io/include/factory/darchiveiofactory.h deleted file mode 100644 index a1c5ab8..0000000 --- a/src/dfm-io/dfm-io/include/factory/darchiveiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DARCHIVEIOFACTORY_H -#define DARCHIVEIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DArchiveIOFactoryPrivate; - -class DArchiveIOFactory : public DIOFactory -{ -public: - explicit DArchiveIOFactory(const QUrl &uri); - ~DArchiveIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DARCHIVEIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dburniofactory.h b/src/dfm-io/dfm-io/include/factory/dburniofactory.h deleted file mode 100644 index b2cd041..0000000 --- a/src/dfm-io/dfm-io/include/factory/dburniofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DBURNIOFACTORY_H -#define DBURNIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DBurnIOFactoryPrivate; - -class DBurnIOFactory : public DIOFactory -{ -public: - explicit DBurnIOFactory(const QUrl &uri); - ~DBurnIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DBURNIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dcddaiofactory.h b/src/dfm-io/dfm-io/include/factory/dcddaiofactory.h deleted file mode 100644 index a5f990f..0000000 --- a/src/dfm-io/dfm-io/include/factory/dcddaiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DCDDAIOFACTORY_H -#define DCDDAIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DCddaIOFactoryPrivate; - -class DCddaIOFactory : public DIOFactory -{ -public: - explicit DCddaIOFactory(const QUrl &uri); - ~DCddaIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DCDDAIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dcomputeriofactory.h b/src/dfm-io/dfm-io/include/factory/dcomputeriofactory.h deleted file mode 100644 index a5b1a8d..0000000 --- a/src/dfm-io/dfm-io/include/factory/dcomputeriofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DCOMPUTERIOFACTORY_H -#define DCOMPUTERIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DComputerIOFactoryPrivate; - -class DComputerIOFactory : public DIOFactory -{ -public: - explicit DComputerIOFactory(const QUrl &uri); - ~DComputerIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DCOMPUTERIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/ddaviofactory.h b/src/dfm-io/dfm-io/include/factory/ddaviofactory.h deleted file mode 100644 index 47dddcb..0000000 --- a/src/dfm-io/dfm-io/include/factory/ddaviofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DDAVIOFACTORY_H -#define DDAVIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DDavIOFactoryPrivate; - -class DDavIOFactory : public DIOFactory -{ -public: - explicit DDavIOFactory(const QUrl &uri); - ~DDavIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DDAVIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dddaviofactory.h b/src/dfm-io/dfm-io/include/factory/dddaviofactory.h deleted file mode 100644 index 54d2d96..0000000 --- a/src/dfm-io/dfm-io/include/factory/dddaviofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DDDAVIOFACTORY_H -#define DDDAVIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DDdavIOFactoryPrivate; - -class DDdavIOFactory : public DIOFactory -{ -public: - explicit DDdavIOFactory(const QUrl &uri); - ~DDdavIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DDDAVIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/ddnssdiofactory.h b/src/dfm-io/dfm-io/include/factory/ddnssdiofactory.h deleted file mode 100644 index 3a254b8..0000000 --- a/src/dfm-io/dfm-io/include/factory/ddnssdiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DDNSSDIOFACTORY_H -#define DDNSSDIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DDnssdIOFactoryPrivate; - -class DDnssdIOFactory : public DIOFactory -{ -public: - explicit DDnssdIOFactory(const QUrl &uri); - ~DDnssdIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DDNSSDIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dftpiofactory.h b/src/dfm-io/dfm-io/include/factory/dftpiofactory.h deleted file mode 100644 index 26474a3..0000000 --- a/src/dfm-io/dfm-io/include/factory/dftpiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DFTPIOFACTORY_H -#define DFTPIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DFtpIOFactoryPrivate; - -class DFtpIOFactory : public DIOFactory -{ -public: - explicit DFtpIOFactory(const QUrl &uri); - ~DFtpIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DFTPIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dgoogleiofactory.h b/src/dfm-io/dfm-io/include/factory/dgoogleiofactory.h deleted file mode 100644 index df0083e..0000000 --- a/src/dfm-io/dfm-io/include/factory/dgoogleiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DGOOGLEIOFACTORY_H -#define DGOOGLEIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DGoogleIOFactoryPrivate; - -class DGoogleIOFactory : public DIOFactory -{ -public: - explicit DGoogleIOFactory(const QUrl &uri); - ~DGoogleIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DGOOGLEIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dgphoto2iofactory.h b/src/dfm-io/dfm-io/include/factory/dgphoto2iofactory.h deleted file mode 100644 index 17c8a5f..0000000 --- a/src/dfm-io/dfm-io/include/factory/dgphoto2iofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DGPHOTO2IOFACTORY_H -#define DGPHOTO2IOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DGphoto2IOFactoryPrivate; - -class DGphoto2IOFactory : public DIOFactory -{ -public: - explicit DGphoto2IOFactory(const QUrl &uri); - ~DGphoto2IOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DGPHOTO2IOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dhttpiofactory.h b/src/dfm-io/dfm-io/include/factory/dhttpiofactory.h deleted file mode 100644 index 97fe5f3..0000000 --- a/src/dfm-io/dfm-io/include/factory/dhttpiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DHTTPIOFACTORY_H -#define DHTTPIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DHttpIOFactoryPrivate; - -class DHttpIOFactory : public DIOFactory -{ -public: - explicit DHttpIOFactory(const QUrl &uri); - ~DHttpIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DHTTPIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dlocaliofactory.h b/src/dfm-io/dfm-io/include/factory/dlocaliofactory.h deleted file mode 100644 index 212da2b..0000000 --- a/src/dfm-io/dfm-io/include/factory/dlocaliofactory.h +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALIOFACTORY_H -#define DLOCALIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DLocalIOFactoryPrivate; - -class DLocalIOFactory : public DIOFactory -{ -public: - explicit DLocalIOFactory(const QUrl &uri); - ~DLocalIOFactory(); - - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createFileInfo(const char *attributes = "*", - const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone) const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - QSharedPointer createEnumerator(const QStringList &nameFilters = QStringList(), - DEnumerator::DirFilters filters = DEnumerator::DirFilter::kNoFilter, - DEnumerator::IteratorFlags flags = DEnumerator::IteratorFlag::kNoIteratorFlags) const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dmtpiofactory.h b/src/dfm-io/dfm-io/include/factory/dmtpiofactory.h deleted file mode 100644 index b66d8d2..0000000 --- a/src/dfm-io/dfm-io/include/factory/dmtpiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DMTPIOFACTORY_H -#define DMTPIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DMtpIOFactoryPrivate; - -class DMtpIOFactory : public DIOFactory -{ -public: - explicit DMtpIOFactory(const QUrl &uri); - ~DMtpIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DMTPIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dnetworkiofactory.h b/src/dfm-io/dfm-io/include/factory/dnetworkiofactory.h deleted file mode 100644 index 2253d23..0000000 --- a/src/dfm-io/dfm-io/include/factory/dnetworkiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DNETWORKIOFACTORY_H -#define DNETWORKIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DNetworkIOFactoryPrivate; - -class DNetworkIOFactory : public DIOFactory -{ -public: - explicit DNetworkIOFactory(const QUrl &uri); - ~DNetworkIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DNETWORKIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dnfsiofactory.h b/src/dfm-io/dfm-io/include/factory/dnfsiofactory.h deleted file mode 100644 index 6bc393a..0000000 --- a/src/dfm-io/dfm-io/include/factory/dnfsiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DNFSIOFACTORY_H -#define DNFSIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DNfsIOFactoryPrivate; - -class DNfsIOFactory : public DIOFactory -{ -public: - explicit DNfsIOFactory(const QUrl &uri); - ~DNfsIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DNFSIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/drecentiofactory.h b/src/dfm-io/dfm-io/include/factory/drecentiofactory.h deleted file mode 100644 index b1650e4..0000000 --- a/src/dfm-io/dfm-io/include/factory/drecentiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DRECENTIOFACTORY_H -#define DRECENTIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DRecentIOFactoryPrivate; - -class DRecentIOFactory : public DIOFactory -{ -public: - explicit DRecentIOFactory(const QUrl &uri); - ~DRecentIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DRECENTIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dsftpiofactory.h b/src/dfm-io/dfm-io/include/factory/dsftpiofactory.h deleted file mode 100644 index 218f880..0000000 --- a/src/dfm-io/dfm-io/include/factory/dsftpiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DSFTPIOFACTORY_H -#define DSFTPIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DSftpIOFactoryPrivate; - -class DSftpIOFactory : public DIOFactory -{ -public: - explicit DSftpIOFactory(const QUrl &uri); - ~DSftpIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DSFTPIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dsmbbrowseiofactory.h b/src/dfm-io/dfm-io/include/factory/dsmbbrowseiofactory.h deleted file mode 100644 index 8dfc8bf..0000000 --- a/src/dfm-io/dfm-io/include/factory/dsmbbrowseiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DSMBBROWSEIOFACTORY_H -#define DSMBBROWSEIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DSmbbrowseIOFactoryPrivate; - -class DSmbbrowseIOFactory : public DIOFactory -{ -public: - explicit DSmbbrowseIOFactory(const QUrl &uri); - ~DSmbbrowseIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DSMBBROWSEIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dsmbiofactory.h b/src/dfm-io/dfm-io/include/factory/dsmbiofactory.h deleted file mode 100644 index 72d4243..0000000 --- a/src/dfm-io/dfm-io/include/factory/dsmbiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DSMBIOFACTORY_H -#define DSMBIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DSmbIOFactoryPrivate; - -class DSmbIOFactory : public DIOFactory -{ -public: - explicit DSmbIOFactory(const QUrl &uri); - ~DSmbIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DSMBIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/factory/dtrashiofactory.h b/src/dfm-io/dfm-io/include/factory/dtrashiofactory.h deleted file mode 100644 index f6be17b..0000000 --- a/src/dfm-io/dfm-io/include/factory/dtrashiofactory.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DTRASHIOFACTORY_H -#define DTRASHIOFACTORY_H - -#include "dfmio_global.h" - -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DTrashIOFactoryPrivate; - -class DTrashIOFactory : public DIOFactory -{ -public: - explicit DTrashIOFactory(const QUrl &uri); - ~DTrashIOFactory(); - - QSharedPointer createFileInfo() const DFM_OVERRIDE; - QSharedPointer createFile() const DFM_OVERRIDE; - QSharedPointer createEnumerator() const DFM_OVERRIDE; - QSharedPointer createWatcher() const DFM_OVERRIDE; - QSharedPointer createOperator() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DTRASHIOFACTORY_H diff --git a/src/dfm-io/dfm-io/include/local/dlocalenumerator.h b/src/dfm-io/dfm-io/include/local/dlocalenumerator.h deleted file mode 100644 index b6cc239..0000000 --- a/src/dfm-io/dfm-io/include/local/dlocalenumerator.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALENUMERATOR_H -#define DLOCALENUMERATOR_H - -#include "core/denumerator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DLocalEnumeratorPrivate; - -class DLocalEnumerator : public DEnumerator -{ -public: - explicit DLocalEnumerator(const QUrl &uri, const QStringList &nameFilters = QStringList(), DirFilters filters = DirFilter::kNoFilter, IteratorFlags flags = IteratorFlag::kNoIteratorFlags); - ~DLocalEnumerator(); - - bool init() DFM_OVERRIDE; - void initAsync(int ioPriority = 0, InitCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - bool cancel() DFM_OVERRIDE; - bool hasNext() const DFM_OVERRIDE; - QUrl next() const DFM_OVERRIDE; - QSharedPointer fileInfo() const DFM_OVERRIDE; - quint64 fileCount() DFM_OVERRIDE; - DFMIOError lastError() const DFM_OVERRIDE; - - QList> fileInfoList(); - QList > sortFileInfoList(); - void setArguments(const QMap &argus) DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALENUMERATOR_H diff --git a/src/dfm-io/dfm-io/include/local/dlocalfile.h b/src/dfm-io/dfm-io/include/local/dlocalfile.h deleted file mode 100644 index 041751f..0000000 --- a/src/dfm-io/dfm-io/include/local/dlocalfile.h +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALFILE_H -#define DLOCALFILE_H - -#include "dfmio_global.h" - -#include "core/dfile.h" - -BEGIN_IO_NAMESPACE - -class DLocalFilePrivate; - -class DLocalFile : public DFile -{ -public: - explicit DLocalFile(const QUrl &uri); - virtual ~DLocalFile(); - - bool open(DFile::OpenFlags mode) DFM_OVERRIDE; - bool close() DFM_OVERRIDE; - - qint64 read(char *data, qint64 maxSize) DFM_OVERRIDE; - QByteArray read(qint64 maxSize) DFM_OVERRIDE; - QByteArray readAll() DFM_OVERRIDE; - // async - void readAsync(char *data, qint64 maxSize, int ioPriority = 0, ReadCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void readQAsync(qint64 maxSize, int ioPriority = 0, ReadQCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void readAllAsync(int ioPriority = 0, ReadAllCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - - qint64 write(const char *data, qint64 len) DFM_OVERRIDE; - qint64 write(const char *data) DFM_OVERRIDE; - qint64 write(const QByteArray &byteArray) DFM_OVERRIDE; - // async - void writeAsync(const char *data, qint64 len, int ioPriority = 0, WriteCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void writeAllAsync(const char *data, int ioPriority = 0, WriteAllCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void writeQAsync(const QByteArray &byteArray, int ioPriority = 0, WriteQCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - - bool cancel() const DFM_OVERRIDE; - bool seek(qint64 pos, DFile::SeekType type = SeekType::kBegin) const DFM_OVERRIDE; - qint64 pos() const DFM_OVERRIDE; - bool flush() DFM_OVERRIDE; - qint64 size() const DFM_OVERRIDE; - bool exists() const DFM_OVERRIDE; - Permissions permissions() const DFM_OVERRIDE; - bool setPermissions(Permissions permission) DFM_OVERRIDE; - - // future - [[nodiscard]] DFileFuture *openAsync(OpenFlags mode, int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *closeAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *readAsync(qint64 maxSize, int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *readAllAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *flushAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *sizeAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - - void setError(DFMIOError error); - DFMIOError lastError() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALFILE_H diff --git a/src/dfm-io/dfm-io/include/local/dlocalfileinfo.h b/src/dfm-io/dfm-io/include/local/dlocalfileinfo.h deleted file mode 100644 index c3503c3..0000000 --- a/src/dfm-io/dfm-io/include/local/dlocalfileinfo.h +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALFILEINFO_H -#define DLOCALFILEINFO_H - -#include "dfmio_global.h" - -#include "core/dfileinfo.h" - -BEGIN_IO_NAMESPACE - -class DLocalFileInfoPrivate; - -class DLocalFileInfo : public DFileInfo -{ -public: - explicit DLocalFileInfo(const QUrl &uri, const char *attributes = "*", - const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone); - explicit DLocalFileInfo(const QUrl &uri, void *fileInfo, - const char *attributes = "*", const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone); - - virtual ~DLocalFileInfo(); - - bool initQuerier() DFM_OVERRIDE; - void initQuerierAsync(int ioPriority = 0, InitQuerierAsyncCallback func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - QVariant attribute(DFileInfo::AttributeID id, bool *success = nullptr) const DFM_OVERRIDE; - void attributeAsync(DFileInfo::AttributeID id, bool *success = nullptr, int ioPriority = 0, AttributeAsyncCallback func = nullptr, void *userData = nullptr) const DFM_OVERRIDE; - - [[nodiscard]] DFileFuture *initQuerierAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *attributeAsync(AttributeID id, int ioPriority, QObject *parent = nullptr) const DFM_OVERRIDE; - [[nodiscard]] DFileFuture *attributeAsync(const QByteArray &key, const DFileAttributeType type, int ioPriority, QObject *parent = nullptr) const DFM_OVERRIDE; - [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr) const DFM_OVERRIDE; - [[nodiscard]] DFileFuture *refreshAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr) DFM_OVERRIDE; - - bool setAttribute(DFileInfo::AttributeID id, const QVariant &value) DFM_OVERRIDE; - bool hasAttribute(DFileInfo::AttributeID id) const DFM_OVERRIDE; - bool exists() const DFM_OVERRIDE; - bool refresh() DFM_OVERRIDE; - DFile::Permissions permissions() const DFM_OVERRIDE; - // custom attribute - bool setCustomAttribute(const char *key, const DFileAttributeType type, const void *value, const FileQueryInfoFlags flag = FileQueryInfoFlags::kTypeNone) DFM_OVERRIDE; - QVariant customAttribute(const char *key, const DFileAttributeType type) const DFM_OVERRIDE; - DFMIOError lastError() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALFILEINFO_H diff --git a/src/dfm-io/dfm-io/include/local/dlocaloperator.h b/src/dfm-io/dfm-io/include/local/dlocaloperator.h deleted file mode 100644 index a0a6bee..0000000 --- a/src/dfm-io/dfm-io/include/local/dlocaloperator.h +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALOPERATOR_H -#define DLOCALOPERATOR_H - -#include "dfmio_global.h" - -#include "core/doperator.h" - -BEGIN_IO_NAMESPACE - -class DLocalOperatorPrivate; - -class DLocalOperator : public DOperator -{ -public: - explicit DLocalOperator(const QUrl &uri); - ~DLocalOperator(); - - bool renameFile(const QString &newName) DFM_OVERRIDE; - bool renameFile(const QUrl &toUrl) DFM_OVERRIDE; - bool copyFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr) DFM_OVERRIDE; - bool moveFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr) DFM_OVERRIDE; - // async - void renameFileAsync(const QString &newName, int ioPriority = 0, FileOperateCallbackFunc func = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void copyFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void moveFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - - QString trashFile() DFM_OVERRIDE; - bool deleteFile() DFM_OVERRIDE; - bool restoreFile(ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr) DFM_OVERRIDE; - // async - void trashFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void deleteFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void restoreFileAsync(ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - - bool touchFile() DFM_OVERRIDE; - bool makeDirectory() DFM_OVERRIDE; - bool createLink(const QUrl &link) DFM_OVERRIDE; - // async - void touchFileAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void makeDirectoryAsync(int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - void createLinkAsync(const QUrl &link, int ioPriority = 0, FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr) DFM_OVERRIDE; - - bool setFileInfo(const DFileInfo &fileInfo) DFM_OVERRIDE; - - bool cancel() DFM_OVERRIDE; - DFMIOError lastError() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALOPERATOR_H diff --git a/src/dfm-io/dfm-io/include/local/dlocalwatcher.h b/src/dfm-io/dfm-io/include/local/dlocalwatcher.h deleted file mode 100644 index 782031a..0000000 --- a/src/dfm-io/dfm-io/include/local/dlocalwatcher.h +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALWATCHER_H -#define DLOCALWATCHER_H - -#include "dfmio_global.h" - -#include "core/dwatcher.h" - -BEGIN_IO_NAMESPACE - -class DLocalWatcherPrivate; - -class DLocalWatcher : public DWatcher -{ - Q_OBJECT -public: - explicit DLocalWatcher(const QUrl &uri, QObject *parent = nullptr); - ~DLocalWatcher() override; - - void setWatchType(WatchType type) DFM_OVERRIDE; - WatchType watchType() const DFM_OVERRIDE; - - bool running() const DFM_OVERRIDE; - bool start(int timeRate = 200) DFM_OVERRIDE; - bool stop() DFM_OVERRIDE; - - DFMIOError lastError() const DFM_OVERRIDE; - -private: - QSharedPointer d = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALWATCHER_H diff --git a/src/dfm-io/dfm-io/private/core/denumerator_p.h b/src/dfm-io/dfm-io/private/core/denumerator_p.h deleted file mode 100644 index f2e2d4d..0000000 --- a/src/dfm-io/dfm-io/private/core/denumerator_p.h +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DENUMERATOR_P_H -#define DENUMERATOR_P_H - -#include "dfmio_global.h" - -#include "core/denumerator.h" - -#include -#include - -BEGIN_IO_NAMESPACE - -class DEnumerator; -class DFileInfo; - -class DEnumeratorPrivate -{ -public: - explicit DEnumeratorPrivate(DEnumerator *q); - virtual ~DEnumeratorPrivate(); - -public: - DEnumerator *q = nullptr; - - DEnumerator::HasNextFunc hasNextFunc = nullptr; - DEnumerator::NextFunc nextFunc = nullptr; - DEnumerator::FileInfoFunc fileInfoFunc = nullptr; - DEnumerator::FileCountFunc fileCountFunc = nullptr; - DEnumerator::LastErrorFunc lastErrorFunc = nullptr; - DEnumerator::FileInfoListFunc fileInfoListFunc = nullptr; - DEnumerator::SetArgumentsFunc setArgumentsFunc = nullptr; - DEnumerator::SortFileInfoListFunc sortFileInfoListFunc = nullptr; - DEnumerator::InitFunc initFunc = nullptr; - DEnumerator::InitAsyncFunc initAsyncFunc = nullptr; - DEnumerator::CancelFunc cancelFunc = nullptr; - - QUrl uri; - QStringList nameFilters; - DEnumerator::DirFilters dirFilters = DEnumerator::DirFilter::kNoFilter; - DEnumerator::IteratorFlags iteratorFlags = DEnumerator::IteratorFlag::kNoIteratorFlags; - ulong enumTimeout { 0 }; -}; - -END_IO_NAMESPACE - -#endif // DENUMERATOR_P_H diff --git a/src/dfm-io/dfm-io/private/core/dfile_p.h b/src/dfm-io/dfm-io/private/core/dfile_p.h deleted file mode 100644 index d3c97d8..0000000 --- a/src/dfm-io/dfm-io/private/core/dfile_p.h +++ /dev/null @@ -1,71 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DFILE_P_H -#define DFILE_P_H - -#include "core/dfile.h" - -BEGIN_IO_NAMESPACE - -class DFile; - -class DFilePrivate -{ -public: - explicit DFilePrivate(DFile *q); - virtual ~DFilePrivate(); - - void setError(DFMIOError error); - -public: - DFile *q = nullptr; - QUrl uri; - - bool isOpen = false; - - DFile::OpenFunc openFunc = nullptr; - DFile::CloseFunc closeFunc = nullptr; - DFile::ReadFunc readFunc = nullptr; - DFile::ReadQFunc readQFunc = nullptr; - DFile::ReadAllFunc readAllFunc = nullptr; - DFile::ReadFuncAsync readFuncAsync = nullptr; - DFile::ReadQFuncAsync readQFuncAsync = nullptr; - DFile::ReadAllFuncAsync readAllFuncAsync = nullptr; - - DFile::WriteFunc writeFunc = nullptr; - DFile::WriteAllFunc writeAllFunc = nullptr; - DFile::WriteQFunc writeQFunc = nullptr; - DFile::WriteFuncAsync writeFuncAsync = nullptr; - DFile::WriteAllFuncAsync writeAllFuncAsync = nullptr; - DFile::WriteQFuncAsync writeQFuncAsync = nullptr; - - DFile::CancelFunc cancelFunc = nullptr; - DFile::SeekFunc seekFunc = nullptr; - DFile::PosFunc posFunc = nullptr; - DFile::FlushFunc flushFunc = nullptr; - DFile::SizeFunc sizeFunc = nullptr; - DFile::ExistsFunc existsFunc = nullptr; - DFile::PermissionFunc permissionFunc = nullptr; - DFile::SetPermissionFunc setPermissionsFunc = nullptr; - DFile::LastErrorFunc lastErrorFunc = nullptr; - DFile::SetErrorFunc setErrorFunc = nullptr; - - // future - DFile::OpenAsyncFuncFuture openAsyncFuncFuture = nullptr; - DFile::CloseAsyncFuncFuture closeAsyncFuncFuture = nullptr; - DFile::ReadAsyncFuncFuture readAsyncFuncFuture = nullptr; - DFile::ReadAllAsyncFuncFuture readAllAsyncFuncFuture = nullptr; - DFile::WriteAsyncFuncFuture writeAsyncFuncFuture = nullptr; - DFile::WriteAllAsyncFuncFuture writeAllAsyncFuncFuture = nullptr; - DFile::FlushAsyncFuncFuture flushAsyncFuncFuture = nullptr; - DFile::SizeAsyncFuncFuture sizeAsyncFuncFuture = nullptr; - DFile::ExistsAsyncFuncFuture existsAsyncFuncFuture = nullptr; - DFile::PermissionsAsyncFuncFuture permissionsAsyncFuncFuture = nullptr; - DFile::SetPermissionsAsyncFuncFuture setPermissionsAsyncFuncFuture = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DFILE_P_H diff --git a/src/dfm-io/dfm-io/private/core/dfileinfo_p.h b/src/dfm-io/dfm-io/private/core/dfileinfo_p.h deleted file mode 100644 index 2ce1dbc..0000000 --- a/src/dfm-io/dfm-io/private/core/dfileinfo_p.h +++ /dev/null @@ -1,81 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DFILEINFO_P_H -#define DFILEINFO_P_H - -#include "core/dfileinfo.h" -#include "dfmio_global.h" -#include "utils/dmediainfo.h" - -#include -#include -#include - -#include -#include - -BEGIN_IO_NAMESPACE - -class DFileInfoPrivate : public QSharedData -{ -public: - inline DFileInfoPrivate(DFileInfo *q) - : QSharedData(), - q(q) - { - } - - inline DFileInfoPrivate(const DFileInfoPrivate ©) - : QSharedData(copy) - { - } - - inline ~DFileInfoPrivate() - { - } - - void attributeExtend(DFileInfo::MediaType type, QList ids, DFileInfo::AttributeExtendFuncCallback callback = nullptr); - DFM_VIRTUAL [[nodiscard]] DFileFuture *attributeExtend(DFileInfo::MediaType type, QList ids, int ioPriority, QObject *parent = nullptr); - bool cancelAttributeExtend(); - void attributeExtendCallback(); - -public: - DFileInfo *q = nullptr; - - QUrl uri = QUrl(); - char *attributes { nullptr }; - DFileInfo::FileQueryInfoFlags flag = DFileInfo::FileQueryInfoFlags::kTypeNone; - - QSharedPointer mediaInfo = nullptr; - QList extendIDs; - DFileFuture *future = nullptr; - DFileInfo::MediaType mediaType = DFileInfo::MediaType::kGeneral; - DFileInfo::AttributeExtendFuncCallback attributeExtendFuncCallback = nullptr; - - DFileInfo::InitQuerierFunc initQuerierFunc = nullptr; - DFileInfo::InitQuerierAsyncFunc initQuerierAsyncFunc = nullptr; - DFileInfo::AttributeFunc attributeFunc = nullptr; - DFileInfo::AttributeAsyncFunc attributeAsyncFunc = nullptr; - DFileInfo::SetAttributeFunc setAttributeFunc = nullptr; - DFileInfo::HasAttributeFunc hasAttributeFunc = nullptr; - DFileInfo::ExistsFunc existsFunc = nullptr; - DFileInfo::RefreshFunc refreshFunc = nullptr; - DFileInfo::SetCustomAttributeFunc setCustomAttributeFunc = nullptr; - DFileInfo::CustomAttributeFunc customAttributeFunc = nullptr; - DFile::PermissionFunc permissionFunc = nullptr; - DFileInfo::LastErrorFunc lastErrorFunc = nullptr; - - // future - DFileInfo::InitQuerierAsyncFunc2 initQuerierAsyncFunc2 = nullptr; - DFileInfo::AttributeAsyncFunc2 attributeAsyncFunc2 = nullptr; - DFileInfo::AttributeAsyncFunc3 attributeAsyncFunc3 = nullptr; - DFileInfo::ExistsAsyncFunc existsAsyncFunc = nullptr; - DFileInfo::RefreshAsyncFunc refreshAsyncFunc = nullptr; - DFileInfo::PermissionsAsyncFunc permissionsAsyncFunc = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DFILEINFO_P_H diff --git a/src/dfm-io/dfm-io/private/core/diofactory_p.h b/src/dfm-io/dfm-io/private/core/diofactory_p.h deleted file mode 100644 index adc3345..0000000 --- a/src/dfm-io/dfm-io/private/core/diofactory_p.h +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DIOFACTORY_P_H -#define DIOFACTORY_P_H - -#include -#include - -#include "dfmio_global.h" -#include "core/dfile.h" -#include "core/dfileinfo.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" -#include "error/error.h" -#include "core/diofactory.h" - -BEGIN_IO_NAMESPACE - -class DIOFactory; - -class DIOFactoryPrivate -{ -public: - explicit DIOFactoryPrivate(DIOFactory *q); - virtual ~DIOFactoryPrivate(); - - /*virtual QSharedPointer doCreateFileInfo() const = 0; - virtual QSharedPointer doCreateFile() const = 0; - virtual QSharedPointer doCreateEnumerator() const = 0; - virtual QSharedPointer doCreateWatcher() const = 0; - virtual QSharedPointer doCreateOperator() const = 0;*/ - -public: - DIOFactory *q = nullptr; - QUrl uri; - - DFMIOError error; - - DIOFactory::CreateFileInfoFunc createFileInfoFunc = nullptr; - DIOFactory::CreateFileFunc createFileFunc = nullptr; - DIOFactory::CreateEnumeratorFunc createEnumeratorFunc = nullptr; - DIOFactory::CreateWatcherFunc createWatcherFunc = nullptr; - DIOFactory::CreateOperatorFunc createOperatorFunc = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/core/doperator_p.h b/src/dfm-io/dfm-io/private/core/doperator_p.h deleted file mode 100644 index 5fe3abc..0000000 --- a/src/dfm-io/dfm-io/private/core/doperator_p.h +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DOPERATOR_P_H -#define DOPERATOR_P_H - -#include "core/doperator.h" - -BEGIN_IO_NAMESPACE - -class DOperatorPrivate -{ -public: - explicit DOperatorPrivate(DOperator *q); - virtual ~DOperatorPrivate(); - -public: - DOperator *q = nullptr; - QUrl uri; - - DOperator::RenameFileFunc renameFileFunc = nullptr; - DOperator::RenameFileByStdFunc renameFileByStdFunc = nullptr; - DOperator::CopyFileFunc copyFileFunc = nullptr; - DOperator::MoveFileFunc moveFileFunc = nullptr; - DOperator::RenameFileFuncAsync renameFileFuncAsync = nullptr; - DOperator::CopyFileFuncAsync copyFileFuncAsync = nullptr; - DOperator::MoveFileFuncAsync moveFileFuncAsync = nullptr; - - DOperator::TrashFileFunc trashFileFunc = nullptr; - DOperator::DeleteFileFunc deleteFileFunc = nullptr; - DOperator::RestoreFileFunc restoreFileFunc = nullptr; - DOperator::TrashFileFuncAsync trashFileFuncAsync = nullptr; - DOperator::DeleteFileFuncAsync deleteFileFuncAsync = nullptr; - DOperator::RestoreFileFuncAsync restoreFileFuncAsync = nullptr; - - DOperator::TouchFileFunc touchFileFunc = nullptr; - DOperator::MakeDirectoryFunc makeDirectoryFunc = nullptr; - DOperator::CreateLinkFunc createLinkFunc = nullptr; - DOperator::TouchFileFuncAsync touchFileFuncAsync = nullptr; - DOperator::MakeDirectoryFuncAsync makeDirectoryFuncAsync = nullptr; - DOperator::CreateLinkFuncAsync createLinkFuncAsync = nullptr; - - DOperator::SetFileInfoFunc setFileInfoFunc = nullptr; - - DOperator::CancelFunc cancelFunc = nullptr; - DOperator::LastErrorFunc lastErrorFunc = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DOPERATOR_P_H diff --git a/src/dfm-io/dfm-io/private/core/dwatcher_p.h b/src/dfm-io/dfm-io/private/core/dwatcher_p.h deleted file mode 100644 index f0e44a1..0000000 --- a/src/dfm-io/dfm-io/private/core/dwatcher_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DWATCHER_P_H -#define DWATCHER_P_H - -#include "dfmio_global.h" - -#include "core/dfileinfo.h" -#include "core/dwatcher.h" - -#include - -BEGIN_IO_NAMESPACE - -class DWatcher; - -class DWatcherPrivate -{ -public: - explicit DWatcherPrivate(DWatcher *q); - virtual ~DWatcherPrivate(); - -public: - DWatcher *q = nullptr; - QUrl uri; - - DWatcher::RunningFunc runningFunc = nullptr; - DWatcher::StartFunc startFunc = nullptr; - DWatcher::StopFunc stopFunc = nullptr; - DWatcher::SetWatchTypeFunc setWatchTypeFunc = nullptr; - DWatcher::WatchTypeFunc watchTypeFunc = nullptr; - DWatcher::LastErrorFunc lastErrorFunc = nullptr; - - int timeRate = 200; -}; - -END_IO_NAMESPACE - -#endif // DWATCHER_P_H diff --git a/src/dfm-io/dfm-io/private/denumerator_p.h b/src/dfm-io/dfm-io/private/denumerator_p.h new file mode 100644 index 0000000..fb4d883 --- /dev/null +++ b/src/dfm-io/dfm-io/private/denumerator_p.h @@ -0,0 +1,76 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DENUMERATOR_P_H +#define DENUMERATOR_P_H + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +BEGIN_IO_NAMESPACE + +class DEnumerator; +class DFileInfo; + +class DEnumeratorPrivate : public QObject +{ +public: + explicit DEnumeratorPrivate(DEnumerator *q); + ~DEnumeratorPrivate(); + bool init(const QUrl &url); + bool init(); + void clean(); + bool createEnumerator(const QUrl &url, QPointer me); + void checkAndResetCancel(); + void setErrorFromGError(GError *gerror); + bool checkFilter(); + FTS *openDirByfts(); + void insertSortFileInfoList(QList> &fileList, + QList> &dirList, + FTSENT *ent, + FTS *fts, const QSet &hideList); + +public: + DEnumerator *q { nullptr }; + QMutex mutex; + QWaitCondition waitCondition; + DFMIOError error; + + GCancellable *cancellable { nullptr }; + QStack stackEnumerator; + QSharedPointer dfileInfoNext { nullptr }; + QMap> hideListMap; + QList> infoList; + + QStringList nameFilters; + DEnumerator::DirFilters dirFilters { DEnumerator::DirFilter::kNoFilter }; + DEnumerator::IteratorFlags iteratorFlags { DEnumerator::IteratorFlag::kNoIteratorFlags }; + bool isMixDirAndFile { false }; + Qt::SortOrder sortOrder { Qt::AscendingOrder }; + DEnumerator::SortRoleCompareFlag sortRoleFlag { DEnumerator::SortRoleCompareFlag::kSortRoleCompareDefault }; + + QUrl uri; + QUrl nextUrl; + ulong enumTimeout { 0 }; + bool ftsCanceled { false }; + bool inited { false }; + bool enumSubDir { false }; + bool enumLinks { false }; +}; + +END_IO_NAMESPACE + +#endif // DENUMERATOR_P_H diff --git a/src/dfm-io/dfm-io/private/dfile_p.h b/src/dfm-io/dfm-io/private/dfile_p.h new file mode 100644 index 0000000..79a84fc --- /dev/null +++ b/src/dfm-io/dfm-io/private/dfile_p.h @@ -0,0 +1,105 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DFILE_P_H +#define DFILE_P_H + +#include + +#include + +#include + +BEGIN_IO_NAMESPACE + +class DFile; + +class DFilePrivate : public QObject +{ +public: + typedef struct + { + DFile::ReadCallbackFunc callback; + gpointer userData; + } ReadAsyncOp; + + typedef struct + { + DFile::ReadQCallbackFunc callback; + char *data; + gpointer userData; + } ReadQAsyncOp; + + typedef struct + { + char *data; + int ioPriority; + DFile::ReadAllCallbackFunc callback; + gpointer userData; + QPointer me; + } ReadAllAsyncOp; + + typedef struct + { + DFile::WriteCallbackFunc callback; + gpointer userData; + } WriteAsyncOp; + + typedef struct + { + DFileFuture *future = nullptr; + QPointer me; + } NormalFutureAsyncOp; + + typedef struct + { + QByteArray data; + DFileFuture *future = nullptr; + QPointer me; + } ReadAllAsyncFutureOp; + +public: + explicit DFilePrivate(DFile *q); + void setError(DFMIOError error); + void setErrorFromGError(GError *gerror); + void checkAndResetCancel(); + GInputStream *inputStream(); + GOutputStream *outputStream(); + DFile::Permissions permissionsFromGFileInfo(GFileInfo *gfileinfo); + bool checkOpenFlags(DFile::OpenFlags *modeIn); + quint32 buildPermissions(DFile::Permissions permission); + + bool doOpen(DFile::OpenFlags mode); + bool doClose(); + QByteArray doReadAll(); + qint64 doWrite(const char *data, qint64 maxSize); + qint64 doWrite(const char *data); + qint64 doWrite(const QByteArray &data); + + static void readAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void readQAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void readAllAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void writeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void permissionsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void existsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void sizeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void flushAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void writeAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void readAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + +public: + DFile *q { nullptr }; + GIOStream *ioStream { nullptr }; + GInputStream *iStream { nullptr }; + GOutputStream *oStream { nullptr }; + GCancellable *cancellable { nullptr }; + DFMIOError error; + QByteArray readAllAsyncRet; + QUrl uri; + bool isOpen { false }; +}; + +END_IO_NAMESPACE + +#endif // DFILE_P_H diff --git a/src/dfm-io/dfm-io/private/core/dfilefuture_p.h b/src/dfm-io/dfm-io/private/dfilefuture_p.h similarity index 77% rename from src/dfm-io/dfm-io/private/core/dfilefuture_p.h rename to src/dfm-io/dfm-io/private/dfilefuture_p.h index 7fb7de5..17e42c0 100644 --- a/src/dfm-io/dfm-io/private/core/dfilefuture_p.h +++ b/src/dfm-io/dfm-io/private/dfilefuture_p.h @@ -7,15 +7,15 @@ #include -#include "dfmio_global.h" -#include "error/error.h" +#include +#include BEGIN_IO_NAMESPACE class DFileFuture; class DFuturePrivate { public: - explicit DFuturePrivate(DFileFuture *q); + explicit DFuturePrivate(DFileFuture *qq); ~DFuturePrivate(); DFileFuture *q = nullptr; diff --git a/src/dfm-io/dfm-io/private/dfileinfo_p.h b/src/dfm-io/dfm-io/private/dfileinfo_p.h new file mode 100644 index 0000000..dcd1196 --- /dev/null +++ b/src/dfm-io/dfm-io/private/dfileinfo_p.h @@ -0,0 +1,90 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DFILEINFO_P_H +#define DFILEINFO_P_H + +#include "utils/dmediainfo.h" + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include + +BEGIN_IO_NAMESPACE + +class DFileInfoPrivate : public QObject, public QSharedData +{ +public: + typedef struct + { + DFileInfo::InitQuerierAsyncCallback callback; + gpointer userData; + QPointer me; + } QueryInfoAsyncOp; + typedef struct + { + QPointer me; + DFileFuture *future = nullptr; + } QueryInfoAsyncOp2; + + explicit DFileInfoPrivate(DFileInfo *qq); + DFileInfoPrivate(const DFileInfoPrivate &other); + DFileInfoPrivate &operator=(const DFileInfoPrivate &other); + virtual ~DFileInfoPrivate() override; + void initNormal(); + + void attributeExtend(DFileInfo::MediaType type, QList ids, DFileInfo::AttributeExtendFuncCallback callback = nullptr); + [[nodiscard]] DFileFuture *attributeExtend(DFileInfo::MediaType type, QList ids, int ioPriority, QObject *parent = nullptr); + bool cancelAttributeExtend(); + void attributeExtendCallback(); + + void setErrorFromGError(GError *gerror); + bool queryInfoSync(); + void queryInfoAsync(int ioPriority = 0, DFileInfo::InitQuerierAsyncCallback func = nullptr, void *userData = nullptr); + QVariant attributesBySelf(DFileInfo::AttributeID id); + QVariant attributesFromUrl(DFileInfo::AttributeID id); + + [[nodiscard]] DFileFuture *initQuerierAsync(int ioPriority, QObject *parent = nullptr) const; + + static void queryInfoAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void queryInfoAsyncCallback2(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void freeQueryInfoAsyncOp(QueryInfoAsyncOp *op); + static void freeQueryInfoAsyncOp2(QueryInfoAsyncOp2 *op); + +public: + DFileInfo *q { nullptr }; + + QUrl uri = QUrl(); + char *attributes { nullptr }; + DFileInfo::FileQueryInfoFlags flag = DFileInfo::FileQueryInfoFlags::kTypeNone; + + QSharedPointer mediaInfo { nullptr }; + QList extendIDs; + DFileFuture *future = nullptr; + DFileInfo::MediaType mediaType = DFileInfo::MediaType::kGeneral; + DFileInfo::AttributeExtendFuncCallback attributeExtendFuncCallback { nullptr }; + + QList attributesRealizationSelf; + QList attributesNoBlockIO; + GFile *gfile { nullptr }; + GFileInfo *gfileinfo { nullptr }; + bool initFinished { false }; + bool infoReseted { false }; + GCancellable *gcancellable { nullptr }; + + DFMIOError error; +}; + +END_IO_NAMESPACE + +#endif // DFILEINFO_P_H diff --git a/src/dfm-io/dfm-io/private/doperator_p.h b/src/dfm-io/dfm-io/private/doperator_p.h new file mode 100644 index 0000000..a9059f5 --- /dev/null +++ b/src/dfm-io/dfm-io/private/doperator_p.h @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DOPERATOR_P_H +#define DOPERATOR_P_H + +#include + +#include + +BEGIN_IO_NAMESPACE + +class DOperatorPrivate +{ +public: + typedef struct + { + DOperator::FileOperateCallbackFunc callback; + gpointer userData; + } OperateFileOp; + + explicit DOperatorPrivate(DOperator *q); + virtual ~DOperatorPrivate(); + + void setErrorFromGError(GError *gerror); + GFile *makeGFile(const QUrl &url); + + static void renameCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void copyCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void trashCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void deleteCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void touchCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + static void makeDirCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); + +public: + DOperator *q { nullptr }; + QUrl uri; + GCancellable *gcancellable { nullptr }; + DFMIOError error; +}; + +END_IO_NAMESPACE + +#endif // DOPERATOR_P_H diff --git a/src/dfm-io/dfm-io/private/dwatcher_p.h b/src/dfm-io/dfm-io/private/dwatcher_p.h new file mode 100644 index 0000000..f1ff0b9 --- /dev/null +++ b/src/dfm-io/dfm-io/private/dwatcher_p.h @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DWATCHER_P_H +#define DWATCHER_P_H + +#include +#include +#include + +#include +#include + +#include + +BEGIN_IO_NAMESPACE + +class DWatcher; +class DLocalWatcherProxy; + +class DWatcherPrivate +{ +public: + explicit DWatcherPrivate(DWatcher *q); + virtual ~DWatcherPrivate(); + GFileMonitor *createMonitor(GFile *gfile, DWatcher::WatchType type); + void setErrorFromGError(GError *gerror); + bool startProxy(); + + static void watchCallback(GFileMonitor *monitor, GFile *child, GFile *other, + GFileMonitorEvent eventType, gpointer userData); + +public: + DWatcher *q { nullptr }; + GFileMonitor *gmonitor { nullptr }; + DLocalWatcherProxy *proxy { nullptr }; + GFile *gfile { nullptr }; + + int timeRate { 200 }; + DWatcher::WatchType type = DWatcher::WatchType::kAuto; + QUrl uri; + DFMIOError error; +}; + +class DLocalWatcherProxy : public QObject +{ + Q_OBJECT +public: + explicit DLocalWatcherProxy(DWatcher *qq); + virtual ~DLocalWatcherProxy(); + + bool start(); + bool stop(); + bool running(); + +private Q_SLOTS: + void onNotifierActived(); + +private: + DWatcher *q { nullptr }; + + QString monitorFile; + DWatcher::WatchType type { DWatcher::WatchType::kAuto }; + int watchId { -1 }; + bool inited { false }; + int inotifyFd { -1 }; + QSocketNotifier *notifier { nullptr }; +}; + +END_IO_NAMESPACE + +#endif // DWATCHER_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dafciofactory_p.h b/src/dfm-io/dfm-io/private/factory/dafciofactory_p.h deleted file mode 100644 index bbadcb5..0000000 --- a/src/dfm-io/dfm-io/private/factory/dafciofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DAFCIOFACTORY_P_H -#define DAFCIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DAfcIOFactory; - -class DAfcIOFactoryPrivate -{ -public: - explicit DAfcIOFactoryPrivate(DAfcIOFactory *q); - ~DAfcIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DAfcIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DAFCIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dafpbrowseiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dafpbrowseiofactory_p.h deleted file mode 100644 index 521e3e9..0000000 --- a/src/dfm-io/dfm-io/private/factory/dafpbrowseiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DAFPBROWSEIOFACTORY_P_H -#define DAFPBROWSEIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DAfpbrowseIOFactory; - -class DAfpbrowseIOFactoryPrivate -{ -public: - explicit DAfpbrowseIOFactoryPrivate(DAfpbrowseIOFactory *q); - ~DAfpbrowseIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DAfpbrowseIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DAFPBROWSEIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dafpiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dafpiofactory_p.h deleted file mode 100644 index 676fd31..0000000 --- a/src/dfm-io/dfm-io/private/factory/dafpiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DAFPIOFACTORY_P_H -#define DAFPIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DAfpIOFactory; - -class DAfpIOFactoryPrivate -{ -public: - explicit DAfpIOFactoryPrivate(DAfpIOFactory *q); - ~DAfpIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DAfpIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DAFPIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/darchiveiofactory_p.h b/src/dfm-io/dfm-io/private/factory/darchiveiofactory_p.h deleted file mode 100644 index 88e02e4..0000000 --- a/src/dfm-io/dfm-io/private/factory/darchiveiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DARCHIVEIOFACTORY_P_H -#define DARCHIVEIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DArchiveIOFactory; - -class DArchiveIOFactoryPrivate -{ -public: - explicit DArchiveIOFactoryPrivate(DArchiveIOFactory *q); - ~DArchiveIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DArchiveIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DARCHIVEIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dburniofactory_p.h b/src/dfm-io/dfm-io/private/factory/dburniofactory_p.h deleted file mode 100644 index a638204..0000000 --- a/src/dfm-io/dfm-io/private/factory/dburniofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DBURNIOFACTORY_P_H -#define DBURNIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DBurnIOFactory; - -class DBurnIOFactoryPrivate -{ -public: - explicit DBurnIOFactoryPrivate(DBurnIOFactory *q); - ~DBurnIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DBurnIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DBURNIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dcddaiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dcddaiofactory_p.h deleted file mode 100644 index e5b6582..0000000 --- a/src/dfm-io/dfm-io/private/factory/dcddaiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DCDDAIOFACTORY_P_H -#define DCDDAIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DCddaIOFactory; - -class DCddaIOFactoryPrivate -{ -public: - explicit DCddaIOFactoryPrivate(DCddaIOFactory *q); - ~DCddaIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DCddaIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DCDDAIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dcomputeriofactory_p.h b/src/dfm-io/dfm-io/private/factory/dcomputeriofactory_p.h deleted file mode 100644 index e694685..0000000 --- a/src/dfm-io/dfm-io/private/factory/dcomputeriofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DCOMPUTERIOFACTORY_P_H -#define DCOMPUTERIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DComputerIOFactory; - -class DComputerIOFactoryPrivate -{ -public: - explicit DComputerIOFactoryPrivate(DComputerIOFactory *q); - ~DComputerIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DComputerIOFactory *q; -}; - -END_IO_NAMESPACE - -#endif // DCOMPUTERIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/ddaviofactory_p.h b/src/dfm-io/dfm-io/private/factory/ddaviofactory_p.h deleted file mode 100644 index 4f819cc..0000000 --- a/src/dfm-io/dfm-io/private/factory/ddaviofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DDAVIOFACTORY_P_H -#define DDAVIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DDavIOFactory; - -class DDavIOFactoryPrivate -{ -public: - explicit DDavIOFactoryPrivate(DDavIOFactory *q); - ~DDavIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DDavIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DDAVIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dddaviofactory_p.h b/src/dfm-io/dfm-io/private/factory/dddaviofactory_p.h deleted file mode 100644 index 143bef7..0000000 --- a/src/dfm-io/dfm-io/private/factory/dddaviofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DDDAVIOFACTORY_P_H -#define DDDAVIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DDdavIOFactory; - -class DDdavIOFactoryPrivate -{ -public: - explicit DDdavIOFactoryPrivate(DDdavIOFactory *q); - ~DDdavIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DDdavIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DDDAVIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/ddnssdiofactory_p.h b/src/dfm-io/dfm-io/private/factory/ddnssdiofactory_p.h deleted file mode 100644 index d26a671..0000000 --- a/src/dfm-io/dfm-io/private/factory/ddnssdiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DDNSSDIOFACTORY_P_H -#define DDNSSDIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DDnssdIOFactory; - -class DDnssdIOFactoryPrivate -{ -public: - explicit DDnssdIOFactoryPrivate(DDnssdIOFactory *q); - ~DDnssdIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DDnssdIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DDNSSDIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dftpiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dftpiofactory_p.h deleted file mode 100644 index df8e9b5..0000000 --- a/src/dfm-io/dfm-io/private/factory/dftpiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DFTPIOFACTORY_P_H -#define DFTPIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DFtpIOFactory; - -class DFtpIOFactoryPrivate -{ -public: - explicit DFtpIOFactoryPrivate(DFtpIOFactory *q); - ~DFtpIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DFtpIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DFTPIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dgoogleiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dgoogleiofactory_p.h deleted file mode 100644 index d7d5068..0000000 --- a/src/dfm-io/dfm-io/private/factory/dgoogleiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DGOOGLEIOFACTORY_P_H -#define DGOOGLEIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DGoogleIOFactory; - -class DGoogleIOFactoryPrivate -{ -public: - explicit DGoogleIOFactoryPrivate(DGoogleIOFactory *q); - ~DGoogleIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DGoogleIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DGOOGLEIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dgphoto2iofactory_p.h b/src/dfm-io/dfm-io/private/factory/dgphoto2iofactory_p.h deleted file mode 100644 index 3bbffc9..0000000 --- a/src/dfm-io/dfm-io/private/factory/dgphoto2iofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DGPHOTO2IOFACTORY_P_H -#define DGPHOTO2IOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DGphoto2IOFactory; - -class DGphoto2IOFactoryPrivate -{ -public: - explicit DGphoto2IOFactoryPrivate(DGphoto2IOFactory *q); - ~DGphoto2IOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DGphoto2IOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DGPHOTO2IOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dhttpiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dhttpiofactory_p.h deleted file mode 100644 index ddba267..0000000 --- a/src/dfm-io/dfm-io/private/factory/dhttpiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DHTTPIOFACTORY_P_H -#define DHTTPIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DHttpIOFactory; - -class DHttpIOFactoryPrivate -{ -public: - explicit DHttpIOFactoryPrivate(DHttpIOFactory *q); - ~DHttpIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DHttpIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DHTTPIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dlocaliofactory_p.h b/src/dfm-io/dfm-io/private/factory/dlocaliofactory_p.h deleted file mode 100644 index e823a84..0000000 --- a/src/dfm-io/dfm-io/private/factory/dlocaliofactory_p.h +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALIOFACTORY_P_H -#define DLOCALIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DLocalIOFactory; - -class DLocalIOFactoryPrivate -{ -public: - explicit DLocalIOFactoryPrivate(DLocalIOFactory *q); - ~DLocalIOFactoryPrivate(); - - QSharedPointer createFileInfo(const char *attributes = "*", - const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone) const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator(const QStringList &nameFilters = QStringList(), DEnumerator::DirFilters filters = DEnumerator::DirFilter::kNoFilter, DEnumerator::IteratorFlags flags = DEnumerator::IteratorFlag::kNoIteratorFlags) const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DLocalIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dmtpiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dmtpiofactory_p.h deleted file mode 100644 index ad89acd..0000000 --- a/src/dfm-io/dfm-io/private/factory/dmtpiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DMTPIOFACTORY_P_H -#define DMTPIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DMtpIOFactory; - -class DMtpIOFactoryPrivate -{ -public: - explicit DMtpIOFactoryPrivate(DMtpIOFactory *q); - ~DMtpIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DMtpIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DMTPIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dnetworkiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dnetworkiofactory_p.h deleted file mode 100644 index 3a6406b..0000000 --- a/src/dfm-io/dfm-io/private/factory/dnetworkiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DNETWORKIOFACTORY_P_H -#define DNETWORKIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DNetworkIOFactory; - -class DNetworkIOFactoryPrivate -{ -public: - explicit DNetworkIOFactoryPrivate(DNetworkIOFactory *q); - ~DNetworkIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DNetworkIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DNETWORKIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dnfsiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dnfsiofactory_p.h deleted file mode 100644 index dc00ef8..0000000 --- a/src/dfm-io/dfm-io/private/factory/dnfsiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DNFSIOFACTORY_P_H -#define DNFSIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DNfsIOFactory; - -class DNfsIOFactoryPrivate -{ -public: - explicit DNfsIOFactoryPrivate(DNfsIOFactory *q); - ~DNfsIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DNfsIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DNFSIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/drecentiofactory_p.h b/src/dfm-io/dfm-io/private/factory/drecentiofactory_p.h deleted file mode 100644 index f5f7b3b..0000000 --- a/src/dfm-io/dfm-io/private/factory/drecentiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DRECENTIOFACTORY_P_H -#define DRECENTIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DRecentIOFactory; - -class DRecentIOFactoryPrivate -{ -public: - explicit DRecentIOFactoryPrivate(DRecentIOFactory *q); - ~DRecentIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DRecentIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DRECENTIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dsftpiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dsftpiofactory_p.h deleted file mode 100644 index b5c1f64..0000000 --- a/src/dfm-io/dfm-io/private/factory/dsftpiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DSFTPIOFACTORY_P_H -#define DSFTPIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DSftpIOFactory; - -class DSftpIOFactoryPrivate -{ -public: - explicit DSftpIOFactoryPrivate(DSftpIOFactory *q); - ~DSftpIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DSftpIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DSFTPIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dsmbbrowseiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dsmbbrowseiofactory_p.h deleted file mode 100644 index 6cdd2bf..0000000 --- a/src/dfm-io/dfm-io/private/factory/dsmbbrowseiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DSMBBROWSEIOFACTORY_P_H -#define DSMBBROWSEIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DSmbbrowseIOFactory; - -class DSmbbrowseIOFactoryPrivate -{ -public: - explicit DSmbbrowseIOFactoryPrivate(DSmbbrowseIOFactory *q); - ~DSmbbrowseIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DSmbbrowseIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DSMBBROWSEIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dsmbiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dsmbiofactory_p.h deleted file mode 100644 index fc2be6a..0000000 --- a/src/dfm-io/dfm-io/private/factory/dsmbiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DSMBIOFACTORY_P_H -#define DSMBIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DSmbIOFactory; - -class DSmbIOFactoryPrivate -{ -public: - explicit DSmbIOFactoryPrivate(DSmbIOFactory *q); - ~DSmbIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DSmbIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DSMBIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/factory/dtrashiofactory_p.h b/src/dfm-io/dfm-io/private/factory/dtrashiofactory_p.h deleted file mode 100644 index 8c0db50..0000000 --- a/src/dfm-io/dfm-io/private/factory/dtrashiofactory_p.h +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DTRASHIOFACTORY_P_H -#define DTRASHIOFACTORY_P_H - -#include "dfmio_global.h" - -#include "core/diofactory_p.h" -#include "core/dfileinfo.h" -#include "core/dfile.h" -#include "core/denumerator.h" -#include "core/dwatcher.h" -#include "core/doperator.h" - -#include - -BEGIN_IO_NAMESPACE - -class DTrashIOFactory; - -class DTrashIOFactoryPrivate -{ -public: - explicit DTrashIOFactoryPrivate(DTrashIOFactory *q); - ~DTrashIOFactoryPrivate(); - - QSharedPointer createFileInfo() const; - QSharedPointer createFile() const; - QSharedPointer createEnumerator() const; - QSharedPointer createWatcher() const; - QSharedPointer createOperator() const; - -public: - DTrashIOFactory *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DTRASHIOFACTORY_P_H diff --git a/src/dfm-io/dfm-io/private/local/dlocalenumerator_p.h b/src/dfm-io/dfm-io/private/local/dlocalenumerator_p.h deleted file mode 100644 index b4e1a33..0000000 --- a/src/dfm-io/dfm-io/private/local/dlocalenumerator_p.h +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALENUMERATOR_P_H -#define DLOCALENUMERATOR_P_H - -#include "dfmio_global.h" -#include "error/error.h" -#include "core/denumerator_p.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -BEGIN_IO_NAMESPACE - -class DLocalEnumerator; -class DFileInfo; - -class DLocalEnumeratorPrivate : public QObject -{ -public: - explicit DLocalEnumeratorPrivate(DLocalEnumerator *q); - ~DLocalEnumeratorPrivate(); - - typedef struct - { - QPointer me; - DEnumerator::InitCallbackFunc callback; - gpointer userData; - } InitAsyncOp; - - bool init(const QUrl &url); - bool init(); - void initAsync(int ioPriority = 0, DEnumerator::InitCallbackFunc func = nullptr, void *userData = nullptr); - bool cancel(); - - QList> fileInfoList(); - bool hasNext(); - QUrl next() const; - QSharedPointer fileInfo() const; - quint64 fileCount(); - - DFMIOError lastError(); - void setErrorFromGError(GError *gerror); - - bool createEnumerator(const QUrl &url, QPointer me); - void createEnumneratorAsync(const QUrl &url, QPointer me, int ioPriority, DEnumerator::InitCallbackFunc func, void *userData); - void setArguments(const QMap &argus); - QList> sortFileInfoList(); - - static void initAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void freeInitAsyncOp(InitAsyncOp *op); - -private: - bool checkFilter(); - void clean(); - void checkAndResetCancel(); - void insertSortFileInfoList(QList> &fileList, - QList> &dirList, - FTSENT *ent, - FTS *fts, const QSet &hideList); - FTS *openDirByfts(); - -public: - QList> list_; - DLocalEnumerator *q = nullptr; - GCancellable *cancellable = nullptr; - QStack stackEnumerator; - QSharedPointer dfileInfoNext = nullptr; - QUrl nextUrl; - bool enumSubDir = false; - bool enumLinks = false; - bool inited = false; - bool isMixDirAndFile = false; - std::atomic_bool ftsCanceled = false; - Qt::SortOrder sortOrder = Qt::AscendingOrder; - - QStringList nameFilters; - DEnumerator::DirFilters dirFilters = DEnumerator::DirFilter::kNoFilter; - DEnumerator::IteratorFlags iteratorFlags = DEnumerator::IteratorFlag::kNoIteratorFlags; - DEnumerator::SortRoleCompareFlag flag = DEnumerator::SortRoleCompareFlag::kSortRoleCompareDefault; - - QMap> hideListMap; - - QWaitCondition waitCondition; - QMutex mutex; - - DFMIOError error; -}; - -END_IO_NAMESPACE - -#endif // DLOCALENUMERATOR_P_H diff --git a/src/dfm-io/dfm-io/private/local/dlocalfile_p.h b/src/dfm-io/dfm-io/private/local/dlocalfile_p.h deleted file mode 100644 index 5c7cd50..0000000 --- a/src/dfm-io/dfm-io/private/local/dlocalfile_p.h +++ /dev/null @@ -1,146 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALFILE_P_H -#define DLOCALFILE_P_H - -#include "dfmio_global.h" - -#include "core/dfile_p.h" - -#include "gio/gio.h" - -#include - -BEGIN_IO_NAMESPACE - -class DLocalFile; - -class DLocalFilePrivate : public QObject -{ -public: - explicit DLocalFilePrivate(DLocalFile *q); - ~DLocalFilePrivate(); - - typedef struct - { - DFile::ReadCallbackFunc callback; - gpointer userData; - } ReadAsyncOp; - - typedef struct - { - DFile::ReadQCallbackFunc callback; - char *data; - gpointer userData; - } ReadQAsyncOp; - - typedef struct - { - char *data; - int ioPriority; - DFile::ReadAllCallbackFunc callback; - gpointer userData; - QPointer me; - } ReadAllAsyncOp; - - typedef struct - { - DFile::WriteCallbackFunc callback; - gpointer userData; - } WriteAsyncOp; - - typedef struct - { - DFileFuture *future = nullptr; - QPointer me; - } NormalFutureAsyncOp; - - typedef struct - { - QByteArray data; - DFileFuture *future = nullptr; - QPointer me; - } ReadAllAsyncFutureOp; - - bool open(DFile::OpenFlags mode); - bool close(); - qint64 read(char *data, qint64 maxSize); - QByteArray read(qint64 maxSize); - QByteArray readAll(); - // async - void readAsync(char *data, qint64 maxSize, int ioPriority = 0, DFile::ReadCallbackFunc func = nullptr, void *userData = nullptr); - void readQAsync(qint64 maxSize, int ioPriority = 0, DFile::ReadQCallbackFunc func = nullptr, void *userData = nullptr); - void readAllAsync(int ioPriority = 0, DFile::ReadAllCallbackFunc func = nullptr, void *userData = nullptr); - - qint64 write(const char *data, qint64 len); - qint64 write(const char *data); - qint64 write(const QByteArray &data); - // async - void writeAsync(const char *data, qint64 len, int ioPriority = 0, DFile::WriteCallbackFunc func = nullptr, void *userData = nullptr); - void writeAllAsync(const char *data, int ioPriority = 0, DFile::WriteAllCallbackFunc func = nullptr, void *userData = nullptr); - void writeQAsync(const QByteArray &byteArray, int ioPriority = 0, DFile::WriteQCallbackFunc func = nullptr, void *userData = nullptr); - - bool cancel(); - bool seek(qint64 pos, DFile::SeekType type = DFile::SeekType::kBegin); - qint64 pos(); - bool flush(); - qint64 size(); - bool exists(); - DFile::Permissions permissions(); - bool setPermissions(DFile::Permissions permission); - quint32 buildPermissions(DFile::Permissions permission); - DFile::Permissions permissionsFromGFileInfo(GFileInfo *gfileinfo); - - // future - [[nodiscard]] DFileFuture *openAsync(DFile::OpenFlags mode, int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *closeAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *readAsync(qint64 maxSize, int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *readAllAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *flushAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *sizeAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *setPermissionsAsync(DFile::Permissions permission, int ioPriority, QObject *parent = nullptr); - - GInputStream *inputStream(); - GOutputStream *outputStream(); - - DFMIOError lastError(); - void setError(DFMIOError error); - void setErrorFromGError(GError *gerror); - - bool checkOpenFlags(DFile::OpenFlags *mode); - - static void readAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void readQAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void readAllAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void writeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void permissionsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void existsAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void sizeAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void flushAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void writeAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void readAsyncFutureCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - -private: - void checkAndResetCancel(); - -public: - GIOStream *ioStream = nullptr; - GInputStream *iStream = nullptr; - GOutputStream *oStream = nullptr; - GCancellable *cancellable = nullptr; - - DFMIOError error; - - DLocalFile *q = nullptr; - QByteArray readAllAsyncRet; -}; - -END_IO_NAMESPACE - -#endif // DLOCALFILE_P_H diff --git a/src/dfm-io/dfm-io/private/local/dlocalfileinfo_p.h b/src/dfm-io/dfm-io/private/local/dlocalfileinfo_p.h deleted file mode 100644 index 79de00f..0000000 --- a/src/dfm-io/dfm-io/private/local/dlocalfileinfo_p.h +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALFILEINFO_P_H -#define DLOCALFILEINFO_P_H - -#include "dfmio_global.h" - -#include "gio/gio.h" - -#include "local/dlocalfileinfo.h" -#include "core/dfileinfo.h" - -#include -#include - -BEGIN_IO_NAMESPACE - -class DFileFuture; -class DLocalFileInfo; -class DLocalFileInfoPrivate : public QObject -{ -public: - explicit DLocalFileInfoPrivate(DLocalFileInfo *q); - ~DLocalFileInfoPrivate(); - - typedef struct - { - DFileInfo::InitQuerierAsyncCallback callback; - gpointer userData; - QPointer me; - } QueryInfoAsyncOp; - typedef struct - { - QPointer me; - DFileFuture *future = nullptr; - } QueryInfoAsyncOp2; - - void initNormal(); - - bool queryInfoSync(); - void queryInfoAsync(int ioPriority = 0, DFileInfo::InitQuerierAsyncCallback func = nullptr, void *userData = nullptr); - - QVariant attribute(DFileInfo::AttributeID id, bool *success = nullptr); - void attributeAsync(DFileInfo::AttributeID id, bool *success = nullptr, int ioPriority = 0, DFileInfo::AttributeAsyncCallback func = nullptr, void *userData = nullptr); - - [[nodiscard]] DFileFuture *initQuerierAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *attributeAsync(DFileInfo::AttributeID id, int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *attributeAsync(const QByteArray &key, const DFileInfo::DFileAttributeType type, int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *refreshAsync(int ioPriority, QObject *parent = nullptr); - [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr); - - bool setAttribute(DFileInfo::AttributeID id, const QVariant &value); - bool hasAttribute(DFileInfo::AttributeID id); - bool exists() const; - bool refresh(); - DFile::Permissions permissions(); - - bool setCustomAttribute(const char *key, const DFileInfo::DFileAttributeType type, const void *value, const DFileInfo::FileQueryInfoFlags flag = DFileInfo::FileQueryInfoFlags::kTypeNone); - QVariant customAttribute(const char *key, const DFileInfo::DFileAttributeType type); - - DFMIOError lastError(); - void setErrorFromGError(GError *gerror); - - static void queryInfoAsyncCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void queryInfoAsyncCallback2(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void freeQueryInfoAsyncOp(QueryInfoAsyncOp *op); - static void freeQueryInfoAsyncOp2(QueryInfoAsyncOp2 *op); - - QVariant attributesBySelf(DFileInfo::AttributeID id); - QVariant attributesFromUrl(DFileInfo::AttributeID id); - -public: - QList attributesRealizationSelf; - QList attributesNoBlockIO; - GFile *gfile = nullptr; - GFileInfo *gfileinfo = nullptr; - bool initFinished = false; - bool infoReseted = false; - GCancellable *gcancellable = nullptr; - - DFMIOError error; - - DLocalFileInfo *q = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALFILEINFO_P_H diff --git a/src/dfm-io/dfm-io/private/local/dlocaloperator_p.h b/src/dfm-io/dfm-io/private/local/dlocaloperator_p.h deleted file mode 100644 index 3b876a6..0000000 --- a/src/dfm-io/dfm-io/private/local/dlocaloperator_p.h +++ /dev/null @@ -1,78 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALOPERATOR_P_H -#define DLOCALOPERATOR_P_H - -#include "dfmio_global.h" -#include "core/doperator_p.h" - -#include "gio/gio.h" - -BEGIN_IO_NAMESPACE - -class DLocalOperator; - -class DLocalOperatorPrivate -{ -public: - explicit DLocalOperatorPrivate(DLocalOperator *q); - ~DLocalOperatorPrivate(); - - typedef struct - { - DOperator::FileOperateCallbackFunc callback; - gpointer userData; - } OperateFileOp; - - bool renameFile(const QString &new_name); - bool renameFile(const QUrl &toUrl); - bool copyFile(const QUrl &dstUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); - bool moveFile(const QUrl &dstUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); - void renameFileAsync(const QString &newName, int ioPriority = 0, DOperator::FileOperateCallbackFunc func = nullptr, void *userData = nullptr); - void copyFileAsync(const QUrl &dstUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - void moveFileAsync(const QUrl &dstUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - - QString trashFile(); - bool deleteFile(); - bool restoreFile(DOperator::ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr); - void trashFileAsync(int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - void deleteFileAsync(int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - void restoreFileAsync(DOperator::ProgressCallbackFunc func = nullptr, void *progressCallbackData = nullptr, - int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - - bool touchFile(); - bool makeDirectory(); - bool createLink(const QUrl &link); - void touchFileAsync(int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - void makeDirectoryAsync(int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - void createLinkAsync(const QUrl &link, int ioPriority = 0, DOperator::FileOperateCallbackFunc operatefunc = nullptr, void *userData = nullptr); - - bool setFileInfo(const DFileInfo &fileInfo); - bool cancel(); - - DFMIOError lastError(); - void setErrorFromGError(GError *gerror); - - GFile *makeGFile(const QUrl &url); - - static void renameCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void copyCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void trashCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void deleteCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void touchCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - static void makeDirCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData); - -private: - DLocalOperator *q = nullptr; - GCancellable *gcancellable = nullptr; - - DFMIOError error; -}; - -END_IO_NAMESPACE - -#endif // DLOCALOPERATOR_P_H diff --git a/src/dfm-io/dfm-io/private/local/dlocalwatcher_p.h b/src/dfm-io/dfm-io/private/local/dlocalwatcher_p.h deleted file mode 100644 index 9bb3ff3..0000000 --- a/src/dfm-io/dfm-io/private/local/dlocalwatcher_p.h +++ /dev/null @@ -1,80 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DLOCALWATCHER_P_H -#define DLOCALWATCHER_P_H - -#include "dfmio_global.h" - -#include "core/dwatcher_p.h" - -#include "gio/gio.h" - -#include - -BEGIN_IO_NAMESPACE - -class DLocalWatcher; -class DLocalWatcherProxy; - -class DLocalWatcherPrivate -{ -public: - explicit DLocalWatcherPrivate(DLocalWatcher *q); - ~DLocalWatcherPrivate(); - - void setWatchType(DWatcher::WatchType type); - DWatcher::WatchType watchType() const; - bool start(int timeRate); - bool stop(); - bool running() const; - - bool startProxy(); - DFMIOError lastError(); - void setErrorFromGError(GError *gerror); - - static void watchCallback(GFileMonitor *gmonitor, GFile *child, GFile *other, GFileMonitorEvent event_type, gpointer user_data); - -private: - GFileMonitor *createMonitor(GFile *gfile, DWatcher::WatchType type); - -public: - GFileMonitor *gmonitor = nullptr; - GFile *gfile = nullptr; - DWatcher::WatchType type = DWatcher::WatchType::kAuto; - - DFMIOError error; - - DLocalWatcher *q = nullptr; - DLocalWatcherProxy *proxy = nullptr; -}; - -class DLocalWatcherProxy : public QObject -{ - Q_OBJECT -public: - explicit DLocalWatcherProxy(DLocalWatcher *qq); - virtual ~DLocalWatcherProxy(); - - bool start(); - bool stop(); - bool running(); - -private Q_SLOTS: - void onNotifierActived(); - -private: - DLocalWatcher *q = nullptr; - - QString monitorFile; - DWatcher::WatchType type = DWatcher::WatchType::kAuto; - int watchId = -1; - bool inited = false; - int inotifyFd = -1; - QSocketNotifier *notifier = nullptr; -}; - -END_IO_NAMESPACE - -#endif // DLOCALWATCHER_P_H diff --git a/src/dfm-io/dfm-io/src/core/denumerator.cpp b/src/dfm-io/dfm-io/src/core/denumerator.cpp deleted file mode 100644 index f5455bc..0000000 --- a/src/dfm-io/dfm-io/src/core/denumerator.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "core/denumerator_p.h" -#include "core/denumerator.h" -#include "core/dfileinfo.h" - -#include - -USING_IO_NAMESPACE - -DEnumeratorPrivate::DEnumeratorPrivate(DEnumerator *q) - : q(q) -{ -} - -DEnumeratorPrivate::~DEnumeratorPrivate() -{ -} - -DEnumerator::DEnumerator(const QUrl &uri, const QStringList &nameFilters, DEnumerator::DirFilters filters, DEnumerator::IteratorFlags flags) - : d(new DEnumeratorPrivate(this)) -{ - d->uri = uri; - d->nameFilters = nameFilters; - d->dirFilters = filters; - d->iteratorFlags = flags; - -} - -DEnumerator::~DEnumerator() -{ -} - -bool DEnumerator::init() -{ - if (d->initFunc) - return d->initFunc(); - return false; -} - -void DEnumerator::initAsync(int ioPriority, DEnumerator::InitCallbackFunc func, void *userData) -{ - if (d->initAsyncFunc) - return d->initAsyncFunc(ioPriority, func, userData); -} - -bool DEnumerator::cancel() -{ - if (!d->cancelFunc) - return false; - return d->cancelFunc(); -} - -bool DEnumerator::hasNext() const -{ - if (d->hasNextFunc) - return d->hasNextFunc(); - return false; -} - -QUrl DEnumerator::next() const -{ - if (d->nextFunc) - return d->nextFunc(); - return QUrl(); -} - -QUrl DEnumerator::uri() const -{ - return d->uri; -} - -QStringList DEnumerator::nameFilters() const -{ - return d->nameFilters; -} - -DEnumerator::DirFilters DEnumerator::dirFilters() -{ - return d->dirFilters; -} - -DEnumerator::IteratorFlags DEnumerator::iteratorFlags() const -{ - return d->iteratorFlags; -} - -void DEnumerator::setTimeout(ulong timeout) -{ - d->enumTimeout = timeout; -} - -ulong DEnumerator::timeout() const -{ - return d->enumTimeout; -} - -QSharedPointer DEnumerator::fileInfo() const -{ - if (d->fileInfoFunc) - return d->fileInfoFunc(); - return nullptr; -} - -quint64 DEnumerator::fileCount() -{ - if (d->fileCountFunc) - return d->fileCountFunc(); - return 0; -} - -QList> DEnumerator::fileInfoList() -{ - if (d->fileInfoListFunc) - return d->fileInfoListFunc(); - return {}; -} - -void DEnumerator::setArguments(const QMap &argus) -{ - if (d->setArgumentsFunc) - return d->setArgumentsFunc(argus); -} - -QList > DEnumerator::sortFileInfoList() -{ - if (d->sortFileInfoListFunc) - return d->sortFileInfoListFunc(); - return {}; -} - -void DEnumerator::registerFileInfoList(const DEnumerator::FileInfoListFunc &func) -{ - d->fileInfoListFunc = func; -} - -void DEnumerator::registerSetArguments(const DEnumerator::SetArgumentsFunc &func) -{ - d->setArgumentsFunc = func; -} - -void DEnumerator::registerSortFileInfoList(const DEnumerator::SortFileInfoListFunc &func) -{ - d->sortFileInfoListFunc = func; -} - -void DEnumerator::registerHasNext(const DEnumerator::HasNextFunc &func) -{ - d->hasNextFunc = func; -} - -void DEnumerator::registerNext(const DEnumerator::NextFunc &func) -{ - d->nextFunc = func; -} - -void DEnumerator::registerFileInfo(const DEnumerator::FileInfoFunc &func) -{ - d->fileInfoFunc = func; -} - -void DEnumerator::registerFileCount(const DEnumerator::FileCountFunc &func) -{ - d->fileCountFunc = func; -} - -void DEnumerator::registerLastError(const DEnumerator::LastErrorFunc &func) -{ - d->lastErrorFunc = func; -} - -DFMIOError DEnumerator::lastError() const -{ - if (!d->lastErrorFunc) - return DFMIOError(); - - return d->lastErrorFunc(); -} - -void DEnumerator::registerInit(const DEnumerator::InitFunc &func) -{ - d->initFunc = func; -} - -void DEnumerator::registerInitAsync(const DEnumerator::InitAsyncFunc &func) -{ - d->initAsyncFunc = func; -} - -void DEnumerator::registerCancel(const DEnumerator::CancelFunc &func) -{ - d->cancelFunc = func; -} diff --git a/src/dfm-io/dfm-io/src/core/dfile.cpp b/src/dfm-io/dfm-io/src/core/dfile.cpp deleted file mode 100644 index 3a874b5..0000000 --- a/src/dfm-io/dfm-io/src/core/dfile.cpp +++ /dev/null @@ -1,514 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "core/dfile_p.h" -#include "local/dlocalhelper.h" - -#include - -#include - -USING_IO_NAMESPACE - -DFilePrivate::DFilePrivate(DFile *q) - : q(q) -{ -} - -DFilePrivate::~DFilePrivate() -{ -} - -void DFilePrivate::setError(DFMIOError error) -{ - if (setErrorFunc) - setErrorFunc(error); -} - -DFile::DFile(const QUrl &uri) - : d(new DFilePrivate(this)) -{ - d->uri = uri; -} - -DFile::~DFile() -{ -} - -bool DFile::open(DFile::OpenFlags mode) -{ - if (!d->openFunc) - return false; - - d->isOpen = d->openFunc(mode); - - return d->isOpen; -} - -bool DFile::close() -{ - if (!d->closeFunc) - return false; - - if (d->isOpen) { - if (d->closeFunc()) - d->isOpen = false; - else - return false; - } - - return true; -} - -qint64 DFile::read(char *data, qint64 maxSize) -{ - if (!d->readFunc) - return -1; - - if (!d->isOpen) { - d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); - return -1; - } - - return d->readFunc(data, maxSize); -} - -QByteArray DFile::read(qint64 maxSize) -{ - if (!d->readQFunc) - return QByteArray(); - - if (!d->isOpen) { - d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); - return QByteArray(); - } - - return d->readQFunc(maxSize); -} - -QByteArray DFile::readAll() -{ - if (!d->readAllFunc) - return QByteArray(); - - if (!d->isOpen) { - d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); - return QByteArray(); - } - - return d->readAllFunc(); -} - -void DFile::readAsync(char *data, qint64 maxSize, int ioPriority, DFile::ReadCallbackFunc func, void *userData) -{ - if (!d->readFuncAsync) - return; - d->readFuncAsync(data, maxSize, ioPriority, func, userData); -} - -void DFile::readQAsync(qint64 maxSize, int ioPriority, DFile::ReadQCallbackFunc func, void *userData) -{ - if (!d->readQFuncAsync) - return; - d->readQFuncAsync(maxSize, ioPriority, func, userData); -} - -void DFile::readAllAsync(int ioPriority, DFile::ReadAllCallbackFunc func, void *userData) -{ - if (!d->readAllFuncAsync) - return; - d->readAllFuncAsync(ioPriority, func, userData); -} - -qint64 DFile::write(const char *data, qint64 len) -{ - if (!d->writeFunc) - return -1; - - if (!d->isOpen) { - d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); - return -1; - } - - return d->writeFunc(data, len); -} - -qint64 DFile::write(const char *data) -{ - if (!d->writeAllFunc) - return -1; - - if (!d->isOpen) { - d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); - return -1; - } - - return d->writeAllFunc(data); -} - -qint64 DFile::write(const QByteArray &byteArray) -{ - if (!d->writeQFunc) - return -1; - - if (!d->isOpen) { - d->setError(DFMIOError(DFM_IO_ERROR_OPEN_FAILED)); - return -1; - } - - return d->writeQFunc(byteArray); -} - -bool DFile::cancel() -{ - if (!d->cancelFunc) - return false; - - return d->cancelFunc(); -} - -void DFile::writeAsync(const char *data, qint64 len, int ioPriority, DFile::WriteCallbackFunc func, void *userData) -{ - if (!d->writeFuncAsync) - return; - d->writeFuncAsync(data, len, ioPriority, func, userData); -} - -void DFile::writeAllAsync(const char *data, int ioPriority, DFile::WriteAllCallbackFunc func, void *userData) -{ - if (!d->writeAllFuncAsync) - return; - d->writeAllFuncAsync(data, ioPriority, func, userData); -} - -void DFile::writeQAsync(const QByteArray &byteArray, int ioPriority, DFile::WriteQCallbackFunc func, void *userData) -{ - if (!d->writeQFuncAsync) - return; - d->writeQFuncAsync(byteArray, ioPriority, func, userData); -} - -bool DFile::seek(qint64 pos, SeekType type) const -{ - if (!d->seekFunc) - return -1; - - return d->seekFunc(pos, type); -} - -qint64 DFile::pos() const -{ - if (!d->posFunc) - return -1; - - return d->posFunc(); -} - -bool DFile::flush() -{ - if (!d->flushFunc) - return -1; - - return d->flushFunc(); -} - -qint64 DFile::size() const -{ - if (!d->sizeFunc) - return -1; - - return d->sizeFunc(); -} - -bool DFile::exists() const -{ - if (!d->existsFunc) - return -1; - - return d->existsFunc(); -} - -DFile::Permissions DFile::permissions() const -{ - if (d->permissionFunc) - return d->permissionFunc(); - return DFile::Permission::kNoPermission; -} - -bool DFile::setPermissions(DFile::Permissions permission) -{ - if (!d->setPermissionsFunc) - return false; - return d->setPermissionsFunc(permission); -} - -void DFile::registerOpen(const OpenFunc &func) -{ - d->openFunc = func; -} - -void DFile::registerClose(const CloseFunc &func) -{ - d->closeFunc = func; -} - -void DFile::registerRead(const ReadFunc &func) -{ - d->readFunc = func; -} - -void DFile::registerReadQ(const DFile::ReadQFunc &func) -{ - d->readQFunc = func; -} - -void DFile::registerReadAll(const DFile::ReadAllFunc &func) -{ - d->readAllFunc = func; -} - -void DFile::registerReadAsync(const DFile::ReadFuncAsync &func) -{ - d->readFuncAsync = func; -} - -void DFile::registerReadQAsync(const DFile::ReadQFuncAsync &func) -{ - d->readQFuncAsync = func; -} - -void DFile::registerReadAllAsync(const DFile::ReadAllFuncAsync &func) -{ - d->readAllFuncAsync = func; -} - -void DFile::registerWrite(const WriteFunc &func) -{ - d->writeFunc = func; -} - -void DFile::registerWriteAll(const DFile::WriteAllFunc &func) -{ - d->writeAllFunc = func; -} - -void DFile::registerWriteQ(const DFile::WriteQFunc &func) -{ - d->writeQFunc = func; -} - -void DFile::registerWriteAsync(const DFile::WriteFuncAsync &func) -{ - d->writeFuncAsync = func; -} - -void DFile::registerWriteAllAsync(const DFile::WriteAllFuncAsync &func) -{ - d->writeAllFuncAsync = func; -} - -void DFile::registerWriteQAsync(const DFile::WriteQFuncAsync &func) -{ - d->writeQFuncAsync = func; -} - -void DFile::registerCancel(const DFile::CancelFunc &func) -{ - d->cancelFunc = func; -} - -void DFile::registerSeek(const SeekFunc &func) -{ - d->seekFunc = func; -} - -void DFile::registerPos(const DFile::PosFunc &func) -{ - d->posFunc = func; -} - -void DFile::registerFlush(const DFile::FlushFunc &func) -{ - d->flushFunc = func; -} - -void DFile::registerSize(const DFile::SizeFunc &func) -{ - d->sizeFunc = func; -} - -void DFile::registerExists(const DFile::ExistsFunc &func) -{ - d->existsFunc = func; -} - -void DFile::registerPermissions(const DFile::PermissionFunc &func) -{ - d->permissionFunc = func; -} - -void DFile::registerSetPermissions(const DFile::SetPermissionFunc &func) -{ - d->setPermissionsFunc = func; -} - -void DFile::registerLastError(const DFile::LastErrorFunc &func) -{ - d->lastErrorFunc = func; -} - -void DFile::registerSetError(const DFile::SetErrorFunc &func) -{ - d->setErrorFunc = func; -} - -void DFile::registerOpenAsyncFuture(const DFile::OpenAsyncFuncFuture &func) -{ - d->openAsyncFuncFuture = func; -} - -void DFile::registerCloseAsyncFuture(const DFile::CloseAsyncFuncFuture &func) -{ - d->closeAsyncFuncFuture = func; -} - -void DFile::registerReadAsyncFuture(const DFile::ReadAsyncFuncFuture &func) -{ - d->readAsyncFuncFuture = func; -} - -void DFile::registerReadAllAsyncFuture(const DFile::ReadAllAsyncFuncFuture &func) -{ - d->readAllAsyncFuncFuture = func; -} - -void DFile::registerWriteAsyncFuture(const DFile::WriteAsyncFuncFuture &func) -{ - d->writeAsyncFuncFuture = func; -} - -void DFile::registerWriteAllAsyncFuture(const DFile::WriteAllAsyncFuncFuture &func) -{ - d->writeAllAsyncFuncFuture = func; -} - -void DFile::registerFlushAsyncFuture(const DFile::FlushAsyncFuncFuture &func) -{ - d->flushAsyncFuncFuture = func; -} - -void DFile::registerSizeAsyncFuture(const DFile::SizeAsyncFuncFuture &func) -{ - d->sizeAsyncFuncFuture = func; -} - -void DFile::registerExistsAsyncFuture(const DFile::ExistsAsyncFuncFuture &func) -{ - d->existsAsyncFuncFuture = func; -} - -void DFile::registerPermissionsAsyncFuture(const DFile::PermissionsAsyncFuncFuture &func) -{ - d->permissionsAsyncFuncFuture = func; -} - -void DFile::registerSetPermissionsAsyncFuture(const DFile::SetPermissionsAsyncFuncFuture &func) -{ - d->setPermissionsAsyncFuncFuture = func; -} - -QUrl DFile::uri() const -{ - return d->uri; -} - -bool DFile::isOpen() -{ - return d->isOpen; -} - -DFMIOError DFile::lastError() const -{ - if (!d->lastErrorFunc) - return DFMIOError(); - - return d->lastErrorFunc(); -} - -DFileFuture *DFile::openAsync(OpenFlags mode, int ioPriority, QObject *parent) -{ - if (d->openAsyncFuncFuture) - return d->openAsyncFuncFuture(mode, ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::closeAsync(int ioPriority, QObject *parent) -{ - if (d->closeAsyncFuncFuture) - return d->closeAsyncFuncFuture(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::readAsync(qint64 maxSize, int ioPriority, QObject *parent) -{ - if (d->readAsyncFuncFuture) - return d->readAsyncFuncFuture(maxSize, ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::readAllAsync(int ioPriority, QObject *parent) -{ - if (d->readAllAsyncFuncFuture) - return d->readAllAsyncFuncFuture(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::writeAsync(const QByteArray &data, qint64 len, int ioPriority, QObject *parent) -{ - if (d->writeAsyncFuncFuture) - return d->writeAsyncFuncFuture(data, len, ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::writeAsync(const QByteArray &data, int ioPriority, QObject *parent) -{ - if (d->writeAllAsyncFuncFuture) - return d->writeAllAsyncFuncFuture(data, ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::flushAsync(int ioPriority, QObject *parent) -{ - if (d->flushAsyncFuncFuture) - return d->flushAsyncFuncFuture(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::sizeAsync(int ioPriority, QObject *parent) -{ - if (d->sizeAsyncFuncFuture) - return d->sizeAsyncFuncFuture(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::existsAsync(int ioPriority, QObject *parent) -{ - if (d->existsAsyncFuncFuture) - return d->existsAsyncFuncFuture(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::permissionsAsync(int ioPriority, QObject *parent) -{ - if (d->permissionsAsyncFuncFuture) - return d->permissionsAsyncFuncFuture(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFile::setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent) -{ - if (d->setPermissionsAsyncFuncFuture) - return d->setPermissionsAsyncFuncFuture(permission, ioPriority, parent); - return nullptr; -} diff --git a/src/dfm-io/dfm-io/src/core/dfileinfo.cpp b/src/dfm-io/dfm-io/src/core/dfileinfo.cpp deleted file mode 100644 index b1ff9d0..0000000 --- a/src/dfm-io/dfm-io/src/core/dfileinfo.cpp +++ /dev/null @@ -1,511 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "core/dfileinfo_p.h" -#include "utils/dmediainfo.h" -#include "core/dfilefuture.h" - -USING_IO_NAMESPACE - -DFileInfo::AttributeInfoMap DFileInfo::attributeInfoMap = { - { DFileInfo::AttributeID::kStandardType, std::make_tuple("standard::type", 0) }, // G_FILE_ATTRIBUTE_STANDARD_TYPE - { DFileInfo::AttributeID::kStandardIsHidden, std::make_tuple("standard::is-hidden", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN - { DFileInfo::AttributeID::kStandardIsBackup, std::make_tuple("standard::is-backup", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP - { DFileInfo::AttributeID::kStandardIsSymlink, std::make_tuple("standard::is-symlink", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK - { DFileInfo::AttributeID::kStandardIsVirtual, std::make_tuple("standard::is-virtual", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL - { DFileInfo::AttributeID::kStandardIsVolatile, std::make_tuple("standard::is-volatile", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE - { DFileInfo::AttributeID::kStandardName, std::make_tuple("standard::name", "") }, // G_FILE_ATTRIBUTE_STANDARD_NAME - { DFileInfo::AttributeID::kStandardDisplayName, std::make_tuple("standard::display-name", "") }, // G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME - { DFileInfo::AttributeID::kStandardEditName, std::make_tuple("standard::edit-name", "") }, // G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME - { DFileInfo::AttributeID::kStandardCopyName, std::make_tuple("standard::copy-name", "") }, // G_FILE_ATTRIBUTE_STANDARD_COPY_NAME - { DFileInfo::AttributeID::kStandardIcon, std::make_tuple("standard::icon", 0) }, // G_FILE_ATTRIBUTE_STANDARD_ICON - { DFileInfo::AttributeID::kStandardSymbolicIcon, std::make_tuple("standard::symbolic-icon", 0) }, // G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON - { DFileInfo::AttributeID::kStandardContentType, std::make_tuple("standard::content-type", "") }, // G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE - { DFileInfo::AttributeID::kStandardFastContentType, std::make_tuple("standard::fast-content-type", "") }, // G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE - { DFileInfo::AttributeID::kStandardSize, std::make_tuple("standard::size", 0) }, // G_FILE_ATTRIBUTE_STANDARD_SIZE - { DFileInfo::AttributeID::kStandardAllocatedSize, std::make_tuple("standard::allocated-size", 0) }, // G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE - { DFileInfo::AttributeID::kStandardSymlinkTarget, std::make_tuple("standard::symlink-target", "") }, // G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET - { DFileInfo::AttributeID::kStandardTargetUri, std::make_tuple("standard::target-uri", "") }, // G_FILE_ATTRIBUTE_STANDARD_TARGET_URI - { DFileInfo::AttributeID::kStandardSortOrder, std::make_tuple("standard::sort-order", 0) }, // G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER - { DFileInfo::AttributeID::kStandardDescription, std::make_tuple("standard::description", "") }, // G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION - - { DFileInfo::AttributeID::kEtagValue, std::make_tuple("etag::value", "") }, // G_FILE_ATTRIBUTE_ETAG_VALUE - - { DFileInfo::AttributeID::kIdFile, std::make_tuple("id::file", "") }, // G_FILE_ATTRIBUTE_ID_FILE - { DFileInfo::AttributeID::kIdFilesystem, std::make_tuple("id::filesystem", "") }, // G_FILE_ATTRIBUTE_ID_FILESYSTEM - - { DFileInfo::AttributeID::kAccessCanRead, std::make_tuple("access::can-read", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_READ - { DFileInfo::AttributeID::kAccessCanWrite, std::make_tuple("access::can-write", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE - { DFileInfo::AttributeID::kAccessCanExecute, std::make_tuple("access::can-execute", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE - { DFileInfo::AttributeID::kAccessCanDelete, std::make_tuple("access::can-delete", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE - { DFileInfo::AttributeID::kAccessCanTrash, std::make_tuple("access::can-trash", false) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH - { DFileInfo::AttributeID::kAccessCanRename, std::make_tuple("access::can-rename", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME - - { DFileInfo::AttributeID::kMountableCanMount, std::make_tuple("mountable::can-mount", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT - { DFileInfo::AttributeID::kMountableCanUnmount, std::make_tuple("mountable::can-unmount", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT - { DFileInfo::AttributeID::kMountableCanEject, std::make_tuple("mountable::can-eject", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT - { DFileInfo::AttributeID::kMountableUnixDevice, std::make_tuple("mountable::unix-device", 0) }, // G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE - { DFileInfo::AttributeID::kMountableUnixDeviceFile, std::make_tuple("mountable::unix-device-file", "") }, // G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE - { DFileInfo::AttributeID::kMountableHalUdi, std::make_tuple("mountable::hal-udi", "") }, // G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI - { DFileInfo::AttributeID::kMountableCanPoll, std::make_tuple("mountable::can-poll", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL - { DFileInfo::AttributeID::kMountableIsMediaCheckAutomatic, std::make_tuple("mountable::is-media-check-automatic", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC - { DFileInfo::AttributeID::kMountableCanStart, std::make_tuple("mountable::can-start", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START - { DFileInfo::AttributeID::kMountableCanStartDegraded, std::make_tuple("mountable::can-start-degraded", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED - { DFileInfo::AttributeID::kMountableCanStop, std::make_tuple("mountable::can-stop", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP - { DFileInfo::AttributeID::kMountableStartStopType, std::make_tuple("mountable::start-stop-type", 0) }, // G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE - - { DFileInfo::AttributeID::kTimeModified, std::make_tuple("time::modified", 0) }, // G_FILE_ATTRIBUTE_TIME_MODIFIED - { DFileInfo::AttributeID::kTimeModifiedUsec, std::make_tuple("time::modified-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC - { DFileInfo::AttributeID::kTimeAccess, std::make_tuple("time::access", 0) }, // G_FILE_ATTRIBUTE_TIME_ACCESS - { DFileInfo::AttributeID::kTimeAccessUsec, std::make_tuple("time::access-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_ACCESS_USEC - { DFileInfo::AttributeID::kTimeChanged, std::make_tuple("time::changed", 0) }, // G_FILE_ATTRIBUTE_TIME_CHANGED - { DFileInfo::AttributeID::kTimeChangedUsec, std::make_tuple("time::changed-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_CHANGED_USEC - { DFileInfo::AttributeID::kTimeCreated, std::make_tuple("time::created", 0) }, // G_FILE_ATTRIBUTE_TIME_CREATED - { DFileInfo::AttributeID::kTimeCreatedUsec, std::make_tuple("time::created-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_CREATED_USEC - - { DFileInfo::AttributeID::kUnixDevice, std::make_tuple("unix::device", 0) }, // G_FILE_ATTRIBUTE_UNIX_DEVICE - { DFileInfo::AttributeID::kUnixInode, std::make_tuple("unix::inode", 0) }, // G_FILE_ATTRIBUTE_UNIX_INODE - { DFileInfo::AttributeID::kUnixMode, std::make_tuple("unix::mode", 0) }, // G_FILE_ATTRIBUTE_UNIX_MODE - { DFileInfo::AttributeID::kUnixNlink, std::make_tuple("unix::nlink", 0) }, // G_FILE_ATTRIBUTE_UNIX_NLINK - { DFileInfo::AttributeID::kUnixUID, std::make_tuple("unix::uid", 0) }, // G_FILE_ATTRIBUTE_UNIX_UID - { DFileInfo::AttributeID::kUnixGID, std::make_tuple("unix::gid", 0) }, // G_FILE_ATTRIBUTE_UNIX_GID - { DFileInfo::AttributeID::kUnixRdev, std::make_tuple("unix::rdev", 0) }, // G_FILE_ATTRIBUTE_UNIX_RDEV - { DFileInfo::AttributeID::kUnixBlockSize, std::make_tuple("unix::block-size", 0) }, // G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE - { DFileInfo::AttributeID::kUnixBlocks, std::make_tuple("unix::blocks", 0) }, // G_FILE_ATTRIBUTE_UNIX_BLOCKS - { DFileInfo::AttributeID::kUnixIsMountPoint, std::make_tuple("unix::is-mountpoint", false) }, // G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT - - { DFileInfo::AttributeID::kDosIsArchive, std::make_tuple("dos::is-archive", false) }, // G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE - { DFileInfo::AttributeID::kDosIsSystem, std::make_tuple("dos::is-system", false) }, // G_FILE_ATTRIBUTE_DOS_IS_SYSTEM - - { DFileInfo::AttributeID::kOwnerUser, std::make_tuple("owner::user", "") }, // G_FILE_ATTRIBUTE_OWNER_USER - { DFileInfo::AttributeID::kOwnerUserReal, std::make_tuple("owner::user-real", "") }, // G_FILE_ATTRIBUTE_OWNER_USER_REAL - { DFileInfo::AttributeID::kOwnerGroup, std::make_tuple("owner::group", "") }, // G_FILE_ATTRIBUTE_OWNER_GROUP - - { DFileInfo::AttributeID::kThumbnailPath, std::make_tuple("thumbnail::path", "") }, // G_FILE_ATTRIBUTE_THUMBNAIL_PATH - { DFileInfo::AttributeID::kThumbnailFailed, std::make_tuple("thumbnail::failed", false) }, // G_FILE_ATTRIBUTE_THUMBNAILING_FAILED - { DFileInfo::AttributeID::kThumbnailIsValid, std::make_tuple("thumbnail::is-valid", false) }, // G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID - - { DFileInfo::AttributeID::kPreviewIcon, std::make_tuple("preview::icon", 0) }, // G_FILE_ATTRIBUTE_PREVIEW_ICON - - { DFileInfo::AttributeID::kFileSystemSize, std::make_tuple("filesystem::size", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_SIZE - { DFileInfo::AttributeID::kFileSystemFree, std::make_tuple("filesystem::free", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_FREE - { DFileInfo::AttributeID::kFileSystemUsed, std::make_tuple("filesystem::used", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_USED - { DFileInfo::AttributeID::kFileSystemType, std::make_tuple("filesystem::type", "") }, // G_FILE_ATTRIBUTE_FILESYSTEM_TYPE - { DFileInfo::AttributeID::kFileSystemReadOnly, std::make_tuple("filesystem::readonly", false) }, // G_FILE_ATTRIBUTE_FILESYSTEM_READONLY - { DFileInfo::AttributeID::kFileSystemUsePreview, std::make_tuple("filesystem::use-preview", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW - { DFileInfo::AttributeID::kFileSystemRemote, std::make_tuple("filesystem::remote", false) }, // G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE - - { DFileInfo::AttributeID::kGvfsBackend, std::make_tuple("gvfs::backend", "") }, // G_FILE_ATTRIBUTE_GVFS_BACKEND - - { DFileInfo::AttributeID::kSelinuxContext, std::make_tuple("selinux::context", "") }, // G_FILE_ATTRIBUTE_SELINUX_CONTEXT - - { DFileInfo::AttributeID::kTrashItemCount, std::make_tuple("trash::item-count", 0) }, // G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT - { DFileInfo::AttributeID::kTrashDeletionDate, std::make_tuple("trash::deletion-date", "") }, // G_FILE_ATTRIBUTE_TRASH_DELETION_DATE - { DFileInfo::AttributeID::kTrashOrigPath, std::make_tuple("trash::orig-path", "") }, // G_FILE_ATTRIBUTE_TRASH_ORIG_PATH - - { DFileInfo::AttributeID::kRecentModified, std::make_tuple("recent::modified", 0) }, // G_FILE_ATTRIBUTE_RECENT_MODIFIED - - { DFileInfo::AttributeID::kCustomStart, std::make_tuple("custom-start", 0) }, - - { DFileInfo::AttributeID::kStandardIsFile, std::make_tuple("standard::is-file", false) }, - { DFileInfo::AttributeID::kStandardIsDir, std::make_tuple("standard::is-dir", false) }, - { DFileInfo::AttributeID::kStandardIsRoot, std::make_tuple("standard::is-root", false) }, - { DFileInfo::AttributeID::kStandardSuffix, std::make_tuple("standard::suffix", "") }, - { DFileInfo::AttributeID::kStandardCompleteSuffix, std::make_tuple("standard::complete-suffix", "") }, - { DFileInfo::AttributeID::kStandardFilePath, std::make_tuple("standard::file-path", "") }, - { DFileInfo::AttributeID::kStandardParentPath, std::make_tuple("standard::parent-path", "") }, - { DFileInfo::AttributeID::kStandardBaseName, std::make_tuple("standard::base-name", "") }, - { DFileInfo::AttributeID::kStandardFileName, std::make_tuple("standard::file-name", "") }, - { DFileInfo::AttributeID::kStandardCompleteBaseName, std::make_tuple("standard::complete-base-name", "") }, -}; - -DFileInfo::DFileInfo(const QUrl &uri, const char *attributes, const FileQueryInfoFlags flag) - : d(new DFileInfoPrivate(this)) -{ - d->uri = uri; - d->attributes = strdup(attributes); - d->flag = flag; -} - -DFileInfo::DFileInfo(const DFileInfo &info) - : d(info.d) -{ -} - -DFileInfo::~DFileInfo() -{ - free(d->attributes); -} - -DFileInfo &DFileInfo::operator=(const DFileInfo &info) -{ - d = info.d; - return *this; -} - -bool DFileInfo::initQuerier() -{ - if (d->initQuerierFunc) - return d->initQuerierFunc(); - - return false; -} - -void DFileInfo::initQuerierAsync(int ioPriority, DFileInfo::InitQuerierAsyncCallback func, void *userData) -{ - if (d->initQuerierAsyncFunc) - d->initQuerierAsyncFunc(ioPriority, func, userData); -} - -QVariant DFileInfo::attribute(DFileInfo::AttributeID id, bool *success) const -{ - if (d->attributeFunc) - return d->attributeFunc(id, success); - - if (success) - *success = false; - return std::get<1>(DFileInfo::attributeInfoMap.at(id)); -} - -void DFileInfo::attributeAsync(DFileInfo::AttributeID id, bool *success, int ioPriority, DFileInfo::AttributeAsyncCallback func, void *userData) const -{ - if (d->attributeAsyncFunc) - return d->attributeAsyncFunc(id, success, ioPriority, func, userData); - - if (success) - *success = false; - const QVariant &value = std::get<1>(DFileInfo::attributeInfoMap.at(id)); - if (func) - func(success, userData, value); -} - -DFileFuture *DFileInfo::initQuerierAsync(int ioPriority, QObject *parent) -{ - if (d->initQuerierAsyncFunc2) - return d->initQuerierAsyncFunc2(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFileInfo::attributeAsync(DFileInfo::AttributeID id, int ioPriority, QObject *parent) const -{ - if (d->attributeAsyncFunc2) - return d->attributeAsyncFunc2(id, ioPriority, parent); - return nullptr; -} - -DFileFuture *DFileInfo::attributeAsync(const QByteArray &key, const DFileInfo::DFileAttributeType type, int ioPriority, QObject *parent) const -{ - if (d->attributeAsyncFunc3) - return d->attributeAsyncFunc3(key, type, ioPriority, parent); - return nullptr; -} - -DFileFuture *DFileInfo::existsAsync(int ioPriority, QObject *parent) const -{ - if (d->existsAsyncFunc) - return d->existsAsyncFunc(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFileInfo::refreshAsync(int ioPriority, QObject *parent) -{ - if (d->refreshAsyncFunc) - return d->refreshAsyncFunc(ioPriority, parent); - return nullptr; -} - -DFileFuture *DFileInfo::permissionsAsync(int ioPriority, QObject *parent) -{ - if (d->permissionsAsyncFunc) - return d->permissionsAsyncFunc(ioPriority, parent); - return nullptr; -} - -bool DFileInfo::setAttribute(DFileInfo::AttributeID id, const QVariant &value) -{ - if (!d->setAttributeFunc) - return false; - - return d->setAttributeFunc(id, value); -} - -bool DFileInfo::hasAttribute(DFileInfo::AttributeID id) const -{ - if (!d->hasAttributeFunc) - return false; - - return d->hasAttributeFunc(id); -} - -bool DFileInfo::exists() const -{ - if (!d) - return false; - if (!d->existsFunc) - return false; - return d->existsFunc(); -} - -/*! - * @brief refresh attribute by @setAttribute to disk - * @param - * @return - */ -bool DFileInfo::refresh() -{ - if (d->refreshFunc) - return d->refreshFunc(); - return false; -} - -DFile::Permissions DFileInfo::permissions() const -{ - if (d->permissionFunc) - return d->permissionFunc(); - return DFile::Permission::kNoPermission; -} - -bool DFileInfo::setCustomAttribute(const char *key, const DFileAttributeType type, const void *value, const FileQueryInfoFlags flag) -{ - if (!d->setCustomAttributeFunc) - return false; - - return d->setCustomAttributeFunc(key, type, value, flag); -} - -QVariant DFileInfo::customAttribute(const char *key, const DFileInfo::DFileAttributeType type) const -{ - if (!d->customAttributeFunc) - return false; - - return d->customAttributeFunc(key, type); -} - -void DFileInfo::attributeExtend(DFileInfo::MediaType type, QList ids, DFileInfo::AttributeExtendFuncCallback callback) -{ - d->attributeExtend(type, ids, callback); -} - -DFileFuture *DFileInfo::attributeExtend(DFileInfo::MediaType type, QList ids, int ioPriority, QObject *parent) -{ - return d->attributeExtend(type, ids, ioPriority, parent); -} - -bool DFileInfo::cancelAttributeExtend() -{ - return d->cancelAttributeExtend(); -} - -void DFileInfo::registerAttribute(const DFileInfo::AttributeFunc &func) -{ - d->attributeFunc = func; -} - -void DFileInfo::registerAttributeAsync(const DFileInfo::AttributeAsyncFunc &func) -{ - d->attributeAsyncFunc = func; -} - -void DFileInfo::registerSetAttribute(const DFileInfo::SetAttributeFunc &func) -{ - d->setAttributeFunc = func; -} - -void DFileInfo::registerHasAttribute(const DFileInfo::HasAttributeFunc &func) -{ - d->hasAttributeFunc = func; -} - -void DFileInfo::registerExists(const DFileInfo::ExistsFunc &func) -{ - d->existsFunc = func; -} - -void DFileInfo::registerRefresh(const DFileInfo::RefreshFunc &func) -{ - d->refreshFunc = func; -} - -void DFileInfo::registerPermissions(const DFile::PermissionFunc &func) -{ - d->permissionFunc = func; -} - -void DFileInfo::registerSetCustomAttribute(const DFileInfo::SetCustomAttributeFunc &func) -{ - d->setCustomAttributeFunc = func; -} - -void DFileInfo::registerCustomAttribute(const DFileInfo::CustomAttributeFunc &func) -{ - d->customAttributeFunc = func; -} - -void DFileInfo::registerLastError(const DFileInfo::LastErrorFunc &func) -{ - d->lastErrorFunc = func; -} - -void DFileInfo::registerInitQuerierAsync2(const DFileInfo::InitQuerierAsyncFunc2 &func) -{ - d->initQuerierAsyncFunc2 = func; -} - -void DFileInfo::registerAttributeAsync2(const DFileInfo::AttributeAsyncFunc2 &func) -{ - d->attributeAsyncFunc2 = func; -} - -void DFileInfo::registerAttributeAsync3(const DFileInfo::AttributeAsyncFunc3 &func) -{ - d->attributeAsyncFunc3 = func; -} - -void DFileInfo::registerExistsAsync(const DFileInfo::ExistsAsyncFunc &func) -{ - d->existsAsyncFunc = func; -} - -void DFileInfo::registerRefreshAsync(const DFileInfo::RefreshAsyncFunc &func) -{ - d->refreshAsyncFunc = func; -} - -void DFileInfo::registerPermissionsAsync(const DFileInfo::PermissionsAsyncFunc &func) -{ - d->permissionsAsyncFunc = func; -} - -QUrl DFileInfo::uri() const -{ - return d->uri; -} - -char *DFileInfo::queryAttributes() const -{ - return d->attributes; -} - -DFileInfo::FileQueryInfoFlags DFileInfo::queryInfoFlag() const -{ - return d->flag; -} - -QString DFileInfo::dump() const -{ - QString ret; - for (const auto &[id, key] : attributeInfoMap) { - const QVariant &&value = attribute(id); - if (value.isValid()) { - ret.append(std::get<0>(attributeInfoMap.at(id)).c_str()); - ret.append(":"); - ret.append(value.toString()); - ret.append("\n"); - } - } - return ret; -} - -DFMIOError DFileInfo::lastError() const -{ - if (!d->lastErrorFunc) - return DFMIOError(); - - return d->lastErrorFunc(); -} - -void DFileInfo::registerInitQuerier(const DFileInfo::InitQuerierFunc &func) -{ - d->initQuerierFunc = func; -} - -void DFileInfo::registerInitQuerierAsync(const DFileInfo::InitQuerierAsyncFunc &func) -{ - d->initQuerierAsyncFunc = func; -} - -void DFileInfoPrivate::attributeExtend(DFileInfo::MediaType type, QList ids, DFileInfo::AttributeExtendFuncCallback callback) -{ - if (ids.contains(DFileInfo::AttributeExtendID::kExtendMediaDuration) - || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaWidth) - || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaHeight)) { - - const QString &filePath = attributeFunc ? attributeFunc(DFileInfo::AttributeID::kStandardFilePath, nullptr).toString() : QString(); - if (!filePath.isEmpty()) { - mediaType = type; - extendIDs = ids; - attributeExtendFuncCallback = callback; - - this->mediaInfo.reset(new DMediaInfo(filePath)); - this->mediaInfo->startReadInfo(std::bind(&DFileInfoPrivate::attributeExtendCallback, this)); - } else { - if (callback) - callback(false, {}); - } - } -} - -DFileFuture *DFileInfoPrivate::attributeExtend(DFileInfo::MediaType type, QList ids, int ioPriority, QObject *parent) -{ - Q_UNUSED(ioPriority); - - if (ids.contains(DFileInfo::AttributeExtendID::kExtendMediaDuration) - || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaWidth) - || ids.contains(DFileInfo::AttributeExtendID::kExtendMediaHeight)) { - - DFileFuture *future = new DFileFuture(parent); - - const QString &filePath = attributeFunc ? attributeFunc(DFileInfo::AttributeID::kStandardFilePath, nullptr).toString() : QString(); - if (!filePath.isEmpty()) { - mediaType = type; - extendIDs = ids; - this->future = future; - - this->mediaInfo.reset(new DMediaInfo(filePath)); - this->mediaInfo->startReadInfo(std::bind(&DFileInfoPrivate::attributeExtendCallback, this)); - - return future; - } else { - return nullptr; - } - } else { - return nullptr; - } -} - -bool DFileInfoPrivate::cancelAttributeExtend() -{ - if (this->mediaInfo) - this->mediaInfo->stopReadInfo(); - return true; -} - -void DFileInfoPrivate::attributeExtendCallback() -{ - if (this->mediaInfo) { - QMap map; - - if (extendIDs.contains(DFileInfo::AttributeExtendID::kExtendMediaDuration)) { - QString duration = mediaInfo->value("Duration", mediaType); - if (duration.isEmpty()) { - duration = mediaInfo->value("Duration", DFileInfo::MediaType::kGeneral); - } - map.insert(DFileInfo::AttributeExtendID::kExtendMediaDuration, duration); - } - if (extendIDs.contains(DFileInfo::AttributeExtendID::kExtendMediaWidth)) { - const QString &width = mediaInfo->value("Width", mediaType); - map.insert(DFileInfo::AttributeExtendID::kExtendMediaWidth, width); - } - if (extendIDs.contains(DFileInfo::AttributeExtendID::kExtendMediaHeight)) { - const QString &height = mediaInfo->value("Height", mediaType); - map.insert(DFileInfo::AttributeExtendID::kExtendMediaHeight, height); - } - - if (attributeExtendFuncCallback) - attributeExtendFuncCallback(true, map); - - if (this->future) - this->future->infoMedia(uri, map); - } -} diff --git a/src/dfm-io/dfm-io/src/core/diofactory.cpp b/src/dfm-io/dfm-io/src/core/diofactory.cpp deleted file mode 100644 index f4d4d46..0000000 --- a/src/dfm-io/dfm-io/src/core/diofactory.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "core/diofactory.h" -#include "error.h" -#include "core/diofactory_p.h" - -USING_IO_NAMESPACE - -DIOFactoryPrivate::DIOFactoryPrivate(DIOFactory *q) - : q(q) -{ -} - -DIOFactoryPrivate::~DIOFactoryPrivate() -{ -} - -DIOFactory::DIOFactory(const QUrl &uri) - : d(new DIOFactoryPrivate(this)) -{ - d->uri = uri; -} - -DIOFactory::~DIOFactory() -{ -} - -void DIOFactory::setUri(const QUrl &uri) -{ - if (!d) - return; - - d->uri = uri; -} - -QUrl DIOFactory::uri() const -{ - if (!d) - return QUrl(); - - return d->uri; -} - -QSharedPointer DIOFactory::createFileInfo(const char *attributes /*= "*"*/, - const DFMIO::DFileInfo::FileQueryInfoFlags flag /*= DFMIO::DFileInfo::FileQueryInfoFlags::TypeNone*/) const -{ - if (!d->createFileInfoFunc) - return nullptr; - - return d->createFileInfoFunc(attributes, flag); -} - -QSharedPointer DIOFactory::createFile() const -{ - if (!d->createFileFunc) - return nullptr; - - return d->createFileFunc(); -} - -QSharedPointer DIOFactory::createEnumerator(const QStringList &nameFilters, DEnumerator::DirFilters filters, DEnumerator::IteratorFlags flags) const -{ - if (!d->createEnumeratorFunc) - return nullptr; - - return d->createEnumeratorFunc(nameFilters, filters, flags); -} - -QSharedPointer DIOFactory::createWatcher() const -{ - if (!d->createWatcherFunc) - return nullptr; - - return d->createWatcherFunc(); -} - -QSharedPointer DIOFactory::createOperator() const -{ - if (!d->createOperatorFunc) - return nullptr; - - return d->createOperatorFunc(); -} - -void DIOFactory::registerCreateFileInfo(const DIOFactory::CreateFileInfoFunc &func) -{ - d->createFileInfoFunc = func; -} - -void DIOFactory::registerCreateFile(const DIOFactory::CreateFileFunc &func) -{ - d->createFileFunc = func; -} - -void DIOFactory::registerCreateEnumerator(const DIOFactory::CreateEnumeratorFunc &func) -{ - d->createEnumeratorFunc = func; -} - -void DIOFactory::registerCreateWatcher(const DIOFactory::CreateWatcherFunc &func) -{ - d->createWatcherFunc = func; -} - -void DIOFactory::registerCreateOperator(const DIOFactory::CreateOperatorFunc &func) -{ - d->createOperatorFunc = func; -} - -DFMIOError DIOFactory::lastError() const -{ - if (!d) - return DFMIOError(); - - return d->error; -} diff --git a/src/dfm-io/dfm-io/src/core/doperator.cpp b/src/dfm-io/dfm-io/src/core/doperator.cpp deleted file mode 100644 index 4bbd7a9..0000000 --- a/src/dfm-io/dfm-io/src/core/doperator.cpp +++ /dev/null @@ -1,318 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "core/doperator_p.h" - -USING_IO_NAMESPACE - -DOperatorPrivate::DOperatorPrivate(DOperator *q) - : q(q) -{ -} - -DOperatorPrivate::~DOperatorPrivate() -{ -} - -DOperator::DOperator(const QUrl &uri) - : d(new DOperatorPrivate(this)) -{ - d->uri = uri; -} - -DOperator::~DOperator() -{ -} - -QUrl DOperator::uri() const -{ - return d->uri; -} - -bool DOperator::renameFile(const QString &newName) -{ - if (!d->renameFileFunc) - return false; - - return d->renameFileFunc(newName); -} - -bool DOperator::renameFile(const QUrl &toUrl) -{ - if (!d->renameFileByStdFunc) - return false; - return d->renameFileByStdFunc(toUrl); -} - -bool DOperator::copyFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func, void *progressCallbackData) -{ - if (!d->copyFileFunc) - return false; - - return d->copyFileFunc(destUri, flag, func, progressCallbackData); -} - -bool DOperator::moveFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func, void *progressCallbackData) -{ - if (!d->moveFileFunc) - return false; - - return d->moveFileFunc(destUri, flag, func, progressCallbackData); -} - -void DOperator::renameFileAsync(const QString &newName, int ioPriority, FileOperateCallbackFunc func, void *progressCallbackData) -{ - if (!d->renameFileFuncAsync) - return; - - d->renameFileFuncAsync(newName, ioPriority, func, progressCallbackData); -} - -void DOperator::copyFileAsync(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc progressfunc, void *progressCallbackData, - int ioPriority, FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->copyFileFuncAsync) - return; - - d->copyFileFuncAsync(destUri, flag, progressfunc, progressCallbackData, ioPriority, operatefunc, userData); -} - -void DOperator::moveFileAsync(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData, - int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->moveFileFuncAsync) - return; - - d->moveFileFuncAsync(destUri, flag, func, progressCallbackData, ioPriority, operatefunc, userData); -} - -QString DOperator::trashFile() -{ - if (!d->trashFileFunc) - return QString(); - - return d->trashFileFunc(); -} - -bool DOperator::deleteFile() -{ - if (!d->deleteFileFunc) - return false; - - return d->deleteFileFunc(); -} - -bool DOperator::restoreFile(ProgressCallbackFunc func, void *progressCallbackData) -{ - if (!d->restoreFileFunc) - return false; - - return d->restoreFileFunc(func, progressCallbackData); -} - -void DOperator::trashFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->trashFileFuncAsync) - return; - - d->trashFileFuncAsync(ioPriority, operatefunc, userData); -} - -void DOperator::deleteFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->deleteFileFuncAsync) - return; - - d->deleteFileFuncAsync(ioPriority, operatefunc, userData); -} - -void DOperator::restoreFileAsync(DOperator::ProgressCallbackFunc func, void *progressCallbackData, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->restoreFileFuncAsync) - return; - - d->restoreFileFuncAsync(func, progressCallbackData, ioPriority, operatefunc, userData); -} - -bool DOperator::touchFile() -{ - if (!d->touchFileFunc) - return false; - - return d->touchFileFunc(); -} - -bool DOperator::makeDirectory() -{ - if (!d->makeDirectoryFunc) - return false; - - return d->makeDirectoryFunc(); -} - -bool DOperator::createLink(const QUrl &link) -{ - if (!d->createLinkFunc) - return false; - - return d->createLinkFunc(link); -} - -void DOperator::touchFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->touchFileFuncAsync) - return; - - d->touchFileFuncAsync(ioPriority, operatefunc, userData); -} - -void DOperator::makeDirectoryAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->makeDirectoryFuncAsync) - return; - - d->makeDirectoryFuncAsync(ioPriority, operatefunc, userData); -} - -void DOperator::createLinkAsync(const QUrl &link, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - if (!d->createLinkFuncAsync) - return; - - d->createLinkFuncAsync(link, ioPriority, operatefunc, userData); -} - -bool DOperator::setFileInfo(const DFileInfo &fileInfo) -{ - if (!d->setFileInfoFunc) - return false; - - return d->setFileInfoFunc(fileInfo); -} - -bool DOperator::cancel() -{ - if (!d->cancelFunc) - return false; - - return d->cancelFunc(); -} - -DFMIOError DOperator::lastError() const -{ - if (!d->lastErrorFunc) - return DFMIOError(); - - return d->lastErrorFunc(); -} - -void DOperator::registerRenameFile(const DOperator::RenameFileFunc &func) -{ - d->renameFileFunc = func; -} - -void DOperator::registerRenameFileByStd(const DOperator::RenameFileByStdFunc &func) -{ - d->renameFileByStdFunc = func; -} - -void DOperator::registerCopyFile(const DOperator::CopyFileFunc &func) -{ - d->copyFileFunc = func; -} - -void DOperator::registerMoveFile(const DOperator::MoveFileFunc &func) -{ - d->moveFileFunc = func; -} - -void DOperator::registerRenameFileAsync(const DOperator::RenameFileFuncAsync &func) -{ - d->renameFileFuncAsync = func; -} - -void DOperator::registerCopyFileAsync(const DOperator::CopyFileFuncAsync &func) -{ - d->copyFileFuncAsync = func; -} - -void DOperator::registerMoveFileAsync(const DOperator::MoveFileFuncAsync &func) -{ - d->moveFileFuncAsync = func; -} - -void DOperator::registerTrashFile(const DOperator::TrashFileFunc &func) -{ - d->trashFileFunc = func; -} - -void DOperator::registerDeleteFile(const DOperator::DeleteFileFunc &func) -{ - d->deleteFileFunc = func; -} - -void DOperator::registerRestoreFile(const DOperator::RestoreFileFunc &func) -{ - d->restoreFileFunc = func; -} - -void DOperator::registerTrashFileAsync(const DOperator::TrashFileFuncAsync &func) -{ - d->trashFileFuncAsync = func; -} - -void DOperator::registerDeleteFileAsync(const DOperator::DeleteFileFuncAsync &func) -{ - d->deleteFileFuncAsync = func; -} - -void DOperator::registerRestoreFileAsync(const DOperator::RestoreFileFuncAsync &func) -{ - d->restoreFileFuncAsync = func; -} - -void DOperator::registerTouchFile(const DOperator::TouchFileFunc &func) -{ - d->touchFileFunc = func; -} - -void DOperator::registerMakeDirectory(const DOperator::MakeDirectoryFunc &func) -{ - d->makeDirectoryFunc = func; -} - -void DOperator::registerCreateLink(const DOperator::CreateLinkFunc &func) -{ - d->createLinkFunc = func; -} - -void DOperator::registerTouchFileAsync(const DOperator::TouchFileFuncAsync &func) -{ - d->touchFileFuncAsync = func; -} - -void DOperator::registerMakeDirectoryAsync(const DOperator::MakeDirectoryFuncAsync &func) -{ - d->makeDirectoryFuncAsync = func; -} - -void DOperator::registerCreateLinkAsync(const DOperator::CreateLinkFuncAsync &func) -{ - d->createLinkFuncAsync = func; -} - -void DOperator::registerSetFileInfo(const DOperator::SetFileInfoFunc &func) -{ - d->setFileInfoFunc = func; -} - -void DOperator::registerCancel(const DOperator::CancelFunc &func) -{ - d->cancelFunc = func; -} - -void DOperator::registerLastError(const DOperator::LastErrorFunc &func) -{ - d->lastErrorFunc = func; -} diff --git a/src/dfm-io/dfm-io/src/core/dwatcher.cpp b/src/dfm-io/dfm-io/src/core/dwatcher.cpp deleted file mode 100644 index e8ee99e..0000000 --- a/src/dfm-io/dfm-io/src/core/dwatcher.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "core/dwatcher.h" - -#include "core/dwatcher_p.h" - -USING_IO_NAMESPACE - -DWatcherPrivate::DWatcherPrivate(DWatcher *q) - : q(q) -{ -} - -DWatcherPrivate::~DWatcherPrivate() -{ -} - -DWatcher::DWatcher(const QUrl &uri, QObject *parent) - : QObject(parent), d(new DWatcherPrivate(this)) -{ - d->uri = uri; -} - -DWatcher::~DWatcher() -{ -} - -QUrl DWatcher::uri() const -{ - return d->uri; -} - -void DWatcher::setTimeRate(int msec) -{ - d->timeRate = msec; -} - -int DWatcher::timeRate() const -{ - return d->timeRate; -} - -void DWatcher::setWatchType(DWatcher::WatchType type) -{ - if (!d->setWatchTypeFunc) - return; - - return d->setWatchTypeFunc(type); -} - -DWatcher::WatchType DWatcher::watchType() const -{ - if (!d->watchTypeFunc) - return DWatcher::WatchType::kAuto; - - return d->watchTypeFunc(); -} - -bool DWatcher::running() const -{ - if (!d->runningFunc) - return false; - - return d->runningFunc(); -} - -bool DWatcher::start(int timeRate) -{ - if (!d->startFunc) - return false; - - setTimeRate(timeRate); - return d->startFunc(timeRate); -} - -bool DWatcher::stop() -{ - if (!d->stopFunc) - return false; - - return d->stopFunc(); -} - -void DWatcher::registerRunning(const DWatcher::RunningFunc &func) -{ - d->runningFunc = func; -} - -void DWatcher::registerStart(const DWatcher::StartFunc &func) -{ - d->startFunc = func; -} - -void DWatcher::registerStop(const DWatcher::StopFunc &func) -{ - d->stopFunc = func; -} - -void DWatcher::registerSetWatchType(const DWatcher::SetWatchTypeFunc &func) -{ - d->setWatchTypeFunc = func; -} - -void DWatcher::registerWatchType(const DWatcher::WatchTypeFunc &func) -{ - d->watchTypeFunc = func; -} - -void DWatcher::registerLastError(const DWatcher::LastErrorFunc &func) -{ - d->lastErrorFunc = func; -} - -DFMIOError DWatcher::lastError() const -{ - if (!d->lastErrorFunc) - return DFMIOError(); - - return d->lastErrorFunc(); -} diff --git a/src/dfm-io/dfm-io/src/dfmio_register.cpp b/src/dfm-io/dfm-io/src/dfmio_register.cpp deleted file mode 100644 index ec8afa7..0000000 --- a/src/dfm-io/dfm-io/src/dfmio_register.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "dfmio_register.h" - -#include - -#include "factory/dlocaliofactory.h" -#include "factory/dtrashiofactory.h" -#include "factory/dftpiofactory.h" -#include "factory/dmtpiofactory.h" -#include "factory/dafciofactory.h" -#include "factory/dafpiofactory.h" -#include "factory/ddaviofactory.h" -#include "factory/dddaviofactory.h" -#include "factory/dnfsiofactory.h" -#include "factory/dsmbiofactory.h" -#include "factory/dburniofactory.h" -#include "factory/dsftpiofactory.h" -#include "factory/dafpbrowseiofactory.h" -#include "factory/darchiveiofactory.h" -#include "factory/dcddaiofactory.h" -#include "factory/dcomputeriofactory.h" -#include "factory/ddnssdiofactory.h" -#include "factory/dgphoto2iofactory.h" -#include "factory/dhttpiofactory.h" -#include "factory/dnetworkiofactory.h" -#include "factory/drecentiofactory.h" -#include "factory/dsmbbrowseiofactory.h" -#include "factory/dgoogleiofactory.h" - -USING_IO_NAMESPACE - -bool dfmio::dfmio_init() -{ - static std::once_flag flag; - - std::call_once(flag, [](){ - REGISTER_FACTORY1(DLocalIOFactory, "file", QUrl); - REGISTER_FACTORY1(DTrashIOFactory, "trash", QUrl); - REGISTER_FACTORY1(DFtpIOFactory, "ftp", QUrl); - REGISTER_FACTORY1(DMtpIOFactory, "mtp", QUrl); - REGISTER_FACTORY1(DAfcIOFactory, "afc", QUrl); - - REGISTER_FACTORY1(DAfpIOFactory, "afp", QUrl); - REGISTER_FACTORY1(DDavIOFactory, "dav", QUrl); - REGISTER_FACTORY1(DDdavIOFactory, "ddav", QUrl); - REGISTER_FACTORY1(DNfsIOFactory, "nfs", QUrl); - REGISTER_FACTORY1(DSmbIOFactory, "smb", QUrl); - - REGISTER_FACTORY1(DBurnIOFactory, "burn", QUrl); - REGISTER_FACTORY1(DSftpIOFactory, "sftp", QUrl); - REGISTER_FACTORY1(DAfpbrowseIOFactory, "afpbrowse", QUrl); - REGISTER_FACTORY1(DArchiveIOFactory, "archive", QUrl); - REGISTER_FACTORY1(DCddaIOFactory, "cdda", QUrl); - - REGISTER_FACTORY1(DComputerIOFactory, "computer", QUrl); - REGISTER_FACTORY1(DDnssdIOFactory, "dnssd", QUrl); - REGISTER_FACTORY1(DGphoto2IOFactory, "gphoto2", QUrl); - REGISTER_FACTORY1(DHttpIOFactory, "http", QUrl); - REGISTER_FACTORY1(DNetworkIOFactory, "network", QUrl); - - REGISTER_FACTORY1(DRecentIOFactory, "recent", QUrl); - REGISTER_FACTORY1(DSmbbrowseIOFactory, "smbbrowse", QUrl); - REGISTER_FACTORY1(DGoogleIOFactory, "google", QUrl); - }); - - return true; -} - -QSet dfmio::schemesInited() -{ - QSet set; - set.insert("file"); - set.insert("trash"); - set.insert("ftp"); - set.insert("mtp"); - set.insert("afc"); - - set.insert("afp"); - set.insert("dav"); - set.insert("ddav"); - set.insert("nfs"); - set.insert("smb"); - - set.insert("burn"); - set.insert("sftp"); - set.insert("afpbrowse"); - set.insert("archive"); - set.insert("cdda"); - - set.insert("computer"); - set.insert("dnssd"); - set.insert("gphoto2"); - set.insert("http"); - set.insert("network"); - - set.insert("recent"); - set.insert("smbbrowse"); - set.insert("google"); - - return set; -} diff --git a/src/dfm-io/dfm-io/src/factory/dafciofactory.cpp b/src/dfm-io/dfm-io/src/factory/dafciofactory.cpp deleted file mode 100644 index e2b6fb6..0000000 --- a/src/dfm-io/dfm-io/src/factory/dafciofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dafciofactory.h" -#include "factory/dafciofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DAfcIOFactoryPrivate::DAfcIOFactoryPrivate(DAfcIOFactory *q) - : q(q) -{ -} - -DAfcIOFactoryPrivate::~DAfcIOFactoryPrivate() -{ -} - -QSharedPointer DAfcIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DAfcIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DAfcIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DAfcIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DAfcIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DAfcIOFactory::DAfcIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DAfcIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DAfcIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DAfcIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DAfcIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DAfcIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DAfcIOFactory::createEnumerator, this)); -} - -DAfcIOFactory::~DAfcIOFactory() -{ -} - -QSharedPointer DAfcIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DAfcIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DAfcIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DAfcIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DAfcIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dafpbrowseiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dafpbrowseiofactory.cpp deleted file mode 100644 index ebe76f7..0000000 --- a/src/dfm-io/dfm-io/src/factory/dafpbrowseiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dafpbrowseiofactory.h" -#include "factory/dafpbrowseiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DAfpbrowseIOFactoryPrivate::DAfpbrowseIOFactoryPrivate(DAfpbrowseIOFactory *q) - : q(q) -{ -} - -DAfpbrowseIOFactoryPrivate::~DAfpbrowseIOFactoryPrivate() -{ -} - -QSharedPointer DAfpbrowseIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DAfpbrowseIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DAfpbrowseIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DAfpbrowseIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DAfpbrowseIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DAfpbrowseIOFactory::DAfpbrowseIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DAfpbrowseIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DAfpbrowseIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DAfpbrowseIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DAfpbrowseIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DAfpbrowseIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DAfpbrowseIOFactory::createEnumerator, this)); -} - -DAfpbrowseIOFactory::~DAfpbrowseIOFactory() -{ -} - -QSharedPointer DAfpbrowseIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DAfpbrowseIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DAfpbrowseIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DAfpbrowseIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DAfpbrowseIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dafpiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dafpiofactory.cpp deleted file mode 100644 index a529455..0000000 --- a/src/dfm-io/dfm-io/src/factory/dafpiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dafpiofactory.h" -#include "factory/dafpiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DAfpIOFactoryPrivate::DAfpIOFactoryPrivate(DAfpIOFactory *q) - : q(q) -{ -} - -DAfpIOFactoryPrivate::~DAfpIOFactoryPrivate() -{ -} - -QSharedPointer DAfpIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DAfpIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DAfpIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DAfpIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DAfpIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DAfpIOFactory::DAfpIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DAfpIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DAfpIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DAfpIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DAfpIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DAfpIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DAfpIOFactory::createEnumerator, this)); -} - -DAfpIOFactory::~DAfpIOFactory() -{ -} - -QSharedPointer DAfpIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DAfpIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DAfpIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DAfpIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DAfpIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/darchiveiofactory.cpp b/src/dfm-io/dfm-io/src/factory/darchiveiofactory.cpp deleted file mode 100644 index ca5d8ea..0000000 --- a/src/dfm-io/dfm-io/src/factory/darchiveiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/darchiveiofactory.h" -#include "factory/darchiveiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DArchiveIOFactoryPrivate::DArchiveIOFactoryPrivate(DArchiveIOFactory *q) - : q(q) -{ -} - -DArchiveIOFactoryPrivate::~DArchiveIOFactoryPrivate() -{ -} - -QSharedPointer DArchiveIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DArchiveIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DArchiveIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DArchiveIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DArchiveIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DArchiveIOFactory::DArchiveIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DArchiveIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DArchiveIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DArchiveIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DArchiveIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DArchiveIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DArchiveIOFactory::createEnumerator, this)); -} - -DArchiveIOFactory::~DArchiveIOFactory() -{ -} - -QSharedPointer DArchiveIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DArchiveIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DArchiveIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DArchiveIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DArchiveIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dburniofactory.cpp b/src/dfm-io/dfm-io/src/factory/dburniofactory.cpp deleted file mode 100644 index 82baa57..0000000 --- a/src/dfm-io/dfm-io/src/factory/dburniofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dburniofactory.h" -#include "factory/dburniofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DBurnIOFactoryPrivate::DBurnIOFactoryPrivate(DBurnIOFactory *q) - : q(q) -{ -} - -DBurnIOFactoryPrivate::~DBurnIOFactoryPrivate() -{ -} - -QSharedPointer DBurnIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DBurnIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DBurnIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DBurnIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DBurnIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DBurnIOFactory::DBurnIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DBurnIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DBurnIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DBurnIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DBurnIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DBurnIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DBurnIOFactory::createEnumerator, this)); -} - -DBurnIOFactory::~DBurnIOFactory() -{ -} - -QSharedPointer DBurnIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DBurnIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DBurnIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DBurnIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DBurnIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dcddaiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dcddaiofactory.cpp deleted file mode 100644 index 6fc21a7..0000000 --- a/src/dfm-io/dfm-io/src/factory/dcddaiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dcddaiofactory.h" -#include "factory/dcddaiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DCddaIOFactoryPrivate::DCddaIOFactoryPrivate(DCddaIOFactory *q) - : q(q) -{ -} - -DCddaIOFactoryPrivate::~DCddaIOFactoryPrivate() -{ -} - -QSharedPointer DCddaIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DCddaIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DCddaIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DCddaIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DCddaIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DCddaIOFactory::DCddaIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DCddaIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DCddaIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DCddaIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DCddaIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DCddaIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DCddaIOFactory::createEnumerator, this)); -} - -DCddaIOFactory::~DCddaIOFactory() -{ -} - -QSharedPointer DCddaIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DCddaIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DCddaIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DCddaIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DCddaIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dcomputeriofactory.cpp b/src/dfm-io/dfm-io/src/factory/dcomputeriofactory.cpp deleted file mode 100644 index 75f7fed..0000000 --- a/src/dfm-io/dfm-io/src/factory/dcomputeriofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dcomputeriofactory.h" -#include "factory/dcomputeriofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DComputerIOFactoryPrivate::DComputerIOFactoryPrivate(DComputerIOFactory *q) - : q(q) -{ -} - -DComputerIOFactoryPrivate::~DComputerIOFactoryPrivate() -{ -} - -QSharedPointer DComputerIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DComputerIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DComputerIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DComputerIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DComputerIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DComputerIOFactory::DComputerIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DComputerIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DComputerIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DComputerIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DComputerIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DComputerIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DComputerIOFactory::createEnumerator, this)); -} - -DComputerIOFactory::~DComputerIOFactory() -{ -} - -QSharedPointer DComputerIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DComputerIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DComputerIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DComputerIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DComputerIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/ddaviofactory.cpp b/src/dfm-io/dfm-io/src/factory/ddaviofactory.cpp deleted file mode 100644 index 37c92fa..0000000 --- a/src/dfm-io/dfm-io/src/factory/ddaviofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/ddaviofactory.h" -#include "factory/ddaviofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DDavIOFactoryPrivate::DDavIOFactoryPrivate(DDavIOFactory *q) - : q(q) -{ -} - -DDavIOFactoryPrivate::~DDavIOFactoryPrivate() -{ -} - -QSharedPointer DDavIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DDavIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DDavIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DDavIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DDavIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DDavIOFactory::DDavIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DDavIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DDavIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DDavIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DDavIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DDavIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DDavIOFactory::createEnumerator, this)); -} - -DDavIOFactory::~DDavIOFactory() -{ -} - -QSharedPointer DDavIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DDavIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DDavIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DDavIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DDavIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dddaviofactory.cpp b/src/dfm-io/dfm-io/src/factory/dddaviofactory.cpp deleted file mode 100644 index 8d06f5a..0000000 --- a/src/dfm-io/dfm-io/src/factory/dddaviofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dddaviofactory.h" -#include "factory/dddaviofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DDdavIOFactoryPrivate::DDdavIOFactoryPrivate(DDdavIOFactory *q) - : q(q) -{ -} - -DDdavIOFactoryPrivate::~DDdavIOFactoryPrivate() -{ -} - -QSharedPointer DDdavIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DDdavIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DDdavIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DDdavIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DDdavIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DDdavIOFactory::DDdavIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DDdavIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DDdavIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DDdavIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DDdavIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DDdavIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DDdavIOFactory::createEnumerator, this)); -} - -DDdavIOFactory::~DDdavIOFactory() -{ -} - -QSharedPointer DDdavIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DDdavIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DDdavIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DDdavIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DDdavIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/ddnssdiofactory.cpp b/src/dfm-io/dfm-io/src/factory/ddnssdiofactory.cpp deleted file mode 100644 index 6810230..0000000 --- a/src/dfm-io/dfm-io/src/factory/ddnssdiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/ddnssdiofactory.h" -#include "factory/ddnssdiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DDnssdIOFactoryPrivate::DDnssdIOFactoryPrivate(DDnssdIOFactory *q) - : q(q) -{ -} - -DDnssdIOFactoryPrivate::~DDnssdIOFactoryPrivate() -{ -} - -QSharedPointer DDnssdIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DDnssdIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DDnssdIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DDnssdIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DDnssdIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DDnssdIOFactory::DDnssdIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DDnssdIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DDnssdIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DDnssdIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DDnssdIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DDnssdIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DDnssdIOFactory::createEnumerator, this)); -} - -DDnssdIOFactory::~DDnssdIOFactory() -{ -} - -QSharedPointer DDnssdIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DDnssdIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DDnssdIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DDnssdIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DDnssdIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dftpiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dftpiofactory.cpp deleted file mode 100644 index df76c64..0000000 --- a/src/dfm-io/dfm-io/src/factory/dftpiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dftpiofactory.h" -#include "factory/dftpiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DFtpIOFactoryPrivate::DFtpIOFactoryPrivate(DFtpIOFactory *q) - : q(q) -{ -} - -DFtpIOFactoryPrivate::~DFtpIOFactoryPrivate() -{ -} - -QSharedPointer DFtpIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DFtpIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DFtpIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DFtpIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DFtpIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DFtpIOFactory::DFtpIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DFtpIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DFtpIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DFtpIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DFtpIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DFtpIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DFtpIOFactory::createEnumerator, this)); -} - -DFtpIOFactory::~DFtpIOFactory() -{ -} - -QSharedPointer DFtpIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DFtpIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DFtpIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DFtpIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DFtpIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dgoogleiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dgoogleiofactory.cpp deleted file mode 100644 index 5412c1e..0000000 --- a/src/dfm-io/dfm-io/src/factory/dgoogleiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dgoogleiofactory.h" -#include "factory/dgoogleiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DGoogleIOFactoryPrivate::DGoogleIOFactoryPrivate(DGoogleIOFactory *q) - : q(q) -{ -} - -DGoogleIOFactoryPrivate::~DGoogleIOFactoryPrivate() -{ -} - -QSharedPointer DGoogleIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DGoogleIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DGoogleIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DGoogleIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DGoogleIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DGoogleIOFactory::DGoogleIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DGoogleIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DGoogleIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DGoogleIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DGoogleIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DGoogleIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DGoogleIOFactory::createEnumerator, this)); -} - -DGoogleIOFactory::~DGoogleIOFactory() -{ -} - -QSharedPointer DGoogleIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DGoogleIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DGoogleIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DGoogleIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DGoogleIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dgphoto2iofactory.cpp b/src/dfm-io/dfm-io/src/factory/dgphoto2iofactory.cpp deleted file mode 100644 index eef51ed..0000000 --- a/src/dfm-io/dfm-io/src/factory/dgphoto2iofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dgphoto2iofactory.h" -#include "factory/dgphoto2iofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DGphoto2IOFactoryPrivate::DGphoto2IOFactoryPrivate(DGphoto2IOFactory *q) - : q(q) -{ -} - -DGphoto2IOFactoryPrivate::~DGphoto2IOFactoryPrivate() -{ -} - -QSharedPointer DGphoto2IOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DGphoto2IOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DGphoto2IOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DGphoto2IOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DGphoto2IOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DGphoto2IOFactory::DGphoto2IOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DGphoto2IOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DGphoto2IOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DGphoto2IOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DGphoto2IOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DGphoto2IOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DGphoto2IOFactory::createEnumerator, this)); -} - -DGphoto2IOFactory::~DGphoto2IOFactory() -{ -} - -QSharedPointer DGphoto2IOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DGphoto2IOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DGphoto2IOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DGphoto2IOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DGphoto2IOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dhttpiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dhttpiofactory.cpp deleted file mode 100644 index 5bf7e91..0000000 --- a/src/dfm-io/dfm-io/src/factory/dhttpiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dhttpiofactory.h" -#include "factory/dhttpiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DHttpIOFactoryPrivate::DHttpIOFactoryPrivate(DHttpIOFactory *q) - : q(q) -{ -} - -DHttpIOFactoryPrivate::~DHttpIOFactoryPrivate() -{ -} - -QSharedPointer DHttpIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DHttpIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DHttpIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DHttpIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DHttpIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DHttpIOFactory::DHttpIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DHttpIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DHttpIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DHttpIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DHttpIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DHttpIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DHttpIOFactory::createEnumerator, this)); -} - -DHttpIOFactory::~DHttpIOFactory() -{ -} - -QSharedPointer DHttpIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DHttpIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DHttpIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DHttpIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DHttpIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dlocaliofactory.cpp b/src/dfm-io/dfm-io/src/factory/dlocaliofactory.cpp deleted file mode 100644 index ce10071..0000000 --- a/src/dfm-io/dfm-io/src/factory/dlocaliofactory.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dlocaliofactory.h" -#include "factory/dlocaliofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DLocalIOFactoryPrivate::DLocalIOFactoryPrivate(DLocalIOFactory *q) - : q(q) -{ -} - -DLocalIOFactoryPrivate::~DLocalIOFactoryPrivate() -{ -} - -QSharedPointer DLocalIOFactoryPrivate::createFileInfo(const char *attributes /*= "*"*/, - const DFMIO::DFileInfo::FileQueryInfoFlags flag /*= DFMIO::DFileInfo::FileQueryInfoFlags::TypeNone*/) const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri, attributes, flag); -} - -QSharedPointer DLocalIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DLocalIOFactoryPrivate::createEnumerator(const QStringList &nameFilters, DEnumerator::DirFilters filters, DEnumerator::IteratorFlags flags) const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri, nameFilters, filters, flags)); -} - -QSharedPointer DLocalIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DLocalIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DLocalIOFactory::DLocalIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DLocalIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DLocalIOFactory::createFileInfo, this, std::placeholders::_1, std::placeholders::_2)); - registerCreateFile(std::bind(&DLocalIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DLocalIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DLocalIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DLocalIOFactory::createEnumerator, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); -} - -DLocalIOFactory::~DLocalIOFactory() -{ -} - -QSharedPointer DLocalIOFactory::createFileInfo(const char *attributes /*= "*"*/, - const DFMIO::DFileInfo::FileQueryInfoFlags flag /*= DFMIO::DFileInfo::FileQueryInfoFlags::TypeNone*/) const -{ - return d->createFileInfo(attributes, flag); -} - -QSharedPointer DLocalIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DLocalIOFactory::createEnumerator(const QStringList &nameFilters, DEnumerator::DirFilters filters, DEnumerator::IteratorFlags flags) const -{ - return d->createEnumerator(nameFilters, filters, flags); -} - -QSharedPointer DLocalIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DLocalIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dmtpiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dmtpiofactory.cpp deleted file mode 100644 index b413661..0000000 --- a/src/dfm-io/dfm-io/src/factory/dmtpiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dmtpiofactory.h" -#include "factory/dmtpiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DMtpIOFactoryPrivate::DMtpIOFactoryPrivate(DMtpIOFactory *q) - : q(q) -{ -} - -DMtpIOFactoryPrivate::~DMtpIOFactoryPrivate() -{ -} - -QSharedPointer DMtpIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DMtpIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DMtpIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DMtpIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DMtpIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DMtpIOFactory::DMtpIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DMtpIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DMtpIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DMtpIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DMtpIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DMtpIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DMtpIOFactory::createEnumerator, this)); -} - -DMtpIOFactory::~DMtpIOFactory() -{ -} - -QSharedPointer DMtpIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DMtpIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DMtpIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DMtpIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DMtpIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dnetworkiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dnetworkiofactory.cpp deleted file mode 100644 index d083c59..0000000 --- a/src/dfm-io/dfm-io/src/factory/dnetworkiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dnetworkiofactory.h" -#include "factory/dnetworkiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DNetworkIOFactoryPrivate::DNetworkIOFactoryPrivate(DNetworkIOFactory *q) - : q(q) -{ -} - -DNetworkIOFactoryPrivate::~DNetworkIOFactoryPrivate() -{ -} - -QSharedPointer DNetworkIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DNetworkIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DNetworkIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DNetworkIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DNetworkIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DNetworkIOFactory::DNetworkIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DNetworkIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DNetworkIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DNetworkIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DNetworkIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DNetworkIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DNetworkIOFactory::createEnumerator, this)); -} - -DNetworkIOFactory::~DNetworkIOFactory() -{ -} - -QSharedPointer DNetworkIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DNetworkIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DNetworkIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DNetworkIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DNetworkIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dnfsiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dnfsiofactory.cpp deleted file mode 100644 index 25b6ba0..0000000 --- a/src/dfm-io/dfm-io/src/factory/dnfsiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dnfsiofactory.h" -#include "factory/dnfsiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DNfsIOFactoryPrivate::DNfsIOFactoryPrivate(DNfsIOFactory *q) - : q(q) -{ -} - -DNfsIOFactoryPrivate::~DNfsIOFactoryPrivate() -{ -} - -QSharedPointer DNfsIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DNfsIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DNfsIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DNfsIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DNfsIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DNfsIOFactory::DNfsIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DNfsIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DNfsIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DNfsIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DNfsIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DNfsIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DNfsIOFactory::createEnumerator, this)); -} - -DNfsIOFactory::~DNfsIOFactory() -{ -} - -QSharedPointer DNfsIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DNfsIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DNfsIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DNfsIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DNfsIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/drecentiofactory.cpp b/src/dfm-io/dfm-io/src/factory/drecentiofactory.cpp deleted file mode 100644 index e8fed21..0000000 --- a/src/dfm-io/dfm-io/src/factory/drecentiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/drecentiofactory.h" -#include "factory/drecentiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DRecentIOFactoryPrivate::DRecentIOFactoryPrivate(DRecentIOFactory *q) - : q(q) -{ -} - -DRecentIOFactoryPrivate::~DRecentIOFactoryPrivate() -{ -} - -QSharedPointer DRecentIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DRecentIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DRecentIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DRecentIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DRecentIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DRecentIOFactory::DRecentIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DRecentIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DRecentIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DRecentIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DRecentIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DRecentIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DRecentIOFactory::createEnumerator, this)); -} - -DRecentIOFactory::~DRecentIOFactory() -{ -} - -QSharedPointer DRecentIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DRecentIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DRecentIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DRecentIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DRecentIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dsftpiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dsftpiofactory.cpp deleted file mode 100644 index ddc0d60..0000000 --- a/src/dfm-io/dfm-io/src/factory/dsftpiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dsftpiofactory.h" -#include "factory/dsftpiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DSftpIOFactoryPrivate::DSftpIOFactoryPrivate(DSftpIOFactory *q) - : q(q) -{ -} - -DSftpIOFactoryPrivate::~DSftpIOFactoryPrivate() -{ -} - -QSharedPointer DSftpIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DSftpIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DSftpIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DSftpIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DSftpIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DSftpIOFactory::DSftpIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DSftpIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DSftpIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DSftpIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DSftpIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DSftpIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DSftpIOFactory::createEnumerator, this)); -} - -DSftpIOFactory::~DSftpIOFactory() -{ -} - -QSharedPointer DSftpIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DSftpIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DSftpIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DSftpIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DSftpIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dsmbbrowseiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dsmbbrowseiofactory.cpp deleted file mode 100644 index 1610726..0000000 --- a/src/dfm-io/dfm-io/src/factory/dsmbbrowseiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dsmbbrowseiofactory.h" -#include "factory/dsmbbrowseiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DSmbbrowseIOFactoryPrivate::DSmbbrowseIOFactoryPrivate(DSmbbrowseIOFactory *q) - : q(q) -{ -} - -DSmbbrowseIOFactoryPrivate::~DSmbbrowseIOFactoryPrivate() -{ -} - -QSharedPointer DSmbbrowseIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DSmbbrowseIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DSmbbrowseIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DSmbbrowseIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DSmbbrowseIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DSmbbrowseIOFactory::DSmbbrowseIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DSmbbrowseIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DSmbbrowseIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DSmbbrowseIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DSmbbrowseIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DSmbbrowseIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DSmbbrowseIOFactory::createEnumerator, this)); -} - -DSmbbrowseIOFactory::~DSmbbrowseIOFactory() -{ -} - -QSharedPointer DSmbbrowseIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DSmbbrowseIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DSmbbrowseIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DSmbbrowseIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DSmbbrowseIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dsmbiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dsmbiofactory.cpp deleted file mode 100644 index 7fb1276..0000000 --- a/src/dfm-io/dfm-io/src/factory/dsmbiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dsmbiofactory.h" -#include "factory/dsmbiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DSmbIOFactoryPrivate::DSmbIOFactoryPrivate(DSmbIOFactory *q) - : q(q) -{ -} - -DSmbIOFactoryPrivate::~DSmbIOFactoryPrivate() -{ -} - -QSharedPointer DSmbIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DSmbIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DSmbIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DSmbIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DSmbIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DSmbIOFactory::DSmbIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DSmbIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DSmbIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DSmbIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DSmbIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DSmbIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DSmbIOFactory::createEnumerator, this)); -} - -DSmbIOFactory::~DSmbIOFactory() -{ -} - -QSharedPointer DSmbIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DSmbIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DSmbIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DSmbIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DSmbIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/factory/dtrashiofactory.cpp b/src/dfm-io/dfm-io/src/factory/dtrashiofactory.cpp deleted file mode 100644 index ab28b99..0000000 --- a/src/dfm-io/dfm-io/src/factory/dtrashiofactory.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "factory/dtrashiofactory.h" -#include "factory/dtrashiofactory_p.h" -#include "local/dlocalhelper.h" - -#include "local/dlocalenumerator.h" -#include "local/dlocalwatcher.h" -#include "local/dlocaloperator.h" -#include "local/dlocalfile.h" - -#include - -USING_IO_NAMESPACE - -DTrashIOFactoryPrivate::DTrashIOFactoryPrivate(DTrashIOFactory *q) - : q(q) -{ -} - -DTrashIOFactoryPrivate::~DTrashIOFactoryPrivate() -{ -} - -QSharedPointer DTrashIOFactoryPrivate::createFileInfo() const -{ - const QUrl &uri = q->uri(); - return DLocalHelper::createFileInfoByUri(uri); -} - -QSharedPointer DTrashIOFactoryPrivate::createFile() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalFile(uri)); -} - -QSharedPointer DTrashIOFactoryPrivate::createEnumerator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalEnumerator(uri)); -} - -QSharedPointer DTrashIOFactoryPrivate::createWatcher() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalWatcher(uri)); -} - -QSharedPointer DTrashIOFactoryPrivate::createOperator() const -{ - const QUrl &uri = q->uri(); - - return QSharedPointer(new DLocalOperator(uri)); -} - -DTrashIOFactory::DTrashIOFactory(const QUrl &uri) - : DIOFactory(uri), d(new DTrashIOFactoryPrivate(this)) -{ - registerCreateFileInfo(std::bind(&DTrashIOFactory::createFileInfo, this)); - registerCreateFile(std::bind(&DTrashIOFactory::createFile, this)); - registerCreateWatcher(std::bind(&DTrashIOFactory::createWatcher, this)); - registerCreateOperator(std::bind(&DTrashIOFactory::createOperator, this)); - registerCreateEnumerator(std::bind(&DTrashIOFactory::createEnumerator, this)); -} - -DTrashIOFactory::~DTrashIOFactory() -{ -} - -QSharedPointer DTrashIOFactory::createFileInfo() const -{ - return d->createFileInfo(); -} - -QSharedPointer DTrashIOFactory::createFile() const -{ - return d->createFile(); -} - -QSharedPointer DTrashIOFactory::createEnumerator() const -{ - return d->createEnumerator(); -} - -QSharedPointer DTrashIOFactory::createWatcher() const -{ - return d->createWatcher(); -} - -QSharedPointer DTrashIOFactory::createOperator() const -{ - return d->createOperator(); -} diff --git a/src/dfm-io/dfm-io/src/local/dlocaloperator.cpp b/src/dfm-io/dfm-io/src/local/dlocaloperator.cpp deleted file mode 100644 index b58a428..0000000 --- a/src/dfm-io/dfm-io/src/local/dlocaloperator.cpp +++ /dev/null @@ -1,649 +0,0 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "dfmio_global.h" -#include "local/dlocaloperator.h" -#include "local/dlocaloperator_p.h" -#include "local/dlocalhelper.h" -#include "utils/trashfilehelper.h" - -#include "core/doperator_p.h" - -#include -#include - -#include -#include - -USING_IO_NAMESPACE - -DLocalOperatorPrivate::DLocalOperatorPrivate(DLocalOperator *q) - : q(q) -{ -} - -DLocalOperatorPrivate::~DLocalOperatorPrivate() -{ -} - -bool DLocalOperatorPrivate::renameFile(const QString &new_name) -{ - const QUrl &url = q->uri(); - - GError *gerror = nullptr; - - // name must deep copy, otherwise name freed and crash - gchar *name = g_strdup(new_name.toLocal8Bit().data()); - - GFile *gfile = makeGFile(url); - - GFile *gfile_ret = g_file_set_display_name(gfile, name, nullptr, &gerror); - - g_object_unref(gfile); - g_free(name); - - if (!gfile_ret) { - setErrorFromGError(gerror); - g_error_free(gerror); - return false; - } - - if (gerror) - g_error_free(gerror); - g_object_unref(gfile_ret); - - return true; -} - -bool DLocalOperatorPrivate::renameFile(const QUrl &toUrl) -{ - const QUrl &fromUrl = q->uri(); - - const std::string &fromStr = fromUrl.toLocalFile().toStdString(); - const std::string &toStr = toUrl.toLocalFile().toStdString(); - - if (fromStr.empty() || toStr.empty()) { - error.setCode(DFM_IO_ERROR_INVALID_FILENAME); - return false; - } - - const bool ret = g_rename(fromStr.c_str(), toStr.c_str()) == 0; - - // set error info - if (!ret) - error.setCode(DFM_IO_ERROR_PERMISSION_DENIED); - - return ret; -} - -bool DLocalOperatorPrivate::copyFile(const QUrl &urlTo, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData) -{ - GError *gerror = nullptr; - - const QUrl &urlFrom = q->uri(); - - GFile *gfile_from = makeGFile(urlFrom); - GFile *gfile_to = makeGFile(urlTo); - - GFile *gfileTarget = nullptr; - if (DLocalHelper::checkGFileType(gfile_to, G_FILE_TYPE_DIRECTORY)) { - char *basename = g_file_get_basename(gfile_from); - gfileTarget = g_file_get_child(gfile_to, basename); - g_free(basename); - } else { - gfileTarget = makeGFile(urlTo); - } - g_object_unref(gfile_to); - - bool ret = g_file_copy(gfile_from, gfileTarget, GFileCopyFlags(flag), nullptr, func, progressCallbackData, &gerror); - - if (gerror) { - setErrorFromGError(gerror); - g_error_free(gerror); - } - - g_object_unref(gfile_from); - g_object_unref(gfileTarget); - - return ret; -} - -bool DLocalOperatorPrivate::moveFile(const QUrl &to, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData) -{ - g_autoptr(GError) gerror = nullptr; - - const QUrl &from = q->uri(); - g_autoptr(GFile) gfile_from = makeGFile(from); - - g_autoptr(GFile) gfile_to = makeGFile(to); - - bool ret = g_file_move(gfile_from, gfile_to, GFileCopyFlags(flag), nullptr, func, progressCallbackData, &gerror); - - if (gerror) - setErrorFromGError(gerror); - - return ret; -} - -void DLocalOperatorPrivate::renameCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) -{ - OperateFileOp *data = static_cast(userData); - GFile *gfile = G_FILE(sourceObject); - g_autoptr(GError) gerror = nullptr; - GFile *gfileRet = g_file_set_display_name_finish(gfile, res, &gerror); - g_object_unref(gfileRet); - if (data->callback) - data->callback(!gerror, userData); - - data->callback = nullptr; - data->userData = nullptr; - g_free(data); -} - -void DLocalOperatorPrivate::renameFileAsync(const QString &newName, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - const QUrl &url = q->uri(); - - // name must deep copy, otherwise name freed and crash - g_autofree gchar *gname = g_strdup(newName.toLocal8Bit().data()); - - g_autoptr(GFile) gfile = makeGFile(url); - - OperateFileOp *data = g_new0(OperateFileOp, 1); - data->callback = operatefunc; - data->userData = userData; - - g_file_set_display_name_async(gfile, gname, ioPriority, nullptr, renameCallback, data); -} - -void DLocalOperatorPrivate::copyCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) -{ - OperateFileOp *data = static_cast(userData); - GFile *gfile = G_FILE(sourceObject); - g_autoptr(GError) gerror = nullptr; - gboolean succ = g_file_copy_finish(gfile, res, &gerror); - if (data->callback) - data->callback(succ, userData); - - data->callback = nullptr; - data->userData = nullptr; - g_free(data); -} - -void DLocalOperatorPrivate::copyFileAsync(const QUrl &urlTo, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData, - int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - const QUrl &urlFrom = q->uri(); - - g_autoptr(GFile) gfile_from = makeGFile(urlFrom); - g_autoptr(GFile) gfile_to = makeGFile(urlTo); - - g_autoptr(GFile) gfileTarget = nullptr; - if (DLocalHelper::checkGFileType(gfile_to, G_FILE_TYPE_DIRECTORY)) { - g_autofree char *basename = g_file_get_basename(gfile_from); - gfileTarget = g_file_get_child(gfile_to, basename); - } else { - gfileTarget = makeGFile(urlTo); - } - - OperateFileOp *data = g_new0(OperateFileOp, 1); - data->callback = operatefunc; - data->userData = userData; - - g_file_copy_async(gfile_from, gfileTarget, GFileCopyFlags(flag), ioPriority, nullptr, func, progressCallbackData, copyCallback, data); -} - -void DLocalOperatorPrivate::moveFileAsync(const QUrl &to, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc progressFunc, void *progressData, - int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - // since 2.72, but current gio version is 2.58 - //g_file_move_async(gfile_from, gfile_to, GFileCopyFlags(flag), ioPriority, nullptr, progressFunc, progressData, nullptr, userData); - - Q_UNUSED(ioPriority) - Q_UNUSED(operatefunc) - Q_UNUSED(userData) - bool ret = moveFile(to, flag, progressFunc, progressData); - if (operatefunc) - operatefunc(ret, userData); -} - -QString DLocalOperatorPrivate::trashFile() -{ - g_autoptr(GError) gerror = nullptr; - - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - bool ret = g_file_trash(gfile, nullptr, &gerror); - QString targetTrashPath; - if (ret) { - auto targetTrashPath = TrashFileHelper::trashTargetPath(uri.path(), gfile); - if (targetTrashPath.isEmpty()) - error.setCode(DFMIOErrorCode::DFM_IO_ERROR_NONE_TARGET_TRASH); - return targetTrashPath; - } - - if (gerror) - setErrorFromGError(gerror); - - return targetTrashPath; -} - -bool DLocalOperatorPrivate::deleteFile() -{ - g_autoptr(GError) gerror = nullptr; - - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - bool ret = g_file_delete(gfile, nullptr, &gerror); - - if (gerror) - setErrorFromGError(gerror); - - return ret; -} - -bool DLocalOperatorPrivate::restoreFile(DOperator::ProgressCallbackFunc func, void *progressCallbackData) -{ - GError *gerror = nullptr; - - const QUrl &uri = q->uri(); - GFile *file = makeGFile(uri); - - GFileInfo *gfileinfo = g_file_query_info(file, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH, G_FILE_QUERY_INFO_NONE, nullptr, &gerror); - g_object_unref(file); - - if (!gfileinfo) { - if (gerror) { - setErrorFromGError(gerror); - g_error_free(gerror); - } - return false; - } - - const char *srcPath = g_file_info_get_attribute_byte_string(gfileinfo, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH); - - if (srcPath == nullptr) { - g_object_unref(gfileinfo); - return false; - } - - QUrl url_dest; - url_dest.setPath(QString::fromLocal8Bit(srcPath)); - url_dest.setScheme(QString("file")); - - bool ret = moveFile(url_dest, DFile::CopyFlag::kNone, func, progressCallbackData); - - g_object_unref(gfileinfo); - - return ret; -} - -void DLocalOperatorPrivate::trashCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) -{ - OperateFileOp *data = static_cast(userData); - GFile *gfile = G_FILE(sourceObject); - g_autoptr(GError) gerror = nullptr; - bool succ = g_file_trash_finish(gfile, res, &gerror); - if (data->callback) - data->callback(succ, userData); - - data->callback = nullptr; - data->userData = nullptr; - g_free(data); -} - -void DLocalOperatorPrivate::trashFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - OperateFileOp *data = g_new0(OperateFileOp, 1); - data->callback = operatefunc; - data->userData = userData; - - g_file_trash_async(gfile, ioPriority, nullptr, trashCallback, data); -} - -void DLocalOperatorPrivate::deleteCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) -{ - OperateFileOp *data = static_cast(userData); - GFile *gfile = G_FILE(sourceObject); - g_autoptr(GError) gerror = nullptr; - bool succ = g_file_delete_finish(gfile, res, &gerror); - if (data->callback) - data->callback(succ, userData); - - data->callback = nullptr; - data->userData = nullptr; - g_free(data); -} - -void DLocalOperatorPrivate::deleteFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - OperateFileOp *data = g_new0(OperateFileOp, 1); - data->callback = operatefunc; - data->userData = userData; - - g_file_delete_async(gfile, ioPriority, nullptr, deleteCallback, data); -} - -void DLocalOperatorPrivate::restoreFileAsync(DOperator::ProgressCallbackFunc progressFunc, void *progressData, - int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - // TODO(lanxs) - Q_UNUSED(ioPriority) - Q_UNUSED(operatefunc) - Q_UNUSED(userData) - restoreFile(progressFunc, progressData); -} - -bool DLocalOperatorPrivate::touchFile() -{ - g_autoptr(GError) gerror = nullptr; - - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - // if file exist, return failed - g_autoptr(GFileOutputStream) stream = g_file_create(gfile, GFileCreateFlags::G_FILE_CREATE_REPLACE_DESTINATION, nullptr, &gerror); - - if (gerror) - setErrorFromGError(gerror); - - return stream != nullptr; -} - -bool DLocalOperatorPrivate::makeDirectory() -{ - // only create direct path - g_autoptr(GError) gerror = nullptr; - - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - bool ret = g_file_make_directory(gfile, nullptr, &gerror); - - if (gerror) - setErrorFromGError(gerror); - - return ret; -} - -bool DLocalOperatorPrivate::createLink(const QUrl &link) -{ - g_autoptr(GError) gerror = nullptr; - - g_autoptr(GFile) gfile = makeGFile(link); - - const QUrl &uri = q->uri(); - const QString &linkValue = uri.toLocalFile(); - - bool ret = g_file_make_symbolic_link(gfile, linkValue.toLocal8Bit().data(), nullptr, &gerror); - - if (!ret) { - setErrorFromGError(gerror); - } - - return ret; -} - -void DLocalOperatorPrivate::touchCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) -{ - OperateFileOp *data = static_cast(userData); - GFile *gfile = G_FILE(sourceObject); - g_autoptr(GError) gerror = nullptr; - g_autoptr(GFileOutputStream) stream = g_file_create_finish(gfile, res, &gerror); - if (data->callback) - data->callback(!stream, userData); - - data->callback = nullptr; - data->userData = nullptr; - g_free(data); -} - -void DLocalOperatorPrivate::touchFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - OperateFileOp *data = g_new0(OperateFileOp, 1); - data->callback = operatefunc; - data->userData = userData; - - g_file_create_async(gfile, GFileCreateFlags::G_FILE_CREATE_REPLACE_DESTINATION, ioPriority, nullptr, touchCallback, data); -} - -void DLocalOperatorPrivate::makeDirCallback(GObject *sourceObject, GAsyncResult *res, gpointer userData) -{ - OperateFileOp *data = static_cast(userData); - GFile *gfile = G_FILE(sourceObject); - g_autoptr(GError) gerror = nullptr; - bool succ = g_file_make_directory_finish(gfile, res, &gerror); - if (data->callback) - data->callback(succ, userData); - - data->callback = nullptr; - data->userData = nullptr; - g_free(data); -} - -void DLocalOperatorPrivate::makeDirectoryAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - // only create direct path - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - OperateFileOp *data = g_new0(OperateFileOp, 1); - data->callback = operatefunc; - data->userData = userData; - - g_file_make_directory_async(gfile, ioPriority, nullptr, makeDirCallback, data); -} - -void DLocalOperatorPrivate::createLinkAsync(const QUrl &link, int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - // TODO(lanxs) - Q_UNUSED(ioPriority) - Q_UNUSED(operatefunc) - Q_UNUSED(userData) - createLink(link); -} - -bool DLocalOperatorPrivate::setFileInfo(const DFileInfo &fileInfo) -{ - const QUrl &uri = q->uri(); - g_autoptr(GFile) gfile = makeGFile(uri); - - bool ret = true; - for (const auto &[key, value] : DFileInfo::attributeInfoMap) { - g_autoptr(GError) gerror = nullptr; - bool succ = DLocalHelper::setAttributeByGFile(gfile, key, fileInfo.attribute(key, nullptr), &gerror); - if (!succ) - ret = false; - if (gerror) - setErrorFromGError(gerror); - } - - return ret; -} - -bool DLocalOperatorPrivate::cancel() -{ - return true; -} - -DFMIOError DLocalOperatorPrivate::lastError() -{ - return error; -} - -GFile *DLocalOperatorPrivate::makeGFile(const QUrl &url) -{ - return g_file_new_for_uri(url.toString().toLocal8Bit().data()); -} - -void DLocalOperatorPrivate::setErrorFromGError(GError *gerror) -{ - if (!gerror) - return; - error.setCode(DFMIOErrorCode(gerror->code)); - if (gerror->domain != G_IO_ERROR || gerror->message) { - error.setCode(DFMIOErrorCode::DFM_ERROR_OTHER_DOMAIN); - error.setMessage(gerror->message); - } -} - -DLocalOperator::DLocalOperator(const QUrl &uri) - : DOperator(uri), d(new DLocalOperatorPrivate(this)) -{ - registerRenameFile(bind_field(this, static_cast(&DLocalOperator::renameFile))); - registerRenameFileByStd(bind_field(this, static_cast(&DLocalOperator::renameFile))); - registerCopyFile(bind_field(this, &DLocalOperator::copyFile)); - registerMoveFile(bind_field(this, &DLocalOperator::moveFile)); - registerRenameFileAsync(bind_field(this, &DLocalOperator::renameFileAsync)); - registerCopyFileAsync(bind_field(this, &DLocalOperator::copyFileAsync)); - registerCopyFileAsync(bind_field(this, &DLocalOperator::copyFileAsync)); - registerMoveFileAsync(bind_field(this, &DLocalOperator::moveFileAsync)); - - registerTrashFile(bind_field(this, &DLocalOperator::trashFile)); - registerDeleteFile(bind_field(this, &DLocalOperator::deleteFile)); - registerRestoreFile(bind_field(this, &DLocalOperator::restoreFile)); - registerTrashFileAsync(bind_field(this, &DLocalOperator::trashFileAsync)); - registerDeleteFileAsync(bind_field(this, &DLocalOperator::deleteFileAsync)); - registerRestoreFileAsync(bind_field(this, &DLocalOperator::restoreFileAsync)); - - registerTouchFile(bind_field(this, &DLocalOperator::touchFile)); - registerMakeDirectory(bind_field(this, &DLocalOperator::makeDirectory)); - registerCreateLink(bind_field(this, &DLocalOperator::createLink)); - registerTouchFileAsync(bind_field(this, &DLocalOperator::touchFileAsync)); - registerMakeDirectoryAsync(bind_field(this, &DLocalOperator::makeDirectoryAsync)); - registerCreateLinkAsync(bind_field(this, &DLocalOperator::createLinkAsync)); - - registerSetFileInfo(bind_field(this, &DLocalOperator::setFileInfo)); - - registerCancel(bind_field(this, &DLocalOperator::cancel)); - registerLastError(bind_field(this, &DLocalOperator::lastError)); -} - -DLocalOperator::~DLocalOperator() -{ -} - -bool DLocalOperator::renameFile(const QString &newName) -{ - return d->renameFile(newName); -} - -bool DLocalOperator::renameFile(const QUrl &toUrl) -{ - return d->renameFile(toUrl); -} - -bool DLocalOperator::copyFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func, void *progressCallbackData) -{ - return d->copyFile(destUri, flag, func, progressCallbackData); -} - -bool DLocalOperator::moveFile(const QUrl &destUri, DFile::CopyFlag flag, ProgressCallbackFunc func, void *progressCallbackData) -{ - return d->moveFile(destUri, flag, func, progressCallbackData); -} - -void DLocalOperator::renameFileAsync(const QString &newName, int ioPriority, FileOperateCallbackFunc func, void *userData) -{ - d->renameFileAsync(newName, ioPriority, func, userData); -} - -void DLocalOperator::copyFileAsync(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData, - int ioPriority, FileOperateCallbackFunc operatefunc, void *userData) -{ - d->copyFileAsync(destUri, flag, func, progressCallbackData, ioPriority, operatefunc, userData); -} - -void DLocalOperator::moveFileAsync(const QUrl &destUri, DFile::CopyFlag flag, DOperator::ProgressCallbackFunc func, void *progressCallbackData, - int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - d->moveFileAsync(destUri, flag, func, progressCallbackData, ioPriority, operatefunc, userData); -} - -QString DLocalOperator::trashFile() -{ - return d->trashFile(); -} - -bool DLocalOperator::deleteFile() -{ - return d->deleteFile(); -} - -bool DLocalOperator::restoreFile(ProgressCallbackFunc func, void *progressCallbackData) -{ - return d->restoreFile(func, progressCallbackData); -} - -void DLocalOperator::trashFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - d->trashFileAsync(ioPriority, operatefunc, userData); -} - -void DLocalOperator::deleteFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - return d->deleteFileAsync(ioPriority, operatefunc, userData); -} - -void DLocalOperator::restoreFileAsync(DOperator::ProgressCallbackFunc func, void *progressCallbackData, - int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - d->restoreFileAsync(func, progressCallbackData, ioPriority, operatefunc, userData); -} - -bool DLocalOperator::touchFile() -{ - return d->touchFile(); -} - -bool DLocalOperator::makeDirectory() -{ - return d->makeDirectory(); -} - -bool DLocalOperator::createLink(const QUrl &link) -{ - return d->createLink(link); -} - -void DLocalOperator::touchFileAsync(int ioPriority, DOperator::FileOperateCallbackFunc operatefunc, void *userData) -{ - d->touchFileAsync(ioPriority, operatefunc, userData); -} - -void DLocalOperator::makeDirectoryAsync(int ioPriority, DOperator::FileOperateCallbackFunc operateFunc, void *userData) -{ - d->makeDirectoryAsync(ioPriority, operateFunc, userData); -} - -void DLocalOperator::createLinkAsync(const QUrl &link, int ioPriority, DOperator::FileOperateCallbackFunc operateFunc, void *userData) -{ - d->createLinkAsync(link, ioPriority, operateFunc, userData); -} - -bool DLocalOperator::setFileInfo(const DFileInfo &fileInfo) -{ - return d->setFileInfo(fileInfo); -} - -bool DLocalOperator::cancel() -{ - return d->cancel(); -} - -DFMIOError DLocalOperator::lastError() const -{ - return d->lastError(); -} diff --git a/src/dfm-io/dfm-io/src/local/dlocalhelper.cpp b/src/dfm-io/dfm-io/utils/dlocalhelper.cpp similarity index 64% rename from src/dfm-io/dfm-io/src/local/dlocalhelper.cpp rename to src/dfm-io/dfm-io/utils/dlocalhelper.cpp index 1b88add..51fc5e7 100644 --- a/src/dfm-io/dfm-io/src/local/dlocalhelper.cpp +++ b/src/dfm-io/dfm-io/utils/dlocalhelper.cpp @@ -2,15 +2,15 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "local/dlocalhelper.h" -#include "core/dfileinfo.h" -#include "local/dlocalfileinfo.h" +#include "dlocalhelper.h" -#include "gio/gfileinfo.h" +#include #include #include +#include + #include #include @@ -126,15 +126,131 @@ static QString parentPath(const QString &path) } } // LocalFunc +DLocalHelper::AttributeInfoMap &DLocalHelper::attributeInfoMapFunc() +{ + static AttributeInfoMap kAttributeInfoMap { + { DFileInfo::AttributeID::kStandardType, std::make_tuple("standard::type", 0) }, // G_FILE_ATTRIBUTE_STANDARD_TYPE + { DFileInfo::AttributeID::kStandardIsHidden, std::make_tuple("standard::is-hidden", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN + { DFileInfo::AttributeID::kStandardIsBackup, std::make_tuple("standard::is-backup", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP + { DFileInfo::AttributeID::kStandardIsSymlink, std::make_tuple("standard::is-symlink", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK + { DFileInfo::AttributeID::kStandardIsVirtual, std::make_tuple("standard::is-virtual", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL + { DFileInfo::AttributeID::kStandardIsVolatile, std::make_tuple("standard::is-volatile", false) }, // G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE + { DFileInfo::AttributeID::kStandardName, std::make_tuple("standard::name", "") }, // G_FILE_ATTRIBUTE_STANDARD_NAME + { DFileInfo::AttributeID::kStandardDisplayName, std::make_tuple("standard::display-name", "") }, // G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME + { DFileInfo::AttributeID::kStandardEditName, std::make_tuple("standard::edit-name", "") }, // G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME + { DFileInfo::AttributeID::kStandardCopyName, std::make_tuple("standard::copy-name", "") }, // G_FILE_ATTRIBUTE_STANDARD_COPY_NAME + { DFileInfo::AttributeID::kStandardIcon, std::make_tuple("standard::icon", 0) }, // G_FILE_ATTRIBUTE_STANDARD_ICON + { DFileInfo::AttributeID::kStandardSymbolicIcon, std::make_tuple("standard::symbolic-icon", 0) }, // G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON + { DFileInfo::AttributeID::kStandardContentType, std::make_tuple("standard::content-type", "") }, // G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE + { DFileInfo::AttributeID::kStandardFastContentType, std::make_tuple("standard::fast-content-type", "") }, // G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE + { DFileInfo::AttributeID::kStandardSize, std::make_tuple("standard::size", 0) }, // G_FILE_ATTRIBUTE_STANDARD_SIZE + { DFileInfo::AttributeID::kStandardAllocatedSize, std::make_tuple("standard::allocated-size", 0) }, // G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE + { DFileInfo::AttributeID::kStandardSymlinkTarget, std::make_tuple("standard::symlink-target", "") }, // G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET + { DFileInfo::AttributeID::kStandardTargetUri, std::make_tuple("standard::target-uri", "") }, // G_FILE_ATTRIBUTE_STANDARD_TARGET_URI + { DFileInfo::AttributeID::kStandardSortOrder, std::make_tuple("standard::sort-order", 0) }, // G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER + { DFileInfo::AttributeID::kStandardDescription, std::make_tuple("standard::description", "") }, // G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION + + { DFileInfo::AttributeID::kEtagValue, std::make_tuple("etag::value", "") }, // G_FILE_ATTRIBUTE_ETAG_VALUE + + { DFileInfo::AttributeID::kIdFile, std::make_tuple("id::file", "") }, // G_FILE_ATTRIBUTE_ID_FILE + { DFileInfo::AttributeID::kIdFilesystem, std::make_tuple("id::filesystem", "") }, // G_FILE_ATTRIBUTE_ID_FILESYSTEM + + { DFileInfo::AttributeID::kAccessCanRead, std::make_tuple("access::can-read", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_READ + { DFileInfo::AttributeID::kAccessCanWrite, std::make_tuple("access::can-write", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE + { DFileInfo::AttributeID::kAccessCanExecute, std::make_tuple("access::can-execute", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE + { DFileInfo::AttributeID::kAccessCanDelete, std::make_tuple("access::can-delete", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE + { DFileInfo::AttributeID::kAccessCanTrash, std::make_tuple("access::can-trash", false) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH + { DFileInfo::AttributeID::kAccessCanRename, std::make_tuple("access::can-rename", true) }, // G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME + + { DFileInfo::AttributeID::kMountableCanMount, std::make_tuple("mountable::can-mount", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT + { DFileInfo::AttributeID::kMountableCanUnmount, std::make_tuple("mountable::can-unmount", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT + { DFileInfo::AttributeID::kMountableCanEject, std::make_tuple("mountable::can-eject", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT + { DFileInfo::AttributeID::kMountableUnixDevice, std::make_tuple("mountable::unix-device", 0) }, // G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE + { DFileInfo::AttributeID::kMountableUnixDeviceFile, std::make_tuple("mountable::unix-device-file", "") }, // G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE + { DFileInfo::AttributeID::kMountableHalUdi, std::make_tuple("mountable::hal-udi", "") }, // G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI + { DFileInfo::AttributeID::kMountableCanPoll, std::make_tuple("mountable::can-poll", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL + { DFileInfo::AttributeID::kMountableIsMediaCheckAutomatic, std::make_tuple("mountable::is-media-check-automatic", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC + { DFileInfo::AttributeID::kMountableCanStart, std::make_tuple("mountable::can-start", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START + { DFileInfo::AttributeID::kMountableCanStartDegraded, std::make_tuple("mountable::can-start-degraded", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED + { DFileInfo::AttributeID::kMountableCanStop, std::make_tuple("mountable::can-stop", false) }, // G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP + { DFileInfo::AttributeID::kMountableStartStopType, std::make_tuple("mountable::start-stop-type", 0) }, // G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE + + { DFileInfo::AttributeID::kTimeModified, std::make_tuple("time::modified", 0) }, // G_FILE_ATTRIBUTE_TIME_MODIFIED + { DFileInfo::AttributeID::kTimeModifiedUsec, std::make_tuple("time::modified-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC + { DFileInfo::AttributeID::kTimeAccess, std::make_tuple("time::access", 0) }, // G_FILE_ATTRIBUTE_TIME_ACCESS + { DFileInfo::AttributeID::kTimeAccessUsec, std::make_tuple("time::access-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_ACCESS_USEC + { DFileInfo::AttributeID::kTimeChanged, std::make_tuple("time::changed", 0) }, // G_FILE_ATTRIBUTE_TIME_CHANGED + { DFileInfo::AttributeID::kTimeChangedUsec, std::make_tuple("time::changed-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_CHANGED_USEC + { DFileInfo::AttributeID::kTimeCreated, std::make_tuple("time::created", 0) }, // G_FILE_ATTRIBUTE_TIME_CREATED + { DFileInfo::AttributeID::kTimeCreatedUsec, std::make_tuple("time::created-usec", 0) }, // G_FILE_ATTRIBUTE_TIME_CREATED_USEC + + { DFileInfo::AttributeID::kUnixDevice, std::make_tuple("unix::device", 0) }, // G_FILE_ATTRIBUTE_UNIX_DEVICE + { DFileInfo::AttributeID::kUnixInode, std::make_tuple("unix::inode", 0) }, // G_FILE_ATTRIBUTE_UNIX_INODE + { DFileInfo::AttributeID::kUnixMode, std::make_tuple("unix::mode", 0) }, // G_FILE_ATTRIBUTE_UNIX_MODE + { DFileInfo::AttributeID::kUnixNlink, std::make_tuple("unix::nlink", 0) }, // G_FILE_ATTRIBUTE_UNIX_NLINK + { DFileInfo::AttributeID::kUnixUID, std::make_tuple("unix::uid", 0) }, // G_FILE_ATTRIBUTE_UNIX_UID + { DFileInfo::AttributeID::kUnixGID, std::make_tuple("unix::gid", 0) }, // G_FILE_ATTRIBUTE_UNIX_GID + { DFileInfo::AttributeID::kUnixRdev, std::make_tuple("unix::rdev", 0) }, // G_FILE_ATTRIBUTE_UNIX_RDEV + { DFileInfo::AttributeID::kUnixBlockSize, std::make_tuple("unix::block-size", 0) }, // G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE + { DFileInfo::AttributeID::kUnixBlocks, std::make_tuple("unix::blocks", 0) }, // G_FILE_ATTRIBUTE_UNIX_BLOCKS + { DFileInfo::AttributeID::kUnixIsMountPoint, std::make_tuple("unix::is-mountpoint", false) }, // G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT + + { DFileInfo::AttributeID::kDosIsArchive, std::make_tuple("dos::is-archive", false) }, // G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE + { DFileInfo::AttributeID::kDosIsSystem, std::make_tuple("dos::is-system", false) }, // G_FILE_ATTRIBUTE_DOS_IS_SYSTEM + + { DFileInfo::AttributeID::kOwnerUser, std::make_tuple("owner::user", "") }, // G_FILE_ATTRIBUTE_OWNER_USER + { DFileInfo::AttributeID::kOwnerUserReal, std::make_tuple("owner::user-real", "") }, // G_FILE_ATTRIBUTE_OWNER_USER_REAL + { DFileInfo::AttributeID::kOwnerGroup, std::make_tuple("owner::group", "") }, // G_FILE_ATTRIBUTE_OWNER_GROUP + + { DFileInfo::AttributeID::kThumbnailPath, std::make_tuple("thumbnail::path", "") }, // G_FILE_ATTRIBUTE_THUMBNAIL_PATH + { DFileInfo::AttributeID::kThumbnailFailed, std::make_tuple("thumbnail::failed", false) }, // G_FILE_ATTRIBUTE_THUMBNAILING_FAILED + { DFileInfo::AttributeID::kThumbnailIsValid, std::make_tuple("thumbnail::is-valid", false) }, // G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID + + { DFileInfo::AttributeID::kPreviewIcon, std::make_tuple("preview::icon", 0) }, // G_FILE_ATTRIBUTE_PREVIEW_ICON + + { DFileInfo::AttributeID::kFileSystemSize, std::make_tuple("filesystem::size", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_SIZE + { DFileInfo::AttributeID::kFileSystemFree, std::make_tuple("filesystem::free", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_FREE + { DFileInfo::AttributeID::kFileSystemUsed, std::make_tuple("filesystem::used", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_USED + { DFileInfo::AttributeID::kFileSystemType, std::make_tuple("filesystem::type", "") }, // G_FILE_ATTRIBUTE_FILESYSTEM_TYPE + { DFileInfo::AttributeID::kFileSystemReadOnly, std::make_tuple("filesystem::readonly", false) }, // G_FILE_ATTRIBUTE_FILESYSTEM_READONLY + { DFileInfo::AttributeID::kFileSystemUsePreview, std::make_tuple("filesystem::use-preview", 0) }, // G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW + { DFileInfo::AttributeID::kFileSystemRemote, std::make_tuple("filesystem::remote", false) }, // G_FILE_ATTRIBUTE_FILESYSTEM_REMOTE + + { DFileInfo::AttributeID::kGvfsBackend, std::make_tuple("gvfs::backend", "") }, // G_FILE_ATTRIBUTE_GVFS_BACKEND + + { DFileInfo::AttributeID::kSelinuxContext, std::make_tuple("selinux::context", "") }, // G_FILE_ATTRIBUTE_SELINUX_CONTEXT + + { DFileInfo::AttributeID::kTrashItemCount, std::make_tuple("trash::item-count", 0) }, // G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT + { DFileInfo::AttributeID::kTrashDeletionDate, std::make_tuple("trash::deletion-date", "") }, // G_FILE_ATTRIBUTE_TRASH_DELETION_DATE + { DFileInfo::AttributeID::kTrashOrigPath, std::make_tuple("trash::orig-path", "") }, // G_FILE_ATTRIBUTE_TRASH_ORIG_PATH + + { DFileInfo::AttributeID::kRecentModified, std::make_tuple("recent::modified", 0) }, // G_FILE_ATTRIBUTE_RECENT_MODIFIED + + { DFileInfo::AttributeID::kCustomStart, std::make_tuple("custom-start", 0) }, + + { DFileInfo::AttributeID::kStandardIsFile, std::make_tuple("standard::is-file", false) }, + { DFileInfo::AttributeID::kStandardIsDir, std::make_tuple("standard::is-dir", false) }, + { DFileInfo::AttributeID::kStandardIsRoot, std::make_tuple("standard::is-root", false) }, + { DFileInfo::AttributeID::kStandardSuffix, std::make_tuple("standard::suffix", "") }, + { DFileInfo::AttributeID::kStandardCompleteSuffix, std::make_tuple("standard::complete-suffix", "") }, + { DFileInfo::AttributeID::kStandardFilePath, std::make_tuple("standard::file-path", "") }, + { DFileInfo::AttributeID::kStandardParentPath, std::make_tuple("standard::parent-path", "") }, + { DFileInfo::AttributeID::kStandardBaseName, std::make_tuple("standard::base-name", "") }, + { DFileInfo::AttributeID::kStandardFileName, std::make_tuple("standard::file-name", "") }, + { DFileInfo::AttributeID::kStandardCompleteBaseName, std::make_tuple("standard::complete-base-name", "") }, + }; + return kAttributeInfoMap; +} + QSharedPointer DLocalHelper::createFileInfoByUri(const QUrl &uri, const char *attributes /*= "*"*/, const DFMIO::DFileInfo::FileQueryInfoFlags flag /*= DFMIO::DFileInfo::FileQueryInfoFlags::TypeNone*/) { - return QSharedPointer(new DLocalFileInfo(uri, attributes, flag)); + return QSharedPointer(new DFileInfo(uri, attributes, flag)); } QSharedPointer DLocalHelper::createFileInfoByUri(const QUrl &uri, GFileInfo *gfileInfo, const char *attributes, const DFileInfo::FileQueryInfoFlags flag) { - return QSharedPointer(new DLocalFileInfo(uri, gfileInfo, attributes, flag)); + return QSharedPointer(new DFileInfo(uri, gfileInfo, attributes, flag)); } QVariant DLocalHelper::attributeFromGFileInfo(GFileInfo *gfileinfo, DFileInfo::AttributeID id, DFMIOErrorCode &errorcode) @@ -496,8 +612,8 @@ bool DLocalHelper::setAttributeByGFileInfo(GFileInfo *gfileinfo, DFileInfo::Attr std::string DLocalHelper::attributeStringById(DFileInfo::AttributeID id) { - if (DFileInfo::attributeInfoMap.count(id) > 0) { - const std::string &value = std::get<0>(DFileInfo::attributeInfoMap.at(id)); + if (DLocalHelper::attributeInfoMapFunc().count(id) > 0) { + const std::string &value = std::get<0>(DLocalHelper::attributeInfoMapFunc().at(id)); return value; } return ""; @@ -520,7 +636,7 @@ QSet DLocalHelper::hideListFromUrl(const QUrl &url) return {}; } -bool DLocalHelper::fileIsHidden(const QSharedPointer &dfileinfo, const QSet &hideList, const bool needRead) +bool DLocalHelper::fileIsHidden(const DFileInfo *dfileinfo, const QSet &hideList, const bool needRead) { if (!dfileinfo) return false; diff --git a/src/dfm-io/dfm-io/include/local/dlocalhelper.h b/src/dfm-io/dfm-io/utils/dlocalhelper.h similarity index 89% rename from src/dfm-io/dfm-io/include/local/dlocalhelper.h rename to src/dfm-io/dfm-io/utils/dlocalhelper.h index f6a1b4a..d77bdd9 100644 --- a/src/dfm-io/dfm-io/include/local/dlocalhelper.h +++ b/src/dfm-io/dfm-io/utils/dlocalhelper.h @@ -5,9 +5,9 @@ #ifndef DGIOHELPER_H #define DGIOHELPER_H -#include "dfmio_global.h" -#include "core/dfileinfo.h" -#include "core/denumerator.h" +#include +#include +#include #include @@ -38,6 +38,9 @@ std::function bind_field(Ret (*m)(Ts...)) class DLocalHelper { public: + using AttributeInfoMap = std::unordered_map>; + + static AttributeInfoMap &attributeInfoMapFunc(); static QSharedPointer createFileInfoByUri(const QUrl &uri, const char *attributes = "*", const DFMIO::DFileInfo::FileQueryInfoFlags flag = DFMIO::DFileInfo::FileQueryInfoFlags::kTypeNone); static QSharedPointer createFileInfoByUri(const QUrl &uri, GFileInfo *gfileInfo, const char *attributes = "*", @@ -50,7 +53,7 @@ class DLocalHelper static bool setAttributeByGFileInfo(GFileInfo *gfileinfo, DFileInfo::AttributeID id, const QVariant &value); static std::string attributeStringById(DFileInfo::AttributeID id); static QSet hideListFromUrl(const QUrl &url); - static bool fileIsHidden(const QSharedPointer &dfileinfo, const QSet &hideList, const bool needRead = true); + static bool fileIsHidden(const DFileInfo *dfileinfo, const QSet &hideList, const bool needRead = true); // tools static bool checkGFileType(GFile *file, GFileType type); diff --git a/src/dfm-io/dfm-io/utils/dmediainfo.cpp b/src/dfm-io/dfm-io/utils/dmediainfo.cpp index 6bcfa03..7f234b7 100644 --- a/src/dfm-io/dfm-io/utils/dmediainfo.cpp +++ b/src/dfm-io/dfm-io/utils/dmediainfo.cpp @@ -14,7 +14,7 @@ #include -const size_t MediaInfoStateFinished = 10000; // read finished and no error +static constexpr size_t kMediaInfoStateFinished { 10000 }; // read finished and no error Q_GLOBAL_STATIC(QQueue>, queueDestoryMediaInfo) @@ -79,7 +79,7 @@ class DMediaInfoPrivate : public QObject break; if (me->isStopState.load()) break; - if (me->mediaInfo->State_Get() == MediaInfoStateFinished) { + if (me->mediaInfo->State_Get() == kMediaInfoStateFinished) { me->callback(); break; } diff --git a/src/dfm-io/dfm-io/utils/dmediainfo.h b/src/dfm-io/dfm-io/utils/dmediainfo.h index a168f02..be0ecf0 100644 --- a/src/dfm-io/dfm-io/utils/dmediainfo.h +++ b/src/dfm-io/dfm-io/utils/dmediainfo.h @@ -5,8 +5,8 @@ #ifndef DMEDIAINFO_H #define DMEDIAINFO_H -#include "dfmio_global.h" -#include "core/dfileinfo.h" +#include +#include #include #include diff --git a/src/dfm-io/dfm-io/utils/trashfilehelper.h b/src/dfm-io/dfm-io/utils/trashfilehelper.h index afa0150..f802ad8 100644 --- a/src/dfm-io/dfm-io/utils/trashfilehelper.h +++ b/src/dfm-io/dfm-io/utils/trashfilehelper.h @@ -5,17 +5,19 @@ #ifndef TRASHFILEHELPER_H #define TRASHFILEHELPER_H -#include "dfmio_global.h" +#include #include #include + BEGIN_IO_NAMESPACE class TrashFileHelper { public: TrashFileHelper(); static QString trashTargetPath(const QString &path, GFile *file); + private: static QString getParent(const QString &path, dev_t *parentDev); static dev_t getFileDevType(const QString &path); @@ -24,4 +26,4 @@ class TrashFileHelper static QString getTrashFilename(const char *basename, int id); }; END_IO_NAMESPACE -#endif // TRASHFILEHELPER_H +#endif // TRASHFILEHELPER_H diff --git a/src/dfm-io/tools/CMakeLists.txt b/src/dfm-io/tools/CMakeLists.txt index 4c82fe3..faff16f 100644 --- a/src/dfm-io/tools/CMakeLists.txt +++ b/src/dfm-io/tools/CMakeLists.txt @@ -1,13 +1,21 @@ -project(tools) - add_definitions(-DQT_NO_KEYWORDS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall") # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -fsanitize=address") +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set (CMAKE_VERBOSE_MAKEFILE ON) + message("debug type open sanitize check") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined,address,leak -fno-omit-frame-pointer") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined,address,leak -fno-omit-frame-pointer") + set(CMAKE_L_FLAGS "${CMAKE_L_FLAGS} -fsanitize=undefined,address,leak -fno-omit-frame-pointer") + + #set(CMAKE_CXX_FLAGS "-fsanitize=thread") + +endif() + # include include_directories( ${PROJECT_SOURCE_DIR}/../dfm-io/inlcude - ${PROJECT_SOURCE_DIR}/../dfm-io/private ) add_executable(dfm-list dfm-list.cpp) @@ -25,8 +33,8 @@ target_link_libraries(dfm-copy dfm-io) add_executable(dfm-copy-gio dfm-copy-gio.cpp) target_link_libraries(dfm-copy-gio dfm-io) -#add_executable(dfm-copy3 dfm-copy3.cpp) -#target_link_libraries(dfm-copy3 dfm-io) +add_executable(dfm-copy3 dfm-copy3.cpp) +target_link_libraries(dfm-copy3 dfm-io) add_executable(dfm-copy-system dfm-copy-system.cpp) target_link_libraries(dfm-copy-system dfm-io) @@ -64,42 +72,3 @@ target_link_libraries(dfm-link dfm-io) add_executable(dfm-watcher dfm-watcher.cpp) target_link_libraries(dfm-watcher dfm-io) -#install ( -# FILES -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-list -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-info -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-copy -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-cat -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-save -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-rename -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-move -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-trash -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-delete -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-restore -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-touch -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-mkdir -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-link -# ${CMAKE_CURRENT_BINARY_DIR}/dfm-watcher -# DESTINATION /usr/bin/ -# PERMISSIONS WORLD_EXECUTE -#) - -install ( - TARGETS - dfm-list - dfm-info - dfm-copy - dfm-cat - dfm-save - dfm-rename - dfm-move - dfm-trash - dfm-delete - dfm-restore - dfm-touch - dfm-mkdir - dfm-link - dfm-watcher - DESTINATION /usr/bin/ - PERMISSIONS WORLD_EXECUTE -) diff --git a/src/dfm-io/tools/dfm-cat.cpp b/src/dfm-io/tools/dfm-cat.cpp index 3e9c313..fdb8ccf 100644 --- a/src/dfm-io/tools/dfm-cat.cpp +++ b/src/dfm-io/tools/dfm-cat.cpp @@ -2,12 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/dfile.h" -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include +#include #include @@ -25,14 +21,9 @@ static void err_msg(const char *msg) fprintf(stderr, "dfm-cat: %s\n", msg); } -static QSharedPointer make_stream(QSharedPointer factory, DFile::OpenFlag flag) +static QSharedPointer make_stream(const QUrl &url, DFile::OpenFlag flag) { - if (!factory) { - err_msg("create factory failed."); - return nullptr; - } - - auto file = factory->createFile(); + QSharedPointer file { new DFile(url) }; if (!file) { err_msg("get device file failed."); return nullptr; @@ -47,14 +38,7 @@ static QSharedPointer make_stream(QSharedPointer factory, DFi #define BLOCK (4 * 4096) static void cat(const QUrl &url) { - auto factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - - if (!factory) { - err_msg("bad factory."); - return; - } - - QSharedPointer stream = make_stream(factory, DFile::OpenFlag::kReadOnly); + QSharedPointer stream = make_stream(url, DFile::OpenFlag::kReadOnly); if (!stream) { err_msg("make stream failed."); return; @@ -84,14 +68,11 @@ int main(int argc, char *argv[]) } const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; - dfmio_init(); - //REGISTER_FACTORY1(DLocalIOFactory, url.scheme(), QUrl); - cat(url); return 0; diff --git a/src/dfm-io/tools/dfm-copy-gio.cpp b/src/dfm-io/tools/dfm-copy-gio.cpp index 1bed269..02107ea 100644 --- a/src/dfm-io/tools/dfm-copy-gio.cpp +++ b/src/dfm-io/tools/dfm-copy-gio.cpp @@ -2,13 +2,10 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" +#include "../dfm-io/utils/dlocalhelper.h" // for test -#include "core/diofactory.h" -#include "core/diofactory_p.h" -#include "core/dfile.h" -#include "local/dlocalhelper.h" +#include +#include #include @@ -32,7 +29,7 @@ static void copy(const QString &sourcePath, const QString &destPath) GFile *gfileTarget = nullptr; if (DLocalHelper::checkGFileType(gfileDest, G_FILE_TYPE_DIRECTORY)) { - char *basename = g_file_get_basename (gfileSource); + char *basename = g_file_get_basename(gfileSource); gfileTarget = g_file_get_child(gfileDest, basename); g_free(basename); } else { diff --git a/src/dfm-io/tools/dfm-copy-system.cpp b/src/dfm-io/tools/dfm-copy-system.cpp index fe471a2..f8cf384 100644 --- a/src/dfm-io/tools/dfm-copy-system.cpp +++ b/src/dfm-io/tools/dfm-copy-system.cpp @@ -2,13 +2,6 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" -#include "core/dfile.h" - #include #include @@ -19,8 +12,6 @@ #include #include -USING_IO_NAMESPACE - qint64 readData(int m_fileFd, char *data, qint64 maxlen) { return ::read(m_fileFd, data, static_cast(maxlen)); @@ -69,8 +60,6 @@ int main(int argc, char *argv[]) const char *uri_src = argv[1]; const char *uri_dst = argv[2]; - dfmio_init(); - QElapsedTimer timer; timer.start(); copy(uri_src, uri_dst); diff --git a/src/dfm-io/tools/dfm-copy.cpp b/src/dfm-io/tools/dfm-copy.cpp index bdca25d..259ef95 100644 --- a/src/dfm-io/tools/dfm-copy.cpp +++ b/src/dfm-io/tools/dfm-copy.cpp @@ -2,13 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" -#include "core/dfile.h" -#include "local/dlocalfile.h" +#include +#include #include #include @@ -22,14 +17,9 @@ static void err_msg(const char *msg) fprintf(stderr, "dfm-copy: %s\n", msg); } -static QSharedPointer make_stream(QSharedPointer factory, DFile::OpenFlag flag) +static QSharedPointer make_stream(const QUrl &url, DFile::OpenFlag flag) { - if (!factory) { - err_msg("create factory failed."); - return nullptr; - } - - auto file = factory->createFile(); + QSharedPointer file { new DFile(url) }; if (!file) { err_msg("get device file failed."); return nullptr; @@ -47,11 +37,8 @@ static void copy(const QUrl &url_src, const QUrl &url_dst) char buff[block]; int read = 0; - QSharedPointer factory_src = produceQSharedIOFactory(url_src.scheme(), static_cast(url_src)); - QSharedPointer factory_dst = produceQSharedIOFactory(url_dst.scheme(), static_cast(url_dst)); - - QSharedPointer stream_src = make_stream(factory_src, DFile::OpenFlag::kReadOnly); - QSharedPointer stream_dst = make_stream(factory_dst, DFile::OpenFlag::kWriteOnly); + QSharedPointer stream_src = make_stream(url_src, DFile::OpenFlag::kReadOnly); + QSharedPointer stream_dst = make_stream(url_dst, DFile::OpenFlag::kWriteOnly); if (!stream_src || !stream_dst) { return; @@ -80,14 +67,12 @@ int main(int argc, char *argv[]) const char *uri_src = argv[1]; const char *uri_dst = argv[2]; - QUrl url_src(QString::fromLocal8Bit(uri_src)); - QUrl url_dst(QString::fromLocal8Bit(uri_dst)); + QUrl url_src(QUrl::fromLocalFile(QString::fromLocal8Bit(uri_src))); + QUrl url_dst(QUrl::fromLocalFile(QString::fromLocal8Bit(uri_dst))); if (!url_src.isValid() || !url_dst.isValid()) return 1; - dfmio_init(); - QElapsedTimer timer; timer.start(); copy(url_src, url_dst); diff --git a/src/dfm-io/tools/dfm-copy3.cpp b/src/dfm-io/tools/dfm-copy3.cpp index c375b69..89bc873 100644 --- a/src/dfm-io/tools/dfm-copy3.cpp +++ b/src/dfm-io/tools/dfm-copy3.cpp @@ -1,14 +1,10 @@ // SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later +#include "../dfm-io/utils/dlocalhelper.h" // for test -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" -#include "core/dfile.h" -#include "local/dlocalhelper.h" +#include +#include #include @@ -24,7 +20,7 @@ qint64 readData(GFileInputStream *input_stream, char *data, qint64 maxlen) { GError *gerror = nullptr; - qint64 size = g_input_stream_read((GInputStream*)input_stream, data, static_cast(maxlen), nullptr, &gerror); + qint64 size = g_input_stream_read((GInputStream *)input_stream, data, static_cast(maxlen), nullptr, &gerror); if (gerror) { g_error_free(gerror); @@ -37,7 +33,7 @@ qint64 writeData(GFileOutputStream *output_stream, const char *data, qint64 len) { GError *gerror = nullptr; - qint64 size = g_output_stream_write((GOutputStream*)output_stream, data, static_cast(len), nullptr, &gerror); + qint64 size = g_output_stream_write((GOutputStream *)output_stream, data, static_cast(len), nullptr, &gerror); if (gerror) { g_error_free(gerror); return -1; @@ -62,7 +58,7 @@ static void copy(const QString &url_src, const QString &url_dst) GFile *gfileTarget = nullptr; if (DLocalHelper::checkGFileType(gfileDest, G_FILE_TYPE_DIRECTORY)) { - char *basename = g_file_get_basename (gfileSource); + char *basename = g_file_get_basename(gfileSource); gfileTarget = g_file_get_child(gfileDest, basename); g_free(basename); } else { @@ -137,8 +133,6 @@ int main(int argc, char *argv[]) const char *uri_src = argv[1]; const char *uri_dst = argv[2]; - dfmio_init(); - QElapsedTimer timer; timer.start(); copy(uri_src, uri_dst); diff --git a/src/dfm-io/tools/dfm-delete.cpp b/src/dfm-io/tools/dfm-delete.cpp index 850df58..ab70296 100644 --- a/src/dfm-io/tools/dfm-delete.cpp +++ b/src/dfm-io/tools/dfm-delete.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,7 @@ static void usage() static bool delete_file(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return false; @@ -53,15 +43,12 @@ int main(int argc, char *argv[]) return 1; } - const char* uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + const char *uri = argv[1]; + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; - dfmio_init(); - //REGISTER_FACTORY1(DLocalIOFactory, url.scheme(), QUrl); - if (!delete_file(url)) { return 1; } diff --git a/src/dfm-io/tools/dfm-info.cpp b/src/dfm-io/tools/dfm-info.cpp index d66df05..18c9055 100644 --- a/src/dfm-io/tools/dfm-info.cpp +++ b/src/dfm-io/tools/dfm-info.cpp @@ -2,11 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include +#include #include @@ -19,13 +16,7 @@ static void err_msg(const char *msg) static void display(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return; - } - - QSharedPointer info = factory->createFileInfo(); + QSharedPointer info { new DFileInfo(url) }; if (!info) { err_msg("create file info failed."); @@ -49,13 +40,11 @@ int main(int argc, char *argv[]) } const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; - dfmio_init(); - display(url); return 0; diff --git a/src/dfm-io/tools/dfm-link.cpp b/src/dfm-io/tools/dfm-link.cpp index 04b500b..ef68f15 100644 --- a/src/dfm-io/tools/dfm-link.cpp +++ b/src/dfm-io/tools/dfm-link.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,7 @@ static void usage() static bool link_file(const QUrl &url, const QUrl &urlto) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return false; @@ -56,14 +46,12 @@ int main(int argc, char *argv[]) const char *uri = argv[1]; const char *urito = argv[2]; - QUrl urlSource(QString::fromLocal8Bit(uri)); - QUrl urlTarget(QString::fromLocal8Bit(urito)); + QUrl urlSource(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); + QUrl urlTarget(QUrl::fromLocalFile(QString::fromLocal8Bit(urito))); if (!urlSource.isValid()) return -1; - dfmio_init(); - if (!link_file(urlSource, urlTarget)) { return 1; } diff --git a/src/dfm-io/tools/dfm-list.cpp b/src/dfm-io/tools/dfm-list.cpp index 744db43..edf5997 100644 --- a/src/dfm-io/tools/dfm-list.cpp +++ b/src/dfm-io/tools/dfm-list.cpp @@ -2,15 +2,13 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include +#include #include #include +#include USING_IO_NAMESPACE @@ -24,22 +22,19 @@ static void err_msg(const char *msg) static void enum_uri(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return; - } - - QSharedPointer enumerator = factory->createEnumerator(); + QSharedPointer enumerator { new DEnumerator(url) }; if (!enumerator) { err_msg("create enumerator failed."); return; } + int count { 0 }; while (enumerator->hasNext()) { const QUrl &url = enumerator->next(); qInfo() << url; + ++count; } + qInfo() << "count: " << count; } void usage() @@ -72,13 +67,11 @@ int main(int argc, char *argv[]) uri = argv[1]; } - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; - dfmio_init(); - enum_uri(url); return 0; diff --git a/src/dfm-io/tools/dfm-mkdir.cpp b/src/dfm-io/tools/dfm-mkdir.cpp index fd119ba..6006903 100644 --- a/src/dfm-io/tools/dfm-mkdir.cpp +++ b/src/dfm-io/tools/dfm-mkdir.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,7 @@ static void usage() static bool mkdir(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return false; @@ -54,14 +44,11 @@ int main(int argc, char *argv[]) } const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; - dfmio_init(); - //REGISTER_FACTORY1(DLocalIOFactory, url.scheme(), QUrl); - if (!mkdir(url)) { return 1; } diff --git a/src/dfm-io/tools/dfm-move.cpp b/src/dfm-io/tools/dfm-move.cpp index a353819..1053738 100644 --- a/src/dfm-io/tools/dfm-move.cpp +++ b/src/dfm-io/tools/dfm-move.cpp @@ -2,12 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/dfile.h" -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -25,13 +20,7 @@ static void usage() static bool move_file(const QUrl &url_src, const QUrl &url_dst) { - QSharedPointer factory = produceQSharedIOFactory(url_src.scheme(), static_cast(url_src)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url_src) }; if (!op) { err_msg("operator create failed."); return false; @@ -57,21 +46,12 @@ int main(int argc, char *argv[]) const char *uri_src = argv[1]; const char *uri_dst = argv[2]; - QUrl url_src(QString::fromLocal8Bit(uri_src)); - QUrl url_dst(QString::fromLocal8Bit(uri_dst)); + QUrl url_src(QUrl::fromLocalFile(QString::fromLocal8Bit(uri_src))); + QUrl url_dst(QUrl::fromLocalFile(QString::fromLocal8Bit(uri_dst))); if (!url_src.isValid() || !url_dst.isValid()) return 1; - /*const QString &scheme_src = url_src.scheme(); - const QString &scheme_dst = url_dst.scheme(); - - if (scheme_src != scheme_dst) - return 1;*/ - - dfmio_init(); - //REGISTER_FACTORY1(DLocalIOFactory, scheme_src, QUrl); - if (!move_file(url_src, url_dst)) { return 1; } diff --git a/src/dfm-io/tools/dfm-rename.cpp b/src/dfm-io/tools/dfm-rename.cpp index 9ac7735..d311e27 100644 --- a/src/dfm-io/tools/dfm-rename.cpp +++ b/src/dfm-io/tools/dfm-rename.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,8 @@ static void usage() static bool rename_file(const QUrl &url, const QString &new_name) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return false; @@ -53,13 +44,10 @@ int main(int argc, char *argv[]) return 1; } - // do this first. - dfmio_init(); - const char *uri = argv[1]; const char *new_name = argv[2]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; diff --git a/src/dfm-io/tools/dfm-restore.cpp b/src/dfm-io/tools/dfm-restore.cpp index 9f4b20f..77d36a3 100644 --- a/src/dfm-io/tools/dfm-restore.cpp +++ b/src/dfm-io/tools/dfm-restore.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,7 @@ static void usage() static void restore(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return; @@ -50,11 +40,8 @@ int main(int argc, char *argv[]) return 1; } - // do this first. - dfmio_init(); - const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); restore(url); diff --git a/src/dfm-io/tools/dfm-save.cpp b/src/dfm-io/tools/dfm-save.cpp index 27aa876..083fc0d 100644 --- a/src/dfm-io/tools/dfm-save.cpp +++ b/src/dfm-io/tools/dfm-save.cpp @@ -2,11 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include +#include #include #include @@ -18,14 +15,9 @@ static void err_msg(const char *msg) fprintf(stderr, "dfm-save: %s\n", msg); } -static QSharedPointer make_stream(QSharedPointer factory, DFile::OpenFlag flag) +static QSharedPointer make_stream(const QUrl &url, DFile::OpenFlag flag) { - if (!factory) { - err_msg("create factory failed."); - return nullptr; - } - - auto file = factory->createFile(); + QSharedPointer file { new DFile(url) }; if (!file) { err_msg("get device file failed."); return nullptr; @@ -40,9 +32,8 @@ static QSharedPointer make_stream(QSharedPointer factory, DFi #define BLOCK 4 * 4096 static void save(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - QSharedPointer stream = make_stream(factory, DFile::OpenFlag::kWriteOnly); + QSharedPointer stream = make_stream(url, DFile::OpenFlag::kWriteOnly); if (!stream) { err_msg("make stream failed."); return; @@ -69,12 +60,9 @@ int main(int argc, char *argv[]) return 1; } - // do this first. - dfmio_init(); - const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; diff --git a/src/dfm-io/tools/dfm-sort-list.cpp b/src/dfm-io/tools/dfm-sort-list.cpp index b4e13e1..6b1bc7a 100644 --- a/src/dfm-io/tools/dfm-sort-list.cpp +++ b/src/dfm-io/tools/dfm-sort-list.cpp @@ -2,11 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include +#include #include #include @@ -26,24 +23,16 @@ static void err_msg(const char *msg) static void enum_uri(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return; - } - - QSharedPointer enumerator = factory->createEnumerator(); + QSharedPointer enumerator { new DEnumerator(url) }; if (!enumerator) { err_msg("create enumerator failed."); return; } - QMap argus; - argus.insert(DEnumerator::ArgumentKey::kArgumentSortRole, - QVariant::fromValue(DFMIO::DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileLastRead)); - argus.insert(DEnumerator::ArgumentKey::kArgumentMixDirAndFile, true); - argus.insert(DEnumerator::ArgumentKey::kArgumentSortOrder, Qt::DescendingOrder); - enumerator->setArguments(argus); + enumerator->setSortRole(DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileLastRead); + enumerator->setSortMixed(true); + enumerator->setSortOrder(Qt::DescendingOrder); + auto list = enumerator->sortFileInfoList(); for (auto sortInfo : list) { qInfo() << sortInfo->url; @@ -80,13 +69,11 @@ int main(int argc, char *argv[]) uri = argv[1]; } - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; - dfmio_init(); - enum_uri(url); return 0; diff --git a/src/dfm-io/tools/dfm-touch.cpp b/src/dfm-io/tools/dfm-touch.cpp index 1ef22e7..0c4090a 100644 --- a/src/dfm-io/tools/dfm-touch.cpp +++ b/src/dfm-io/tools/dfm-touch.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,7 @@ static void usage() static bool touch_file(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return false; @@ -53,12 +43,9 @@ int main(int argc, char *argv[]) return 1; } - // do this first. - dfmio_init(); - const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; @@ -66,6 +53,6 @@ int main(int argc, char *argv[]) if (!touch_file(url)) { return 1; } - + return 0; } diff --git a/src/dfm-io/tools/dfm-trash.cpp b/src/dfm-io/tools/dfm-trash.cpp index 665dc3b..e27aa30 100644 --- a/src/dfm-io/tools/dfm-trash.cpp +++ b/src/dfm-io/tools/dfm-trash.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include @@ -24,13 +20,7 @@ static void usage() static bool trash_file(const QUrl &url) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - QSharedPointer op = factory->createOperator(); + QSharedPointer op { new DOperator(url) }; if (!op) { err_msg("operator create failed."); return false; @@ -53,11 +43,8 @@ int main(int argc, char *argv[]) return 1; } - // do this first. - dfmio_init(); - const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1; diff --git a/src/dfm-io/tools/dfm-watcher.cpp b/src/dfm-io/tools/dfm-watcher.cpp index 4b1c457..db1fd1d 100644 --- a/src/dfm-io/tools/dfm-watcher.cpp +++ b/src/dfm-io/tools/dfm-watcher.cpp @@ -2,11 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "dfmio_global.h" -#include "dfmio_register.h" - -#include "core/diofactory.h" -#include "core/diofactory_p.h" +#include #include #include @@ -28,13 +24,7 @@ static void usage() static bool watcher_dir(const QUrl &url, QSharedPointer &watcher) { - QSharedPointer factory = produceQSharedIOFactory(url.scheme(), static_cast(url)); - if (!factory) { - err_msg("create factory failed."); - return false; - } - - watcher = factory->createWatcher(); + watcher.reset(new DWatcher(url)); if (!watcher) { err_msg("watcher create failed."); return false; @@ -75,13 +65,10 @@ int main(int argc, char *argv[]) return 1; } - // do this first. - dfmio_init(); - QCoreApplication app(argc, argv); const char *uri = argv[1]; - QUrl url(QString::fromLocal8Bit(uri)); + QUrl url(QUrl::fromLocalFile(QString::fromLocal8Bit(uri))); if (!url.isValid()) return 1;