Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ocssharejob.h « gui « src - github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 726c0b8ce935460396e882191b492278ca3524f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*
 * Copyright (C) by Roeland Jago Douma <roeland@famdouma.nl>
 *
 * 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 2 of the License, or
 * (at your option) 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.
 */

#ifndef OCSSHAREJOB_H
#define OCSSHAREJOB_H

#include "ocsjob.h"
#include "sharemanager.h"
#include <QVector>
#include <QList>
#include <QPair>

class QJsonDocument;

namespace OCC {

/**
 * @brief The OcsShareJob class
 * @ingroup gui
 *
 * Handle talking to the OCS Share API.
 * For creation, deletion and modification of shares.
 */
class OcsShareJob : public OcsJob
{
    Q_OBJECT
public:
    /**
     * Constructor for new shares or listing of shares
     */
    explicit OcsShareJob(AccountPtr account);

    /**
     * Get all the shares
     *
     * @param path Path to request shares for (default all shares)
     */
    void getShares(const QString &path = "");

    /**
     * Delete the current Share
     */
    void deleteShare(const QString &shareId);

    /**
     * Set the expiration date of a share
     *
     * @param date The expire date, if this date is invalid the expire date
     * will be removed
     */
    void setExpireDate(const QString &shareId, const QDate &date);

	 /**
     * Set note a share
     *
     * @param note The note to a share, if the note is empty the
     * share will be removed
     */
    void setNote(const QString &shareId, const QString &note);

    /**
     * Set the password of a share
     *
     * @param password The password of the share, if the password is empty the
     * share will be removed
     */
    void setPassword(const QString &shareId, const QString &password);

    /**
     * Set the share to be public upload
     *
     * @param publicUpload Set or remove public upload
     */
    void setPublicUpload(const QString &shareId, bool publicUpload);

    /**
     * Change the name of a share
     */
    void setName(const QString &shareId, const QString &name);

    /**
     * Set the permissions
     *
     * @param permissions
     */
    void setPermissions(const QString &shareId,
        const Share::Permissions permissions);

    /**
     * Create a new link share
     *
     * @param path The path of the file/folder to share
     * @param password Optionally a password for the share
     */
    void createLinkShare(const QString &path, const QString &name,
        const QString &password);

    /**
     * Create a new share
     *
     * @param path The path of the file/folder to share
     * @param shareType The type of share (user/group/link/federated)
     * @param shareWith The uid/gid/federated id to share with
     * @param permissions The permissions the share will have
     */
    void createShare(const QString &path,
        const Share::ShareType shareType,
        const QString &shareWith = "",
        const Share::Permissions permissions = SharePermissionRead);

    /**
     * Returns information on the items shared with the current user.
     */
    void getSharedWithMe();

signals:
    /**
     * Result of the OCS request
     * The value parameter is only set if this was a put request.
     * e.g. if we set the password to 'foo' the QVariant will hold a QString with 'foo'.
     * This is needed so we can update the share objects properly
     *
     * @param reply The reply
     * @param value To what did we set a variable (if we set any).
     */
    void shareJobFinished(QJsonDocument reply, QVariant value);

private slots:
    void jobDone(QJsonDocument reply);

private:
    QVariant _value;
};
}

#endif // OCSSHAREJOB_H