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 EwsFindItemRequest : public EwsRequest
15 {
16     Q_OBJECT
17 public:
18     explicit EwsFindItemRequest(EwsClient &client, QObject *parent);
19     ~EwsFindItemRequest() override;
20 
21     void setFolderId(const EwsId &id);
22     void setItemShape(const EwsItemShape &shape);
setTraversal(EwsTraversalType traversal)23     void setTraversal(EwsTraversalType traversal)
24     {
25         mTraversal = traversal;
26     }
27 
28     void setPagination(EwsIndexedViewBasePoint basePoint, unsigned offset, int maxItems = -1)
29     {
30         mFractional = false;
31         mMaxItems = maxItems;
32         mPageBasePoint = basePoint;
33         mPageOffset = offset;
34         mPagination = true;
35     }
36 
37     void setFractional(unsigned numerator, unsigned denominator, int maxItems = -1)
38     {
39         mPagination = false;
40         mMaxItems = maxItems;
41         mFracNumerator = numerator;
42         mFracDenominator = denominator;
43         mFractional = true;
44     }
45 
46     void start() override;
47 
includesLastItem()48     bool includesLastItem() const
49     {
50         return mIncludesLastItem;
51     }
52 
nextOffset()53     int nextOffset() const
54     {
55         return mNextOffset;
56     }
57 
nextNumerator()58     int nextNumerator() const
59     {
60         return mNextNumerator;
61     }
62 
nextDenominator()63     int nextDenominator() const
64     {
65         return mNextDenominator;
66     }
67 
items()68     const QList<EwsItem> items() const
69     {
70         return mItems;
71     }
72 
73 protected:
74     bool parseResult(QXmlStreamReader &reader) override;
75     bool parseItemsResponse(QXmlStreamReader &reader);
76 
77 private:
78     EwsId mFolderId;
79     EwsItemShape mShape;
80     EwsTraversalType mTraversal;
81     bool mPagination;
82     EwsIndexedViewBasePoint mPageBasePoint;
83     unsigned mPageOffset;
84     bool mFractional;
85     int mMaxItems;
86     unsigned mFracNumerator;
87     unsigned mFracDenominator;
88     QList<EwsItem> mItems;
89     unsigned mTotalItems;
90     int mNextOffset;
91     int mNextNumerator;
92     int mNextDenominator;
93     bool mIncludesLastItem;
94 };
95 
96