1
0
mirror of https://github.com/chylex/Nextcloud-Desktop.git synced 2026-04-03 09:11:33 +02:00

Compare commits

..

85 Commits

Author SHA1 Message Date
Matthieu Gallien
04afaa1fe6 Merge pull request #3373 from nextcloud/bump-version-3.2.2
Bump version to 3.2.2
2021-05-27 14:18:17 +02:00
Felix Weilbach
60f3b7781e Bump version to 3.2.2
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-05-27 14:14:50 +02:00
Nextcloud bot
c626033445 [tx-robot] updated from transifex 2021-05-27 04:00:48 +00:00
Nextcloud bot
76687ce8fd [tx-robot] updated from transifex 2021-05-26 04:04:32 +00:00
allexzander
7c987281cc Merge pull request #3357 from nextcloud/backport/3239/stable-3.2
[stable-3.2] VFS. Display local file name clash error when syncing in VFS mode.
2021-05-25 14:27:17 +03:00
allexzander
91dd481f1a VFS. Display local file name clash error when syncing in VFS mode.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-05-25 10:34:35 +00:00
allexzander
7b725f04e0 Merge pull request #3358 from nextcloud/backport/3246/stable-3.2
[stable-3.2] VFS. Allow dehydartion of readonly files. Preserve 'readonly' flag when creating a placeholder.
2021-05-25 13:33:28 +03:00
allexzander
0b776d2be2 Fix review comments.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-05-25 07:58:00 +00:00
allexzander
7960aca617 VFS. Allow dehydartion of readonly files. Preserve 'readonly' flag when creating a placeholder.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-05-25 07:58:00 +00:00
Nextcloud bot
da4b016b7c [tx-robot] updated from transifex 2021-05-25 04:04:00 +00:00
Nextcloud bot
c82491ebe3 [tx-robot] updated from transifex 2021-05-24 03:57:52 +00:00
Nextcloud bot
025e4a600a [tx-robot] updated from transifex 2021-05-23 03:59:29 +00:00
Nextcloud bot
cb52e36e08 [tx-robot] updated from transifex 2021-05-22 04:03:25 +00:00
Nextcloud bot
f8b7d5bc84 [tx-robot] updated from transifex 2021-05-21 04:05:49 +00:00
Nextcloud bot
0b703ed518 [tx-robot] updated from transifex 2021-05-20 04:17:02 +00:00
Nextcloud bot
19aa80116f [tx-robot] updated from transifex 2021-05-19 04:17:29 +00:00
Nextcloud bot
faa5b2ef54 [tx-robot] updated from transifex 2021-05-18 03:59:47 +00:00
Matthieu Gallien
0778b2178f Merge pull request #3327 from nextcloud/backport/3308/stable-3.2
[stable-3.2] upgrade SQLite3 to 3.35.5
2021-05-17 12:18:02 +02:00
Matthieu Gallien
4f0a8995c2 upgrade SQLite3 to 3.35.5
Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-05-17 09:59:02 +00:00
Nextcloud bot
b5e5985fcb [tx-robot] updated from transifex 2021-05-17 03:58:32 +00:00
Nextcloud bot
705990291b [tx-robot] updated from transifex 2021-05-16 04:01:18 +00:00
Nextcloud bot
364e02bdb0 [tx-robot] updated from transifex 2021-05-15 04:02:31 +00:00
Nextcloud bot
981d94c139 [tx-robot] updated from transifex 2021-05-14 03:52:07 +00:00
Nextcloud bot
14ccfe831a [tx-robot] updated from transifex 2021-05-13 03:49:12 +00:00
Nextcloud bot
0e31d6fe57 [tx-robot] updated from transifex 2021-05-12 03:53:51 +00:00
Nextcloud bot
79128c51b7 [tx-robot] updated from transifex 2021-05-11 03:53:29 +00:00
Nextcloud bot
abf75cc80d [tx-robot] updated from transifex 2021-05-09 03:53:11 +00:00
Nextcloud bot
dd3e6a6ad0 [tx-robot] updated from transifex 2021-05-08 03:55:50 +00:00
Nextcloud bot
aaf4b1d2be [tx-robot] updated from transifex 2021-05-07 03:59:00 +00:00
Matthieu Gallien
9c6c6d82f0 Merge pull request #3273 from nextcloud/backport/3267/stable-3.2
[stable-3.2] send OS name and version to auto updater to allow selective upgrades
2021-05-06 14:28:57 +02:00
Matthieu Gallien
a559513912 send OS name and version to auto updater to allow selective upgrades
in order to be able to suuport legacy OS, also sends the OS name and
version

will be used to detect Windows 8.1 and similar legacy versions

Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-05-06 10:15:12 +00:00
Nextcloud bot
741231f3df [tx-robot] updated from transifex 2021-05-06 03:59:04 +00:00
Felix Weilbach
6cb5bdf2d1 Merge pull request #3264 from nextcloud/backport/3263/stable-3.2
[stable-3.2] Fallback to primary screen if screen under pointer not found
2021-05-05 12:26:58 +02:00
Felix Weilbach
104941e4bb Fallback to primary screen if screen under pointer not found
Fixes #3252

Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-05-05 10:13:14 +00:00
Nextcloud bot
d7fb1ebc51 [tx-robot] updated from transifex 2021-05-05 04:07:32 +00:00
Nextcloud bot
c4fec24b23 [tx-robot] updated from transifex 2021-05-04 03:56:18 +00:00
Nextcloud bot
59595152c7 [tx-robot] updated from transifex 2021-05-03 03:54:12 +00:00
Nextcloud bot
5644fcb332 [tx-robot] updated from transifex 2021-05-02 03:53:14 +00:00
Nextcloud bot
d4322ed003 [tx-robot] updated from transifex 2021-05-01 03:56:59 +00:00
Nextcloud bot
046e19465f [tx-robot] updated from transifex 2021-04-30 03:58:24 +00:00
Nextcloud bot
28ccaff866 [tx-robot] updated from transifex 2021-04-29 03:58:27 +00:00
Matthieu Gallien
0a36214189 Merge pull request #3226 from nextcloud/release-3.2.1
update version to 3.2.1
2021-04-28 10:08:41 +02:00
Matthieu Gallien
5901a0f983 update version to 3.2.1
Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-28 09:38:14 +02:00
Nextcloud bot
7825cf7f86 [tx-robot] updated from transifex 2021-04-28 03:56:37 +00:00
Matthieu Gallien
d65611bcb7 Merge pull request #3219 from nextcloud/backport/3214/stable-3.2
[stable-3.2] update the news part of documentation with improvements from 3.2 release
2021-04-27 10:01:24 +02:00
Matthieu Gallien
c5f17a7f77 update the versions and date used in the doc generation
should no longer be necessary when this will come from cmake until that,
let's update it

Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-27 07:31:02 +00:00
Matthieu Gallien
4637ce7526 update the news part of documentation with improvements from 3.2 release
Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-27 07:31:02 +00:00
Nextcloud bot
c3ed9a9d65 [tx-robot] updated from transifex 2021-04-27 03:58:26 +00:00
Matthieu Gallien
6da0650c61 Merge pull request #3213 from nextcloud/backport/3170/stable-3.2
[stable-3.2] status wrong for directories when using vfs and nextcloud desktop 3.2.0
2021-04-26 16:27:43 +02:00
Matthieu Gallien
031f7c48a3 when files get hydrated indirectly through pinning, sets correct state
files that get downloaded not through an hydration request need to be
converted to placeholder

sets the expected state when converting them to placeholder files

 #3082

Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-26 13:57:23 +00:00
Matthieu Gallien
abb57d6202 prevent progress bar to appear after a download is finished with CfApi
when using Cloud Filter API with enabled VFS on Windows, a progress bar
stays visible for some time after hydration is completed. Not updating a
last time the progress bar prevents that.

Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-26 13:57:23 +00:00
Matthieu Gallien
1e309b71a6 Merge pull request #3212 from nextcloud/backport/3209/stable-3.2
[stable-3.2] add info in the installation page about the supported server versions
2021-04-26 15:56:02 +02:00
Matthieu Gallien
5a159d49d0 add info in the installation page about the supported server versions
Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-26 13:32:44 +00:00
Matthieu Gallien
1cc082cec5 Merge pull request #3211 from nextcloud/backport/3187/stable-3.2
[stable-3.2] fix errors when calling CfRegisterSyncRoot by setting more fields
2021-04-26 15:31:15 +02:00
Matthieu Gallien
149bfa9001 fix errors when calling CfRegisterSyncRoot by setting more fields
sets a reasonable size of the StructSize members in the struct passed to
CfRegisterSyncRoot function

Signed-off-by: Matthieu Gallien <matthieu_gallien@yahoo.fr>
2021-04-26 11:57:06 +00:00
Nextcloud bot
f660f923a3 [tx-robot] updated from transifex 2021-04-26 03:55:47 +00:00
Nextcloud bot
f7c4030463 [tx-robot] updated from transifex 2021-04-25 03:57:25 +00:00
Nextcloud bot
55c0cbde36 [tx-robot] updated from transifex 2021-04-24 03:57:30 +00:00
Nextcloud bot
3deb08a7fc [tx-robot] updated from transifex 2021-04-23 03:57:35 +00:00
Nextcloud bot
594b13ed6a [tx-robot] updated from transifex 2021-04-22 03:55:41 +00:00
Nextcloud bot
9cda48e0a6 [tx-robot] updated from transifex 2021-04-21 11:24:08 +00:00
Nextcloud bot
03117c0dcf [tx-robot] updated from transifex 2021-04-21 04:02:57 +00:00
Nextcloud bot
96dab4ff84 [tx-robot] updated from transifex 2021-04-21 03:56:21 +00:00
Nextcloud bot
7dfb6c300f [tx-robot] updated from transifex 2021-04-20 03:55:44 +00:00
Nextcloud bot
9a75fa5db5 [tx-robot] updated from transifex 2021-04-19 03:58:13 +00:00
Nextcloud bot
2272cb6c3a [tx-robot] updated from transifex 2021-04-18 03:52:06 +00:00
Nextcloud bot
e909add969 [tx-robot] updated from transifex 2021-04-17 03:54:02 +00:00
allexzander
33ea9ba00e Merge pull request #3151 from nextcloud/backport/3138/stable-3.2
[stable-3.2] Windows MSI. Do not allow installing Nextcloud client on < Windows 10 or < 1709
2021-04-16 17:15:05 +03:00
allexzander
f86fcc94d8 Minimum supported Windows 10, build 1709.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-04-16 13:44:03 +00:00
allexzander
443d8baf3a Merge pull request #3149 from nextcloud/backport/3125/stable-3.2
[stable-3.2] Display VFS sync folder within the navigation panel on Windows.
2021-04-16 16:42:12 +03:00
allexzander
c2e217352f Display VFS sync folder within the navigation panel on Windows.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-04-16 13:10:09 +00:00
Nextcloud bot
555c157cda [tx-robot] updated from transifex 2021-04-16 03:58:42 +00:00
allexzander
03466431be Merge pull request #3123 from nextcloud/backport/3066/stable-3.2
[stable-3.2] Temporary solution for file restoration issue due to failing the data…
2021-04-15 11:02:43 +03:00
allexzander
9b8115558d Temporary solution for file restoration issue due to failing the dataFingerprint on client.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-04-15 07:39:28 +00:00
Matthieu Gallien
8344969549 Merge pull request #3122 from nextcloud/backport/3046/stable-3.2
[stable-3.2] Do not schedule reboot when installing MSI in silent mode unless 'SCHEDULE_REBOOT is set.
2021-04-15 09:38:19 +02:00
allexzander
eed7fd73a3 Do not schedule reboot when installing MSI in silent mode unless 'SCHEDULE_REBOOT' is set.
Signed-off-by: allexzander <blackslayer4@gmail.com>
2021-04-15 07:26:26 +00:00
Nextcloud bot
4c50ba294e [tx-robot] updated from transifex 2021-04-15 03:56:08 +00:00
Nextcloud bot
ec5be0f29a [tx-robot] updated from transifex 2021-04-14 03:58:28 +00:00
Nextcloud bot
f79f4f6783 [tx-robot] updated from transifex 2021-04-13 03:55:05 +00:00
Nextcloud bot
89919b6b33 [tx-robot] updated from transifex 2021-04-12 03:54:03 +00:00
Nextcloud bot
86e0ad4ec6 [tx-robot] updated from transifex 2021-04-11 03:52:34 +00:00
Nextcloud bot
328877c70b [tx-robot] updated from transifex 2021-04-10 04:05:30 +00:00
Matthieu Gallien
14fbf1b106 Merge pull request #3077 from nextcloud/backport/3075/stable-3.2
[stable-3.2] Embed version and icon into windows executable
2021-04-09 15:10:16 +02:00
Felix Weilbach
5f6236bd73 Embed version and icon into windows executable
These changes are necessary because of changing the compilation
process for the gui from a single executable to static lib +
executable in commit 0521dce174.
Otherwise the version and icon information will be lost.

Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-04-09 12:30:47 +00:00
Nextcloud bot
a3968bcc87 [tx-robot] updated from transifex 2021-04-09 03:54:31 +00:00
327 changed files with 36745 additions and 66382 deletions

View File

@@ -3,15 +3,15 @@ name: qt-5.12
steps:
- name: cmake
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
commands:
- cd /drone/build
- cmake -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_BUILD_TYPE=Debug -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DECM_ENABLE_SANITIZERS=address ../src
- cmake -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_BUILD_TYPE=Debug -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DSANITIZE_ADDRESS=ON ../src
- name: compile
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
@@ -19,7 +19,7 @@ steps:
- cd /drone/build
- make -j$(nproc)
- name: test
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
@@ -47,23 +47,23 @@ name: qt-5.12-clang
steps:
- name: cmake
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
commands:
- cd /drone/build
- cmake -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER=clang-10 -DCMAKE_CXX_COMPILER=clazy -DCMAKE_BUILD_TYPE=Debug -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DECM_ENABLE_SANITIZERS=address ../src
- cmake -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON DCMAKE_C_COMPILER=clang-10 -DCMAKE_CXX_COMPILER=clang++-10 -DCMAKE_BUILD_TYPE=Debug -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DSANITIZE_ADDRESS=ON ../src
- name: compile
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
commands:
- cd /drone/build
- ninja 2>1 | /drone/src/admin/linux/count_compiler_warnings.py /drone/src
- ninja
- name: test
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
@@ -73,7 +73,7 @@ steps:
- chown -R test:test .
- su -c 'ASAN_OPTIONS=detect_leaks=0 ctest --output-on-failure' test
- name: clang-tidy
image: ghcr.io/nextcloud/continuous-integration-client:client-5.12-18
image: nextcloudci/client-5.12:client-5.12-11
volumes:
- name: build
path: /drone/build
@@ -98,7 +98,7 @@ name: AppImage
steps:
- name: build
image: ghcr.io/nextcloud/continuous-integration-client-appimage:client-appimage-1
image: nextcloudci/client-5.12:client-5.12-9
environment:
CI_UPLOAD_GIT_TOKEN:
from_secret: CI_UPLOAD_GIT_TOKEN
@@ -120,7 +120,7 @@ name: Debian
steps:
- name: build
image: ghcr.io/nextcloud/continuous-integration-client-debian:client-debian-3
image: nextcloudci/client-debian-ci:client-debian-ci-2
commands:
- /bin/bash -c "./admin/linux/debian/drone-build.sh" || echo "[WARNING] Debian build failed but this is a non-blocking CI event"
environment:

View File

@@ -1,5 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Support and Questions
url: "https://help.nextcloud.com/"
about: "If you have trouble with setting up Nextcloud, please use the forum instead of opening an issue here."

View File

@@ -1,35 +0,0 @@
---
name: Features
about: New functionality
labels: 'enhancement'
---
<!--
Thanks for requesting a feature for Nextcloud!
This is the **issue tracker of Nextcloud**, please do NOT use this to get answers to your questions or get help for fixing your installation. You can find help debugging your system on our home user forums: https://help.nextcloud.com or, if you use Nextcloud in a large organization, ask our engineers on https://portal.nextcloud.com. See also https://nextcloud.com/support for support options.
Guidelines for submitting features:
* Please search the existing features first, it's likely that your feature was already requested or even implemented.
- Go to https://github.com/nextcloud and type any word in the top search/command bar. You probably see something like "We couldnt find any repositories matching ..." then click "Issues" in the left navigation.
- You can also filter by appending e. g. "state:open" to the search string.
- More info on search syntax within github: https://help.github.com/articles/searching-issues
* Please fill in as much of the template below as possible.
* Also note that we have a https://nextcloud.com/contribute/code-of-conduct/ that applies on Github. To summarize it: be kind. We try our best to be nice, too. If you can't be bothered to be polite, please just don't bother to report issues as we won't feel motivated to help you.
-->
<!--- Please keep the note below for others who read your bug report -->
### How to use GitHub
* Please use the 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to show that you want to have the same feature implemented.
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
* Subscribe to receive notifications on status change and new comments.
### Feature description
Tell us how the feature should work

View File

@@ -1,10 +1,3 @@
---
name: Bugs
about: Crashes and other bugs
labels: 'bug'
---
<!--
Thanks for reporting issues back to Nextcloud!

View File

@@ -1,14 +0,0 @@
<!--
Thanks for opening a pull request on the Nextcloud desktop client.
Instead of a Contributor License Agreement (CLA) we use a Developer Certificate of Origin (DCO).
https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin
To accept that DCO, please make sure that you add a line like
Signed-off-by: Random Developer <random@developer.example.org>
at the end of each commit message.
This Signed-off-by trailer can be added automatically by git if you pass --signoff or -s to git commit.
See also:
https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---no-signoff
-->

View File

@@ -1,27 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
on:
issue_comment:
types: [ created ]
name: Automatic Rebase
jobs:
rebase:
name: Rebase
# On pull requests and if the comment starts with `/rebase`
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
runs-on: ubuntu-latest
steps:
- name: Checkout the latest code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,24 +0,0 @@
name: 'Close stale needs info issues'
on:
schedule:
- cron: '30 */8 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
operations-per-run: 1500
days-before-stale: 28
days-before-close: 14
days-before-pr-close: -1
only-labels: 'needs info'
stale-issue-label: 'stale needs info'
exempt-issue-labels: 'bug'
stale-issue-message: 'This issue has been marked as "needs info" 4 weeks ago.
Please take a look again and try to provide the information requested,
otherwise the issue will be automatically closed in 2 weeks. Thank you!'
close-issue-message: "This bug report is getting automatically closed due to no answer
since the issue has been staled. Thank you!"
exempt-all-pr-milestones: true

View File

@@ -1,13 +0,0 @@
name: Remove Labels
on: [issue_comment]
jobs:
remove_labels:
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-remove-labels@v1
if: ${{ ! startsWith(github.event.comment.body, 'This issue has been marked as "needs info" 4 weeks ago.') && ! startsWith(github.event.comment.body, 'This bug report did not receive an update in the last 4 weeks.')}}
with:
labels: 'needs info'
github_token: ${{ secrets.GITHUB_TOKEN }}

18
.github/workflows/rebase.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
on:
issue_comment:
types: [created]
name: Automatic Rebase
jobs:
rebase:
name: Rebase
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
runs-on: ubuntu-latest
steps:
- name: Checkout the latest code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,7 +1,7 @@
name: 'Close stale issues'
on:
schedule:
- cron: '30 */8 * * *'
- cron: '30 1 * * *'
jobs:
stale:
@@ -9,7 +9,6 @@ jobs:
steps:
- uses: actions/stale@v3
with:
operations-per-run: 1500
days-before-stale: 28
days-before-close: 14
days-before-pr-close: -1
@@ -18,6 +17,4 @@ jobs:
stale-issue-message: 'This bug report did not receive an update in the last 4 weeks.
Please take a look again and update the issue with new details,
otherwise the issue will be automatically closed in 2 weeks. Thank you!'
close-issue-message: "This bug report is getting automatically closed due to no answer
since the issue has been staled. Thank you!"
exempt-all-pr-milestones: true

6
.gitignore vendored
View File

@@ -181,9 +181,3 @@ CPackOptions.cmake
CPackSourceConfig.cmake
compile_commands.json
convert.exe
.dir-locals.el
*-icon.png
*-sidebar.png
*-w10startmenu.png
theme.qrc

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[da]=@APPLICATION_ICON_NAME@
Name[da]=Skrivebordsklient til @APPLICATION_NAME@
Comment[da]=Klient til @APPLICATION_NAME@-skrivebordssynkronisering
Comment[da]=@APPLICATION_NAME@ Arbejdsstationsssynkroniseringsklient
GenericName[da]=Mappesynkronisering

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[fr]=@APPLICATION_ICON_NAME@
Name[fr]=@APPLICATION_NAME@ Bureau
Comment[fr]=Client de synchronisation @APPLICATION_NAME@
GenericName[fr]=Synchronisation du dossier

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[hr]=@APPLICATION_ICON_NAME@
Name[hr]=@APPLICATION_NAME@ Desktop
Comment[hr]=@APPLICATION_NAME@ klijent za sinkronizaciju računala
GenericName[hr]=Sinkronizacija mapa

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[hu_HU]=@APPLICATION_ICON_NAME@
Name[hu_HU]=@APPLICATION_NAME@ Desktop
Comment[hu_HU]=@APPLICATION_NAME@ asztali szinkronizálási kliens
GenericName[hu_HU]=Mappaszinkronizálás

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[mk]=@APPLICATION_ICON_NAME@
Name[mk]=@APPLICATION_NAME@ Десктоп
Comment[mk]=@APPLICATION_NAME@ клиент за синхронизација на компјутер
GenericName[mk]=Папка за синхронизација

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[ro]=@APPLICATION_ICON_NAME@
Name[ro]=@Numele_aplicației@ Client de sincronizare pentru PC
Comment[ro]=@APPLICATION_NAME@ client de sincronizare pentru desktop
GenericName[ro]=Sincronizare director

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[ru]=@APPLICATION_ICON_NAME@
Name[ru]=@APPLICATION_NAME@ Desktop
Comment[ru]=Клиент синхронизации @APPLICATION_NAME@ для ПК
GenericName[ru]=Синхронизация папок

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[sc]=@NÙMENE_ICONA_APLICATZIONE@
Name[sc]=@NÙMENE_APLICATZIONE@ Iscrivania
Comment[sc]=@NÙMENE_APLICATZIONE@ cliente de sincronizatzione iscrivania
GenericName[sc]=Sincronizadore de cartellas

View File

@@ -22,6 +22,5 @@ Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[sk_SK]=@APPLICATION_ICON_NAME@
Name[sk_SK]=@APPLICATION_NAME@ Desktop
Comment[sk_SK]=@APPLICATION_NAME@ synchronizačný klient pre PC
GenericName[sk_SK]=Synchronizácia priečinkov

View File

@@ -1,27 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ Desktop
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
MimeType=application/vnd.@APPLICATION_EXECUTABLE@;
Actions=Quit;
# Translations
[Desktop Action Quit]
Exec=@APPLICATION_EXECUTABLE@ --quit
Name=Quit @APPLICATION_NAME@
Icon=@APPLICATION_EXECUTABLE@
# Translations
Icon[th_TH]=@APPLICATION_ICON_NAME@
Name[th_TH]=@APPLICATION_NAME@ เดสก์ท็อป
Comment[th_TH]=ไคลเอ็นต์ซิงโครไนซ์ @APPLICATION_NAME@ บนเดสก์ท็อป
GenericName[th_TH]=ซิงค์โฟลเดอร์

View File

@@ -24,4 +24,4 @@ Icon=@APPLICATION_EXECUTABLE@
Icon[tr]=@APPLICATION_ICON_NAME@
Name[tr]=@APPLICATION_NAME@ Masaüstü
Comment[tr]=@APPLICATION_NAME@ masaüstü eşitleme istemcisi
GenericName[tr]=Klasör eşitleme
GenericName[tr]=Klasör Eşitleme

View File

@@ -1,13 +1,22 @@
cmake_minimum_required(VERSION 3.6)
cmake_minimum_required(VERSION 3.2)
set(CMAKE_CXX_STANDARD 14)
project(client)
include(FeatureSummary)
if(UNIT_TESTING)
include(CTest)
enable_testing()
endif()
set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
include(${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake)
set(OEM_THEME_DIR "" CACHE STRING "Define directory containing a custom theme")
if ( EXISTS ${OEM_THEME_DIR}/OEM.cmake )
include ( ${OEM_THEME_DIR}/OEM.cmake )
else ()
include ( ${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake )
endif()
# Default suffix if the theme doesn't define one
if(NOT DEFINED APPLICATION_VIRTUALFILE_SUFFIX)
@@ -36,8 +45,6 @@ endif()
set( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
include(ECMCoverageOption)
if(NOT CRASHREPORTER_EXECUTABLE)
set(CRASHREPORTER_EXECUTABLE "${APPLICATION_EXECUTABLE}_crash_reporter")
endif()
@@ -104,9 +111,9 @@ set(SHAREDIR ${DATADIR})
# BUILD_OWNCLOUD_OSX_BUNDLE was not initialized OR set to true on OSX
if(APPLE AND (NOT DEFINED BUILD_OWNCLOUD_OSX_BUNDLE OR BUILD_OWNCLOUD_OSX_BUNDLE))
set(BUILD_OWNCLOUD_OSX_BUNDLE ON)
set(OWNCLOUD_OSX_BUNDLE "${APPLICATION_NAME}.app")
set(LIB_INSTALL_DIR "${APPLICATION_NAME}.app/Contents/MacOS")
set(BIN_INSTALL_DIR "${APPLICATION_NAME}.app/Contents/MacOS")
set(OWNCLOUD_OSX_BUNDLE "${APPLICATION_EXECUTABLE}.app")
set(LIB_INSTALL_DIR "${APPLICATION_EXECUTABLE}.app/Contents/MacOS")
set(BIN_INSTALL_DIR "${APPLICATION_EXECUTABLE}.app/Contents/MacOS")
# BUILD_OWNCLOUD_OSX_BUNDLE was disabled on OSX
elseif(APPLE AND NOT BUILD_OWNCLOUD_OSX_BUNDLE)
@@ -180,24 +187,19 @@ if(BUILD_CLIENT)
find_package(Sparkle)
endif()
if(UNIX AND NOT APPLE)
find_package(Inotify REQUIRED)
if(UNIX)
find_package(INotify REQUIRED)
else()
find_package(INotify)
endif()
find_package(Sphinx)
find_package(PdfLatex)
find_package(OpenSSL 1.1 REQUIRED )
find_package(ZLIB REQUIRED)
if(NOT WIN32 AND NOT APPLE)
find_package(PkgConfig REQUIRED)
pkg_check_modules(CLOUDPROVIDERS cloudproviders IMPORTED_TARGET)
if(CLOUDPROVIDERS_FOUND)
pkg_check_modules(GIO REQUIRED gio-2.0 IMPORTED_TARGET)
pkg_check_modules(GLIB2 REQUIRED glib-2.0 IMPORTED_TARGET)
endif()
endif()
find_package(GLib2)
find_package(Gio)
find_package(Libcloudproviders)
endif()
if (NOT DEFINED APPLICATION_ICON_NAME)
@@ -229,6 +231,8 @@ if (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()
include(SanitizerFlags)
# Handle Translations, pick all client_* files from trans directory.
file( GLOB TRANS_FILES ${CMAKE_SOURCE_DIR}/translations/client_*.ts)
set(TRANSLATIONS ${TRANS_FILES})
@@ -249,8 +253,8 @@ if(BUILD_SHELL_INTEGRATION)
add_subdirectory(shell_integration)
endif()
include(CTest)
if(BUILD_TESTING)
include(CTest)
enable_testing()
add_subdirectory(test)
endif()
@@ -265,5 +269,3 @@ elseif(BUILD_CLIENT)
install( FILES sync-exclude.lst DESTINATION ${SYSCONFDIR}/${APPLICATION_SHORTNAME} )
configure_file(sync-exclude.lst bin/sync-exclude.lst COPYONLY)
endif()
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES INCLUDE_QUIET_PACKAGES)

View File

@@ -9,8 +9,13 @@ endif(CPACK_GENERATOR MATCHES "NSIS")
set( CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@ )
set( CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@ )
set( OEM_THEME_DIR @OEM_THEME_DIR@ )
include("${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake")
if ( DEFINED OEM_THEME_DIR AND EXISTS ${OEM_THEME_DIR}/OEM.cmake )
include ( ${OEM_THEME_DIR}/OEM.cmake )
else ()
include ( "${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake" )
endif()
set( CRASHREPORTER_EXECUTABLE @CRASHREPORTER_EXECUTABLE@)

View File

@@ -2,7 +2,11 @@ include( InstallRequiredSystemLibraries )
set( CPACK_PACKAGE_CONTACT "Dominik Schmidt <domme@tomahawk-player.org>" )
include("${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake")
if ( DEFINED OEM_THEME_DIR AND EXISTS ${OEM_THEME_DIR}/OEM.cmake )
include ( "${OEM_THEME_DIR}/OEM.cmake" )
else ()
include ( "${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake" )
endif()
include( VERSION.cmake )
set( CPACK_PACKAGE_VERSION_MAJOR ${MIRALL_VERSION_MAJOR} )

View File

@@ -4,7 +4,7 @@ The :computer: Nextcloud Desktop Client is a tool to synchronize files from Next
with your computer.
<p align="center">
<img src="doc/images/main_dialog_christine.png" alt="Desktop Client on Windows" width="450">
<img src="https://nextcloud.com/wp-content/themes/next/assets/img/clients/desktop/macsettings.png?x16328" alt="Desktop Client on Mac OS]">
</p>
## :blue_heart: :tada: Contributing

View File

@@ -1,11 +1,11 @@
set( MIRALL_VERSION_MAJOR 3 )
set( MIRALL_VERSION_MINOR 3 )
set( MIRALL_VERSION_PATCH 4 )
set( MIRALL_VERSION_MINOR 2 )
set( MIRALL_VERSION_PATCH 2 )
set( MIRALL_VERSION_YEAR 2021 )
set( MIRALL_SOVERSION 0 )
# Minimum supported server version according to https://docs.nextcloud.com/server/latest/admin_manual/release_schedule.html
set(NEXTCLOUD_SERVER_VERSION_MIN_SUPPORTED_MAJOR 16)
set(NEXTCLOUD_SERVER_VERSION_MIN_SUPPORTED_MAJOR 19)
set(NEXTCLOUD_SERVER_VERSION_MIN_SUPPORTED_MINOR 0)
set(NEXTCLOUD_SERVER_VERSION_MIN_SUPPORTED_PATCH 0)

View File

@@ -6,7 +6,7 @@ mkdir /app
mkdir /build
#Set Qt-5.12
export QT_BASE_DIR=/opt/qt5.12.10
export QT_BASE_DIR=/opt/qt5.12.9
export QTDIR=$QT_BASE_DIR
export PATH=$QT_BASE_DIR/bin:$PATH
export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib:$LD_LIBRARY_PATH

View File

@@ -1,40 +0,0 @@
#!/usr/bin/env python3
# Small script that counts the warnings which the compiler emits
# and takes care that not more warnings are added.
import sys
import re
import requests
if len(sys.argv) != 2:
print(f"Usage: {sys.argv[0]} REPOSITORY_PATH")
sys.exit(1)
repository_path = sys.argv[1]
warning_regex = re.compile(r'warning:', re.M)
max_allowed_warnings_count_response = requests.get(
"https://nextclouddesktopwarningscount.felixweilbach.de")
if max_allowed_warnings_count_response.status_code != 200:
print('Can not get maximum number of allowed warnings')
sys.exit(1)
max_allowed_warnings_count = int(max_allowed_warnings_count_response.content)
print("Max number of allowed warnings:", max_allowed_warnings_count)
warnings_count = 0
for line in sys.stdin:
if warning_regex.findall(line):
warnings_count += 1
print(line, end="")
if warnings_count > max_allowed_warnings_count:
print("Error: Too many warnings! You probably introduced a new warning!")
sys.exit(1)
print("Total number of warnings:", warnings_count)

View File

@@ -15,10 +15,10 @@ OBS_PROJECT_BETA=home:ivaradi:beta
OBS_PACKAGE=nextcloud-desktop
if test "${DRONE_TARGET_BRANCH}" = "stable-2.6"; then
UBUNTU_DISTRIBUTIONS="bionic focal hirsute impish"
UBUNTU_DISTRIBUTIONS="bionic focal groovy hirsute"
DEBIAN_DISTRIBUTIONS="buster stretch testing"
else
UBUNTU_DISTRIBUTIONS="focal hirsute impish"
UBUNTU_DISTRIBUTIONS="focal groovy hirsute"
DEBIAN_DISTRIBUTIONS="testing"
fi
@@ -88,7 +88,7 @@ for distribution in ${UBUNTU_DISTRIBUTIONS} ${DEBIAN_DISTRIBUTIONS}; do
dpkg-genchanges -S -sa > "../nextcloud-desktop_${fullver}_source.changes"
if test -f ~/.has_ppa_keys; then
debsign -k2265D8767D14AA7B -S
debsign -k7D14AA7B -S
fi
done
cd ..

View File

@@ -1,5 +1,7 @@
# Check if varialbe MAC_INSTALLER_BACKGROUND_FILE is defined.
# Check if varialbe MAC_INSTALLER_BACKGROUND_FILE is defined. That might come
# from the OEM.cmake for branded clients or from NEXTCLOUD.cmake for the non
# branded client.
# Make sure that the MAC_INSTALLER_BACKGROUND_FILE contains the full path, ie.
# includes CMAKE_SOURCE_DIR or so.

View File

@@ -22,7 +22,7 @@
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>@APPLICATION_NAME@.app</string>
<string>@APPLICATION_EXECUTABLE@.app</string>
<key>PATH_TYPE</key>
<integer>3</integer>
<key>PERMISSIONS</key>

View File

@@ -3,7 +3,7 @@
# Always enable the new 10.10 finder plugin if available
if [ -x "$(command -v pluginkit)" ]; then
# add it to DB. This happens automatically too but we try to push it a bit harder for issue #3463
pluginkit -a "/Applications/@APPLICATION_NAME@.app/Contents/PlugIns/FinderSyncExt.appex/"
pluginkit -a "/Applications/@APPLICATION_EXECUTABLE@.app/Contents/PlugIns/FinderSyncExt.appex/"
# Since El Capitan we need to sleep #4650
sleep 10s
# enable it

View File

@@ -2,6 +2,5 @@
# kill the old version. see issue #2044
killall @APPLICATION_EXECUTABLE@
killall @APPLICATION_NAME@
exit 0

View File

@@ -52,12 +52,15 @@
<Property Id="INSTALLDIR">
<RegistrySearch Id="RegistryInstallDir" Type="raw" Root="HKLM" Key="Software\$(var.AppVendor)\$(var.AppName)" Win64="no" />
</Property>
<Property Id="WINDOWSRELEASEID">
<RegistrySearch Id="RegistryWindowsReleaseId" Type="raw" Root="HKLM" Key="Software\Microsoft\Windows NT\CurrentVersion" Name="ReleaseId"/>
</Property>
<!-- Detect legacy NSIS installation -->
<Property Id="NSIS_UNINSTALLEXE">
<RegistrySearch Id="RegistryLegacyUninstallString" Type="file" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\$(var.AppName)" Name="UninstallString" Win64="no">
<FileSearch Id="LegacyUninstallFileName" Name="Uninstall.exe"/>
</RegistrySearch>
<DirectorySearch Id="LegacyUninstallVersion" Path="[INSTALLDIR]">
<FileSearch Name="Uninstall.exe" />
</DirectorySearch>
</Property>
<!-- Property to disable update checks -->
@@ -214,5 +217,6 @@
<Condition Level="0">(NO_DESKTOP_SHORTCUT=1)</Condition>
</Feature>
</Feature>
<Condition Message="This application only runs on Windows 10, version 1709 or higher!">(VersionNT>=603 AND WINDOWSRELEASEID>=1709)</Condition>
</Product>
</Wix>

View File

@@ -1,6 +1,7 @@
[General]
Branch = master
ShallowClone = True
Command=craft
# Variables defined here override the default value
# The variable names are casesensitive
@@ -12,42 +13,33 @@ CreateCache = False
# Settings applicable for all Crafts matrices
# Settings are Category/key=value
# Category is case sensitive
[GeneralSettings]
## This is the location of your python installation.
## This value must be set.
Paths/Python = C:\Python39-x64
Paths/Python27 = C:\Python27-x64
Compile/BuildType = RelWithDebInfo
Compile/UseNinja = True
General/EMERGE_PKGDSTDIR=${Variables:APPVEYOR_BUILD_FOLDER}/binaries
Paths/python = C:\Python36
Paths/python27 = C:\Python27
Paths/downloaddir = ${Variables:Root}\downloads
ShortPath/Enabled = False
ShortPath/EnableJunctions = True
ShortPath/JunctionDir = C:\CM-SP\
; Packager/RepositoryUrl = https://files.kde.org/craft/
Packager/PackageType = NullsoftInstallerPackager
Packager/RepositoryUrl = http://ftp.acc.umu.se/mirror/kde.org/files/craft/master/
ContinuousIntegration/Enabled = True
## This option can be used to override the default make program
## change the value to the path of the executable you want to use instead.
Compile/MakeProgram = jom
Packager/CacheDir = ${Variables:Root}\cache
Packager/UseCache = ${Variables:UseCache}
Packager/CreateCache = ${Variables:CreateCache}
Packager/CacheDir = ${Variables:Root}\cache
; Packager/RepositoryUrl = https://files.kde.org/craft/
Packager/PackageType = PortablePackager
Packager/RepositoryUrl = http://ftp.acc.umu.se/mirror/kde.org/files/craft/master/
Compile/BuildType = RelWithDebInfo
ContinuousIntegration/Enabled = True
[BlueprintSettings]
# don't try to pip install on the ci
python-modules.ignored = True
nextcloud-client.buildTests = True
binary/mysql.useMariaDB = False
[windows-msvc2019_64-cl]
QtSDK/Compiler = msvc2019_64
General/ABI = windows-msvc2019_64-cl
libs/qt5.version = 5.9.3
craft/craft-core.version = master
[windows-msvc2017_64-cl]
General/ABI = windows-msvc2017_64-cl
[windows-msvc2017_32-cl]
General/ABI = windows-msvc2017_32-cl

View File

@@ -1,49 +1,50 @@
version: '{build}-{branch}'
image: Visual Studio 2019
branches:
only:
- master
clone_depth: 1
clone_depth: 50
init:
- ps: |
function craft() {
cmd /C "echo %PATH%"
& "C:\Python39-x64\python.exe" "C:\CraftMaster\CraftMaster\CraftMaster.py" --config "$env:APPVEYOR_BUILD_FOLDER\appveyor.ini" --variables "APPVEYOR_BUILD_FOLDER=$env:APPVEYOR_BUILD_FOLDER" --target $env:TARGET -c $args
function craft($target) {
& C:\Python36\python.exe "C:\CraftMaster\CraftMaster\CraftMaster.py" --config "$env:APPVEYOR_BUILD_FOLDER\appveyor.ini" --variables "APPVEYOR_BUILD_FOLDER=$env:APPVEYOR_BUILD_FOLDER" --target $target -c $args
if($LASTEXITCODE -ne 0) {exit $LASTEXITCODE}
}
function crafttests() {
cmd /C "echo %PATH%"
& "C:\Python39-x64\python.exe" "C:\CraftMaster\CraftMaster\CraftMaster.py" --config "$env:APPVEYOR_BUILD_FOLDER\appveyor.ini" --variables "APPVEYOR_BUILD_FOLDER=$env:APPVEYOR_BUILD_FOLDER" --target $env:TARGET -c $args
}
install:
- ps: |
#use cmd to silence powershell behaviour for stderr
& cmd /C "git clone -q --depth=1 https://invent.kde.org/packaging/craftmaster.git C:\CraftMaster\CraftMaster 2>&1"
craft --add-blueprint-repository [git]https://github.com/nextcloud/desktop-client-blueprints.git
craft craft
craft --install-deps nextcloud-client
craft nsis
& cmd /C "git clone -q --depth=1 git://anongit.kde.org/craftmaster.git C:\CraftMaster\CraftMaster 2>&1"
craft $env:TARGET -i craft
craft $env:TARGET --install-deps owncloud-client
build_script:
- ps: |
craft --src-dir $env:APPVEYOR_BUILD_FOLDER nextcloud-client
craft --package --src-dir $env:APPVEYOR_BUILD_FOLDER nextcloud-client
cp C:\CraftMaster\windows-msvc2019_64-cl\tmp\*.7z $env:APPVEYOR_BUILD_FOLDER
cp C:\CraftMaster\windows-msvc2019_64-cl\tmp\*.exe $env:APPVEYOR_BUILD_FOLDER
craft $env:TARGET --no-cache --src-dir $env:APPVEYOR_BUILD_FOLDER owncloud-client
after_build:
- ps: |
craft $env:TARGET --src-dir $env:APPVEYOR_BUILD_FOLDER --package owncloud-client
on_finish:
- ps: |
Get-ChildItem $env:USERPROFILE\.craft\* | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
test_script:
- ps: |
crafttests --test --src-dir $env:APPVEYOR_BUILD_FOLDER nextcloud-client
craft $env:TARGET --src-dir $env:APPVEYOR_BUILD_FOLDER --test owncloud-client
environment:
matrix:
- TARGET: windows-msvc2019_64-cl
- TARGET: windows-msvc2017_32-cl
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- TARGET: windows-msvc2017_64-cl
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
artifacts:
- path: '*.7z'
- path: '*.exe'
- path: binaries/*

View File

@@ -0,0 +1,142 @@
SET(WINDRES_EXECUTABLE_BASE ${CMAKE_RC_COMPILER})
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
#
# Copyright (c) 2006-2009 Alexander Neundorf, <neundorf@kde.org>
# Copyright (c) 2006, 2007, Laurent Montel, <montel@kde.org>
# Copyright (c) 2007 Matthias Kretz <kretz@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file [in KDE repositories].
# adds application icon to target source list
# for detailed documentation see the top of FindKDE4Internal.cmake
macro (KDE4_ADD_APP_ICON appsources pattern)
set (_outfilename ${CMAKE_CURRENT_BINARY_DIR}/${appsources})
if (WIN32)
if(NOT WINCE)
find_program(PNG2ICO_EXECUTABLE NAMES png2ico)
else(NOT WINCE)
find_program(PNG2ICO_EXECUTABLE NAMES png2ico PATHS ${HOST_BINDIR} NO_DEFAULT_PATH )
endif(NOT WINCE)
find_program(WINDRES_EXECUTABLE NAMES ${WINDRES_EXECUTABLE_BASE})
if(MSVC)
set(WINDRES_EXECUTABLE TRUE)
endif(MSVC)
if (PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE)
string(REPLACE "*" "([0123456789]*)" pattern_rx "${pattern}")
file(GLOB files "${pattern}")
foreach (it ${files})
string(REGEX REPLACE "${pattern_rx}" "\\1" fn "${it}")
if (fn MATCHES ".*16.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*16.*")
if (fn MATCHES ".*32.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*32.*")
if (fn MATCHES ".*48.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*48.*")
if (fn MATCHES ".*64.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*64.*")
if (fn MATCHES ".*128.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*128.*")
if (fn MATCHES ".*256.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*256.*")
if (fn MATCHES ".*512.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*512.*")
if (fn MATCHES ".*1024.*" )
list (APPEND _icons ${it})
endif (fn MATCHES ".*1024.*")
endforeach (it)
if (_icons)
add_custom_command(OUTPUT ${_outfilename}.ico ${_outfilename}.rc
COMMAND ${PNG2ICO_EXECUTABLE} ARGS --rcfile ${_outfilename}.rc ${_outfilename}.ico ${_icons}
DEPENDS ${PNG2ICO_EXECUTABLE} ${_icons}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
if (MINGW)
add_custom_command(OUTPUT ${_outfilename}_res.o
COMMAND ${WINDRES_EXECUTABLE} ARGS -i ${_outfilename}.rc -o ${_outfilename}_res.o --include-dir=${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${WINDRES_EXECUTABLE} ${_outfilename}.rc
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
list(APPEND ${appsources} ${_outfilename}_res.o)
else(MINGW)
list(APPEND ${appsources} ${_outfilename}.rc)
endif(MINGW)
else(_icons)
message(STATUS "Unable to find a related icon that matches pattern ${pattern} for variable ${appsources} - application will not have an application icon!")
endif(_icons)
else(PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE)
message(WARNING "Unable to find the png2ico or windres utilities - application will not have an application icon!")
endif(PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE)
endif(WIN32)
if (APPLE)
file(GLOB_RECURSE files "${pattern}")
file(MAKE_DIRECTORY ${appsources}.iconset)
# List from:
# https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html#//apple_ref/doc/uid/TP40012302-CH7-SW4
foreach (it ${files})
if (it MATCHES ".*icon-16.*")
configure_file(${it} ${appsources}.iconset/icon_16x16.png COPYONLY)
elseif (it MATCHES ".*icon-32.*")
configure_file(${it} ${appsources}.iconset/icon_16x16@2x.png COPYONLY)
configure_file(${it} ${appsources}.iconset/icon_32x32.png COPYONLY)
elseif (it MATCHES ".*icon-64.*")
configure_file(${it} ${appsources}.iconset/icon_32x32@2x.png COPYONLY)
elseif (it MATCHES ".*icon-128.*")
configure_file(${it} ${appsources}.iconset/icon_128x128.png COPYONLY)
elseif (it MATCHES ".*icon-256.*")
configure_file(${it} ${appsources}.iconset/icon_128x128@2x.png COPYONLY)
configure_file(${it} ${appsources}.iconset/icon_256x256.png COPYONLY)
elseif (it MATCHES ".*icon-512.*")
configure_file(${it} ${appsources}.iconset/icon_256x256@2x.png COPYONLY)
configure_file(${it} ${appsources}.iconset/icon_512x512.png COPYONLY)
elseif (it MATCHES ".*icon-1024.*")
configure_file(${it} ${appsources}.iconset/icon_512x512@2x.png COPYONLY)
endif()
endforeach (it)
# Copy the sidebar icons in the main app bundle for the FinderSync extension to pick.
# https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW15
foreach (it ${files})
if (it MATCHES ".*sidebar-16.*")
configure_file(${it} ${appsources}.iconset/sidebar_16x16.png COPYONLY)
elseif (it MATCHES ".*sidebar-32.*")
configure_file(${it} ${appsources}.iconset/sidebar_18x18.png COPYONLY)
configure_file(${it} ${appsources}.iconset/sidebar_16x16@2x.png COPYONLY)
elseif (it MATCHES ".*sidebar-64.*")
configure_file(${it} ${appsources}.iconset/sidebar_18x18@2x.png COPYONLY)
elseif (it MATCHES ".*sidebar-128.*")
configure_file(${it} ${appsources}.iconset/sidebar_32x32.png COPYONLY)
elseif (it MATCHES ".*sidebar-256.*")
configure_file(${it} ${appsources}.iconset/sidebar_32x32@2x.png COPYONLY)
endif()
endforeach (it)
add_custom_command(OUTPUT ${_outfilename}.icns
COMMAND echo === Building bundle icns with iconset:
COMMAND ls -1 ${appsources}.iconset
COMMAND iconutil -c icns -o ${_outfilename}.icns ${appsources}.iconset
DEPENDS ${files}
)
# This will register the icon into the bundle
set(MACOSX_BUNDLE_ICON_FILE ${appsources}.icns)
# Append the icns file to the sources list so it will be a dependency to the
# main target
list(APPEND ${appsources} ${_outfilename}.icns)
# Install the icon into the Resources dir in the bundle
set_source_files_properties(${_outfilename}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
endif(APPLE)
endmacro (KDE4_ADD_APP_ICON)

View File

@@ -25,5 +25,10 @@ set(GENERIC_LIB_SOVERSION "0")
# set -Werror
set(CMAKE_ENABLE_WERROR ON)
# enables folders for targets to be visible in an IDE
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Set the default build type to release with debug info
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo
CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
)
endif (NOT CMAKE_BUILD_TYPE)

View File

@@ -1,29 +0,0 @@
# SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <aleixpol@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
ECMCoverageOption
--------------------
Allow users to easily enable GCov code coverage support.
Code coverage allows you to check how much of your codebase is covered by
your tests. This module makes it easy to build with support for
`GCov <https://gcc.gnu.org/onlinedocs/gcc/Gcov.html>`_.
When this module is included, a ``BUILD_COVERAGE`` option is added (default
OFF). Turning this option on enables GCC's coverage instrumentation, and
links against ``libgcov``.
Note that this will probably break the build if you are not using GCC.
Since 1.3.0.
#]=======================================================================]
option(BUILD_COVERAGE "Build the project with gcov support" OFF)
if(BUILD_COVERAGE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov")
endif()

View File

@@ -1,169 +0,0 @@
# SPDX-FileCopyrightText: 2014 Mathieu Tarral <mathieu.tarral@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
ECMEnableSanitizers
-------------------
Enable compiler sanitizer flags.
The following sanitizers are supported:
- Address Sanitizer
- Memory Sanitizer
- Thread Sanitizer
- Leak Sanitizer
- Undefined Behaviour Sanitizer
All of them are implemented in Clang, depending on your version, and
there is an work in progress in GCC, where some of them are currently
implemented.
This module will check your current compiler version to see if it
supports the sanitizers that you want to enable
Usage
=====
Simply add::
include(ECMEnableSanitizers)
to your ``CMakeLists.txt``. Note that this module is included in
KDECompilerSettings, so projects using that module do not need to also
include this one.
The sanitizers are not enabled by default. Instead, you must set
``ECM_ENABLE_SANITIZERS`` (either in your ``CMakeLists.txt`` or on the
command line) to a semicolon-separated list of sanitizers you wish to enable.
The options are:
- address
- memory
- thread
- leak
- undefined
- fuzzer
The sanitizers "address", "memory" and "thread" are mutually exclusive. You
cannot enable two of them in the same build.
"leak" requires the "address" sanitizer.
.. note::
To reduce the overhead induced by the instrumentation of the sanitizers, it
is advised to enable compiler optimizations (``-O1`` or higher).
Example
=======
This is an example of usage::
mkdir build
cd build
cmake -DECM_ENABLE_SANITIZERS='address;leak;undefined' ..
.. note::
Most of the sanitizers will require Clang. To enable it, use::
-DCMAKE_CXX_COMPILER=clang++
Since 1.3.0.
#]=======================================================================]
# MACRO check_compiler_version
#-----------------------------
macro (check_compiler_version gcc_required_version clang_required_version msvc_required_version)
if (
(
CMAKE_CXX_COMPILER_ID MATCHES "GNU"
AND
CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${gcc_required_version}
)
OR
(
CMAKE_CXX_COMPILER_ID MATCHES "Clang"
AND
CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${clang_required_version}
)
OR
(
CMAKE_CXX_COMPILER_ID MATCHES "MSVC"
AND
CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${msvc_required_version}
)
)
# error !
message(FATAL_ERROR "You ask to enable the sanitizer ${CUR_SANITIZER},
but your compiler ${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION}
does not support it !
You should use at least GCC ${gcc_required_version}, Clang ${clang_required_version}
or MSVC ${msvc_required_version}
(99.99 means not implemented yet)")
endif ()
endmacro ()
# MACRO check_compiler_support
#------------------------------
macro (enable_sanitizer_flags sanitize_option)
if (${sanitize_option} MATCHES "address")
check_compiler_version("4.8" "3.1" "19.28")
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(XSAN_COMPILE_FLAGS "-fsanitize=address")
else()
set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
set(XSAN_LINKER_FLAGS "-fsanitize=address")
endif()
elseif (${sanitize_option} MATCHES "thread")
check_compiler_version("4.8" "3.1" "99.99")
set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
set(XSAN_LINKER_FLAGS "tsan")
elseif (${sanitize_option} MATCHES "memory")
check_compiler_version("99.99" "3.1" "99.99")
set(XSAN_COMPILE_FLAGS "-fsanitize=memory")
elseif (${sanitize_option} MATCHES "leak")
check_compiler_version("4.9" "3.4" "99.99")
set(XSAN_COMPILE_FLAGS "-fsanitize=leak")
set(XSAN_LINKER_FLAGS "lsan")
elseif (${sanitize_option} MATCHES "undefined")
check_compiler_version("4.9" "3.1" "99.99")
set(XSAN_COMPILE_FLAGS "-fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls")
elseif (${sanitize_option} MATCHES "fuzzer")
check_compiler_version("99.99" "6.0" "99.99")
set(XSAN_COMPILE_FLAGS "-fsanitize=fuzzer")
else ()
message(FATAL_ERROR "Compiler sanitizer option \"${sanitize_option}\" not supported.")
endif ()
endmacro ()
if (ECM_ENABLE_SANITIZERS)
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# for each element of the ECM_ENABLE_SANITIZERS list
foreach ( CUR_SANITIZER ${ECM_ENABLE_SANITIZERS} )
# lowercase filter
string(TOLOWER ${CUR_SANITIZER} CUR_SANITIZER)
# check option and enable appropriate flags
enable_sanitizer_flags ( ${CUR_SANITIZER} )
# TODO: GCC will not link pthread library if enabled ASan
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${XSAN_COMPILE_FLAGS}" )
link_libraries(${XSAN_LINKER_FLAGS})
endif()
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${XSAN_COMPILE_FLAGS}" )
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
link_libraries(${XSAN_LINKER_FLAGS})
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
string(REPLACE "-Wl,--no-undefined" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
link_libraries(${XSAN_LINKER_FLAGS})
endif ()
endforeach()
else()
message(STATUS "Tried to enable sanitizers (-DECM_ENABLE_SANITIZERS=${ECM_ENABLE_SANITIZERS}), \
but compiler (${CMAKE_CXX_COMPILER_ID}) does not have sanitizer support")
endif()
endif()

View File

@@ -0,0 +1,35 @@
# FindGLib2.cmake
# GLib2_FOUND - System has GLib2
# GLib2_INCLUDES - The GLib2 include directories
# GLib2_LIBRARIES - The libraries needed to use GLib2
# GLib2_DEFINITIONS - Compiler switches required for using GLib2
find_package(PkgConfig)
pkg_check_modules(GLib2 QUIET glib-2.0)
set(GLib2_DEFINITIONS ${GLib2_CFLAGS_OTHER})
find_path(GLib2_INCLUDE_DIR
NAMES glib.h glib-object.h
HINTS ${GLib2_INCLUDEDIR} ${GLib2_INCLUDE_DIRS}
PATH_SUFFIXES glib-2.0)
find_path(GLIBCONFIG_INCLUDE_DIR
NAMES glibconfig.h
HINTS ${LIBDIR} ${LIBRARY_DIRS} ${_GLib2_LIBRARY_DIR}
${GLib2_INCLUDEDIR} ${GLib2_INCLUDE_DIRS}
${CMAKE_EXTRA_INCLUDES} ${CMAKE_EXTRA_LIBRARIES}
PATH_SUFFIXES glib-2.0 glib-2.0/include)
list(APPEND GLib2_INCLUDE_DIR ${GLIBCONFIG_INCLUDE_DIR})
find_library(GLib2_LIBRARY
NAMES glib-2.0 libglib-2.0
HINTS ${GLib2_LIBDIR} ${GLib2_LIBRARY_DIRS})
set(GLib2_LIBRARIES ${GLib2_LIBRARY})
set(GLib2_INCLUDE_DIRS ${GLib2_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLib2 DEFAULT_MSG
GLib2_LIBRARY GLib2_INCLUDE_DIR)
mark_as_advanced(GLib2_INCLUDE_DIR GLib2_LIBRARY)

View File

@@ -0,0 +1,61 @@
# - Try to find Gio
# Once done this will define
#
# GIO_FOUND - system has Gio
# GIO_INCLUDE_DIR - the Gio include directory
# GIO_LIBRARIES - the libraries needed to use Gio
# GIO_DEFINITIONS - Compiler switches required for using Gio
IF (GIO_INCLUDE_DIR AND GIO_LIBRARIES)
# in cache already
SET(Gio_FIND_QUIETLY TRUE)
ELSE (GIO_INCLUDE_DIR AND GIO_LIBRARIES)
SET(Gio_FIND_QUIETLY FALSE)
ENDIF (GIO_INCLUDE_DIR AND GIO_LIBRARIES)
IF (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(GIO gio-2.0)
#MESSAGE(STATUS "DEBUG: Gio include directory = ${GIO_INCLUDE_DIRS}")
#MESSAGE(STATUS "DEBUG: Gio link directory = ${GIO_LIBRARY_DIRS}")
#MESSAGE(STATUS "DEBUG: Gio CFlags = ${GIO_CFLAGS}")
SET(GIO_DEFINITIONS ${GIO_CFLAGS_OTHER})
ENDIF (NOT WIN32)
FIND_PATH(GIO_INCLUDE_DIR gio.h
PATHS
${GIO_INCLUDEDIR}
${GIO_INCLUDE_DIRS}
PATH_SUFFIXES glib-2.0/gio/
)
FIND_LIBRARY(_GioLibs NAMES gio-2.0 libgio-2.0
PATHS
${GIO_LIBDIR}
${GIO_LIBRARY_DIRS}
)
SET( GIO_LIBRARIES ${_GioLibs} )
SET( GIO_INCLUDE_DIRS ${GIO_INCLUDE_DIR} )
IF (GIO_INCLUDE_DIR AND GIO_LIBRARIES)
SET(GIO_FOUND TRUE)
ELSE (GIO_INCLUDE_DIR AND GIO_LIBRARIES)
SET(GIO_FOUND FALSE)
ENDIF (GIO_INCLUDE_DIR AND GIO_LIBRARIES)
IF (GIO_FOUND)
IF (NOT Gio_FIND_QUIETLY)
MESSAGE(STATUS "Found Gio libraries: ${GIO_LIBRARIES}")
MESSAGE(STATUS "Found Gio includes : ${GIO_INCLUDE_DIR}")
ENDIF (NOT Gio_FIND_QUIETLY)
ELSE (GIO_FOUND)
IF (Gio_FIND_REQUIRED)
MESSAGE(STATUS "Could NOT find Gio")
ENDIF(Gio_FIND_REQUIRED)
ENDIF (GIO_FOUND)
MARK_AS_ADVANCED(GIO_INCLUDE_DIR _GioLibs)

View File

@@ -0,0 +1,30 @@
# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
# This module defines
# INOTIFY_INCLUDE_DIR, where to find inotify.h, etc.
# INOTIFY_LIBRARY_DIR, the directory holding the inotify library.
# INOTIFY_FOUND, If false, do not try to use inotify.
# also defined, but not for general use are
# INOTIFY_LIBRARY, where to find the inotify library.
find_path(INOTIFY_INCLUDE_DIR sys/inotify.h
PATH_SUFFIXES inotify)
mark_as_advanced(INOTIFY_INCLUDE_DIR)
find_library(INOTIFY_LIBRARY inotify PATH_SUFFIXES lib/inotify)
get_filename_component(INOTIFY_LIBRARY_DIR ${INOTIFY_LIBRARY} PATH)
mark_as_advanced(INOTIFY_LIBRARY_DIR)
# all listed variables are TRUE
# handle the QUIETLY and REQUIRED arguments and set INOTIFY_FOUND to TRUE if
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(INOTIFY DEFAULT_MSG INOTIFY_INCLUDE_DIR INOTIFY_LIBRARY_DIR)
IF(INOTIFY_FOUND)
SET(INotify_INCLUDE_DIRS ${INOTIFY_INCLUDE_DIR})
SET(INotify_LIBRARY_DIRS ${INOTIFY_LIBRARY_DIR})
ENDIF(INOTIFY_FOUND)

View File

@@ -1,62 +0,0 @@
#.rst:
# FindInotify
# --------------
#
# Try to find inotify on this system. This finds:
# - libinotify on Unix like systems, or
# - the kernel's inotify on Linux systems.
#
# This will define the following variables:
#
# ``Inotify_FOUND``
# True if inotify is available
# ``Inotify_LIBRARIES``
# This has to be passed to target_link_libraries()
# ``Inotify_INCLUDE_DIRS``
# This has to be passed to target_include_directories()
#
# On Linux, the libraries and include directories are empty,
# even though ``Inotify_FOUND`` may be set to TRUE. This is because
# no special includes or libraries are needed. On other systems
# these may be needed to use inotify.
#
# Since 5.32.0.
#=============================================================================
# SPDX-FileCopyrightText: 2016 Tobias C. Berner <tcberner@FreeBSD.org>
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
#
# SPDX-License-Identifier: BSD-2-Clause
#=============================================================================
find_path(Inotify_INCLUDE_DIRS sys/inotify.h)
if(Inotify_INCLUDE_DIRS)
# On Linux there is no library to link against, on the BSDs there is.
# On the BSD's, inotify is implemented through a library, libinotify.
if( CMAKE_SYSTEM_NAME MATCHES "Linux")
set(Inotify_FOUND TRUE)
set(Inotify_LIBRARIES "")
set(Inotify_INCLUDE_DIRS "")
else()
find_library(Inotify_LIBRARIES NAMES inotify)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Inotify
FOUND_VAR
Inotify_FOUND
REQUIRED_VARS
Inotify_LIBRARIES
Inotify_INCLUDE_DIRS
)
mark_as_advanced(Inotify_LIBRARIES Inotify_INCLUDE_DIRS)
include(FeatureSummary)
set_package_properties(Inotify PROPERTIES
URL "https://github.com/libinotify-kqueue/"
DESCRIPTION "inotify API on the *BSD family of operating systems."
)
endif()
else()
set(Inotify_FOUND FALSE)
endif()
mark_as_advanced(Inotify_LIBRARIES Inotify_INCLUDE_DIRS)

View File

@@ -0,0 +1,22 @@
# FindLibcloudproviders.cmake
find_path(LIBCLOUDPROVIDERS_INCLUDE_DIR
NAMES cloudprovidersproviderexporter.h cloudprovidersaccountexporter.h
PATH_SUFFIXES cloudproviders
)
find_library(LIBCLOUDPROVIDERS_LIBRARY
NAMES
libcloudproviders
cloudproviders
HINTS
/usr/lib
/usr/lib/${CMAKE_ARCH_TRIPLET}
/usr/local/lib
/opt/local/lib
${CMAKE_LIBRARY_PATH}
${CMAKE_INSTALL_PREFIX}/lib
)
message("================> ${LIBCLOUDPROVIDERS_LIBRARY}")
find_package_handle_standard_args(LIBCLOUDPROVIDERS DEFAULT_MSG LIBCLOUDPROVIDERS_INCLUDE_DIR LIBCLOUDPROVIDERS_LIBRARY)

View File

@@ -52,8 +52,18 @@ if (SQLite3_FIND_VERSION AND _SQLITE3_VERSION)
set(SQLite3_VERSION _SQLITE3_VERSION)
endif (SQLite3_FIND_VERSION AND _SQLITE3_VERSION)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SQLite3 DEFAULT_MSG SQLITE3_LIBRARIES SQLITE3_INCLUDE_DIRS)
if (APPLE OR WIN32)
set(USE_OUR_OWN_SQLITE3 TRUE)
set(SQLITE3_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/3rdparty/sqlite3)
set(SQLITE3_LIBRARIES "")
set(SQLITE3_SOURCE ${SQLITE3_INCLUDE_DIR}/sqlite3.c)
MESSAGE(STATUS "Using own sqlite3 from " ${SQLITE3_INCLUDE_DIR})
else()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SQLite3 DEFAULT_MSG SQLITE3_LIBRARIES SQLITE3_INCLUDE_DIRS)
endif()
# show the SQLITE3_INCLUDE_DIRS and SQLITE3_LIBRARIES variables only in the advanced view
mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)

View File

@@ -1,93 +0,0 @@
#.rst:
# FindSharedMimeInfo
# ------------------
#
# Try to find the shared-mime-info package.
#
# This will define the following variables:
#
# ``SharedMimeInfo_FOUND``
# True if system has the shared-mime-info package
# ``UPDATE_MIME_DATABASE_EXECUTABLE``
# The update-mime-database executable
#
# and the following imported targets:
#
# ``SharedMimeInfo::UpdateMimeDatabase``
# The update-mime-database executable
#
# The follow macro is available::
#
# update_xdg_mimetypes(<path>)
#
# Updates the XDG mime database at install time (unless the ``$DESTDIR``
# environment variable is set, in which case it is up to package managers to
# perform this task).
#
# Since pre-1.0.0.
#=============================================================================
# SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>
# SPDX-FileCopyrightText: 2007 Pino Toscano <toscano.pino@tiscali.it>
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(SharedMimeInfo)
find_program (UPDATE_MIME_DATABASE_EXECUTABLE NAMES update-mime-database)
if (UPDATE_MIME_DATABASE_EXECUTABLE)
execute_process(
COMMAND "${UPDATE_MIME_DATABASE_EXECUTABLE}" -v
OUTPUT_VARIABLE _smiVersionRaw
ERROR_VARIABLE _smiVersionRaw)
string(REGEX REPLACE "update-mime-database \\([a-zA-Z\\-]+\\) ([0-9]\\.[0-9]+).*"
"\\1" SharedMimeInfo_VERSION_STRING "${_smiVersionRaw}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SharedMimeInfo
FOUND_VAR
SharedMimeInfo_FOUND
REQUIRED_VARS
UPDATE_MIME_DATABASE_EXECUTABLE
VERSION_VAR
SharedMimeInfo_VERSION_STRING)
if(SharedMimeInfo_FOUND AND NOT TARGET SharedMimeInfo::UpdateMimeDatabase)
add_executable(SharedMimeInfo::UpdateMimeDatabase IMPORTED)
set_target_properties(SharedMimeInfo::UpdateMimeDatabase PROPERTIES
IMPORTED_LOCATION "${UPDATE_MIME_DATABASE_EXECUTABLE}"
)
endif()
mark_as_advanced(UPDATE_MIME_DATABASE_EXECUTABLE)
function(UPDATE_XDG_MIMETYPES _path)
get_filename_component(_xdgmimeDir "${_path}" NAME)
if("${_xdgmimeDir}" STREQUAL packages )
get_filename_component(_xdgmimeDir "${_path}" PATH)
else()
set(_xdgmimeDir "${_path}")
endif()
# Note that targets and most variables are not available to install code
install(CODE "
set(DESTDIR_VALUE \"\$ENV{DESTDIR}\")
if (NOT DESTDIR_VALUE)
# under Windows relative paths are used, that's why it runs from CMAKE_INSTALL_PREFIX
message(STATUS \"Updating MIME database at \${CMAKE_INSTALL_PREFIX}/${_xdgmimeDir}\")
execute_process(COMMAND \"${UPDATE_MIME_DATABASE_EXECUTABLE}\" -n \"${_xdgmimeDir}\"
WORKING_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}\")
endif (NOT DESTDIR_VALUE)
")
endfunction()
include(FeatureSummary)
set_package_properties(SharedMimeInfo PROPERTIES
URL https://freedesktop.org/wiki/Software/shared-mime-info/
DESCRIPTION "A database of common MIME types")

View File

@@ -9,7 +9,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>@APPLICATION_NAME@</string>
<string>@APPLICATION_EXECUTABLE@</string>
<key>CFBundleIconFile</key>
<string>@APPLICATION_ICON_NAME@.icns</string>
<key>CFBundleIdentifier</key>

View File

@@ -0,0 +1,37 @@
# Enable address sanitizer (gcc/clang only)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
set(SANITIZERS)
set(SANITIZER_EXTRA_FLAGS " -g")
macro(add_sanitizer_option variable flag help)
option(${variable} "Enable ${help}" OFF)
if(${variable})
list(APPEND SANITIZERS ${flag})
string(REPLACE ";" " " optional_args "${ARGN}")
if(optional_args)
string(APPEND SANITIZER_EXTRA_FLAGS " ${optional_args}")
endif()
endif()
mark_as_advanced(${variable})
endmacro()
add_sanitizer_option(SANITIZE_ADDRESS "address"
"AddressSanitizer (detects memory violations, buffer overflows, memory leaks)")
add_sanitizer_option(SANITIZE_LEAK "leak"
"standalone LeakSanitizer (detects memory leaks only)")
add_sanitizer_option(SANITIZE_MEMORY "memory"
"MemorySanitizer (detects reads in uninitialized memory)")
add_sanitizer_option(SANITIZE_UNDEFINED "undefined"
"UndefinedBehaviorSanitizer (detects undefined behavior)"
"-fno-sanitize=vptr")
add_sanitizer_option(SANITIZE_THREAD "thread"
"ThreadSanitizer (detects data races)")
if(SANITIZERS)
string(REPLACE ";" "," SANITIZER_FLAGS "${SANITIZERS}")
set(SANITIZER_FLAGS "-fsanitize=${SANITIZER_FLAGS}${SANITIZER_EXTRA_FLAGS}")
string(APPEND CMAKE_CXX_FLAGS " ${SANITIZER_FLAGS}")
string(APPEND CMAKE_C_FLAGS " ${SANITIZER_FLAGS}")
string(APPEND CMAKE_EXE_LINKER_FLAGS " ${SANITIZER_FLAGS}")
endif()
endif()

View File

@@ -5,7 +5,7 @@
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
# Use this only for Clang
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if (CMAKE_CXX_COMPILER MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long -Wno-gnu-zero-variadic-macro-arguments")
endif()

View File

@@ -152,7 +152,7 @@ Conflict files are always created on the client and never on the server.
"capabilities":{
"core":{
"pollinterval":60,
"webdav-root":"remote.php/dav"
"webdav-root":"remote.php/webdav"
},
"dav":{
"chunking":"1.0"
@@ -369,77 +369,3 @@ is renamed or moved.
Example:
<oc:id>00000020oc5cfy6qqizm</oc:id>
End-to-end Encryption
---------------------
Nextcloud is built around the fundamental assumption that, as you can host your own Nextcloud server, you can trust it with your data. This assumption means data on the Nextcloud server can be provided to users through a browser interface. Users can browse their files online, access their calendars and mail and other data from the respective apps and share and collaboratively edit documents with others including guests and users without an account. While data on the server can be encrypted, this is largely designed to protect it from malicious storage solutions or theft of the whole hardware. System administrators always have access to the data.
But for a subset of data, this assumption of trust might not hold true. For example, at an enterprise, the documents of the Human Resources department or the financial department are too sensitive to allow system administrators who manage the server, access them. As a private user, you might trust your hosting provider with the vast majority of your data but not with medical records. And even if there is trust in the server administration team, a breach of the server can never entirely be ruled out and for some data, even a tiny risk is unacceptable.
The Nextcloud End-to-end Encryption feature (E2EE) was designed to offer protection against a full compromise of the server. See for more details our blog about the `threat model for the encryption solutions in Nextcloud`_ and our `webpage about End-to-end Encryption`_. If the end-to-end encryption app is enabled on the server, users can use one of the clients to select a local folder and enable this feature. This will ensure the client encrypts data before it is transmitted to the server.
The first time E2EE is enabled on a folder in any of the clients, the user is prompted with a private key consisting of 12 security words. The user is strongly recommended to record these somewhere secure as the complete loss of this private key means there is no way to access their data anymore. The key is also securely stored in the device's key storage and can be shown on demand. Making the folder available on a second device requires entering this key. Future versions of Nextcloud clients will be able to display a QR code to simplify the process of adding devices. Sharing with other users will not require any special keys or passwords.
Encrypting files locally means the server has no access to them. This brings with it a number of limitations:
* E2EE files can not be accessed or previewed through the web interface
* E2EE files can not be edited with Online Office solutions
* E2EE files can not be shared with a public link
* E2EE files can not be searched, tagged, commented on and have no versioning or trash bin
* E2EE files can not be accessed in other Nextcloud Apps. This means they have no chat sidebar, can not be attached to emails or deck cards, shared in Talk rooms and so on
* E2EE results in slower syncing of file and works poorly or not at all with large files and large quantities of files
These limitations are fundamental to how securely implemented end-to-end encryption works. We realize there are some solutions that call their technology 'end-to-end encryption' but with browser access. Reality is that offering browser access to end-to-end encrypted files would essentially negate any of the benefits of end-to-end encryption. Serving a file in the browser means the server needs to be able to read the files. But if the server can read the files, administrator or a malicious attacker who gained access to the server, can too. Decrypting the file in the browser does not solve this security risk in the least, as the javascript code that would be needed to decrypt the file comes FROM the server, and of course a compromised server would simply send modified javascript code which sends a copy of the encryption keys to the attacker without anybody noticing. See for more details our blog about the `threat model for the encryption solutions in Nextcloud`_ and our `webpage about End-to-end Encryption`_.
The E2EE design of Nextcloud allows for sharing on a per-folder level to individual users (not groups), but, as of early 2021, this feature is still on the road map for implementation in the clients.
Due to all these limitations that are inherent to true end-to-end encryption, it is only recommended for a small subset of files, in just a small number of folders. Encrypting your entire sync folder is likely to result in poor performance and sync errors and if you do not trust your server at all, Nextcloud is perhaps not the right solution for your use case. You might instead want to use encrypted archives or another solution.
.. note::
* End-to-end Encryption works with Virtual Files (VFS) but only on a per-folder level. Folders with E2EE have to be made available offline in their entirety to access the files, they can not be retrieved on demand in the folder.
.. _`webpage about End-to-end Encryption`: http://nextcloud.com/endtoend
.. _`threat model for the encryption solutions in Nextcloud`: https://nextcloud.com/blog/encryption-in-nextcloud/
Virtual Files
-------------
.. note::
* This feature is currently only available on ``Windows`` by default. ``Linux`` implementation is experimental and must be enabled by adding ``showExperimentalOptions=true`` to the ``nextcloud.cfg`` configuration file in the ``App Data`` folder. ``macOS``, at the moment, is using the same backend as ``Linux`` one. It can be enabled with the same ``showExperimentalOptions`` flag.
Oftentimes, users are working with a huge amount of files that are big in size. Synchronizing every such file to a device that's running a Nextcloud desktop client is not always possible due to the user's device storage space limitation.
Let's assume that your desktop client is connected to a server that has 1TB of data. You want all those files at hand, so you can quickly access any file via the file explorer. Your device has 512GB local storage device.
Obviously, it's not possible to synchronize even half of 1TB of data that is on the server. What should you do in this case? Of course, you can just utilize the Selective Sync feature, and keep switching between different folders, in such a way that you only synchronize those folders that you are currently working with.
Needless to say, this is far from being convenient.
That's why, starting from 3.2.0, we are introducing the VFS (Virtual Files) feature. You may have had experience working with a similar feature in other cloud sync clients. This feature is known by different names: Files On-Demand, SmartSync, etc.
The VFS does not occupy much space on the user's storage. It just creates placeholders for each file and folder. These files are quite small and only contain metadata needed to display them properly and to fetch the actual file when needed.
One will see a hydration (in other words - file download) process when double-clicking on a file that must become available. There will be a progress-bar popup displayed if the file is large enough. So, the hydration process can be observed and it makes it easy to then find out, how long, it would take to fetch the actual file from the server.
The "Hydration" can be thought of as "downloading" or "fetching" the file contents. As soon as hydration is complete, the file will then be opened normally as now it is a real file on the user's storage. It won't disappear, and, from now on, will always be available, unless it is manually dehydrated.
.. image:: images/vfs_hydration_progress_bar.png
:alt: VFS hydration progress bar
As long as the VFS is enabled, a user can choose to remove files that are no longer needed from the local storage. This can be achieved by right-clicking the file/folder in the explorer, and then, choosing "Free up local space" from the context menu.
Alternatively, space can be freed up by right-clicking the sync folder in the Settings dialog. It is also possible to make files always hydrated, or, in other words, always available locally. A user just needs to choose the "Make always available locally" option in the aforementioned context menus.
.. image:: images/vfs_context_menu_options.png
:alt: VFS context menu options
The VFS can also be disabled if needed, so, the entire folder will then be synced normally. This option is available in the context menu of a sync folder in the Settings dialog. Once disabled, the VFS can also be enabled back by using the same context menu.
Files that must be removed from the local storage only, need to be dehydrated via the "Free up local space" option, so, the placeholder will get created in place of real files.
.. note::
* End-to-end Encryption works with Virtual Files (VFS) but only on a per-folder level. Folders with E2EE can be made available offline in their entirety, but the individual files in them can not be retrieved on demand. This is mainly due to two technical reasons. First, the Windows VFS API is not designed for handling encrypted files. Second, while the VFS is designed to deal mostly with large files, E2EE is mostly recommended for use with small files as encrypting and decrypting large files puts large demands on the computer infrastructure.
User Status
-----------
Starting from 3.2.0, user status is displayed in the Nextcloud desktop client's tray window. The icon and a text message are displayed as long as those are set in the user's account menu in the Web UI (server's website). At the moment, setting the status from the desktop client is not available.
The status is updated almost immediately after it is set in the Web UI. Default user status is always "Online" if no other status is available from the server-side.
.. image:: images/status_feature_example.png
:alt: User Status feature in the tray window

View File

@@ -32,9 +32,10 @@ itself. Should the silent update fail, the client offers a manual download.
macOS
^^^^^
There is no automatic updater on macOS. If a new update is available,
the Nextcloud client initializes a pop-up dialog to alert you of the
update and requesting that you update to the latest version manually.
If a new update is available, the Nextcloud client initializes a pop-up dialog
to alert you of the update and requesting that you update to the latest
version. Due to their use of the Sparkle frameworks, this is the default
process for macOS applications.
Linux
^^^^^
@@ -95,6 +96,14 @@ To prevent automatic updates and disallow manual overrides:
.. note:: branded clients have different key names
Preventing Automatic Updates in macOS Environments
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can disable the automatic update mechanism, in the macOS operating system,
by copying the file
``nextcloud.app/Contents/Resources/deny_autoupdate_com.nextcloud.desktopclient.plist``
to ``/Library/Preferences/com.nextcloud.desktopclient.plist``.
Preventing Automatic Updates in Linux Environments
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -184,9 +184,9 @@ Then, in Terminal:
.. code-block:: bash
% echo 'export CMAKE_INSTALL_PREFIX=~/Builds' >> ~/.nextcloud_build_variables
% echo 'export CMAKE_INSTALL_PREFIX=~/Builds' >> ~/.nextcloud_build_variables
Replace ``~/Builds`` with a different directory if you'd like the build to end up elsewhere.
Replace ``~/Builds`` with a different directory if you'd like the build to end up elsewhere.
..
@@ -218,7 +218,7 @@ follow `Windows Installer Build (Cross-Compile)`_ instead.
2. Get the QtKeychain_ sources as well as the latest versions of the Nextcloud client
from Git as follows
.. code-block:: bash
.. code-block::
git clone https://github.com/frankosterfeld/qtkeychain.git
git clone git://github.com/nextcloud/client.git
@@ -259,7 +259,7 @@ follow `Windows Installer Build (Cross-Compile)`_ instead.
.. _`Windows Installer Build (Cross-Compile)`:
Windows Installer (i.e. Deployment) Build (Cross-Compile)
---------------------------------------------------------
---------------------------------------
Due to the large number of dependencies, building the client installer for Windows
is **currently only officially supported on openSUSE**, by using the MinGW cross compiler.
@@ -373,38 +373,6 @@ The following are known cmake parameters:
* ``BUILD_WITH_QT4=ON``: Builds using Qt4 (even if Qt5 is found).
* ``CMAKE_INSTALL_PREFIX=path``: Set an install prefix. This is mandatory on Mac OS
Address Sanitizer
=================
You can enable the address sanitizer to detect memory corruptions and other mistakes.
The are the following sanitizers are available:
* Address Sanitizer
* Leak anitizer
* Memory sanitizer
* Undefined sanitizer
* Threads sanitizer
You can enable one or more sanitizers through CMake. For example, to
enable the address and the undefined sanitizer, execute CMake like
``cmake .. -D ECM_ENABLE_SANITIZERS="address;undefined"``.
Keep in mind that not all combinations of sanitizers work together, and on some
platforms, not all types of sanitizers are available. For example, on Windows there is
currently only the address sanitizer available. If you are on Windows, you need to
make sure that the linker can find the sanitizer dlls at runtime. If you installed
Visual Studio in the standard location, you could find them in
**C:/ProgramFiles (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/Llvm/x64/lib/clang/10.0.0/lib/windows**.
Make sure you add this location to your path. You may also need to
`upgrade your Visual Studio version <https://docs.microsoft.com/en-us/cpp/sanitizers/asan?view=msvc-160#install-the-addresssanitizer>`_.
.. note:: If you use Visual Studio on Windows, you can enable the
sanitizer if you click on **Manage Configurations**, scroll
down to the section **CMake Command Arguments** and enter then
``-D ECM_ENABLE_SANITIZERS="address"`` in the text input field below.
After that, click on **Save and generate CMake cache to load variables**
right above the table.
.. _CMake: http://www.cmake.org/download
.. _CSync: http://www.csync.org
.. _Client Download Page: https://nextcloud.com/install/#install-clients

View File

@@ -48,9 +48,9 @@ copyright = u'2013-2021, The Nextcloud developers'
# built documents.
#
# The short X.Y version.
version = '3.3'
version = '3.2'
# The full version, including alpha/beta/rc tags.
release = '3.3.4'
release = '3.2.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@@ -33,35 +33,33 @@ Some interesting values that can be set on the configuration file are:
+---------------------------------+---------------+--------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ``[General]`` section |
+==================================+===============+=================================================================================================================+
| Variable | Default | Meaning |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``chunkSize`` | ``10000000`` (10 MB) | Specifies the chunk size of uploaded files in bytes. |
| | | The client will dynamically adjust this size within the maximum and minimum bounds (see below). |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``maxChunkSize`` | ``100000000`` (100 MB) | Specifies the maximum chunk size of uploaded files in bytes. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``minChunkSize`` | ``1000000`` (1 MB) | Specifies the minimum chunk size of uploaded files in bytes. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``targetChunkUploadDuration`` | ``6000`` (1 minute) | Target duration in milliseconds for chunk uploads. |
| | | The client adjusts the chunk size until each chunk upload takes approximately this long. |
| | | Set to 0 to disable dynamic chunk sizing. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``promptDeleteAllFiles`` | ``true`` | If a UI prompt should ask for confirmation if it was detected that all files and folders were deleted. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``timeout`` | ``300`` | The timeout for network connections in seconds. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``moveToTrash`` | ``false`` | If non-locally deleted files should be moved to trash instead of deleting them completely. |
| | | This option only works on linux |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``showExperimentalOptions`` | ``false`` | Whether to show experimental options that are still undergoing testing in the user interface. |
| | | Turning this on does not enable experimental behavior on its own. It does enable user inferface |
| | | options that can be used to opt in to experimental features. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``showMainDialogAsNormalWindow`` | ``false`` | Whether the main dialog should be shown as a normal window even if tray icons are available. |
+----------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ``[General]`` section |
+=================================+===============+=================================================================================================================+
| Variable | Default | Meaning |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``chunkSize`` | ``10000000`` (10 MB) | Specifies the chunk size of uploaded files in bytes. |
| | | The client will dynamically adjust this size within the maximum and minimum bounds (see below). |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``maxChunkSize`` | ``100000000`` (100 MB) | Specifies the maximum chunk size of uploaded files in bytes. |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``minChunkSize`` | ``1000000`` (1 MB) | Specifies the minimum chunk size of uploaded files in bytes. |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``targetChunkUploadDuration`` | ``6000`` (1 minute) | Target duration in milliseconds for chunk uploads. |
| | | The client adjusts the chunk size until each chunk upload takes approximately this long. |
| | | Set to 0 to disable dynamic chunk sizing. |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``promptDeleteAllFiles`` | ``true`` | If a UI prompt should ask for confirmation if it was detected that all files and folders were deleted. |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``timeout`` | ``300`` | The timeout for network connections in seconds. |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``moveToTrash`` | ``false`` | If non-locally deleted files should be moved to trash instead of deleting them completely. |
| | | This option only works on linux |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
| ``showExperimentalOptions`` | ``false`` | Whether to show experimental options that are still undergoing testing in the user interface. |
| | | Turning this on does not enable experimental behavior on its own. It does enable user inferface |
| | | options that can be used to opt in to experimental features. |
+---------------------------------+------------------------+--------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------+

BIN
doc/images/client-12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
doc/images/client-6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
doc/images/client-7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
doc/images/client-8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
doc/images/client-9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

BIN
doc/images/menu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

BIN
doc/images/share-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
doc/images/share-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

BIN
doc/images/wizard_url.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
doc/images/wizard_user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@@ -8,7 +8,7 @@ There are clients for Linux, macOs, and Microsoft Windows.
The currently supported server releases are the latest three stable versions
at time of publication. It means that the |version| release series is supporting
server major version 20, 21 and 22.
server major version 19, 20 and 21.
Installation on Mac OS X and Windows is the same as for any software
application: download the program and then double-click it to launch the
@@ -32,9 +32,13 @@ System Requirements
----------------------------------
- Windows 10+
- macOS 10.12+ (64-bit only)
- Linux
- FreeBSD
- macOS 10.12+ (**64-bit only**)
- macOS 10.10 & 10.11 (**64-bit and up to client legacy version 2.6.5 only**)
- CentOS 6 & 7 (64-bit only)
- Debian 8.0 & 9.0
- Fedora 25 & 26 & 27
- Ubuntu 16.04 & 17.04 & 17.10
- openSUSE Leap 42.2 & 42.3
.. note::
For Linux distributions, we support, if technically feasible, the latest 2 versions per platform and the previous LTS.
@@ -86,17 +90,17 @@ If you for instance want to install everything but the ``DesktopShortcut`` and t
1. You explicitly name all the features you actually want to install (whitelist) where `Client` is always installed anyway::
msiexec /passive /i Nextcloud-x.y.z-x64.msi ADDDEFAULT=StartMenuShortcuts
msiexec /passive /i Nextcloud-x.y.z-x64.msi ADDDEFAULT=StartMenuShortcuts
2. You pass the `NO_DESKTOP_SHORTCUT` and `NO_SHELL_EXTENSIONS` properties::
msiexec /passive /i Nextcloud-x.y.z-x64.msi NO_DESKTOP_SHORTCUT="1" NO_SHELL_EXTENSIONS="1"
msiexec /passive /i Nextcloud-x.y.z-x64.msi NO_DESKTOP_SHORTCUT="1" NO_SHELL_EXTENSIONS="1"
.. NOTE::
The Nextcloud `.msi` remembers these properties, so you don't need to specify them on upgrades.
The Nextcloud `.msi` remembers these properties, so you don't need to specify them on upgrades.
.. NOTE::
You cannot use these to change the installed features, if you want to do that, see the next section.
You cannot use these to change the installed features, if you want to do that, see the next section.
Changing Installed Features
~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -105,11 +109,11 @@ You can change the installed features later by using `REMOVE` and `ADDDEFAULT` p
1. If you want to add the the desktop shortcut later, run the following command::
msiexec /passive /i Nextcloud-x.y.z-x64.msi ADDDEFAULT="DesktopShortcut"
msiexec /passive /i Nextcloud-x.y.z-x64.msi ADDDEFAULT="DesktopShortcut"
2. If you want to remove it, simply run the following command::
msiexec /passive /i Nextcloud-x.y.z-x64.msi REMOVE="DesktopShortcut"
msiexec /passive /i Nextcloud-x.y.z-x64.msi REMOVE="DesktopShortcut"
Windows keeps track of the installed features and using `REMOVE` or `ADDDEFAULT` will only affect the mentioned features.
@@ -118,7 +122,7 @@ and `ADDDEFAULT <https://msdn.microsoft.com/en-us/library/windows/desktop/aa3675
on the Windows Installer Guide.
.. NOTE::
You cannot specify `REMOVE` on initial installation as it will disable all features.
You cannot specify `REMOVE` on initial installation as it will disable all features.
Installation Folder
^^^^^^^^^^^^^^^^^^^
@@ -150,7 +154,7 @@ This option also removes the checkbox to let users decide if they want to launch
for non passive/quiet mode.
.. NOTE::
This option does not have any effect without GUI.
This option does not have any effect without GUI.
No Reboot After Installation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -18,8 +18,8 @@ Improvements and New Features
The |version| release of the Nextcloud desktop sync client has many new features and
improvements.
* Main dialog will be a regular window if tray icons are not available on the system.
* Virtual files wil be optional. That enables the desktop client to run on older Windows versions.
* Improvements for the virtual files on Windows
* Network traffic performance improvements
* Improvements to the sync engine
* Virtual Files on Windows
* Support for the user status from the server
* Many improvements to the sync engine
* Make the end-to-end encryption work more reliable
* Improve sync performance

View File

@@ -52,53 +52,51 @@ Systray Icon
A right-click on the systray icon opens a menu for quick access to multiple
operations.
.. figure:: images/traymenu.png
.. figure:: images/menu.png
:alt: the right-click sync client menu
This menu provides the following options:
* Open main dialog
* Paus sync/Resume sync
* Quick access to your accounts
* Sync status
* Recent Changes, showing latest activities
* Settings
* Exit Nextcloud, logging out and closing the client
* Help menu
* Pause synchronizations
* An option to log in or log out of all of your accounts at once
* Quit Nextcloud, logging out and closing the client
A left-click on your systray icon opens the main dialog of the desktop client.
A left-click on your systray icon opens the desktop client to the account
settings window.
.. figure:: images/main_dialog.png
:alt: Main dialog
The main dialogs show recent activities, errors and server notifications.
When clicking on the main dialog and then clicking on the avatar of the user, the Settings can be opened.
.. figure:: images/client-6.png
:alt: Account settings window
Configuring Nextcloud Account Settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. index:: account settings, user, password, Server URL
.. figure:: images/settingsdialog.png
:alt: Main dialog
At the top of the window are tabs for each configured sync account, and two
others for General and Network settings. On your account tabs you
At the top of the window are tabs for each configured sync account, and three
others for Activity, General and Network settings. On your account tabs you
have the following features:
* Connection status, showing which Nextcloud server you are connected to, and
your Nextcloud username.
* An **Account** button, which contains a dropdown menu with **Add New**,
**Log Out**, and **Remove**.
* Used and available space on the server.
* Current synchronization status.
* **Add Folder Sync Connection** button.
The little button with three dots (the overflow menu) that sits to the right of
the sync status bar offers additional options:
the sync status bar offers four additional options:
* Open Folder
* Choose What to Sync (This appears only when your file tree is collapsed, and
expands the file tree)
* Pause Sync / Resume Sync
* Remove folder sync connection
* Availability (Only available if virtual files support is enabled)
* Enable virtual file support/Disable virtual file support
**Open Folder** opens your local Nextcloud sync folder.
@@ -107,7 +105,7 @@ account. It will continue to update file and folder lists, without
downloading or updating files. To stop all sync activity use **Remove
Folder Sync Connection**.
.. figure:: images/general_settings_folder_context_menu.png
.. figure:: images/client-7.png
:alt: Extra options for sync operations
.. note:: Nextcloud does not preserve the mtime (modification time) of
@@ -160,28 +158,62 @@ that does not change the status of the parent directories.
Sharing From Your Desktop
-------------------------
The Nextcloud desktop sync client integrates with your file manager. Finder on
macOS and Explorer on Windows. Linux users must install an additional package
depending on the used file manager. Available are e.g. ``nautilus-nextcloud``
(Ubuntu/Debian), ``dolphin-nextcloud`` (Kubuntu), ``nemo-nextcloud`` and
``caja-nextcloud``. You can create share links, and share with internal
Nextcloud users the same way as in your Nextcloud Web interface.
The Nextcloud desktop sync client integrates with your file manager: Finder on
macOS, Explorer on Windows, and Nautilus on Linux. (Linux users must install
the ``Nextcloud-client-nautilus`` plugin.) You can create share links, and share
with internal Nextcloud users the same way as in your Nextcloud Web interface.
.. figure:: images/mac-share.png
:alt: Sync client integration in Windows Explorer.
In you file explorer, click on a file and in the context menu go to
**Nextcloud** and then lick on **Share options** to bring up the Share
dialog.
Right-click your systray icon, hover over the account you want to use, and
left-click "Open folder [folder name] to quickly enter your local Nextcloud
folder. Right-click the file or folder you want to share to expose the share
dialog, and click **Share with Nextcloud**.
.. figure:: images/share_context_menu.png
.. figure:: images/share-1.png
:alt: Sharing from Windows Explorer.
From this dialog you can share a file.
The share dialog has all the same options as your Nextcloud Web interface.
.. figure:: images/share_dialog.png
:alt: Share dialog
.. figure:: images/share-2.png
:alt: Share dialog in Windows Explorer.
Use **Share with Nextcloud** to see who you have shared with, and to modify
their permissions, or to delete the share.
Activity Window
---------------
The Activity window contains the log of your recent activities, organized over
three tabs: **Server Activities**, which includes new shares and files
downloaded and deleted, **Sync Protocol**, which displays local activities such
as which local folders your files went into, and **Not Synced** shows errors
such as files not synced. Double clicking an entry pointing to an existing
file in **Server Activities** or **Sync Protocol** will open the folder containing
the file and highlight it.
.. figure:: images/client-8.png
:alt: Activity windows logs all server and client activities.
Server Notifications
--------------------
Starting with version 2.2.0, the client will display notifications from your
Nextcloud server that require manual interaction by you. For example, when a
user on a remote Nextcloud creates a new Federated share for you, you can accept
it from your desktop client.
The desktop client automatically checks for available notifications
automatically on a regular basis. Notifications are displayed in the Server
Activity tab, and if you have **Show Desktop Notifications** enabled (General
tab) you'll also see a systray notification.
.. figure:: images/client-12.png
:alt: Activity window with notification.
This also displays notifications sent to users by the Nextcloud admin via the
Announcements app.
General Window
--------------
@@ -192,7 +224,7 @@ is where you will find the **Edit Ignored Files** button, to launch the ignored
files editor, and **Ask confirmation before downloading
folders larger than [folder size]**.
.. figure:: images/settings_general.png
.. figure:: images/client-9.png
:alt: General window contains configuration options.
Using the Network Window

View File

@@ -10,7 +10,7 @@ monitor for file system changes.
Install ``nextcloudcmd``
~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~
CentOS
@@ -46,9 +46,6 @@ the server URL.
Other command line switches supported by ``nextcloudcmd`` include the following:
``--path``
Overrides default remote root folder to a specific subfolder on the server(e.g.: /Documents would sync the Documents subfolder on the server)
``--user``, ``-u`` ``[user]``
Use ``user`` as the login name.
@@ -70,6 +67,12 @@ Other command line switches supported by ``nextcloudcmd`` include the following:
``--httpproxy http://[user@pass:]<server>:<port>``
Uses ``server`` as HTTP proxy.
``--nonshib``
Uses Non Shibboleth WebDAV Authentication
``--davpath [path]``
Overrides the WebDAV Path with ``path``
``--exclude [file]``
Exclude list file
@@ -89,15 +92,15 @@ Credential Handling
::
$ nextcloudcmd /home/user/my_sync_folder https://carla:secret@server/nextcloud
$ nextcloudcmd /home/user/my_sync_folder https://carla:secret@server/nextcloud/remote.php/webdav/
To synchronize the Nextcloud directory ``Music`` to the local directory
``media/music``, through a proxy listening on port ``8080``, and on a gateway
machine using IP address ``192.168.178.1``, the command line would be::
$ nextcloudcmd --httpproxy http://192.168.178.1:8080 --path /Music \
$ nextcloudcmd --httpproxy http://192.168.178.1:8080 \
$HOME/media/music \
https://server/nextcloud
https://server/nextcloud/remote.php/webdav/Music
``nextcloudcmd`` will prompt for the user name and password, unless they have
been specified on the command line or ``-n`` has been passed.
@@ -117,5 +120,5 @@ Example
::
$ nextcloudcmd --path /<Directory_that_has_been_created> /home/user/<my_sync_folder> \
https://<username>:<secret>@<server_address>
$ nextcloudcmd /home/user/<my_sync_folder> \
https://<username>:<secret>@<server_address>/remote.php/webdav/<Directory_that_has_been_created>

View File

@@ -26,9 +26,7 @@ The other options are:
``--logdebug``
Also output debug-level messages in the log (equivalent to setting the env var QT_LOGGING_RULES="qt.*=true;*.debug=true").
)
``--confdir`` `<dirname>`
Uses the specified configuration directory.
``--background``
Launch the application in the background (i.e. without opening the main dialog).

View File

@@ -34,7 +34,7 @@ Identifying Basic Functionality Problems
For example, if your Nextcloud instance is installed at
``http://yourserver.com/nextcloud``, your WebDAV server address is
``http://yourserver.com/nextcloud/remote.php/dav``.
``http://yourserver.com/nextcloud/remote.php/webdav``.
If you are prompted for your username and password but, after providing the
correct credentials, authentication fails, please ensure that your

View File

@@ -12,39 +12,29 @@ as an icon in the system tray (Windows, KDE), status bar
.. image:: images/icon.png
Main dialog
~~~~~~~~~~~
.. index:: activity, recent changes, sync activity, main dialog, adding account, account, add account, remove account
The main dialog, which can be invoked from the tray icon in the
taskbar, will show files information about the activities of the sync
client and Nextcloud. If there are any synchronization issues, they
will show up here. The dialog also gives information about other
activities or notifications like Talk mentions or file changes. It
does also show the status of the user.
.. image:: images/main_dialog.png
When clicking on the avatar a menu opens where it is possible to add a
new account or removing an existing account.
Menu
----
.. image:: images/traymenu.png
.. image:: images/menu.png
A right click on the icon provides the following menu:
A right click on the icon (left click on Ubuntu and macOS)
provides the following menu:
* ``Open main dialog``: Opens the main dialog.
* ``Pause sync``: Pauses the synchronization.
* ``Settings``: Provides access to the settings menu.
* ``Exit Nextcloud``: Quits Nextcloud Client, ending a currently running
* ``Open Nextcloud in browser``: Opens the Nextcloud web interface
* ``Open folder 'Nextcloud'``: Opens the local folder. If multiple
sync targets have been defined, an entry will exist for each local folder.
* **Disk space indicator**: Shows how much space is used on the server.
* Operation indicator: Shows the status of the current sync process, or
``Up to date`` if server and client are in sync.
* **Recent Changes**: shows the last six files modified by sync operations,
and provides access to the Sync status, which lists all changes
since the last restart of Nextcloud Client.
* ``Settings...``: provides access to the settings menu.
* ``Help``: Opens a browser to display this help.
* ``Log out``: Logs the client out of the server.
* ``Quit Nextcloud``: Quits Nextcloud Client, ending a currently running
sync run.
.. NOTE::
This menu is not available on macOS.
Settings
--------
@@ -61,41 +51,28 @@ Where:
* ``Connected to <Nextcloud instance> as <user>``: Indicates the Nextcloud server
which the client is syncing with and the user account on that server.
* If the End-to-End encryption app is installed, then the current used
passphrase can be shown with clicking on ``Display mnemonic``.
Clicking on the tree dot menu or doing a right click on the folder
opens up a context menu with the following options:
* ``Open folder``: Opens the folder in the file explorer which the
operating system provides. In example on Windows it will open the Windows Explorer.
* ``Create new folder``: Creates a new folder.
* ``Force sync now``: Forces a synchronization run.
* ``Availability``: This entry is only available if the folder uses the
virtual files feature. The files in the folder can be either made
available offline with ``Make always available locally`` or if disk
space needs to be saved, they can be turned into placeholder files
with ``Free up local space``. ``Free up local space`` will not
delete any files.
* ``Add folder sync connection``: Provides the ability to add another folder to the sync
* ``Add Folder Sync Connection...``: Provides the ability to add another folder to the sync
(see ``Adding a folder sync connection``).
* ``Pause sync/Resume sync``: Will pause the current sync or prevent the client from
* ``Pause/Resume``: Will pause the current sync or prevent the client from
starting a new sync. Resume will resume the sync process.
* ``Remove folder sync connection``: Will remove the selected folder from being synced. This is used,
* ``Remove``: Will remove the selected folder from being synced. This is used,
for instance, when there is a desire to sync only a few folders and not the
root. First, remove the root from sync, then add the folders to sync as
desired.
* ``Storage Usage``: Provides further details on the storage utilization on the
Nextcloud server.
* ``Edit Ignored Files``: Provides a list of files which will be ignored, i.e.,
will not sync between the client and server. The ignored files editor allows
adding patterns for files or directories that should be excluded from the
sync process. Besides normal characters, wild cards may be used, an asterisk
* indicating multiple characters, or a question mark ? indicating a single
character.
* ``Enable virtual file support/Disable virtual file support``: Enable
or disable virtual file support for this folder.
* ``Modify Account``: Allows the user to change the Nextcloud server being synced
to. It brings up the Setting up an Account (see above) windows.
.. image:: images/settingsdialog.png
.. image:: images/settings_account.png
:scale: 50 %
Adding a Folder Sync Connection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -104,15 +81,32 @@ Adding a new sync is initiated by clicking ``Add Folder Sync Connection`` in
the ``Account`` settings.
.. image:: images/folderwizard_local.png
:scale: 50 %
The Directory and alias name must be unique.
Then select the folder on the server to sync with. It is important to note that, a
.. image:: images/folderwizard_remote.png
:scale: 50 %
Select the folder on the server to sync with. It is important to note that, a
server folder can only sync to the client one time. So, in the above example,
the sync is to the server root directory and thus it is not possible to select
another folder under the root to sync.
.. image:: images/folderwizard_remote.png
Activity
~~~~~~~~
.. index:: activity, recent changes, sync activity
The Activity window, which can be invoked either from the main menu (``Recent
Changes -> View more activity…``) or the Activity tab on the left side of the settings
window, provides an in-depth account of the recent sync activity. It will show
files that have not been synced because they are on the ignored files list, or
because they cannot be synced in a cross-platform manner due to containing
special characters that cannot be stored on certain file systems.
.. image:: images/settings_activity.png
:scale: 50 %
General
~~~~~~~
@@ -122,6 +116,7 @@ General
The tab provides several useful options:
.. image:: images/settings_general.png
:scale: 50 %
* ``Launch on System Startup``: This option is automatically activated
once a user has conimaged his account. Un-checking the box will cause

View File

@@ -24,14 +24,11 @@ The first parameter is the local directory. The second parameter is
the server URL.
.. note:: Prior to the 1.6 release of nextcloudcmd, the tool only accepted
``owncloud://`` or ``ownclouds://`` in place of ``http://`` and ``https://`` as
``nextcloud://`` or ``nextclouds://`` in place of ``http://`` and ``https://`` as
a scheme. See ``Examples`` for details.
OPTIONS
=======
``--path``
Overrides default remote root folder to a specific subfolder on the server(e.g.: /Documents would sync the Documents subfolder on the server)
``—user``, ``-u`` ``[user]``
Use ``user`` as the login name.
@@ -53,6 +50,12 @@ OPTIONS
``—httpproxy http://[user@pass:]<server>:<port>``
Uses ``server`` as HTTP proxy.
``—nonshib``
Uses Non Shibboleth WebDAV Authentication
``—davpath [path]``
Overrides the WebDAV Path with ``path``
``—exclude [file]``
Exclude list file
@@ -71,18 +74,18 @@ To synchronize the nextCloud directory ``Music`` to the local directory ``media/
through a proxy listening on port ``8080`` on the gateway machine ``192.168.178.1``,
the command line would be::
$ nextcloudcmd —httpproxy http://192.168.178.1:8080 --path /Music \
$ nextcloudcmd —httpproxy http://192.168.178.1:8080 \
$HOME/media/music \
https://server/nextcloud
https://server/nextcloud/remote.php/webdav/Music
``nextcloudcmd`` will enquire user name and password, unless they have
been specified on the command line or ``-n`` (see `netrc(5)`) has been passed.
Using the legacy scheme, it would be::
$ nextcloudcmd —httpproxy http://192.168.178.1:8080 --path /Music \
$ nextcloudcmd —httpproxy http://192.168.178.1:8080 \
$HOME/media/music \
ownclouds://server/nextcloud
nextclouds://server/nextcloud/remote.php/webdav/Music
BUGS

View File

@@ -2,7 +2,7 @@
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ Desktop
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@

View File

@@ -6,6 +6,5 @@
<file>theme/Style/Style.qml</file>
<file>theme/Style/qmldir</file>
<file>src/gui/tray/ActivityActionButton.qml</file>
<file>src/gui/tray/ActivityItem.qml</file>
</qresource>
</RCC>

View File

@@ -11,16 +11,15 @@ if( UNIX AND NOT APPLE )
endif()
if(BUILD_SHELL_INTEGRATION_DOLPHIN)
find_package(KF5KIO "5.16")
if(KF5KIO_FOUND)
find_package(ECM 1.2.0 NO_MODULE QUIET)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(KF5 "5.16" COMPONENTS KIO)
if(KF5_FOUND)
add_subdirectory(dolphin)
else()
message("Dolphin plugin disabled: KDE Frameworks 5.16 not found")
endif()
endif()
endif()
if(CLOUDPROVIDERS_FOUND)
add_subdirectory(libcloudproviders)
endif()

View File

@@ -1,18 +1,25 @@
project(dolphin-owncloud)
cmake_minimum_required(VERSION 2.8.12)
include(FeatureSummary)
set(QT_MIN_VERSION "5.12.0")
set(KF5_MIN_VERSION "5.16.0")
set(KDE_INSTALL_USE_QT_SYS_PATHS ON CACHE BOOL "Install the plugin in the right directory")
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core Network)
find_package(ECM ${KF5_MIN_VERSION} REQUIRED CONFIG)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
find_package(ECM 1.2.0 REQUIRED CONFIG)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS CoreAddons KIO)
set_package_properties(DolphinVcs PROPERTIES
DESCRIPTION "the Dolphin plugin library"
URL "http://dolphin.kde.org/"
TYPE REQUIRED
PURPOSE "Provides plugin interfaces for Dolphin."
)
set(KDE_INSTALL_DIRS_NO_DEPRECATED TRUE)
include(KDEInstallDirs)
# Before KF5 5.54, kcoreaddons_add_plugin uses deprecated VAR PLUGIN_INSTALL_DIR
@@ -21,9 +28,16 @@ include(KDEInstallDirs)
set(PLUGIN_INSTALL_DIR "${KDE_INSTALL_PLUGINDIR}")
include(KDECMakeSettings)
include(KDECompilerSettings)
include(ECMMarkNonGuiExecutable)
include(GenerateExportHeader)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
if (NOT DEFINED APPLICATION_EXECUTABLE )
set ( APPLICATION_EXECUTABLE "owncloud" )
endif()
#---HELPER---
set(OWNCLOUDDOLPHINHELPER ${APPLICATION_EXECUTABLE}dolphinpluginhelper)
add_library(${OWNCLOUDDOLPHINHELPER} SHARED ownclouddolphinpluginhelper.cpp)

View File

@@ -42,7 +42,7 @@ endmacro(libcloudproviders_add_config _sources)
find_package(Qt5 5.12 COMPONENTS DBus)
IF (Qt5DBus_FOUND)
IF (UNIX AND Qt5DBus_FOUND AND LIBCLOUDPROVIDERS_FOUND)
STRING(TOLOWER "${APPLICATION_VENDOR}" DBUS_VENDOR)
STRING(REGEX REPLACE "[^A-z0-9]" "" DBUS_VENDOR "${DBUS_VENDOR}")
STRING(REGEX REPLACE "[^A-z0-9]" "" DBUS_APPLICATION_NAME "${APPLICATION_SHORTNAME}")

View File

@@ -72,7 +72,7 @@ IFACEMETHODIMP_(ULONG) NCContextMenu::Release()
// Initialize the context menu handler.
IFACEMETHODIMP NCContextMenu::Initialize(
LPCITEMIDLIST, LPDATAOBJECT pDataObj, HKEY)
LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hKeyProgID)
{
m_selectedFiles.clear();

View File

@@ -42,11 +42,11 @@
There is a limit in Windows (oh wonder^^) so that only the first 15 extensions get invoked, this is why to use that dirty little trick to get ahead ;)
See: https://docs.microsoft.com/en-us/windows/win32/shell/context-menu-handlers?redirectedfrom=MSDN#employing-the-verb-selection-model
-->
<?define OverlayNameError = " @APPLICATION_SHORTNAME@Error" ?>
<?define OverlayNameOK = " @APPLICATION_SHORTNAME@OK" ?>
<?define OverlayNameOKShared = " @APPLICATION_SHORTNAME@OKShared" ?>
<?define OverlayNameSync = " @APPLICATION_SHORTNAME@Sync" ?>
<?define OverlayNameWarning = " @APPLICATION_SHORTNAME@Warning" ?>
<?define OverlayNameError = " @APPLICATION_SHORTNAME@Error" ?>
<?define OverlayNameOK = " @APPLICATION_SHORTNAME@OK" ?>
<?define OverlayNameOKShared = " @APPLICATION_SHORTNAME@OKShared" ?>
<?define OverlayNameSync = " @APPLICATION_SHORTNAME@Sync" ?>
<?define OverlayNameWarning = " @APPLICATION_SHORTNAME@Warning" ?>
<?define OverlayDescription = "@APPLICATION_SHORTNAME@ overlay handler" ?>

Some files were not shown because too many files have changed in this diff Show More