You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Extension of SystemLevel enumeration with the item for business users
10
121
*`NoteStore.createNotebook` method can now throw `EDAMNotFoundException` exception
11
122
* Addition of some new constants, enumerations and structs
123
+
* Switch to building with Qt5 by default from building with Qt4 by default: now for building with Qt4 CMake option `BUILD_WITH_QT4` should be enabled and CMake option `USE_QT5` is deprecated and no longer required
124
+
* A possibility to build QEverCloud with enabled sanitizers was added
125
+
* Fixed a bug related to network request timeout processing: API requests never timed out in case of network problems. Now API requests have timeout which by default is 180 seconds. It can be changed through calling `setConnectionTimeout` value.
126
+
12
127
13
128
## 4.0.0
14
129
* Migrate to Evernote API 1.28 from 1.25. Unfortunately, the changes in Evernote API are quite sufficient and hence
Copy file name to clipboardexpand all lines: src/qevercloud/README.md
+44-77
Original file line number
Diff line number
Diff line change
@@ -3,9 +3,7 @@ QEverCloud
3
3
4
4
**Unofficial Evernote Cloud API for Qt**
5
5
6
-
Travis CI (Linux, OS X): [](https://travis-ci.org/d1vanov/QEverCloud)
7
-
8
-
AppVeyor CI (Windows): [](https://ci.appveyor.com/project/d1vanov/qevercloud/branch/master)
@@ -20,45 +18,28 @@ your copy of Qt Creator to have context-sensitive help. See below for more detai
20
18
21
19
## How to contribute
22
20
23
-
Please see the [contribution guide](CONTRIBUTING.md) for detailed info.
21
+
See [contribution guide](CONTRIBUTING.md) for detailed info.
24
22
25
23
## Downloads
26
24
27
25
Prebuilt versions of the library can be downloaded from the following locations:
28
26
29
27
* Stable version:
30
28
* Windows binaries:
31
-
*[MSVC 2015 32 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud-windows-qt510-VS2015_x86.zip)
32
-
*[MSVC 2017 64 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud-windows-qt510-VS2017_x64.zip)
33
-
*[MinGW 32 bit Qt 5.5](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud-windows-qt55-MinGW_x86.zip)
34
-
*[Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud_mac_x86_64.zip) (built with latest Qt from Homebrew)
35
-
*[Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/qevercloud_linux_qt_592_x86_64.zip) built on Ubuntu 14.04 with Qt 5.9.2
29
+
*[MSVC 2019 32 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_windows_x86.zip)
30
+
*[MSVC 2019 64 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_windows_x64.zip)
31
+
*[Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_macos_x86_64.zip) (built with Qt 5.15.2)
32
+
*[Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-master/QEverCloud_linux_x86_64.zip) built on Ubuntu 20.04 with Qt 5.12.8
36
33
* Unstable version:
37
34
* Windows binaries:
38
-
*[MSVC 2015 32 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud-windows-qt510-VS2015_x86.zip)
39
-
*[MSVC 2017 64 bit Qt 5.10](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud-windows-qt510-VS2017_x64.zip)
40
-
*[MinGW 32 bit Qt 5.5](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud-windows-qt55-MinGW_x86.zip)
41
-
*[Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud_mac_x86_64.zip) (built with latest Qt from Homebrew)
42
-
*[Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/qevercloud_linux_qt_592_x86_64.zip) built on Ubuntu 14.04 with Qt 5.9.2
35
+
*[MSVC 2019 32 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_windows_x86.zip)
36
+
*[MSVC 2019 64 bit Qt 5.15.2](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_windows_x64.zip)
37
+
*[Mac binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_macos_x86_64.zip) (built with Qt 5.15.2)
38
+
*[Linux binary](https://github.com/d1vanov/QEverCloud/releases/download/continuous-development/QEverCloud_linux_x86_64.zip) built on Ubuntu 20.04 with Qt 5.12.8
43
39
44
40
## How to build
45
41
46
-
The project can be built and shipped as either static library or shared library. Dll export/import symbols necessary for Windows platform are supported.
47
-
48
-
Dependencies include the following Qt components:
49
-
* For Qt4: QtCore, QtGui, QtNetwork and, if the library is built with OAuth support, QtWebKit
50
-
* For Qt5: Qt5Core, Qt5Widgets, Qt5Network and, if the library is built with OAuth support, either:
51
-
* Qt5WebKit and Qt5WebKitWidgets - for Qt < 5.4
52
-
* Qt5WebEngine and Qt5WebEngineWidgets - for Qt < 5.6
53
-
* Qt5WebEngineCore and Qt5WebEngineWidgets - for Qt >= 5.6
54
-
55
-
Since QEverCloud 3.0.2 it is possible to choose Qt5WebKit over Qt5WebEngine using CMake option `USE_QT5_WEBKIT`.
56
-
57
-
Since QEverCloud 4.0.0 it is possible to build the library without OAuth support and thus without QtWebKit or QtWebEngine dependencies, for this use CMake option `BUILD_WITH_OAUTH_SUPPORT=NO`.
58
-
59
-
Also, if Qt4's QtTest or Qt5's Qt5Test modules are found during the pre-build configuration, the unit tests are enabled and can be run with `make test` command.
60
-
61
-
The project uses CMake build system which can be used as simply as follows (on Unix platforms):
42
+
QEverCloud uses CMake build system which can be used as simply as follows (on Unix platforms):
62
43
```
63
44
mkdir build
64
45
cd build
@@ -67,72 +48,58 @@ make
67
48
make install
68
49
```
69
50
70
-
Please note that installing the library somewhere is mandatory because it puts the library's headers into the subfolder dependent on used Qt version: either *qt4qevercloud* or *qt5qevercloud*. The intended use of library's headers is something like this:
71
-
```
72
-
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
73
-
#include <qt4qevercloud/QEverCloud.h>
74
-
#else
75
-
#include <qt5qevercloud/QEverCloud.h>
76
-
#endif
77
-
```
51
+
The library can be built and shipped either as a static library or a shared library. Dll export/import symbols necessary for Windows platform are supported.
78
52
79
-
If you just need to use the only one Qt version, you can skip the check and just include the header file you need.
53
+
QEverCloud uses C++14 standard. CMake automatically checks whether the compiler is capable enough of building QEverCloud so if the pre-build configuration step was successful, the build step should be successful as well. Known capable compilers are g++ 9 or later and Visual Studio 2019 or later.
80
54
81
-
More CMake configurations options available:
55
+
The recommended version of Qt5 for building the library is the latest Qt 5.15. However, it is also known to build and work with Qt 5.12.
82
56
83
-
*BUILD_DOCUMENTATION* - when *ON*, attempts to find Doxygen and in case of success adds *doc* target so the documentation can be built using `make doc` command after the `cmake ../` step. By default this option is on.
57
+
QEverCloud depends on the following Qt components:
58
+
* Qt5Core
59
+
* Qt5Widgets
60
+
* Qt5Network
61
+
* (Optional) Qt5WebKit an Qt5WebKitWidgets
62
+
* (Optional) Qt5WebEngine and Qt5WebEngineWidgets
84
63
85
-
*BUILD_QCH_DOCUMENTATION* - when *ON*, passes instructions on to Doxygen to build the documentation in *qch* format. This option only has any meaning if *BUILD_DOCUMENTATION* option is on. By default this option is off.
86
-
87
-
*BUILD_SHARED* - when *ON*, CMake configures the build for the shared library. By default this option is on.
64
+
The dependencies on Qt5WebKit or Qt5WebEngine are only actual if the library is built with OAuth support. But even then there is an option to build the library with OAuth support but without the dependency on either of these components. More on this below.
88
65
89
-
If *BUILD_SHARED* is *ON*, `make install` would install the CMake module necessary for applications using CMake's `find_package` command to find the installation of the library.
66
+
By default the library is built with OAuth support and uses Qt5WebEngine for it. The following cmake parameters are available to alter this behaviour:
67
+
*`-DBUILD_WITH_OAUTH_SUPPORT=NO` would disable building with OAuth support entirely.
68
+
*`-DUSE_QT5_WEBKIT=ON` would build the library with OAuth using Qt5WebKit for web page rendering.
69
+
*`-DQEVERCLOUD_USE_SYSTEM_BROWSER=ON` would build the library with OAuth not using either Qt5WebKit or Qt5WebEngine but instead delegating some portion of OAuth procedure to the system browser.
90
70
91
-
If *MAJOR_VERSION_LIB_NAME_SUFFIX*is on, `make install` would add the major version as a suffix to the library's name.
71
+
If Qt5's Qt5Test module is found during the pre-build configuration step, the unit tests are enabled and can be run with `make test` and more verbose `make check` commands.
92
72
93
-
If *MAJOR_VERSION_DEV_HEADERS_FOLDER_NAME_SUFFIX* is on, `make install` would install the development headers into the folder which name would end with the major version of QEverCloud.
73
+
Other available CMake configurations options:
94
74
95
-
The two latter options are intended to allow for easier installation of multiple major versions of QEverCloud.
75
+
*BUILD_DOCUMENTATION* - when *ON*, attempts to find Doxygen and in case of success adds *doc* target so the documentation can be built using `make doc` command after the pre-build configuration step. By default this option is on.
96
76
97
-
## Compatibility
98
-
99
-
The library can be built with both Qt4 and Qt5 versions of the framework. Since QEverCloud 4.1.0 the default one is Qt5. In order to force building with Qt4 version pass `-DBUILD_WITH_QT4=ON` option to CMake. Prior to QEverCloud 4.1.0 version of Qt used by default was Qt4. For those old versions in order to force building with Qt5 one needs to pass `-DUSE_QT5=1` option to CMake.
100
-
101
-
### API breaks from 2.x to 3.0
77
+
*BUILD_QCH_DOCUMENTATION* - when *ON*, passes instructions on to Doxygen to build the documentation in *qch* format. This option only has any meaning if *BUILD_DOCUMENTATION* option is on. By default this option is off.
102
78
103
-
The API breaks only include the relocation of header files required in order to use the library: in 2.x one could simply do
104
-
```
105
-
#include <QEverCloud.h>
106
-
```
107
-
while since 3.0 the intended way to use the installed shared library is the following:
108
-
```
109
-
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
110
-
#include <qt4qevercloud/QEverCloud.h>
111
-
#else
112
-
#include <qt5qevercloud/QEverCloud.h>
113
-
#endif
114
-
```
79
+
*BUILD_SHARED* - when *ON*, CMake configures the build for the shared library. By default this option is on.
115
80
116
-
### API breaks from 3.x to 4.0
81
+
*BUILD_WITH_Q_NAMESPACE* - when *ON*, `Q_NAMESPACE` and `Q_ENUM_NS` macros are used to add introspection capabilities to enumerations within `qevercloud` namespace. Qt >= 5.8 is required to enable this option. By default this option is enabled.
117
82
118
-
Tha API breaks in 4.0 inlcude a few changes caused by migration from Evernote API 1.25 to Evernote API 1.28. The breaks are listed in a [separate document](API_breaks_3_to_4.md).
83
+
*BUILD_TRANSLATIONS* - when *ON*, builds and installs translation files for translatable strings from QEverCloud.
119
84
120
-
### QtWebKit vs QWebEngine
85
+
If *BUILD_SHARED* is *ON*, `make install` installs CMake module necessary for applications using CMake's `find_package` command to find the installation of QEverCloud.
121
86
122
-
The library uses Qt's web facilities for OAuth authentication. These can be based on either QtWebKit (for Qt4 and older versions of Qt5) or QWebEngine (for more recent versions of Qt5). With CMake build system the choice happens automatically during the pre-build configuration based on the used version of Qt. One can also choose to use QtWebKit even with newer versions of Qt via CMake option `USE_QT5_WEBKIT`.
87
+
It is possible to build the library with enabled sanitizers using additional CMake options:
88
+
*`-DSANITIZE_ADDRESS=ON` to enable address sanitizer
89
+
*`-DSANITIZE_MEMORY=ON` to enable memory sanitizer
90
+
*`-DSANITIZE_THREAD=ON` to enable thread sanitizer
91
+
*`-DSANITIZE_UNDEFINED=ON` to enable undefined behaviour sanitizer
123
92
124
-
### C++11/14/17 features
93
+
##Include files for applications using the library
125
94
126
-
The library does not use any C++11/14/17 features directly but only through macros like `Q_DECL_OVERRIDE`, `Q_STATIC_ASSERT_X`, `QStringLiteral` and others. Some of these macros are also "backported" to Qt4 version of the library i.e. they are defined by the library itself for Qt4 version. So the library should be buildable even with not C++11/14/17-compliant compiler.
95
+
Two "cumulative" headers - *QEverCloud.h* or *QEverCloudOAuth.h* - include everything needed for the general and OAuth functionality correspondingly. More "fine-grained" headers can also be used if needed.
127
96
128
-
## Include files for applications using the library
97
+
## Seeding random numbers generator for Qt < 5.10
129
98
130
-
Two "cumulative" headers - *QEverCloud.h* or *QEverCloudOAuth.h* - include everything needed for the general and OAuth functionality correspondingly. More "fine-grained" headers are available within the same subfolder if needed.
99
+
QEverCloud requires random numbers generator for OAuth procedure. When QEverCloud is built against Qt >= 5.10, it uses `QRandomGenerator` which is cryptographically secure on supported platforms and is seeded by Qt internals. With Qt < 5.10 QEverCloud uses `qrand`. It requires the client application to call `qsrand` with seed value before using OAuth calls of QEverCloud. So if you are using QEverCloud built with Qt < 5.10, make sure to call `qsrand` before using QEverCloud's OAuth.
131
100
132
101
## Related projects
133
102
134
-
*[NotePoster](https://github.com/d1vanov/QEverCloud-example-NotePoster) is an example app using QEverCloud library to post notes to Evernote.
135
-
*[QEverCloud packaging](https://github.com/d1vanov/QEverCloud-packaging) repository contains various files and scripts required for building QEverCloud packages for various platforms and distributions.
136
-
*[QEverCloudGenerator](https://github.com/d1vanov/QEverCloudGenerator) repository contains the parser of [Evernote Thrift IDL files](https://github.com/evernote/evernote-thrift) generating headers and sources for QEverCloud library.
137
-
*[libquentier](https://github.com/d1vanov/libquentier) is a library for creating of feature rich full sync Evernote clients built on top of QEverCloud
103
+
*[QEverCloudGenerator](https://github.com/d1vanov/QEverCloudGenerator) repository hosts code generating parser of [Evernote Thrift IDL files](https://github.com/evernote/evernote-thrift). This parser is used to autogenerate a portion of QEverCloud's headers and sources.
104
+
*[libquentier](https://github.com/d1vanov/libquentier) is a library for creating feature rich full sync Evernote clients built on top of QEverCloud
138
105
*[Quentier](https://github.com/d1vanov/quentier) is an open source desktop note taking app capable of working as Evernote client built on top of libquentier and QEverCloud
0 commit comments