namespace OCC {
-Share::Share(AccountPtr account, const QString& id, const QString& path, int shareType,
- int permissions)
+Share::Share(AccountPtr account,
+ const QString& id,
+ const QString& path,
+ ShareType shareType,
+ Permissions permissions)
: _account(account),
_id(id),
_path(path),
return _id;
}
-int Share::getShareType() const
+Share::ShareType Share::getShareType() const
{
return _shareType;
}
-int Share::getPermissions() const
+Share::Permissions Share::getPermissions() const
{
return _permissions;
}
LinkShare::LinkShare(AccountPtr account,
const QString& id,
const QString& path,
- int shareType,
- int permissions,
+ Permissions permissions,
bool passwordSet,
const QUrl& url,
const QDate& expireDate)
-: Share(account, id, path, shareType, permissions),
+: Share(account, id, path, Share::TypeLink, permissions),
_passwordSet(passwordSet),
_expireDate(expireDate),
_url(url)
bool LinkShare::getPublicUpload()
{
- return ((_permissions & OcsShareJob::Permission::Update) &&
- (_permissions & OcsShareJob::Permission::Create));
+ return ((_permissions & PermissionUpdate) &&
+ (_permissions & PermissionCreate));
}
void LinkShare::setPublicUpload(bool publicUpload)
{
//TODO FIX permission with names
if (value.toBool()) {
- _permissions = 7;
+ _permissions = PermissionRead | PermissionUpdate | PermissionCreate;
} else {
- _permissions = 1;
+ _permissions = PermissionRead;
}
emit publicUploadSet();
OcsShareJob *job = new OcsShareJob(_account, this);
connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotLinkShareCreated(QVariantMap)));
connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString)));
- job->createShare(path, OcsShareJob::ShareType::Link, password);
+ job->createShare(path, Share::TypeLink, password);
}
void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
QSharedPointer<Share> newShare;
- if (shareType == OcsShareJob::ShareType::Link) {
+ if (shareType == Share::TypeLink) {
newShare = parseLinkShare(data);
} else {
newShare = QSharedPointer<Share>(new Share(_account,
data.value("id").toString(),
data.value("path").toString(),
- shareType,
- data.value("permissions").toInt()));
+ (Share::ShareType)shareType,
+ (Share::Permissions)data.value("permissions").toInt()));
}
shares.append(QSharedPointer<Share>(newShare));
return QSharedPointer<LinkShare>(new LinkShare(_account,
data.value("id").toString(),
data.value("path").toString(),
- data.value("share_type").toInt(),
- data.value("permissions").toInt(),
+ (Share::Permissions)data.value("permissions").toInt(),
data.value("share_with").isValid(),
url,
expireDate));
public:
+ /**
+ * Possible share types
+ */
+ enum ShareType {
+ TypeUser = 0,
+ TypeGroup = 1,
+ TypeLink = 3,
+ TypeRemote = 6,
+ };
+ Q_DECLARE_FLAGS(ShareTypes, ShareType)
+
+ /**
+ * Possible permissions
+ */
+ enum Permission {
+ PermissionRead = 1,
+ PermissionUpdate = 2,
+ PermissionCreate = 4,
+ PermissionDelete = 8,
+ PermissionShare = 16
+ };
+ Q_DECLARE_FLAGS(Permissions, Permission)
+
/*
* Constructor for shares
*/
explicit Share(AccountPtr account,
const QString& id,
const QString& path,
- int shareType,
- int permissions);
+ ShareType shareType,
+ Permissions permissions);
/*
* Get the id
/*
* Get the shareType
*/
- int getShareType() const;
+ ShareType getShareType() const;
/*
* Get permissions
*/
- int getPermissions() const;
+ Permissions getPermissions() const;
/*
* Set the permissions of a share
AccountPtr _account;
QString _id;
QString _path;
- int _shareType;
- int _permissions;
+ ShareType _shareType;
+ Permissions _permissions;
protected slots:
void slotOcsError(int statusCode, const QString &message);
explicit LinkShare(AccountPtr account,
const QString& id,
const QString& path,
- int shareType,
- int permissions,
+ Permissions permissions,
bool passwordSet,
const QUrl& url,
const QDate& expireDate);
QDate _expireDate;
QUrl _url;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(Share::Permissions)
/**
* The share manager allows for creating, retrieving and deletion