File indexing completed on 2024-12-01 12:29:50

0001 /*
0002  * BluezQt - Asynchronous BlueZ wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #ifndef BLUEZQT_OBEXFILETRANSFER_H
0010 #define BLUEZQT_OBEXFILETRANSFER_H
0011 
0012 #include <QObject>
0013 
0014 #include "bluezqt_export.h"
0015 #include "obexfiletransferentry.h"
0016 
0017 class QDBusObjectPath;
0018 
0019 namespace BluezQt
0020 {
0021 class PendingCall;
0022 
0023 /**
0024  * @class BluezQt::ObexFileTransfer obexfiletransfer.h <BluezQt/ObexFileTransfer>
0025  *
0026  * OBEX file transfer.
0027  *
0028  * This class represents an OBEX file transfer interface.
0029  */
0030 class BLUEZQT_EXPORT ObexFileTransfer : public QObject
0031 {
0032     Q_OBJECT
0033 
0034 public:
0035     /**
0036      * Creates a new ObexFileTransfer object.
0037      *
0038      * This class will be typically used with a @p path
0039      * from result of ObexManager::createSession().
0040      *
0041      * @param path path of session
0042      * @param parent
0043      */
0044     explicit ObexFileTransfer(const QDBusObjectPath &path, QObject *parent = nullptr);
0045 
0046     /**
0047      * Destroys an ObexFileTransfer object.
0048      */
0049     ~ObexFileTransfer() override;
0050 
0051     /**
0052      * D-Bus object path of the file transfer session.
0053      *
0054      * @return object path of session
0055      */
0056     QDBusObjectPath objectPath() const;
0057 
0058     /**
0059      * Changes the current folder.
0060      *
0061      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0062      *
0063      * @param folder folder to be changed
0064      * @return void pending call
0065      */
0066     PendingCall *changeFolder(const QString &folder);
0067 
0068     /**
0069      * Creates a new folder.
0070      *
0071      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0072      *
0073      * @param folder name of new folder
0074      * @return void pending call
0075      */
0076     PendingCall *createFolder(const QString &folder);
0077 
0078     /**
0079      * Lists a current folder.
0080      *
0081      * Possible errors: PendingCall::Failed
0082      *
0083      * @return QList<ObexFileTransferEntry> pending call
0084      */
0085     PendingCall *listFolder();
0086 
0087     /**
0088      * Gets the file from the remote device.
0089      *
0090      * If an empty @p targetFileName is given, a name will be
0091      * automatically calculated for the temporary file.
0092      *
0093      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0094      *
0095      * @param targetFileName full local path where the file will be saved
0096      * @param sourceFileName file within the remote device
0097      * @return ObexTransferPtr pending call
0098      */
0099     PendingCall *getFile(const QString &targetFileName, const QString &sourceFileName);
0100 
0101     /**
0102      * Puts the file to the remote device.
0103      *
0104      * If an empty @p targetFileName is given, a name will be
0105      * automatically calculated for the temporary file.
0106      *
0107      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0108      *
0109      * @param sourceFileName full path of the local file
0110      * @param targetFileName file to be saved within the remote device
0111      * @return ObexTransferPtr pending call
0112      */
0113     PendingCall *putFile(const QString &sourceFileName, const QString &targetFileName);
0114 
0115     /**
0116      * Copies a file within the remote device.
0117      *
0118      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0119      *
0120      * @param sourceFileName source within the remote device
0121      * @param targetFileName target file within the remote device
0122      * @return void pending call
0123      */
0124     PendingCall *copyFile(const QString &sourceFileName, const QString &targetFileName);
0125 
0126     /**
0127      * Moves a file within the remote device.
0128      *
0129      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0130      *
0131      * @param sourceFileName source file within the remote device
0132      * @param targetFileName target file within the remote device
0133      * @return void pending call
0134      */
0135     PendingCall *moveFile(const QString &sourceFileName, const QString &targetFileName);
0136 
0137     /**
0138      * Deletes a file/folder within the remote device.
0139      *
0140      * Possible errors: PendingCall::InvalidArguments, PendingCall::Failed
0141      *
0142      * @param fileName file within the remote device
0143      * @return void pending call
0144      */
0145     PendingCall *deleteFile(const QString &fileName);
0146 
0147 private:
0148     class ObexFileTransferPrivate *const d;
0149 
0150     friend class ObexFileTransferPrivate;
0151 };
0152 
0153 } // namespace BluezQt
0154 
0155 #endif // BLUEZQT_OBEXFILETRANSFER_H