[Pkg-owncloud-commits] [owncloud-client] 211/484: Use proper QFlags

Sandro Knauß hefee-guest at moszumanska.debian.org
Wed Dec 16 00:37:44 UTC 2015


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit c7b814337a3bb2465f38dbc40cf225a012a1ec3e
Author: Roeland Jago Douma <rullzer at owncloud.com>
Date:   Thu Oct 29 21:47:47 2015 +0100

    Use proper QFlags
    
    Now the ShareTypes and Permissions are part of the Share class (which is
    a bit better abstracted away).
---
 src/gui/ocssharejob.cpp |  2 +-
 src/gui/ocssharejob.h   | 22 ++--------------------
 src/gui/share.cpp       | 35 ++++++++++++++++++-----------------
 src/gui/share.h         | 39 +++++++++++++++++++++++++++++++--------
 src/gui/sharedialog.cpp |  3 +--
 src/gui/sharedialog.h   |  5 +++--
 6 files changed, 56 insertions(+), 50 deletions(-)

diff --git a/src/gui/ocssharejob.cpp b/src/gui/ocssharejob.cpp
index f5a871b..fe6afa6 100644
--- a/src/gui/ocssharejob.cpp
+++ b/src/gui/ocssharejob.cpp
@@ -83,7 +83,7 @@ void OcsShareJob::setPublicUpload(const QString &shareId, bool publicUpload)
     start();
 }
 
-void OcsShareJob::createShare(const QString &path, ShareType shareType, const QString &password, const QDate &date)
+void OcsShareJob::createShare(const QString &path, Share::ShareType shareType, const QString &password, const QDate &date)
 {
     setVerb("POST");
 
diff --git a/src/gui/ocssharejob.h b/src/gui/ocssharejob.h
index c029bd8..c970df9 100644
--- a/src/gui/ocssharejob.h
+++ b/src/gui/ocssharejob.h
@@ -15,6 +15,7 @@
 #define OCSSHAREJOB_H
 
 #include "ocsjob.h"
+#include "share.h"
 #include <QVector>
 #include <QList>
 #include <QPair>
@@ -33,25 +34,6 @@ class OcsShareJob : public OcsJob {
 public:
 
     /**
-     * Support sharetypes
-     */
-    enum ShareType : int {
-        Link = 3
-    };
-
-    /**
-     * Possible permissions
-     */
-    enum Permission : int {
-        Read = 1,
-        Update = 2,
-        Create = 4,
-        Delete = 8,
-        Share = 16,
-        All = 31
-    };
-
-    /**
      * Constructor for new shares or listing of shares
      */
     explicit OcsShareJob(AccountPtr account, QObject *parent = 0);
@@ -99,7 +81,7 @@ public:
      * @param password Optionally a password for the share
      * @param date Optionally an expire date for the share
      */
-    void createShare(const QString& path, ShareType shareType, const QString& password = "", const QDate& date = QDate());
+    void createShare(const QString& path, Share::ShareType shareType, const QString& password = "", const QDate& date = QDate());
 
 signals:
     /**
diff --git a/src/gui/share.cpp b/src/gui/share.cpp
index 06ce066..7a62fe3 100644
--- a/src/gui/share.cpp
+++ b/src/gui/share.cpp
@@ -19,8 +19,11 @@
 
 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),
@@ -35,12 +38,12 @@ QString Share::getId() const
     return _id;
 }
 
-int Share::getShareType() const
+Share::ShareType Share::getShareType() const
 {
     return _shareType;
 }
 
-int Share::getPermissions() const
+Share::Permissions Share::getPermissions() const
 {
     return _permissions;
 }
@@ -81,12 +84,11 @@ bool LinkShare::isPasswordSet() const
 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)
@@ -96,8 +98,8 @@ LinkShare::LinkShare(AccountPtr account,
 
 bool LinkShare::getPublicUpload()
 {
-    return ((_permissions & OcsShareJob::Permission::Update) &&
-            (_permissions & OcsShareJob::Permission::Create));
+    return ((_permissions & PermissionUpdate) &&
+            (_permissions & PermissionCreate));
 }
 
 void LinkShare::setPublicUpload(bool publicUpload)
@@ -112,9 +114,9 @@ void LinkShare::slotPublicUploadSet(const QVariantMap&, const QVariant &value)
 {
     //TODO FIX permission with names
     if (value.toBool()) {
-        _permissions = 7;
+        _permissions = PermissionRead | PermissionUpdate | PermissionCreate;
     } else {
-        _permissions = 1;
+        _permissions = PermissionRead;
     }
 
     emit publicUploadSet();
@@ -161,7 +163,7 @@ void ShareManager::createLinkShare(const QString &path,
     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)
@@ -208,14 +210,14 @@ void ShareManager::slotSharesFetched(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));    
@@ -249,8 +251,7 @@ QSharedPointer<LinkShare> ShareManager::parseLinkShare(const QVariantMap &data)
     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));
diff --git a/src/gui/share.h b/src/gui/share.h
index fca2c24..41c7106 100644
--- a/src/gui/share.h
+++ b/src/gui/share.h
@@ -30,14 +30,37 @@ class Share : public QObject {
 
 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
@@ -47,12 +70,12 @@ public:
     /*
      * Get the shareType
      */
-    int getShareType() const;
+    ShareType getShareType() const;
 
     /*
      * Get permissions
      */
-    int getPermissions() const;
+    Permissions getPermissions() const;
 
     /*
      * Set the permissions of a share
@@ -79,8 +102,8 @@ protected:
     AccountPtr _account;
     QString _id;
     QString _path;
-    int _shareType;
-    int _permissions;
+    ShareType _shareType;
+    Permissions _permissions;
 
 protected slots:
     void slotOcsError(int statusCode, const QString &message);
@@ -102,8 +125,7 @@ public:
     explicit LinkShare(AccountPtr account,
                        const QString& id,
                        const QString& path,
-                       int shareType,
-                       int permissions,
+                       Permissions permissions,
                        bool passwordSet,
                        const QUrl& url,
                        const QDate& expireDate);
@@ -168,6 +190,7 @@ private:
     QDate _expireDate;
     QUrl _url;
 };
+Q_DECLARE_OPERATORS_FOR_FLAGS(Share::Permissions)
 
 /**
  * The share manager allows for creating, retrieving and deletion
diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp
index 4cdc28b..3b47057 100644
--- a/src/gui/sharedialog.cpp
+++ b/src/gui/sharedialog.cpp
@@ -23,7 +23,6 @@
 #include "configfile.h"
 #include "capabilities.h"
 
-#include "ocssharejob.h"
 #include "thumbnailjob.h"
 #include "share.h"
 
@@ -272,7 +271,7 @@ void ShareDialog::slotSharesFetched(const QList<QSharedPointer<Share>> &shares)
 
     Q_FOREACH(auto share, shares) {
 
-        if (share->getShareType() == static_cast<int>(OcsShareJob::ShareType::Link)) {
+        if (share->getShareType() == Share::TypeLink) {
             _share = qSharedPointerDynamicCast<LinkShare>(share);
             _ui->pushButton_copy->show();
 
diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h
index fea7015..6b0c089 100644
--- a/src/gui/sharedialog.h
+++ b/src/gui/sharedialog.h
@@ -22,8 +22,6 @@
 #include <QSharedPointer>
 #include <QList>
 
-#include "share.h"
-
 namespace OCC {
 
 namespace Ui {
@@ -33,6 +31,9 @@ class ShareDialog;
 class AbstractCredentials;
 class QuotaInfo;
 class SyncResult;
+class LinkShare;
+class Share;
+class ShareManager;
 
 /**
  * @brief The ShareDialog class

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list