void ShareManager::slotCreateShare(const QVariantMap &reply) { if (!_jobContinuation.contains(sender())) return; CreateShare cont = _jobContinuation[sender()].value<CreateShare>(); if (cont.path.isEmpty()) return; _jobContinuation.remove(sender()); // Find existing share permissions (if this was shared with us) Share::Permissions existingPermissions = SharePermissionDefault; foreach (const QVariant & element, reply["ocs"].toMap()["data"].toList()) { QVariantMap map = element.toMap(); if (map["file_target"] == cont.path) existingPermissions = Share::Permissions(map["permissions"].toInt()); } // Limit the permissions we request for a share to the ones the item // was shared with initially. if (cont.permissions == SharePermissionDefault) { cont.permissions = existingPermissions; } else if (existingPermissions != SharePermissionDefault) { cont.permissions &= existingPermissions; } OcsShareJob *job = new OcsShareJob(_account); connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotShareCreated(QVariantMap))); connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString))); job->createShare(cont.path, cont.shareType, cont.shareWith, cont.permissions); }
void ShareManager::createShare(const QString& path, const Share::ShareType shareType, const QString shareWith, const Share::Permissions permissions) { OcsShareJob *job = new OcsShareJob(_account); connect(job, SIGNAL(shareJobFinished(QVariantMap, QVariant)), SLOT(slotShareCreated(QVariantMap))); connect(job, SIGNAL(ocsError(int, QString)), SLOT(slotOcsError(int, QString))); job->createShare(path, shareType, shareWith, permissions); }