dtkio
dtk library for dtkio.
载入中...
搜索中...
未找到
dprotocoldevice.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DPROTOCOLDEVICE_H
6#define DPROTOCOLDEVICE_H
7
8#include <DtkMountGlobal>
9
10#include <functional>
11
12#include <QObject>
13#include <QVariantMap>
14
15#include <DExpected>
16
17DMOUNT_BEGIN_NAMESPACE
18
24
25namespace MountPasswdInfoParamKeys {
26inline constexpr char kName[] { "name" };
27inline constexpr char kPasswd[] { "passwd" };
28inline constexpr char kDomain[] { "domain" };
29inline constexpr char kAnonymous[] { "anonymous" };
30inline constexpr char kCancel[] { "cancel" };
31inline constexpr char kSaveMode[] { "mode" };
32} // namespace MountPasswdInfoParamKeys
33
34// TODO(xust): error handle in callback
35using OperateCallback = std::function<void(bool)>;
36using OperateCallbackWithInfo = std::function<void(bool, const QString &)>;
37
38using AskForPasswd = std::function<QVariantMap(const QString &msg, const QString &user, const QString &domain)>;
39using AskForChoice = std::function<int(const QString &msg, const QStringList &choices)>;
40
41class DProtocolDevice;
42namespace DDeviceManager {
43DCORE_NAMESPACE::DExpected<DProtocolDevice *> createProtocolDevice(const QString &, QObject *);
44} // namespace DDeviceManager
45
46class DProtocolDevicePrivate;
47class DProtocolDevice : public QObject
48{
49 Q_OBJECT
50 Q_DECLARE_PRIVATE(DProtocolDevice)
51 friend DCORE_NAMESPACE::DExpected<DProtocolDevice *> DDeviceManager::createProtocolDevice(const QString &, QObject *);
52
53 Q_PROPERTY(QString path READ path CONSTANT FINAL)
54 Q_PROPERTY(QString mountPoint READ mountPoint CONSTANT FINAL)
55 Q_PROPERTY(QString displayName READ displayName CONSTANT FINAL)
56 Q_PROPERTY(QString fileSystem READ fileSystem CONSTANT FINAL)
57 Q_PROPERTY(quint64 sizeTotal READ sizeTotal CONSTANT FINAL)
58 Q_PROPERTY(quint64 sizeFree READ sizeFree CONSTANT FINAL)
59 Q_PROPERTY(quint64 sizeUsage READ sizeUsage CONSTANT FINAL)
60 Q_PROPERTY(QStringList iconNames READ iconNames CONSTANT FINAL)
61
62public:
63 ~DProtocolDevice() override;
64
65 QString path() const;
66 QString mountPoint() const;
67 QString displayName() const;
68 QString fileSystem() const;
69 quint64 sizeTotal() const;
70 quint64 sizeFree() const;
71 quint64 sizeUsage() const;
72 QStringList iconNames() const;
73
74 QString mount(const QVariantMap &opts = {});
75 void mountAsync(const QVariantMap &opts = {}, OperateCallbackWithInfo callback = nullptr);
76 bool unmount(const QVariantMap &opts = {});
77 void unmountAsync(const QVariantMap &opts = {}, OperateCallback callback = nullptr);
78
79 void setOperateTimeout(int secs = 3);
82
83private:
84 explicit DProtocolDevice(const QString &devicePath, QObject *parent = nullptr);
85
86 QScopedPointer<DProtocolDevicePrivate> d_ptr;
87};
88
89DMOUNT_END_NAMESPACE
90
91#endif // DPROTOCOLDEVICE_H
用于操作如 smb/ftp/sftp/mpt/gphoto 等协议设备,处理设备的卸载、挂载以及获取设备属性。
Definition dprotocoldevice.h:48
QString mountPoint() const
获取设备挂载点。
void mountAsync(const QVariantMap &opts={}, OperateCallbackWithInfo callback=nullptr)
quint64 sizeTotal() const
获取设备总容量。
quint64 sizeFree() const
获取设备可用空间。
bool unmount(const QVariantMap &opts={})
卸载设备的同步函数。
void setAskForPasswd(AskForPasswd callback)
设置询问用户密码的回调函数。该函数通常在一些需要用户鉴权的设备挂载时使用,例如 smb/ftp/sftp 等。如果没有指定回调函数,默认的用户为本机登录用户,默认密码为空,默认域为 WORKGROUP。
QString mount(const QVariantMap &opts={})
挂载指定的设备。
QString displayName() const
获取设备名称,通常用于帮助用户在界面中识别设备。
void setOperateTimeout(int secs=3)
设置操作超时时间。
QString fileSystem() const
获取设备文件系统。
void setAskForChoice(AskForChoice callback)
设置询问用户选择的回调函数。该函数通常在一些需要用户抉择的设备挂载时使用。如果没有指定,默认的选择为0。
QStringList iconNames() const
获取设备图标。
quint64 sizeUsage() const
获取设备已使用容量。
QString path() const
获取在构造对象时指定的设备路径。
void unmountAsync(const QVariantMap &opts={}, OperateCallback callback=nullptr)
unmount 的异步版本
~DProtocolDevice() override
析构函数
PasswdSaveMode
在需要保存密码时的枚举选项
Definition dprotocoldevice.h:19
@ SaveInSession
Definition dprotocoldevice.h:21
@ Never
Definition dprotocoldevice.h:20
@ SaveForever
Definition dprotocoldevice.h:22
std::function< QVariantMap(const QString &msg, const QString &user, const QString &domain)> AskForPasswd
Definition dprotocoldevice.h:38
std::function< void(bool, const QString &)> OperateCallbackWithInfo
Definition dprotocoldevice.h:36
std::function< int(const QString &msg, const QStringList &choices)> AskForChoice
Definition dprotocoldevice.h:39
std::function< void(bool)> OperateCallback
Definition dprotocoldevice.h:35
constexpr char kPasswd[]
挂载网络设备时,鉴权所使用的用户密码的参数键名
Definition dprotocoldevice.h:27
constexpr char kSaveMode[]
挂载网络设备时,鉴权所使用的用户密码保存模式的参数键名
Definition dprotocoldevice.h:31
constexpr char kCancel[]
挂载网络设备时,用于告知挂载流程用户取消挂载的参数键名
Definition dprotocoldevice.h:30
constexpr char kAnonymous[]
挂载网络设备时,所使用的是否允许匿名访问的参数键名
Definition dprotocoldevice.h:29
constexpr char kName[]
挂载网络设备时,鉴权所使用的用户名的参数键名
Definition dprotocoldevice.h:26
constexpr char kDomain[]
挂载网络设备时,鉴权所使用的用户域的参数键名
Definition dprotocoldevice.h:28