1 /* 2 SPDX-FileCopyrightText: 2015-2016 Krzysztof Nowicki <krissn@op.pl> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #pragma once 8 9 #include "ewsitem.h" 10 #include "ewsitemshape.h" 11 #include "ewsrequest.h" 12 #include "ewstypes.h" 13 14 class EwsSyncFolderItemsRequest : public EwsRequest 15 { 16 Q_OBJECT 17 public: 18 enum ChangeType { 19 Create, 20 Update, 21 Delete, 22 ReadFlagChange, 23 Unknown, 24 }; 25 26 class Response; 27 28 class Change 29 { 30 public: 31 typedef QVector<Change> List; 32 type()33 ChangeType type() const 34 { 35 return mType; 36 } 37 itemId()38 const EwsId &itemId() const 39 { 40 return mId; 41 } 42 item()43 const EwsItem &item() const 44 { 45 return mItem; 46 } 47 isRead()48 bool isRead() const 49 { 50 return mIsRead; 51 } 52 53 protected: 54 Change(QXmlStreamReader &reader); isValid()55 bool isValid() const 56 { 57 return mType != Unknown; 58 } 59 60 ChangeType mType; 61 EwsId mId; 62 EwsItem mItem; 63 bool mIsRead; 64 65 friend class Response; 66 }; 67 68 EwsSyncFolderItemsRequest(EwsClient &client, QObject *parent); 69 ~EwsSyncFolderItemsRequest() override; 70 71 void setFolderId(const EwsId &id); 72 void setItemShape(const EwsItemShape &shape); 73 void setSyncState(const QString &state); 74 void setMaxChanges(uint max); 75 76 void start() override; 77 includesLastItem()78 bool includesLastItem() const 79 { 80 return mIncludesLastItem; 81 } 82 changes()83 const Change::List &changes() const 84 { 85 return mChanges; 86 } 87 syncState()88 const QString &syncState() const 89 { 90 return mSyncState; 91 } 92 93 protected: 94 bool parseResult(QXmlStreamReader &reader) override; 95 bool parseItemsResponse(QXmlStreamReader &reader); 96 97 private: 98 EwsId mFolderId; 99 EwsItemShape mShape; 100 QString mSyncState; 101 uint mMaxChanges; 102 Change::List mChanges; 103 bool mIncludesLastItem; 104 }; 105 106 Q_DECLARE_METATYPE(EwsSyncFolderItemsRequest::Change::List) 107 108