Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}