Skip to content

Commit de9295c

Browse files
committedApr 19, 2023
Merge remote-tracking branch 'origin/dev-2.1.10' into develop
2 parents 869b615 + addb911 commit de9295c

18 files changed

+195
-873
lines changed
 

‎changelog.txt

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
NixNote (2.1.10) stable; urgency=low
2+
* Authentication (Evernote login) now uses system browser which fixes login problems and also enables to use all
3+
login options supported by Evernote (multifactor authentication, login by Google etc.)
4+
* AppImage is now built on Ubuntu 20.04 (focal) - i.e. will not run on older distribution that Ubuntu 20.04,
5+
should of course run on all newer systems
6+
* AppImage is now created by linuxdeploy tool (instead of linuxdeployqt)
7+
* Removed the usage of custom built tidy-html5 in favour of the package provided by distribution
8+
* Updated Evernote client - QEverCloud version 4.1.0 to 6.2.0
9+
* All changes thanks to https://github.com/d1vanov
10+
-- Robert Spiegel <nightingale7@gmail.com> Wed, 19 Apr 2023 19:11:10 +0200
11+
112
NixNote (2.1.9) stable; urgency=low
213
* Added a new dark theme.
314
* Optimised the sql statements of note creating and updating.
@@ -12,6 +23,7 @@ NixNote (2.1.9) stable; urgency=low
1223
* RAM usage optimizations.
1324
* Fixed file downloading under Windows.
1425
* Made the editor not render the note content when Key_Up or Key_Down keeps being pressed.
26+
* All changes thanks to https://github.com/boo-yee
1527
-- Robert Spiegel <nightingale7@gmail.com> Sat, 15 Apr 2023 12:15:22 +0200
1628

1729
NixNote (2.1.8) stable; urgency=low
@@ -24,6 +36,7 @@ NixNote (2.1.8) stable; urgency=low
2436
* Fixed: Nixnote2 exits when network gets disconnected - issue #189
2537
* Fixed: Import all notes, tag issue - issue #153
2638
* Fixed: Local images cannot be pasted, images in notes cannot be saved.
39+
* All changes thanks to https://github.com/boo-yee
2740
-- Robert Spiegel <nightingale7@gmail.com> Sat, 10 Sep 2022 10:00:00 +0200
2841

2942
NixNote (2.1.7) stable; urgency=low

‎debian/changelog

+14
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
NixNote (2.1.10) stable; urgency=low
2+
* Authentication (Evernote login) now uses system browser which fixes login problems and also enables to use all
3+
login options supported by Evernote (multifactor authentication, login by Google etc.)
4+
* AppImage is now built on Ubuntu 20.04 (focal) - i.e. will not run on older distribution that Ubuntu 20.04,
5+
should of course run on all newer systems
6+
* AppImage is now created by linuxdeploy tool (instead of linuxdeployqt)
7+
* Removed the usage of custom built tidy-html5 in favour of the package provided by distribution
8+
* Updated Evernote client - QEverCloud version 4.1.0 to 6.2.0
9+
* All changes thanks to https://github.com/d1vanov
10+
-- Robert Spiegel <nightingale7@gmail.com> Wed, 19 Apr 2023 19:11:10 +0200
11+
112
NixNote (2.1.9) stable; urgency=low
213
* Added a new dark theme.
314
* Optimised the sql statements of note creating and updating.
@@ -12,6 +23,7 @@ NixNote (2.1.9) stable; urgency=low
1223
* RAM usage optimizations.
1324
* Fixed file downloading under Windows.
1425
* Made the editor not render the note content when Key_Up or Key_Down keeps being pressed.
26+
* All changes thanks to https://github.com/boo-yee
1527
-- Robert Spiegel <nightingale7@gmail.com> Sat, 15 Apr 2023 12:15:22 +0200
1628

1729
NixNote (2.1.8) stable; urgency=low
@@ -24,6 +36,7 @@ NixNote (2.1.8) stable; urgency=low
2436
* Fixed: Nixnote2 exits when network gets disconnected - issue #189
2537
* Fixed: Import all notes, tag issue - issue #153
2638
* Fixed: Local images cannot be pasted, images in notes cannot be saved.
39+
* All changes thanks to https://github.com/boo-yee
2740
-- Robert Spiegel <nightingale7@gmail.com> Sat, 10 Sep 2022 10:00:00 +0200
2841

2942
NixNote (2.1.7) stable; urgency=low
@@ -449,3 +462,4 @@ NixNote (2.0-beta-3) stable; urgency=low
449462
NixNote (2.0-beta-2) stable; urgency=low
450463
* Beta 2. Lots of bug fixes and removal of Thrift.
451464
-- Randy Baumgarte <randy@fbn.cx> Sat, 26 Apr 2014 14:00:00 -0400
465+

‎development/build-dependencies-ubuntu-2004.sh

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#!/bin/bash
22

3+
## 2023.04: this file is not updated see docker/Dockerfile.ubuntu_focal
4+
5+
36
# preparation
47
# sudo apt update
58
# sudo apt upgrade

‎development/build-with-docker.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ time docker run \
4949
-v $PROJECTDIR/docker-build-${BUILD_TYPE}:/opt/nixnote2/qmake-build-${BUILD_TYPE} \
5050
-v $PROJECTDIR/docker-build-${BUILD_TYPE}-t:/opt/nixnote2/qmake-build-${BUILD_TYPE}-t \
5151
-it ${DOCKERTAG} \
52-
/bin/bash -c "cd nixnote2 && git fetch && git checkout --track origin/$PROJECTBRANCH && git reset --hard origin/$PROJECTBRANCH && ./development/build-with-qmake.sh ${BUILD_TYPE} noclean /usr/lib/nixnote2/tidy browser && ./development/run-tests.sh ${BUILD_TYPE} noclean /usr/lib/nixnote2/tidy && ./development/create-AppImage-linuxdeploy.sh && mv *.AppImage appdir && chmod -R a+rwx appdir/*.AppImage"
52+
/bin/bash -c "cd nixnote2 && git fetch && git checkout --track origin/$PROJECTBRANCH && git reset --hard origin/$PROJECTBRANCH && ./development/build-with-qmake.sh ${BUILD_TYPE} noclean /usr/lib browser && ./development/run-tests.sh ${BUILD_TYPE} noclean /usr/lib && ./development/create-AppImage-linuxdeploy.sh && mv *.AppImage appdir && chmod -R a+rwx appdir/*.AppImage"
5353

5454
ls appdir/*.AppImage
5555
echo "If all got well then AppImage file in appdir is your binary"

‎development/docker/Dockerfile.ubuntu_focal

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ ENV PATH="${wdir}/linuxdeploy:${wdir}/linuxdeploy-plugin-qt:${wdir}/appimagetool
88
ENV DEBIAN_FRONTEND=noninteractive
99

1010
RUN apt-get update && apt-get install -y software-properties-common
11-
RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && apt-get update -qq
11+
#RUN add-apt-repository ppa:nixnote/nixnote2-stable -y && apt-get update -qq
1212
RUN apt-get update && apt-get install -y git-core qt5-default build-essential ccache p7zip-full libssl1.1 libcrypt1 libnss3 \
1313
wget curl make pkg-config \
1414
qtwebengine5-dev qtwebengine5-dev-tools \
1515
libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev libcurl4-openssl-dev \
16-
libpoppler-qt5-dev libqt5webkit5-dev qt5-qmake qttools5-dev-tools libhunspell-dev nixnote2-tidy
16+
libpoppler-qt5-dev libqt5webkit5-dev qt5-qmake qttools5-dev-tools libhunspell-dev libtidy-dev libqt5positioning5-plugins
1717

1818
# install linuxdeploy
1919
RUN wget -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" && \

‎development/docker/Dockerfile.ubuntu_trusty

-67
This file was deleted.

‎development/docker/Dockerfile.ubuntu_xenial

-47
This file was deleted.

‎development/docker/Dockerfile.ubuntu_xenial_qt510

-33
This file was deleted.

‎development/docker/Dockerfile.ubuntu_xenial_qt511

-32
This file was deleted.

‎development/docker/Dockerfile.ubuntu_xenial_qt562

-33
This file was deleted.

‎development/docker/Dockerfile.ubuntu_xenial_qt59

-33
This file was deleted.

‎src/qevercloud/.appveyor.yml

-67
This file was deleted.

‎src/qevercloud/.travis.yml

-132
This file was deleted.

‎src/qevercloud/API_breaks_3_to_4.md

-81
This file was deleted.

‎src/qevercloud/CHANGELOG.md

+118-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,129 @@
11
# Changelog
22

3+
## 6.2.0
4+
* Fix OAuth with Qt5WebKit with a hack
5+
* Implement OAuth via system browser so that neither Qt5WebKir nor Qt5WebEngine could be required
6+
7+
## 6.1.0
8+
* Add ability to retrieve cookies set by Evernote during OAuth procedure and add
9+
ability to specify cookies in request context for Evernote API calls. These cookies
10+
suddenly became required in order to execute UserStore API calls.
11+
12+
## 6.0.0
13+
* Replaced evernoteNetworkAccessManager function with several functions which
14+
allow to set up network proxy settings. The motivation was the necessity to
15+
stop using global static instance of QNetworkAccessManager as it started to lead
16+
to crashes with recent versions of Qt, at least on Windows.
17+
18+
## 5.1.0
19+
* Restricted the scope of `Q_NAMESPACE` and `Q_ENUM_NS` usage to a single header
20+
file containing the declarations of EDAM error codes to avoid moc failures with
21+
recent Qt versions.
22+
23+
## 5.0.0
24+
* **A lot of new features were added in this release which unfortunately
25+
required to introduce several API breaks.**
26+
* Network requests sent to Evernote service via `NoteStore` and `UserStore`
27+
method calls are now automatically retried if network occasionally fails.
28+
Retry logic can be parametrized on `NoteStore` or `UserStore` level
29+
or per each particular method call.
30+
* `IRequestContext` interface was introduced and added to all methods of
31+
`NoteStore` and `UserStore` as well as to their constructors. This interface
32+
allows to specify and track various parameters for each request done from
33+
QEverCloud to Evernote service: each such request (i.e. each `NoteStore` and
34+
`UserStore` method call) now has a unique identifier, timeout, parameters
35+
controlling automatic retry of requests which failed due to network problems.
36+
Authentication token used for requests to Evernote service is also a part of
37+
`IRequestContext` interface so it can be conveniently specified for `NoteStore`
38+
and `UserStore` on their construction and overridden for individual requests
39+
if necessary.
40+
* Due to the introduction of request contexts global functions `connectionTimeout`
41+
and `setConnectionTimeout` were removed. Their names were misleading as they
42+
were actually request timeouts.
43+
* Enumerations were migrated to strongly typed ones of modern C++, i.e. they
44+
are `enum class` now and require explicit cast for conversion to/from integer
45+
types. There is also no `structs` wrapping enums called `type` anymore so e.g.
46+
`EDAMErrorCode::type` values are now simply `EDAMErrorCode` ones.
47+
* Enumerations were also marked with [Q_ENUM_NS](https://doc.qt.io/qt-5/qobject.html#Q_ENUM_NS)
48+
macro if QEverCloud is built with Qt >= 5.8 and if the corresponding CMake
49+
option is enabled. This macro adds some introspection capabilities for
50+
the bespoke enumerations.
51+
* A dedicated exception class representing network failures was added -
52+
`NetworkException`. As other QEverCloud's exceptions, it is a subclass of
53+
`EverCloudException`. By default QEverCloud catches such exceptions on its
54+
own and retries the request up to several times.
55+
* Some introspection capabilities were added to QEverCloud types: they now have
56+
[Q_GADGET](https://doc.qt.io/qt-5/qobject.html#Q_GADGET) macro and each of
57+
their attributes is registered as a [Q_PROPERTY](https://doc.qt.io/qt-5/qobject.html#Q_PROPERTY).
58+
* In order to support the above mentioned introspection of QEverCloud types
59+
`Optional` template class implementation was changed: `operator==` and
60+
`operator!=` accepting another `Optional` were added to it. Unfortunately, it
61+
has lead to some complications: you can no longer do comparisons like
62+
```
63+
Optional<int> a = 42;
64+
double b = 1.0;
65+
bool res = (a == b);
66+
```
67+
Instead you need to cast the right hand side expression to proper type:
68+
```
69+
Optional<int> a = 42;
70+
double b = 1.0;
71+
bool res = (a == static_cast<int>(b));
72+
```
73+
* Each QEverCloud type corresponding to Evernote API's type now has a member
74+
called `localData` of class `EverCloudLocalData`. That class encapsulates some
75+
attributes which are not present within Evernote API's types and thus do not
76+
take part in communication with Evernote but they nevertheless can be useful
77+
for implementation of rich Evernote client applications performing full and
78+
partial synchronization of data with Evernote. `EverCloudLocalData`
79+
contains:
80+
* `id` string which by default is generated as a `QUuid` but can be substituted
81+
with any string value
82+
* `dirty`, `local` and `favorited` boolean flags
83+
* `dict` which is a collection of arbitrary data in the form of `QVariant`s
84+
indexed by strings
85+
* Logging system was added to QEverCloud. It exists as `ILogger` interface
86+
which you can implement and thus integrate QEverCloud's logging into your
87+
application's logging system whatever that is. For convenience in debugging
88+
QEverCloud also provides an option to dump log messages to stderr.
89+
* For proper support of logging all QEverCloud's types, enumerations and
90+
exceptions were made printable i.e. they can now be used with `QTextStream`
91+
and `QDebug` to produce human readable representation of their values.
92+
* `NoteStore` and `UserStore` classes were converted to `INoteStore` and
93+
`IUserStore` abstract interfaces. It made the implementation of request retrying
94+
logic simpler and it is now possible to substitute your own implementations
95+
of `INoteStore` and/or `IUserStore`, for example, for unit tests of your code
96+
using QEverCloud.
97+
* Implementation of `NoteStore` and `UserStore` servers was added to QEverCloud.
98+
These classes can be used to implement your own backend substituting real Evernote
99+
service.
100+
* Unit tests using the functionality of the above mentioned servers were added
101+
to QEverCloud. Unit tests ensure the correctness of transport layer's implementation
102+
i.e. the correctness of packing requests to Thrift format and unpacking the
103+
responses ensuring that no data is lost or corrupted on either step. Hundreds
104+
of tests covering literally every single method of `NoteStore` and `UserStore`
105+
were added.
106+
* Some header files were renamed so that they all start from capital letters
107+
now.
108+
* Support for Qt < 5.5 as well as support for building QEverCloud with older
109+
compilers has been dropped. QEverCloud is now built with C++14 standard
110+
although it does not use much of its features so even some not fully compliant
111+
compilers can still build QEverCloud. Minimal supported gcc version is 5.4,
112+
minimal supported Visual Studio version is 2017.
113+
3114
## 4.1.0
4-
* Migrate to Evernote API 1.29 to 1.28. The changes are incremental and API is not broken. ABI is changed though,
115+
* Migrate to Evernote API 1.29 from 1.28. The changes are incremental and API is not broken. ABI is changed though,
5116
hence minor version number increase. The changes in API include:
6117
* Extension of `EDAMErrorCode` enumeration with new error codes
7118
* Extension of `NoteFilter`, `NoteList`, `NotesMetadataList`, `RelatedResult`, `RelatedResultSpec`, `UserAttributes`,
8119
`NotebookRecipientSettings`, `NotebookRestrictions`, `UserProfile`, `BusinessInvitation` structs
9120
* Extension of SystemLevel enumeration with the item for business users
10121
* `NoteStore.createNotebook` method can now throw `EDAMNotFoundException` exception
11122
* 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+
12127

13128
## 4.0.0
14129
* Migrate to Evernote API 1.28 from 1.25. Unfortunately, the changes in Evernote API are quite sufficient and hence
@@ -54,7 +169,7 @@
54169

55170
## 2.0
56171
* Qt 4 is no longer supported.
57-
* Asynchronous API is introdused.
172+
* Asynchronous API is introduced.
58173
* Various non-critical fixes and improvements.
59174

60175
## 1.2
@@ -69,4 +184,4 @@
69184

70185
## 1.0
71186
* Initial release.
72-
187+

‎src/qevercloud/CodingStyle.md

-172
This file was deleted.

‎src/qevercloud/README.md

+44-77
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ QEverCloud
33

44
**Unofficial Evernote Cloud API for Qt**
55

6-
Travis CI (Linux, OS X): [![Build Status](https://travis-ci.org/d1vanov/QEverCloud.svg?branch=master)](https://travis-ci.org/d1vanov/QEverCloud)
7-
8-
AppVeyor CI (Windows): [![Build status](https://ci.appveyor.com/api/projects/status/75vtxm2o18u4atw0/branch/master?svg=true)](https://ci.appveyor.com/project/d1vanov/qevercloud/branch/master)
6+
![master](https://github.com/d1vanov/QEverCloud/workflows/Build/badge.svg?branch=master)
97

108
## What's this
119

@@ -20,45 +18,28 @@ your copy of Qt Creator to have context-sensitive help. See below for more detai
2018

2119
## How to contribute
2220

23-
Please see the [contribution guide](CONTRIBUTING.md) for detailed info.
21+
See [contribution guide](CONTRIBUTING.md) for detailed info.
2422

2523
## Downloads
2624

2725
Prebuilt versions of the library can be downloaded from the following locations:
2826

2927
* Stable version:
3028
* 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
3633
* Unstable version:
3734
* 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
4339

4440
## How to build
4541

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):
6243
```
6344
mkdir build
6445
cd build
@@ -67,72 +48,58 @@ make
6748
make install
6849
```
6950

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.
7852

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.
8054

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.
8256

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
8463

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.
8865

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.
9070

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.
9272

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:
9474

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.
9676

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.
10278

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.
11580

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.
11782

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.
11984

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.
12186

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
12392

124-
### C++11/14/17 features
93+
## Include files for applications using the library
12594

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.
12796

128-
## Include files for applications using the library
97+
## Seeding random numbers generator for Qt < 5.10
12998

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.
131100

132101
## Related projects
133102

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
138105
* [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

‎src/qevercloud/appveyor.yml

-93
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.