1
0
mirror of https://github.com/chylex/Nextcloud-Desktop.git synced 2026-04-05 05:34:18 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
Camila Ayres
477614b8c9 Merge pull request #1355 from nextcloud/backport/1354/stable-2.5.3
[stable-2.5.3] Minor text change in the link to help in the tab 'General'.

Signed-off-by: Camila San <hello@camila.codes>
2019-07-25 12:20:49 +02:00
Camila San
9d060e5e55 Minor text change in the link to help in the tab 'General'.
Also uses helpUrl() retrieve the correct APPLICATION_HELP_URL
instead of APPLICATION_DOMAIN.

Signed-off-by: Camila San <hello@camila.codes>
2019-07-24 17:08:31 +00:00
410 changed files with 65274 additions and 105025 deletions

View File

@@ -22,7 +22,7 @@ steps:
source /opt/qt57/bin/qt57-env.sh && source /opt/qt57/bin/qt57-env.sh &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -59,7 +59,7 @@ steps:
source /opt/qt58/bin/qt58-env.sh && source /opt/qt58/bin/qt58-env.sh &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -96,7 +96,7 @@ steps:
source /opt/qt59/bin/qt59-env.sh && source /opt/qt59/bin/qt59-env.sh &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -137,7 +137,7 @@ steps:
source /opt/qt510/bin/qt510-env.sh && source /opt/qt510/bin/qt510-env.sh &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -178,7 +178,7 @@ steps:
source /opt/qt511/bin/qt511-env.sh && source /opt/qt511/bin/qt511-env.sh &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -219,7 +219,7 @@ steps:
source /opt/qt511/bin/qt511-env.sh && source /opt/qt511/bin/qt511-env.sh &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -237,17 +237,13 @@ name: qt-5.12
steps: steps:
- name: build and test - name: build and test
image: nextcloudci/client-5.12:client-5.12-5 image: nextcloudci/client-5.12:client-5.12-2
commands: commands:
# Install QtKeyChain # Install QtKeyChain
- /bin/bash -c " - /bin/bash -c "
export CC=gcc-7 && export CC=gcc-7 &&
export CXX=g++-7 && export CXX=g++-7 &&
export QT_BASE_DIR=/opt/qt5.12.5 && source /opt/qt512/bin/qt512-env.sh &&
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:/usr/local/lib:\$LD_LIBRARY_PATH &&
export PKG_CONFIG_PATH=\$QT_BASE_DIR/lib/pkgconfig:\$PKG_CONFIG_PATH &&
cd /tmp && cd /tmp &&
git clone https://github.com/frankosterfeld/qtkeychain.git && git clone https://github.com/frankosterfeld/qtkeychain.git &&
cd qtkeychain && cd qtkeychain &&
@@ -261,14 +257,10 @@ steps:
- /bin/bash -c " - /bin/bash -c "
export CC=gcc-7 && export CC=gcc-7 &&
export CXX=g++-7 && export CXX=g++-7 &&
export QT_BASE_DIR=/opt/qt5.12.5 && source /opt/qt512/bin/qt512-env.sh &&
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:/usr/local/lib:\$LD_LIBRARY_PATH &&
export PKG_CONFIG_PATH=\$QT_BASE_DIR/lib/pkgconfig:\$PKG_CONFIG_PATH &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -286,17 +278,13 @@ name: qt-5.12-clang
steps: steps:
- name: build and test - name: build and test
image: nextcloudci/client-5.12:client-5.12-5 image: nextcloudci/client-5.12:client-5.12-2
commands: commands:
# Install QtKeyChain # Install QtKeyChain
- /bin/bash -c " - /bin/bash -c "
export CC=clang-6.0 && export CC=clang-6.0 &&
export CXX=clang++-6.0 && export CXX=clang++-6.0 &&
export QT_BASE_DIR=/opt/qt5.12.5 && source /opt/qt512/bin/qt512-env.sh &&
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:/usr/local/lib:\$LD_LIBRARY_PATH &&
export PKG_CONFIG_PATH=\$QT_BASE_DIR/lib/pkgconfig:\$PKG_CONFIG_PATH &&
cd /tmp && cd /tmp &&
git clone https://github.com/frankosterfeld/qtkeychain.git && git clone https://github.com/frankosterfeld/qtkeychain.git &&
cd qtkeychain && cd qtkeychain &&
@@ -310,14 +298,10 @@ steps:
- /bin/bash -c " - /bin/bash -c "
export CC=clang-6.0 && export CC=clang-6.0 &&
export CXX=clang++-6.0 && export CXX=clang++-6.0 &&
export QT_BASE_DIR=/opt/qt5.12.5 && source /opt/qt512/bin/qt512-env.sh &&
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:/usr/local/lib:\$LD_LIBRARY_PATH &&
export PKG_CONFIG_PATH=\$QT_BASE_DIR/lib/pkgconfig:\$PKG_CONFIG_PATH &&
mkdir build && mkdir build &&
cd build && cd build &&
cmake -D NO_SHIBBOLETH=1 -DBUILD_UPDATER=ON -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 -DSANITIZE_ADDRESS=ON ../ && cmake -D NO_SHIBBOLETH=1 -DCMAKE_BUILD_TYPE=Debug -DUNIT_TESTING=1 ../ &&
make && make &&
useradd -m -s /bin/bash test && useradd -m -s /bin/bash test &&
chown -R test:test . && chown -R test:test . &&
@@ -335,35 +319,16 @@ name: AppImage
steps: steps:
- name: build - name: build
image: nextcloudci/client-5.12:client-5.12-5 image: nextcloudci/client-5.12:client-5.12-2
commands: commands:
- /bin/bash -c "./admin/linux/build-appimage.sh" - /bin/bash -c "./admin/linux/build-appimage.sh"
- /bin/bash -c "./admin/linux/upload-appimage.sh"
trigger: trigger:
branch: branch:
- master - master
event: event:
- pull_request - pull_request
- push - push
---
kind: pipeline
name: Debian
steps:
- name: build
image: nextcloudci/client-debian-ci:client-debian-ci-2
commands:
- /bin/bash -c "./admin/linux/debian/drone-build.sh"
environment:
DEBIAN_SECRET_KEY:
from_secret: DEBIAN_SECRET_KEY
DEBIAN_SECRET_IV:
from_secret: DEBIAN_SECRET_IV
trigger:
branch:
- stable-2.6
event:
- tag
--- ---
kind: pipeline kind: pipeline
name: Documentation name: Documentation

9
.gitignore vendored
View File

@@ -15,18 +15,9 @@ cscope.*
tags tags
t1.cfg t1.cfg
## Ignore Visual Studio Code config & environment files
.vs/
.vscode/
## Ignore Visual Studio temporary files, build results, and ## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. ## files generated by popular Visual Studio add-ons.
# CMake integration on VS2019+
CMakeSettings.json
# User-specific files # User-specific files
*.suo *.suo
*.user *.user

6
.gitmodules vendored
View File

@@ -1,3 +1,9 @@
[submodule "src/3rdparty/qtmacgoodies"]
path = src/3rdparty/qtmacgoodies
url = https://github.com/camilasan/qtmacgoodies.git
[submodule "binary"]
path = binary
url = git://github.com/owncloud/owncloud-client-binary.git
[submodule "src/3rdparty/libcrashreporter-qt"] [submodule "src/3rdparty/libcrashreporter-qt"]
path = src/3rdparty/libcrashreporter-qt path = src/3rdparty/libcrashreporter-qt
url = git://github.com/dschmidt/libcrashreporter-qt.git url = git://github.com/dschmidt/libcrashreporter-qt.git

View File

@@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[bg_BG]=@APPLICATION_ICON_NAME@ Icon[bg_BG]=@APPLICATION_ICON_NAME@
Name[bg_BG]=@APPLICATION_NAME@ десктоп клиент за синхронизиране Name[bg_BG]=@APPLICATION_NAME@ клиент за синхронизиране на десктоп
Comment[bg_BG]=@APPLICATION_NAME@ десктоп клиент за синхронизиране Comment[bg_BG]=@APPLICATION_NAME@ клиент за синхронизиране на десктоп
GenericName[bg_BG]=Синхронизиране на папка GenericName[bg_BG]=Синхронизиране на папка

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[br]=@APPLICATION_ICON_NAME@
Name[br]=@APPLICATION_NAME@ burev kempreet an implijer
Comment[br]=@APPLICATION_NAME@ burev kempreet an implijer
GenericName[br]=Tuliad kemprenan

View File

@@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[ca]=@APPLICATION_ICON_NAME@ Icon[ca]=@APPLICATION_ICON_NAME@
Name[ca]=Client de sincronització d'escriptori del @APPLICATION_NAME@ Name[ca]=@APPLICATION_NAME@ client de sincronització d'escriptori
Comment[ca]=Client de sincronització d'escriptori del @APPLICATION_NAME@ Comment[ca]=@APPLICATION_NAME@ client de sincronització d'escriptori
GenericName[ca]=Directori de sincronització GenericName[ca]=Directori de sincronització

View File

@@ -198,7 +198,7 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[cs_CZ]=@APPLICATION_ICON_NAME@ Icon[cs_CZ]=@NAZEV_IKONY_APLIKACE@
Name[cs_CZ]=@APPLICATION_NAME@ synchronizační klient pro desktop Name[cs_CZ]=@APPLICATION_NAME@ synchronizační klient pro desktop
Comment[cs_CZ]=@APPLICATION_NAME@ synchronizační klient pro desktop Comment[cs_CZ]=@APPLICATION_NAME@ synchronizační klient pro desktop
GenericName[cs_CZ]=Synchronizace složek GenericName[cs_CZ]=Synchronizace složek

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[cy_GB]=@APPLICATION_ICON_NAME@
Name[cy_GB]=@APPLICATION_NAME@ cleient cydweddu bwrdd gwaith
Comment[cy_GB]=@APPLICATION_NAME@ cleient cydweddu bwrdd gwaith
GenericName[cy_GB]=Cydweddu Ffolder

View File

@@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[de]=@APPLICATION_ICON_NAME@ Icon[de]=@APPLICATION_ICON_NAME@
Name[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisierung Name[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
Comment[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisierung Comment[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
GenericName[de]=Synchronisierungsordner GenericName[de]=Synchronisationsordner

View File

@@ -198,7 +198,4 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[el]=@APPLICATION_ICON_NAME@
Name[el]=@APPLICATION_NAME@ πρόγραμμα συγχρονισμού
Comment[el]=@APPLICATION_NAME@ πρόγραμμα συγχρονισμού
GenericName[el]=Συγχρονισμός φακέλου GenericName[el]=Συγχρονισμός φακέλου

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[es_AR]=@APPLICATION_ICON_NAME@
Name[es_AR]=@APPLICATION_NAME@ cliente de sincronización de escritorio
Comment[es_AR]=@APPLICATION_NAME@ cliente de sincronización de escritorio
GenericName[es_AR]=Sincronización de carpetas

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[et_EE]=@APPLICATION_ICON_NAME@
Name[et_EE]=@APPLICATION_NAME@ töölaua sünkimise klient
Comment[et_EE]=@APPLICATION_NAME@ töölaua sünkroniseerimise klient
GenericName[et_EE]=Kausta Sünkroonimine

View File

@@ -1,201 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Comment[fa]=@ APPLICATION_NAME @ مشتری هماهنگ سازی دسکتاپ

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[fi_FI]=@APPLICATION_ICON_NAME@
Name[fi_FI]=@APPLICATION_NAME@ työpöydän synkronointipääte
Comment[fi_FI]=@APPLICATION_NAME@ työpöydän synkronointipääte
GenericName[fi_FI]=Kansio synkronointi

View File

@@ -198,7 +198,6 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[hr]=@APPLICATION_ICON_NAME@ Name[hr]=sinkronizacija računala
Name[hr]=@APPLICATION_NAME@ klijent za sink. računala Comment[hr]=klijent za sinkronizaciju računala
Comment[hr]=@APPLICATION_NAME@ klijent za sinkronizaciju računala
GenericName[hr]=Sinkronizacija mapa GenericName[hr]=Sinkronizacija mapa

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[mk]=@APPLICATION_ICON_NAME@
Name[mk]=@APPLICATION_NAME@ клиент за синхронизација на компјутер
Comment[mk]=@APPLICATION_NAME@ клиент за синхронизација на компјутер
GenericName[mk]=Папка за синхронизација

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[oc]=@APPLICATION_ICON_NAME@
Name[oc]=@APPLICATION_NAME@ client de sincronizacion
Comment[oc]=@APPLICATION_NAME@ client de sincronizacion
GenericName[oc]=Sincro. dossièr

View File

@@ -201,4 +201,4 @@ X-GNOME-Autostart-Delay=3
Icon[ro]=@APPLICATION_ICON_NAME@ Icon[ro]=@APPLICATION_ICON_NAME@
Name[ro]=@APPLICATION_NAME@ client de sincronizare pentru desktop Name[ro]=@APPLICATION_NAME@ client de sincronizare pentru desktop
Comment[ro]=@APPLICATION_NAME@ client de sincronizare pentru desktop Comment[ro]=@APPLICATION_NAME@ client de sincronizare pentru desktop
GenericName[ro]=Sincronizare director GenericName[ro]=Sincronizare dosare

View File

@@ -201,4 +201,4 @@ X-GNOME-Autostart-Delay=3
Icon[sk_SK]=@APPLICATION_ICON_NAME@ Icon[sk_SK]=@APPLICATION_ICON_NAME@
Name[sk_SK]=@APPLICATION_NAME@ synchronizačný klient pre PC Name[sk_SK]=@APPLICATION_NAME@ synchronizačný klient pre PC
Comment[sk_SK]=@APPLICATION_NAME@ synchronizačný klient pre PC Comment[sk_SK]=@APPLICATION_NAME@ synchronizačný klient pre PC
GenericName[sk_SK]=Synchronizácia priečinkov GenericName[sk_SK]=Synchnonizácia priečinkov

View File

@@ -199,6 +199,6 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[sl]=@APPLICATION_ICON_NAME@ Icon[sl]=@APPLICATION_ICON_NAME@
Name[sl]=@APPLICATION_NAME@ program za usklajevanje Name[sl]=@APPLICATION_NAME@ odjemalec za usklajevanje
Comment[sl]=@APPLICATION_NAME@ program za usklajevanje Comment[sl]=@APPLICATION_NAME@ odjemalec za usklajevanje
GenericName[sl]=Usklajevanje map GenericName[sl]=Usklajevanje map

View File

@@ -199,6 +199,4 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[sv]=@APPLICATION_ICON_NAME@ Icon[sv]=@APPLICATION_ICON_NAME@
Name[sv]=@APPLICATION_NAME@ desktopssynkklient
Comment[sv]=@APPLICATION_NAME@ desktopssynkroniseringsklient
GenericName[sv]=Mappsynkronisering GenericName[sv]=Mappsynkronisering

View File

@@ -1,204 +0,0 @@
[Desktop Entry]
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
X-GNOME-Autostart-Delay=3
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
Icon[sw]=@APPLICATION_ICON_NAME@
Name[sw]=Teja ya @APPLICATION_NAME@ ya kufanana faili kwa seva na faili ziko hapa
Comment[sw]=Teja ya @APPLICATION_NAME@ ya kufanana faili kwa seva na faili ziko hapa
GenericName[sw]=Fanana Kabrasha

View File

@@ -201,4 +201,4 @@ X-GNOME-Autostart-Delay=3
Icon[uk]=@APPLICATION_ICON_NAME@ Icon[uk]=@APPLICATION_ICON_NAME@
Name[uk]=@APPLICATION_NAME@ клієнт для ПК Name[uk]=@APPLICATION_NAME@ клієнт для ПК
Comment[uk]=Клієнт синхронізації @APPLICATION_NAME@ для ПК Comment[uk]=Клієнт синхронізації @APPLICATION_NAME@ для ПК
GenericName[uk]=Синхронізація тек GenericName[uk]=Синхронізація каталогів

View File

@@ -198,7 +198,6 @@ X-GNOME-Autostart-Delay=3
# Translations # Translations
Icon[zh_TW]=@APPLICATION_ICON_NAME@
Name[zh_TW]=@APPLICATION_NAME@ 桌面同步客戶端 Name[zh_TW]=@APPLICATION_NAME@ 桌面同步客戶端
Comment[zh_TW]=@APPLICATION_NAME@ 桌面同步客戶端 Comment[zh_TW]=@APPLICATION_NAME@ 桌面同步客戶端
GenericName[zh_TW]=資料夾同步 GenericName[zh_TW]=資料夾同步

View File

@@ -123,15 +123,6 @@ if(NO_MSG_HANDLER)
add_definitions(-DNO_MSG_HANDLER=1) add_definitions(-DNO_MSG_HANDLER=1)
endif() endif()
# this option builds the updater
option(BUILD_UPDATER "BUILD_UPDATER" OFF)
if(BUILD_UPDATER)
message("Compiling with updater")
add_definitions(-DBUILD_UPDATER=1)
else()
message("Compiling without updater")
endif()
# this option builds the shell integration # this option builds the shell integration
option(BUILD_SHELL_INTEGRATION "BUILD_SHELL_INTEGRATION" ON) option(BUILD_SHELL_INTEGRATION "BUILD_SHELL_INTEGRATION" ON)
@@ -181,9 +172,9 @@ if(APPLE)
endif() endif()
if(BUILD_CLIENT) if(BUILD_CLIENT)
if(APPLE AND BUILD_UPDATER) if(APPLE)
find_package(Sparkle) find_package(Sparkle)
endif() endif(APPLE)
if(UNIX) if(UNIX)
find_package(INotify REQUIRED) find_package(INotify REQUIRED)
@@ -212,24 +203,14 @@ if( WIN32 )
add_definitions( -D__USE_MINGW_ANSI_STDIO=1 ) add_definitions( -D__USE_MINGW_ANSI_STDIO=1 )
add_definitions( -DNOMINMAX ) add_definitions( -DNOMINMAX )
# Get APIs from from Vista onwards. # Get APIs from from Vista onwards.
add_definitions( -D_WIN32_WINNT=0x0601 ) add_definitions( -D_WIN32_WINNT=0x0600)
add_definitions( -DWINVER=0x0601 ) add_definitions( -DWINVER=0x0600)
if( MSVC )
# Use automatic overload for suitable CRT safe-functions
# See https://docs.microsoft.com/de-de/cpp/c-runtime-library/security-features-in-the-crt?view=vs-2019
add_definitions( -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 )
# Also: Disable compiler warnings because we don't use Windows CRT safe-functions explicitly and don't intend to
# as this is a pure cross-platform source the only alternative would be a ton of ifdefs with calls to the _s version
add_definitions( -D_CRT_SECURE_NO_WARNINGS )
endif( MSVC )
endif( WIN32 ) endif( WIN32 )
if (APPLE) if (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif() endif()
include(SanitizerFlags)
# Handle Translations, pick all client_* files from trans directory. # Handle Translations, pick all client_* files from trans directory.
file( GLOB TRANS_FILES ${CMAKE_SOURCE_DIR}/translations/client_*.ts) file( GLOB TRANS_FILES ${CMAKE_SOURCE_DIR}/translations/client_*.ts)
set(TRANSLATIONS ${TRANS_FILES}) set(TRANSLATIONS ${TRANS_FILES})

472
ChangeLog
View File

@@ -1,262 +1,5 @@
ChangeLog ChangeLog
==================== =========
For details check https://nextcloud.com/blog/category/release.
2.6 Series ChangeLog
====================
version 2.6.4 (release 2020-03-04)
* Fix Explorer pinning: Add fallbacks for Shell commands (fixes #1599)
* WebFlowCredentials: Make username comparison case-insensitive (fix #1741)
* ActivityListModel: Show full date and time as a Tooltip only
* Disable HTTP/2 for now due to Qt bug, allow enabling it via env var
* Fix Explorer integration re-save and hide option on non-Windows
* l10n: Changes to improve source strings
* Updater: Add query-parameter 'updatesegment' to the update check
* Allow Desktop translation merging and custom backport branches
version 2.6.3 (release 2020-02-17)
* Add UserInfo class and fetch quota via API instead of PropfindJob
* l10n: Changed grammar and triple dots to ellipsis
* l10n: Changed spelling of "user name" to "username"
* Start the client in background if activated by D-Bus
* Do not install files related to cloud providers under Xenial
* Make sure that the libcloudprovider integration is using a valid D-Bus path
* Changed product name to Nextcloud
* Update autoupdate.rst
* Use system proxy by default if no config file is present
* Install libcloudproviders files by default on debian
* Windows 7 is out of support
* BugFix: Handle broken shared file error gracefully
* Fix Explorer integration on Windows and the crash on other systems
* Welcome to 2020
* Updated year in legalnotice.cpp
* apply http2 qt resend patch from owncloud
version 2.6.2 (release 2019-12-24)
* Revert DEFAULT_REMOTE_POLL_INTERVAL back from 5 seconds to 30 seconds
* Use user-provided username in displayName() - Fix #836
* Fix typo
* Build with libcloudproviders on debian and in the AppImage
* Fix tests for Windows platform
* Merge the list of ignored files/symlinks into one Activity notification.
* Fix clang's variadic macro warnings
* Add libdbus-1-dev to the build dependencies
* Compare QDateTime objects more efficient
* Improve the translation of "Share via …"
* Upgrade for Qt 5.12.5 in docker-ci
* Bump Qt 5.12.5 image
* Add timestamp to Mac installer code signing
* MacOS build: Avoid the Get-Task-Allow Entitlement (Notarization)
* Build for Debian stable and oldstable
* Happy new year
* Fall back to old login flow on GS as this is not yet ready
* [stable-2.6] macOS build: Avoid the Get-Task-Allow Entitlement (Notarization)
* Fix remote wipe keychain storage (issue #1592)
* Fix copyright year in MacOSXBundleInfo.plist.in for 2019
* Fix macOS GUI (Qt 5.12)
* Windows: Workaround for storing >= 4k (4096 bit) client-cert SSL keys
* Fix Activity List: Add check to avoid first empty entry
* Fix macOS GUI (Qt 5.12) No. 2 (continuation of #1651)
* Show date and time in activity log (fixes issue #1683)
* Login Flow v2 enhancements
* Activity List: Fix crash and folder opening
* Fix issue #1237: White text on almost-white background
* Heavy refactoring: Windows workaround for >= 4k (4096 bit) client-cert SSL keys and large certs
* Fix date in ActivityWidget and remove unnecessary string conversion
version 2.6.1 (release 2019-11-04)
* Changed max GUI bandwidth limits
* Add sync date next to "Synchronized with local folder"
* Slideshow buttons
* Fix qt warning about registering a URL sheme first.
* Issue #1216: added sync-exclude entry for emacs recovery files
* Race condition in the remote size loading logic
* Review of msvc/gcc warnings -> code cleanup, prevention of implicit casts, variadic macros
* Fix double slashes
* Fixing E2E CSR transmission failure for new connections
* Fixed missing 'translatable' exclusions, added missing window titles
* Checks if exclude file is empty before creating the regular expressions.
* Add server info to menu
* Fixed grammar
* Prevent jumping of tray menu
* Don't run connection wizard when quitting the application
* Avoiding copying in range-based loops
* Add a 'Content-Length: 0' header to initial POST requests
* Remote wipe.
* Pick from upstream: Update qtmacgoodies for an OSX crash fix #6930
* fix for issue no. #1351
* Merge the list of ignored files/symlinks into one Activity notification.
* Update submodules for Qt 5.12.5 (qtmacgoodies)
* Fix duplicate items in Apps menu (a bug introduced in #1477)
* Fix #1182
* Fix remote wipe when a proxy is configured.
* Fix updater message: Download link instead of "use the system's update
version 2.6.0 Login flow v2 (release 2019-09-27)
* Reinstate Debian build in the new Drone config
* Typo
* Marking unused strings as unstranslatable
* Fixes #607
* Fixes issue #878
* Fixes issue #1187
* Displays FileIgnored activities with an info icon
* Minor text change in the link to help in the tab 'General'.
* Update Qt 5.5 compatibility patch for Xenial
* Remove Ubuntu Cosmic and add Eoan package
* Add proper CA to client side certificate connection
* Remove dependency on libgnome-keyring0 on Eoan
* Read .sync_exclude.lst in each subdirectory
* Updates ChangeLog.
* Login flow v2
* Adds SSL client cert storage to webflow + Login Flow v2
* Windows: Workaround for CredWriteW used by QtKeychain
* Integrated registry check on windows when hasDarkSystray is called.
* Logo update
* Updated .gitignore to integrate unwanted files when working with VSC …
* Full-Scaled new logo in Windows 10 start menu tile
* Qt5.5 compatiblity patch for login flow V2 + UI improvement (Use newer digest algorithms in TLS error dialog)
* Fix for #1382 "linux client crashes for no discernable reason"
* UI improvement: Message box: Delete / Keep all files
* Improve wording of the context menu in the file manager extension.
* Changes wording in the share context menu.
* Fix White Window issue on Windows by upgrading to Qt 5.12.5
2.5 Series ChangeLog
====================
version 2.5.3 (release 2019-07-22)
* Fix empty file wording in error log (small)
* Add Qt-5.12 to CI
* Fix a minor typo
* Libcloudproviders: Add missing check for Qt5DBus
* Fix several memory leaks in cloudproviders and add translation support
* Share link fixing
* New drone config
* Uses configuraion to determine if it should show empty folder popup.
* Simplify cmake command to make copy-pastable
* Updated default remote poll to 5 seconds #1115
* Fix memory leak with device pointer
* Added a nice UI for the E2E-enabled account first connect
* This should fix issue #1000
* Adds parameter to retrieve shares with its reshares.
* Fixed typo
* Fixed typo in "certificate"
* WebView: Properly handle usernames with spaces and plus signs in it
* Add error category for http file lock error status 423.
* Displays the uid_owner of a shared file.
* Minor text change in the link to help in the tab 'General'.
version 2.5.2 (release 2019-04-11)
* Handle spaces in username properly in login flow
* Wizard: show an error message if there is no enough free space in the local folder
* Removed whitespace from string
* Do not add double slash to login flow url
* Fix login flow with system proxy
* Start with easier theming
* Do not display dismissed notifications
* Fixed l18n issue. Added space for separating string
* Add invalid certiticate messagebox
* Correct app passwords link
* Be less verbose with logging
* Fix typo in translation string
* Add a command line option to launch the client in the background
* Support Ubuntu Disco Dingo
* Added missing Include
* Make sure _profile and _page are deleted in the correct order
* Fix KDEInstallDirs deprecation warnings
* Removed Stylesheet
version 2.5.1 (release 2019-01-06)
* Fixup the port in server notification URLs
* GUI: let Clang-Tidy modernize nullptr & override usage
* Improve the slide show
* Libsync: let Clang-Tidy modernize nullptr & override usage
* SettingsDialog: fix a little glitch in the account tool button size
* SettingsDialog: tweak color aware icons
* More verbose error and proper app name on configuration read error
* Fix cmake build using WITH_PROVIDERS=OFF
* Debian/Ubuntu target repository update
* Change man page names and contents for nextcloud
* Share dialog alignment
* Fixed typo
* Change link to docs for NC 15
* Do not fetch activities if they are not enabled
* Do not read system exclude list if user exclude is present
* Fix the activity loop
* Write the actual folder to the log
* Fix appname for Nautilus integration script
version 2.5.0 (release 2018-11-14)
* End to end encryption
* New Web login flow
* UI improvements: Notifications
* UI improvements: refactoring of Activities
* SyncJournal: Clear etag filter before sync
* Partial local discovery: Fix scheduling logic
* Sync hidden files by default
* Larger Windows App Icon
* Show a tray message when a folder watcher becomes unreliable #6119
* Create symlinks for the small-letter application icon file names
* In setup wizard put link to nextcloud installation
* Web view scales vertically
* Add a WebFlowCredentialsAccessManager
* Mac Application Icon
* Ensure GETFileJob notices finishing #6581
* OAuth2: Try to refresh the token even if the credentials weren't ready.
* Tray workarounds #6545
* UpdateInfo: Remove unused code
* OAuth: Remove the timeout
* TestOAuth: Don't have global static QObject
* Log: Adjust update/reconcile log verbosity
* Reconcile: When detecting a local move, keep the local mtime
* Wizard enhancement
* FolderMan::checkPathValidityForNewFolder: make sure to work when fold…
* Update: Report on readdir() errors #6610
* Use encode()/decode() with Python 3 only
* Sqlite: Update bundled version to 3.24.0
* Do not require server replies to contain an mtime
* Settings: Attempt to fix rename issue on old macOS
* Support higher resolution theme icons
* OAuth: Fix infinite loop when the refresh token is expired
* Windows: Don't ignore files with FILE_ATTRIBUTE_TEMPORARY
* Data-Fingerprint: Fix backup detection when fingerprint is empty
* Nautilus: Fix GET_MENU_ITEMS with utf8 filenames #6643
* Windows: Release handle/fd when file open fails #6699
* SettingsDialog: Show the page for the newly created account
* Updates submodule qtmacgoodies.
* Fixes #665 Adds slot for confirmShare button.
* Rename INSTALL to INSTALL.md for Preview :)
* Add cmake temporary stuff
* Inform user that configuration is not writable
* Uses QByteArray to store private key.
* Fix cmake command for linux in README too
* Build fix: remove an unused QtSvg/QSvgRenderer include
* Qtkeychain: 0.8.0 -> 0.9.1
* Setup wizard: implement an animated and interactive slide show
* Theming for general settings ui
* Make the "Add Folder Sync Connection" button act like a button
* Allow to use the login flow with a self signed certificate
* Fix warning in ShareUserGroupWidget
* Copy over config file to new location on windows
* Update to translate strings
* Migrate http auth to webflow
* Margins
* Qt 5.5 compatibility patch for Xenial
* Fix cmake build of documentation
* Use Nextcloud
* Update isntaller background for OSX
* Fix ActivityWidget palette
* SettingsDialog: disable unnecessary wrapping for the about label
* Added default scheme when server returns just a host
* Removed explicit initialization; Fixed RAND_bytes not found
* Actually open the activity view on a click for more info
* Use a format that supports alpha channels for avatars
* L10n. Added space for correct grammar.
2.4 Series ChangeLog
====================
version 2.4.1 (2017-02-xx) version 2.4.1 (2017-02-xx)
* Ignore files with file names that can't be encoded for the filesystem (#6287, #5676, #5719) * Ignore files with file names that can't be encoded for the filesystem (#6287, #5676, #5719)
@@ -371,10 +114,6 @@ version 2.4.0 (2017-12-21)
* Compile with stack-smashing protection * Compile with stack-smashing protection
* Updater: Rudimentary support for beta channel (#6048) * Updater: Rudimentary support for beta channel (#6048)
2.3 Series ChangeLog
====================
version 2.3.4 (2017-11-02) version 2.3.4 (2017-11-02)
* Checksums: Use addData function to avoid endless loop CPU load issues with Office files * Checksums: Use addData function to avoid endless loop CPU load issues with Office files
* Packaging: Require ZLIB * Packaging: Require ZLIB
@@ -445,10 +184,6 @@ version 2.3.0 (2017-03-03)
* Improved documentation * Improved documentation
* Crash fixes * Crash fixes
2.2 Series ChangeLog
====================
version 2.2.4 (release 2016-09-27) version 2.2.4 (release 2016-09-27)
* Dolphin Plugin: Use the Application name for the socket path (#5172) * Dolphin Plugin: Use the Application name for the socket path (#5172)
* SyncEngine: Fix renaming of folder when file are changed (#5195) * SyncEngine: Fix renaming of folder when file are changed (#5195)
@@ -513,10 +248,6 @@ version 2.2.0 (release 2016-05-12)
* Update of QtKeyChain to support Windows credential store * Update of QtKeyChain to support Windows credential store
* Packaging of dolphin overlay icon module for bleeding edge distros * Packaging of dolphin overlay icon module for bleeding edge distros
2.1 Series ChangeLog
====================
version 2.1.1 (release 2016-02-10) version 2.1.1 (release 2016-02-10)
* UI improvements for HiDPI screens, error messages, RTL languages * UI improvements for HiDPI screens, error messages, RTL languages
* Fix occurences of "Connection Closed" when a new unauthenticated TCP socket is used * Fix occurences of "Connection Closed" when a new unauthenticated TCP socket is used
@@ -550,8 +281,8 @@ version 2.1 (release 2015-12-03)
* Improved reconnecting after network change/disconnect (#4167 #3969 ...) * Improved reconnecting after network change/disconnect (#4167 #3969 ...)
* Improved performance in Windows file system discovery * Improved performance in Windows file system discovery
* Removed libneon-based propagator. As a consequence, The client can no * Removed libneon-based propagator. As a consequence, The client can no
* longer provide bandwith limiting on Linux-distributions where it is longer provide bandwith limiting on Linux-distributions where it is
* using Qt < 5.4 using Qt < 5.4
* Performance improvements in the logging functions * Performance improvements in the logging functions
* Ensured that local disk space problems are handled gracefully (#2939) * Ensured that local disk space problems are handled gracefully (#2939)
* Improved handling of checksums: transport validation, db (#3735) * Improved handling of checksums: transport validation, db (#3735)
@@ -587,10 +318,6 @@ version 2.1 (release 2015-12-03)
* Organized patches to our base Qt version into admin/qt/patches * Organized patches to our base Qt version into admin/qt/patches
* Plus: A lot of unmentioned improvements and fixes * Plus: A lot of unmentioned improvements and fixes
2.0 Series ChangeLog
====================
version 2.0.2 (release 2015-10-21) version 2.0.2 (release 2015-10-21)
* csync_file_stat_s: Save a bit of memory * csync_file_stat_s: Save a bit of memory
* Shibboleth: Add our base user agent to WebKit * Shibboleth: Add our base user agent to WebKit
@@ -666,10 +393,6 @@ version 2.0.0 (release 2015-08-25)
* Bandwidth Throttling: Provide automatic limit setting for downloads (#3084) * Bandwidth Throttling: Provide automatic limit setting for downloads (#3084)
* Systray: Workaround for issue with Qt 5.5.0 #3656 * Systray: Workaround for issue with Qt 5.5.0 #3656
1.8 Series ChangeLog
====================
version 1.8.4 (release 2015-07-13) version 1.8.4 (release 2015-07-13)
* Release to ship a security release of openSSL. No source changes of the ownCloud Client code. * Release to ship a security release of openSSL. No source changes of the ownCloud Client code.
@@ -679,7 +402,7 @@ version 1.8.3 (release 2015-06-23)
* Ignores: Force a remote discovery after ignore list change (#3172) * Ignores: Force a remote discovery after ignore list change (#3172)
* Shibboleth: Avoid crash by letting the webview use its own QNAM (#3359) * Shibboleth: Avoid crash by letting the webview use its own QNAM (#3359)
* System Ignores: Removed *.tmp from system ignore again. If a user * System Ignores: Removed *.tmp from system ignore again. If a user
* wants to ignore *.tmp, it needs to be added to the user ignore list. wants to ignore *.tmp, it needs to be added to the user ignore list.
version 1.8.2 (release 2015-06-08) version 1.8.2 (release 2015-06-08)
* Improve reporting of server error messages (#3220) * Improve reporting of server error messages (#3220)
@@ -692,16 +415,16 @@ version 1.8.2 (release 2015-06-08)
* HTTP: Add the branding name to the UserAgent string * HTTP: Add the branding name to the UserAgent string
* ConnectonValidator: Always run with new credentials (#3266) * ConnectonValidator: Always run with new credentials (#3266)
* Recall Feature: Admins can trigger an upload of a file from * Recall Feature: Admins can trigger an upload of a file from
* client to server again (#3246) client to server again (#3246)
* Propagator: Add 'Content-Length: 0' header to MKCOL request (#3256) * Propagator: Add 'Content-Length: 0' header to MKCOL request (#3256)
* Switch on checksum verification through branding or config * Switch on checksum verification through branding or config
* Add ability for checksum verification of up and download * Add ability for checksum verification of up and download
* Fix opening external links for some labels (#3135) * Fix opening external links for some labels (#3135)
* AccountState: Run only a single validator, allow error message * AccountState: Run only a single validator, allow error message
* overriding (#3236, #3153) overriding (#3236, #3153)
* SyncJournalDB: Minor fixes and simplificatons * SyncJournalDB: Minor fixes and simplificatons
* SyncEngine: Force re-read of folder Etags for upgrades from * SyncEngine: Force re-read of folder Etags for upgrades from
* 1.8.0 and 1.8.1 1.8.0 and 1.8.1
* Propagator: Limit length of temporary file name (#2789) * Propagator: Limit length of temporary file name (#2789)
* ShareDialog: Password ui fixes (#3189) * ShareDialog: Password ui fixes (#3189)
* Fix startup hang by removing QSettings lock file (#3175) * Fix startup hang by removing QSettings lock file (#3175)
@@ -722,12 +445,12 @@ version 1.8.2 (release 2015-06-08)
version 1.8.1 (release 2015-05-07) version 1.8.1 (release 2015-05-07)
* Make "operation canceled" error a soft error * Make "operation canceled" error a soft error
* Do not throw an error for files that are scheduled to be removed, * Do not throw an error for files that are scheduled to be removed,
* but can not be found on the server. #2919 but can not be found on the server. #2919
* Windows: Reset QNAM to proper function after hibernation. #2899 #2895 #2973 * Windows: Reset QNAM to proper function after hibernation. #2899 #2895 #2973
* Fix argument verification of --confdir #2453 * Fix argument verification of --confdir #2453
* Fix a crash when accessing a dangling UploadDevice pointer #2984 * Fix a crash when accessing a dangling UploadDevice pointer #2984
* Add-folder wizard: Make sure there is a scrollbar if folder names * Add-folder wizard: Make sure there is a scrollbar if folder names
* are too long #2962 are too long #2962
* Add-folder Wizard: Select the newly created folder * Add-folder Wizard: Select the newly created folder
* Activity: Correctly restore column sizes #3005 * Activity: Correctly restore column sizes #3005
* SSL Button: do not crash on empty certificate chain * SSL Button: do not crash on empty certificate chain
@@ -735,8 +458,8 @@ version 1.8.1 (release 2015-05-07)
* Lookup system proxy async to avoid hangs #2993 #2802 * Lookup system proxy async to avoid hangs #2993 #2802
* ShareDialog: Some GUI refinements * ShareDialog: Some GUI refinements
* ShareDialog: On creation of a share always retrieve the share * ShareDialog: On creation of a share always retrieve the share
* This makes sure that if a default expiration date is set this is reflected This makes sure that if a default expiration date is set this is reflected
* in the dialog. #2889 in the dialog. #2889
* ShareDialog: Only show share dialog if we are connected. * ShareDialog: Only show share dialog if we are connected.
* HttpCreds: Fill pw dialog with previous password. #2848 #2879 * HttpCreds: Fill pw dialog with previous password. #2848 #2879
* HttpCreds: Delete password from old location. #2186 * HttpCreds: Delete password from old location. #2186
@@ -745,7 +468,7 @@ version 1.8.1 (release 2015-05-07)
* ProtocolWidget: Always add seconds to the DateTime locale. #2535 * ProtocolWidget: Always add seconds to the DateTime locale. #2535
* Updater: Give context as to which app is about to be updated #3040 * Updater: Give context as to which app is about to be updated #3040
* Windows: Add version information for owncloud.exe. This should help us know * Windows: Add version information for owncloud.exe. This should help us know
* what version or build number a crash report was generated with. what version or build number a crash report was generated with.
* Fix a crash on shutdown in ~SocketApi #3057 * Fix a crash on shutdown in ~SocketApi #3057
* SyncEngine: Show more timing measurements #3064 * SyncEngine: Show more timing measurements #3064
* Discovery: Add warning if returned etag is 0 * Discovery: Add warning if returned etag is 0
@@ -768,8 +491,8 @@ version 1.8.1 (release 2015-05-07)
version 1.8.0 (release 2015-03-17) version 1.8.0 (release 2015-03-17)
* Mac OS: HIDPI support * Mac OS: HIDPI support
* Support Sharing from desktop: Added a share dialog that can be * Support Sharing from desktop: Added a share dialog that can be
* opened by context menu in the file managers (Win, Mac, Nautilus) opened by context menu in the file managers (Win, Mac, Nautilus)
* Supports public links with password enforcement Supports public links with password enforcement
* Enhanced usage of parallel HTTP requests for ownCloud 8 servers * Enhanced usage of parallel HTTP requests for ownCloud 8 servers
* Renamed github repository from mirall to client. * Renamed github repository from mirall to client.
* Mac OS: Use native notification support * Mac OS: Use native notification support
@@ -782,7 +505,7 @@ version 1.8.0 (release 2015-03-17)
* Build with Qt 5.4 * Build with Qt 5.4
* Dropped libneon dependency if Qt 5.4 is available * Dropped libneon dependency if Qt 5.4 is available
* Keep files open very short, that avoid lock problems on Windows * Keep files open very short, that avoid lock problems on Windows
* especially with office software but also others. especially with office software but also others.
* Merged some NetBSD patches * Merged some NetBSD patches
* Selective sync support for owncloudcmd * Selective sync support for owncloudcmd
* Reorganize the source repository * Reorganize the source repository
@@ -791,17 +514,13 @@ version 1.8.0 (release 2015-03-17)
* A huge amount of bug fixes in all areas of the client. * A huge amount of bug fixes in all areas of the client.
* almost 700 commits since 1.7.1 * almost 700 commits since 1.7.1
1.7 Series ChangeLog
====================
version 1.7.1 (release 2014-12-18) version 1.7.1 (release 2014-12-18)
* Documentation fixes and updates * Documentation fixes and updates
* Nautilus Python plugin fixed for Python 3 * Nautilus Python plugin fixed for Python 3
* GUI wording fixes plus improved log messages * GUI wording fixes plus improved log messages
* Fix hidning of the database files in the sync directories * Fix hidning of the database files in the sync directories
* Compare http download size with the header value to avoid broken * Compare http download size with the header value to avoid broken
* downloads, bug #2528 downloads, bug #2528
* Avoid initial ETag fetch job at startup, which is not needed. * Avoid initial ETag fetch job at startup, which is not needed.
* Add chunk size http header to PUT requests * Add chunk size http header to PUT requests
* Fixed deteteCookie method of our CookieJar, fix for Shibboleth * Fixed deteteCookie method of our CookieJar, fix for Shibboleth
@@ -824,20 +543,21 @@ version 1.7.1 (release 2014-12-18)
* Win32: Improve reliability of Installer, fix removal of Shell Extensions * Win32: Improve reliability of Installer, fix removal of Shell Extensions
version 1.7.0 (release 2014-11-07) version 1.7.0 (release 2014-11-07)
* oC7 Sharing: Handle new sharing options of ownCloud 7 correctly. * oC7 Sharing: Handle new sharing options of ownCloud 7 correctly.
* Added Selective sync: Ability to unselect server folders which are * Added Selective sync: Ability to unselect server folders which are
* excluded from syncing, plus GUI and setup GUI excluded from syncing, plus GUI and setup GUI
* Added overlay icons for Windows Explorer, Mac OS Finder and GNOME Nautilus. * Added overlay icons for Windows Explorer, Mac OS Finder and GNOME Nautilus.
* Information is provided by the client via a local socket / named pipe API Information is provided by the client via a local socket / named pipe API
* which provides information about the sync status of files. which provides information about the sync status of files.
* Improved local change detection: consider file size, detect files * Improved local change detection: consider file size, detect files
* with ongoing changes and do not upload immediately with ongoing changes and do not upload immediately
* Improved HTTP request timeout handler: all successful requests reset * Improved HTTP request timeout handler: all successful requests reset
* the timeout counter the timeout counter
* Improvements for syncing command line tool: netrc support, improved * Improvements for syncing command line tool: netrc support, improved
* SSL support, non interactive mode SSL support, non interactive mode
* Permission system: ownCloud 7 delivers file and folder permissions, * Permission system: ownCloud 7 delivers file and folder permissions,
* added ability to deal with it for shared folders and more. added ability to deal with it for shared folders and more.
* Ignore handling: Do not recurse into ignored or excluded directories * Ignore handling: Do not recurse into ignored or excluded directories
* Major sync journal database improvements for more stability and performance * Major sync journal database improvements for more stability and performance
* New library interface to sqlite3 * New library interface to sqlite3
@@ -846,40 +566,35 @@ version 1.7.0 (release 2014-11-07)
* Improved logging: more useful meta info, removed noise * Improved logging: more useful meta info, removed noise
* Updated to latest Qt5 versions on Windows and OS X * Updated to latest Qt5 versions on Windows and OS X
* Fixed data loss when renaming a download temporary fails and there was * Fixed data loss when renaming a download temporary fails and there was
* a conflict at the same time. a conflict at the same time.
* Fixed missing warnings about reusing a sync folder when the back button * Fixed missing warnings about reusing a sync folder when the back button
* was used in the advanced folder setup wizard. was used in the advanced folder setup wizard.
* The 'Retry Sync' button now also restarts all downloads. * The 'Retry Sync' button now also restarts all downloads.
* Clean up temporary downloads and some extra database files when wiping a * Clean up temporary downloads and some extra database files when wiping a
* folder. folder.
* OS X: Sparkle update to provide pkg format properly * OS X: Sparkle update to provide pkg format properly
* OS X: Change distribution format from dmg to pkg with new installer. * OS X: Change distribution format from dmg to pkg with new installer.
* Windows: Fix handling of filenames with trailing dot or space * Windows: Fix handling of filenames with trailing dot or space
* Windows: Don't use the wrong way to get file mtimes in the legacy propagator. * Windows: Don't use the wrong way to get file mtimes in the legacy propagator.
1.6 Series ChangeLog
====================
version 1.6.4 (release 2014-10-22) version 1.6.4 (release 2014-10-22)
* Fix startup logic, fixes bug #1989 * Fix startup logic, fixes bug #1989
* Fix raise dialog on X11 * Fix raise dialog on X11
* Win32: fix overflow when computing the size of file > 4GiB * Win32: fix overflow when computing the size of file > 4GiB
* Use a fixed function to get files modification time, the * Use a fixed function to get files modification time, the
* original one was broken for certain timezone issues, see original one was broken for certain timezone issues, see
* core bug #9781 for details core bug #9781 for details
* Added some missing copyright headers * Added some missing copyright headers
* Avoid data corruption due to wrong error handling, bug #2280 * Avoid data corruption due to wrong error handling, bug #2280
* Do improved request timeout handling to reduce the number of * Do improved request timeout handling to reduce the number of
* timed out jobs, bug #2155 timed out jobs, bug #2155
* version 1.6.3 (release 2014-09-03) version 1.6.3 (release 2014-09-03)
* Fixed updater on OS X * Fixed updater on OS X
* Fixed memory leak in SSL button that could lead to quick memory draining * Fixed memory leak in SSL button that could lead to quick memory draining
* Fixed upload problem with files >4 GB * Fixed upload problem with files >4 GB
* MacOSX, Linux: Bring Settings window to front properly * MacOSX, Linux: Bring Settings window to front properly
* Branded clients: If no configuration is detected, try to import the data * Branded clients: If no configuration is detected, try to import the data
* from a previously configured community edition. from a previously configured community edition.
version 1.6.2 (release 2014-07-28 ) version 1.6.2 (release 2014-07-28 )
* Limit the HTTP buffer size when downloading to limit memory consumption. * Limit the HTTP buffer size when downloading to limit memory consumption.
@@ -887,7 +602,7 @@ version 1.6.2 (release 2014-07-28 )
* Fix local file name clash detection for MacOSX. * Fix local file name clash detection for MacOSX.
* Limit maximum wait time to ten seconds in network limiting. * Limit maximum wait time to ten seconds in network limiting.
* Fix data corruption while trying to resume and the server does * Fix data corruption while trying to resume and the server does
* not support it. not support it.
* HTTP Credentials: Read password from legacy place if not found. * HTTP Credentials: Read password from legacy place if not found.
* Shibboleth: Fix the waiting curser that would not disapear (#1915) * Shibboleth: Fix the waiting curser that would not disapear (#1915)
* Limit memory usage to avoid mem wasting and crashes * Limit memory usage to avoid mem wasting and crashes
@@ -901,18 +616,18 @@ version 1.6.1 (release 2014-06-26 )
* Fix openSSL problems for windows deployment * Fix openSSL problems for windows deployment
* Fix syncing a folder with '#' in the name * Fix syncing a folder with '#' in the name
* Fix #1845: do not update parent directory etag before sub * Fix #1845: do not update parent directory etag before sub
* directories are removed directories are removed
* Fix reappearing directories if dirs are removed during its * Fix reappearing directories if dirs are removed during its
* upload upload
* Fix app version in settings dialog, General tab * Fix app version in settings dialog, General tab
* Fix crash in FolderWizard when going offline * Fix crash in FolderWizard when going offline
* Shibboleth fixes * Shibboleth fixes
* More specific error messages (file remove during upload, open * More specific error messages (file remove during upload, open
* local sync file) local sync file)
* Use QSet rather than QHash in SyncEngine (save memory) * Use QSet rather than QHash in SyncEngine (save memory)
* Fix some memory leaks * Fix some memory leaks
* Fix some thread race problems, ie. wait for neon thread to finish * Fix some thread race problems, ie. wait for neon thread to finish
* before the propagator is shut down before the propagator is shut down
* Fix a lot of issues and warnings found by Coverity * Fix a lot of issues and warnings found by Coverity
* Fix Mac some settings dialog problems * Fix Mac some settings dialog problems
@@ -935,16 +650,16 @@ version 1.6.0 (release 2014-05-30 )
* Introduce a general timeout of 300s for network operations * Introduce a general timeout of 300s for network operations
* Improve error handling, blacklisting * Improve error handling, blacklisting
* Job-based change propagation, enables faster parallel up/downloads * Job-based change propagation, enables faster parallel up/downloads
* (right now only if no bandwidth limit is set and no proxy is used) (right now only if no bandwidth limit is set and no proxy is used)
* Significantly reduced CPU load when checking for local and remote changes * Significantly reduced CPU load when checking for local and remote changes
* Speed up file stat code on Windows * Speed up file stat code on Windows
* Enforce Qt5 for Windows and Mac OS X builds * Enforce Qt5 for Windows and Mac OS X builds
* Improved owncloudcmd: SSL support, documentation * Improved owncloudcmd: SSL support, documentation
* Added advanced logging of operations (file .???.log in sync * Added advanced logging of operations (file .???.log in sync
* directory) directory)
* Avoid creating a temporary copy of the sync database (.ctmp) * Avoid creating a temporary copy of the sync database (.ctmp)
* Enable support for TLS 1.2 negotiation on platforms that use * Enable support for TLS 1.2 negotiation on platforms that use
* Qt 5.2 or later Qt 5.2 or later
* Forward server exception messages to client error messages * Forward server exception messages to client error messages
* Mac OS X: Support Notification Center in OS X 10.8+ * Mac OS X: Support Notification Center in OS X 10.8+
* Mac OS X: Use native settings dialog * Mac OS X: Use native settings dialog
@@ -953,15 +668,11 @@ version 1.6.0 (release 2014-05-30 )
* Remove vio abstraction in csync * Remove vio abstraction in csync
* Avoid data loss when a client file system is not case sensitive * Avoid data loss when a client file system is not case sensitive
1.5 Series ChangeLog
====================
version 1.5.3 (release 2014-03-10 ) version 1.5.3 (release 2014-03-10 )
* Fix usage of proxies after first sync run (#1502, #1524, #1459, #1521) * Fix usage of proxies after first sync run (#1502, #1524, #1459, #1521)
* Do not wipe the credentials from config for reconnect (#1499, #1503) * Do not wipe the credentials from config for reconnect (#1499, #1503)
* Do not erase the full account config if an old version of the client stored * Do not erase the full account config if an old version of the client stored
* the password (related to above) the password (related to above)
* Fix layout of the network tab (fixes #1491) * Fix layout of the network tab (fixes #1491)
* Handle authentication requests by a Shibboleth IdP * Handle authentication requests by a Shibboleth IdP
* Shibboleth: If no connection is available, don't open the login window * Shibboleth: If no connection is available, don't open the login window
@@ -990,34 +701,34 @@ version 1.5.2 (release 2014-02-26 )
version 1.5.1 (release 2014-02-13 ) version 1.5.1 (release 2014-02-13 )
* Added an auto updater that updates the client if a * Added an auto updater that updates the client if a
* more recent version was found automatically (Windows, Mac OS X) more recent version was found automatically (Windows, Mac OS X)
* Added a button to the account dialog that gives information * Added a button to the account dialog that gives information
* about the encryption layer used for communication, plus a about the encryption layer used for communication, plus a
* certificate information widget certificate information widget
* Preserve the permission settings of local files rather than * Preserve the permission settings of local files rather than
* setting them to a default (Bug #820) setting them to a default (Bug #820)
* Handle windows lnk files correctly (Bug #1307) * Handle windows lnk files correctly (Bug #1307)
* Detect removes and renames in read only shares and * Detect removes and renames in read only shares and
* restore the gone away files. (Bug #1386) restore the gone away files. (Bug #1386)
* Fixes sign in/sign out and password dialog. (Bug #1353) * Fixes sign in/sign out and password dialog. (Bug #1353)
* Fixed error messages (Bug #1394) * Fixed error messages (Bug #1394)
* Lots of fixes for building with Qt5 * Lots of fixes for building with Qt5
* Changes to network limits are now also applied during a * Changes to network limits are now also applied during a
* sync run sync run
* Fixed mem leak after via valgrind on Mac * Fixed mem leak after via valgrind on Mac
* Imported the ocsync library into miralls repository. * Imported the ocsync library into miralls repository.
* Adopted all build systems and packaging to that. Adopted all build systems and packaging to that.
* Introduce a new linux packaging scheme following the * Introduce a new linux packaging scheme following the
* debian upstream scheme debian upstream scheme
* Use a refactored Linux file system watcher based on * Use a refactored Linux file system watcher based on
* inotify, incl. unit tests inotify, incl. unit tests
* Wizard: Gracefully fall back to HTTP if HTTPS connection * Wizard: Gracefully fall back to HTTP if HTTPS connection
* fails, issuing a warning fails, issuing a warning
* Fixed translation misses in the propagator * Fixed translation misses in the propagator
* Fixes in proxy configuration * Fixes in proxy configuration
* Fixes in sync journal handling * Fixes in sync journal handling
* Fix the upload progress if the local source is still * Fix the upload progress if the local source is still
* changing when the upload begins. changing when the upload begins.
* Add proxy support to owncloud commandline client * Add proxy support to owncloud commandline client
* NSIS fixes * NSIS fixes
* A lot of other fixes and minor improvements * A lot of other fixes and minor improvements
@@ -1054,10 +765,6 @@ version 1.5.0 (release 2013-12-12 ), csync 0.91.4 required
* Windows: Fix rename of temporary files * Windows: Fix rename of temporary files
* Windows: Fix move file operation * Windows: Fix move file operation
1.4 Series ChangeLog
====================
version 1.4.2 (release 2013-10-18 ), csync 0.90.4 required version 1.4.2 (release 2013-10-18 ), csync 0.90.4 required
* Do not show the warning icon in the tray (#944) * Do not show the warning icon in the tray (#944)
* Fix manual proxy support when switching (#1016) * Fix manual proxy support when switching (#1016)
@@ -1073,11 +780,12 @@ version 1.4.2 (release 2013-10-18 ), csync 0.90.4 required
* Progress: Show number of deletes. * Progress: Show number of deletes.
version 1.4.1 (release 2013-09-24 ), csync 0.90.1 required version 1.4.1 (release 2013-09-24 ), csync 0.90.1 required
* Translation and documentation fixes. * Translation and documentation fixes.
* Fixed error display in settings/status dialog, displays multi * Fixed error display in settings/status dialog, displays multi
* line error messages now correctly. line error messages now correctly.
* Wait up to 30 secs before complaining about missing systray * Wait up to 30 secs before complaining about missing systray
* Fixes bug #949 Fixes bug #949
* Fixed utf8 issues with basic auth authentication, fixes bug #941 * Fixed utf8 issues with basic auth authentication, fixes bug #941
* Fixed remote folder selector, avoid recursive syncing, fixes bug #962 * Fixed remote folder selector, avoid recursive syncing, fixes bug #962
* Handle and display network problems at startup correctly. * Handle and display network problems at startup correctly.
@@ -1094,6 +802,7 @@ version 1.4.1 (release 2013-09-24 ), csync 0.90.1 required
* Various minor code fixes * Various minor code fixes
version 1.4.0 (release 2013-09-04 ), csync 0.90.0 required version 1.4.0 (release 2013-09-04 ), csync 0.90.0 required
* New Scheduler: Only sync when there are actual changes in the server * New Scheduler: Only sync when there are actual changes in the server
* Add a Settings Dialog, move Proxy Settings there * Add a Settings Dialog, move Proxy Settings there
* Transform folder Status Dialog into Account Settings, provide feedback via context menu * Transform folder Status Dialog into Account Settings, provide feedback via context menu
@@ -1104,7 +813,7 @@ version 1.4.0 (release 2013-09-04 ), csync 0.90.0 required
* Move ability to switch to mono icons from a switch to a Settings option * Move ability to switch to mono icons from a switch to a Settings option
* Add "Launch on System Startup" GUI option * Add "Launch on System Startup" GUI option
* Add "Show Desktop Nofications"GUI option (enabled by default) * Add "Show Desktop Nofications"GUI option (enabled by default)
* top optionally disable sync notifications top optionally disable sync notifications
* Add Help item, pointing to online reference * Add Help item, pointing to online reference
* Implement graphical selection of remote folders in FolderWizard * Implement graphical selection of remote folders in FolderWizard
* Allow custom ignore patterns * Allow custom ignore patterns
@@ -1123,14 +832,11 @@ version 1.4.0 (release 2013-09-04 ), csync 0.90.0 required
* Require Qt 4.7 * Require Qt 4.7
* Known issue: Under certain conditions, a file will only get uploaded after up to five minutes * Known issue: Under certain conditions, a file will only get uploaded after up to five minutes
1.3 Series ChangeLog
====================
version 1.3.0 (release 2013-06-25 ), csync 0.80.0 required version 1.3.0 (release 2013-06-25 ), csync 0.80.0 required
* Default proxy port to 8080 * Default proxy port to 8080
* Don't lose proxy settings when changing passwords * Don't lose proxy settings when changing passwords
* Support SOCKS5 proxy (useful in combination with ssh* *D) * Support SOCKS5 proxy (useful in combination with ssh *D)
* Propagate proxy changes to csync at runtime * Propagate proxy changes to csync at runtime
* Improve proxy wizard * Improve proxy wizard
* Display proxy errors * Display proxy errors
@@ -1146,7 +852,7 @@ version 1.3.0 (release 2013-06-25 ), csync 0.80.0 required
* Remove journal when reusing a directory that used to have a journal before * Remove journal when reusing a directory that used to have a journal before
* Visual clean up of status dialog items * Visual clean up of status dialog items
* Wizard: When changing the URL or user name, allow the user to push his data * Wizard: When changing the URL or user name, allow the user to push his data
* to the new location or wipe the folder and start from scratch to the new location or wipe the folder and start from scratch
* Wizard: Make setting a custom folder as a sync target work again * Wizard: Make setting a custom folder as a sync target work again
* Fix application icon * Fix application icon
* User-Agent now contains "Mozilla/5.0" and the Platform name (for firewall/proxy compat) * User-Agent now contains "Mozilla/5.0" and the Platform name (for firewall/proxy compat)
@@ -1154,10 +860,6 @@ version 1.3.0 (release 2013-06-25 ), csync 0.80.0 required
* New setup wizard, defaulting to root syncing (only for new setups) * New setup wizard, defaulting to root syncing (only for new setups)
* Improved thread stop/termination * Improved thread stop/termination
1.2 Series ChangeLog
====================
version 1.2.5 (release 2013-04-23 ), csync 0.70.7 required version 1.2.5 (release 2013-04-23 ), csync 0.70.7 required
* [Fixes] NSIS installer fixes * [Fixes] NSIS installer fixes
* [Fixes] Fix crash race by making certificateChain() thread safe * [Fixes] Fix crash race by making certificateChain() thread safe
@@ -1223,10 +925,6 @@ version 1.2.0 (release 2013-01-24 ), csync 0.70.2 required
* [Platform] cmake fixes. * [Platform] cmake fixes.
* [Platform] Improved, more detailed error reporting. * [Platform] Improved, more detailed error reporting.
1.1 Series ChangeLog
====================
version 1.1.4 (release 2012-12-19 ), csync 0.60.4 required version 1.1.4 (release 2012-12-19 ), csync 0.60.4 required
* No changes to mirall, only csync fixes. * No changes to mirall, only csync fixes.
@@ -1236,7 +934,7 @@ version 1.1.3 (release 2012-11-30 ), csync 0.60.3 required
version 1.1.2 (release 2012-11-26 ), csync 0.60.2 required version 1.1.2 (release 2012-11-26 ), csync 0.60.2 required
* [Fixes] Allow to properly cancel the password dialog. * [Fixes] Allow to properly cancel the password dialog.
* [Fixes] Share folder name correctly percent encoded with old Qt * [Fixes] Share folder name correctly percent encoded with old Qt
* * * * 4.6 builds ie. Debian. 4.6 builds ie. Debian.
* [Fixes] If local sync dir is not existing, create it. * [Fixes] If local sync dir is not existing, create it.
* [Fixes] lots of other minor fixes. * [Fixes] lots of other minor fixes.
* [GUI] Display error messages in status dialog. * [GUI] Display error messages in status dialog.
@@ -1244,30 +942,30 @@ version 1.1.2 (release 2012-11-26 ), csync 0.60.2 required
* [GUI] Show username for connection in statusdialog. * [GUI] Show username for connection in statusdialog.
* [GUI] Show intro wizard on new connection setup. * [GUI] Show intro wizard on new connection setup.
* [APP] Use CredentialStore to better support various credential * [APP] Use CredentialStore to better support various credential
* * * backends. backends.
* [APP] Handle missing local folder more robust: Create it if * [APP] Handle missing local folder more robust: Create it if
* * * missing instead of ignoring. missing instead of ignoring.
* [APP] Simplify treewalk code. * [APP] Simplify treewalk code.
* [Platform] Fix Mac building * [Platform] Fix Mac building
version 1.1.1 (release 2012-10-18), csync 0.60.1 required version 1.1.1 (release 2012-10-18), csync 0.60.1 required
* [GUI]* Allow changing folder name in single folder mode * [GUI] Allow changing folder name in single folder mode
* [GUI]* Windows: Add license to installer * [GUI] Windows: Add license to installer
* [GUI]* owncloud --logwindow will bring up the log window * [GUI] owncloud --logwindow will bring up the log window
* * * * in an already running instance in an already running instance
* [Fixes] Make sure SSL errors are always handled * [Fixes] Make sure SSL errors are always handled
* [Fixes] Allow special characters in folder alias * [Fixes] Allow special characters in folder alias
* [Fixes] Proper workaround for Menu bug in Ubuntu * [Fixes] Proper workaround for Menu bug in Ubuntu
* [Fixes] csync: Fix improper memory cleanup which could * [Fixes] csync: Fix improper memory cleanup which could
* * * * cause memory leaks and crashes cause memory leaks and crashes
* [Fixes] csync: Fix memory leak * [Fixes] csync: Fix memory leak
* [Fixes] csync: Allow single quote (') in file names * [Fixes] csync: Allow single quote (') in file names
* [Fixes] csync: Remove stray temporary files * [Fixes] csync: Remove stray temporary files
* [GUI]* Reworked tray context menu. * [GUI] Reworked tray context menu.
* [GUI]* Users can now sync the server root folder. * [GUI] Users can now sync the server root folder.
* [Fixes] Proxy support: now supports Proxy Auto-Configuration (PAC) * [Fixes] Proxy support: now supports Proxy Auto-Configuration (PAC)
* * * * on Windows, reliability fixes across all OSes. on Windows, reliability fixes across all OSes.
* [Fixes] Url entry field in setup assistant handles http/https correctly. * [Fixes] Url entry field in setup assistant handles http/https correctly.
* [Fixes] Button enable state in status dialog. * [Fixes] Button enable state in status dialog.
* [Fixes] Crash fixed on ending the client, tray icon related. * [Fixes] Crash fixed on ending the client, tray icon related.
@@ -1280,15 +978,11 @@ version 1.1.1 (release 2012-10-18), csync 0.60.1 required
* [Platform] Windows: ownCloud gets added to autorun by default. * [Platform] Windows: ownCloud gets added to autorun by default.
* [Platform] insert correct version info from cmake. * [Platform] insert correct version info from cmake.
* [Platform] csync conf file and database were moved to the users app data * [Platform] csync conf file and database were moved to the users app data
* * * * * directory, away from the .csync dir. directory, away from the .csync dir.
** * * Renamed exclude.lst to sync-exclude.lst and moved it to * Renamed exclude.lst to sync-exclude.lst and moved it to
* * * * /etc/appName()/ for more clean packaging. From the user path, /etc/appName()/ for more clean packaging. From the user path,
* * * * still exclude.lst is read if sync-exclude.lst is not existing. still exclude.lst is read if sync-exclude.lst is not existing.
** * * Placed custom.ini with customization options to /etc/appName() * Placed custom.ini with customization options to /etc/appName()
1.0 Series ChangeLog
====================
version 1.0.5 (release 2012-08-14), csync 0.50.8 required version 1.0.5 (release 2012-08-14), csync 0.50.8 required
* [Fixes] Fixed setup dialog: Really use https if checkbox is activated. * [Fixes] Fixed setup dialog: Really use https if checkbox is activated.
@@ -1306,23 +1000,23 @@ version 1.0.4 (release 2012-08-10), csync 0.50.8 required
* [GUI] Removed Log Window Button, log available through command line. * [GUI] Removed Log Window Button, log available through command line.
* [GUI] Proxy configuration dialog added. * [GUI] Proxy configuration dialog added.
* [GUI] Added Translations to languages Slovenian, Polish, Catalan, * [GUI] Added Translations to languages Slovenian, Polish, Catalan,
* * * Portuguese (Brazil), German, Greek, Spanish, Czech, Italian, Slovak, Portuguese (Brazil), German, Greek, Spanish, Czech, Italian, Slovak,
* * * French, Russian, Japanese, Swedish, Portuguese (Portugal) French, Russian, Japanese, Swedish, Portuguese (Portugal)
* * * all with translation rate >90%. all with translation rate >90%.
* [Fixes] Loading of self signed certs into Networkmanager (#oc-843) * [Fixes] Loading of self signed certs into Networkmanager (#oc-843)
* [Fixes] Win32: Handle SSL dll loading correctly. * [Fixes] Win32: Handle SSL dll loading correctly.
* [Fixes] Many other small fixes and improvements. * [Fixes] Many other small fixes and improvements.
version 1.0.3 (release 2012-06-19), csync 0.50.7 required version 1.0.3 (release 2012-06-19), csync 0.50.7 required
* [GUI] Added a log window which catches the logging if required and * [GUI] Added a log window which catches the logging if required and
* * * allows to save for information. allows to save for information.
* [CMI] Added options --help, --logfile and --logflush * [CMI] Added options --help, --logfile and --logflush
* [APP] Allow to specify sync frequency in the config file. * [APP] Allow to specify sync frequency in the config file.
* [Fixes] Do not use csync database files from a sync before. * [Fixes] Do not use csync database files from a sync before.
* [Fixes] In Connection wizard, write the final config onyl if * [Fixes] In Connection wizard, write the final config onyl if
* * * * the user really accepted. Also remove the former database. the user really accepted. Also remove the former database.
* [Fixes] More user expected behaviour deletion of sync folder local * [Fixes] More user expected behaviour deletion of sync folder local
* * * * and remote. and remote.
* [Fixes] Allow special characters in the sync directory names * [Fixes] Allow special characters in the sync directory names
* [Fixes] Win32: Fixed directory removal with special character dirs. * [Fixes] Win32: Fixed directory removal with special character dirs.
* [Fixes] MacOS: Do not flood the system log any more * [Fixes] MacOS: Do not flood the system log any more
@@ -1341,7 +1035,7 @@ version 1.0.2 (release 2012-05-18), csync 0.50.6 required
* [Fixes] Dialogs comes to front on click * [Fixes] Dialogs comes to front on click
* [Fixes] Open local sync folder from tray and status for win32 * [Fixes] Open local sync folder from tray and status for win32
* [Fixes] Load exclude.lst correctly on MacOSX * [Fixes] Load exclude.lst correctly on MacOSX
* + csync fixes. + csync fixes.
version 1.0.1 (release 2012-04-18), csync 0.50.5 required version 1.0.1 (release 2012-04-18), csync 0.50.5 required
* [Security] Support SSL Connections * [Security] Support SSL Connections

View File

@@ -3,16 +3,15 @@ set( APPLICATION_SHORTNAME "Nextcloud" )
set( APPLICATION_EXECUTABLE "nextcloud" ) set( APPLICATION_EXECUTABLE "nextcloud" )
set( APPLICATION_DOMAIN "nextcloud.com" ) set( APPLICATION_DOMAIN "nextcloud.com" )
set( APPLICATION_VENDOR "Nextcloud GmbH" ) set( APPLICATION_VENDOR "Nextcloud GmbH" )
set( APPLICATION_UPDATE_URL "https://updates.nextcloud.org/client/" CACHE STRING "URL for updater" ) set( APPLICATION_UPDATE_URL "https://updates.nextcloud.org/client/" CACHE string "URL for updater" )
set( APPLICATION_HELP_URL "" CACHE STRING "URL for the help menu" ) set( APPLICATION_HELP_URL "" CACHE string "URL for the help menu" )
set( APPLICATION_ICON_NAME "Nextcloud" ) set( APPLICATION_ICON_NAME "Nextcloud" )
set( APPLICATION_SERVER_URL "" CACHE STRING "URL for the server to use. If entered the server can only connect to this instance" ) set( APPLICATION_SERVER_URL "" CACHE string "URL for the server to use. If entered the server can only connect to this instance" )
set( APPLICATION_REV_DOMAIN "com.nextcloud.desktopclient" )
set( LINUX_PACKAGE_SHORTNAME "nextcloud" ) set( LINUX_PACKAGE_SHORTNAME "nextcloud" )
set( LINUX_APPLICATION_ID "${APPLICATION_REV_DOMAIN}.${LINUX_PACKAGE_SHORTNAME}")
set( THEME_CLASS "NextcloudTheme" ) set( THEME_CLASS "NextcloudTheme" )
set( APPLICATION_REV_DOMAIN "com.nextcloud.desktopclient" )
set( WIN_SETUP_BITMAP_PATH "${CMAKE_SOURCE_DIR}/admin/win/nsi" ) set( WIN_SETUP_BITMAP_PATH "${CMAKE_SOURCE_DIR}/admin/win/nsi" )
set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-background.png" CACHE STRING "The MacOSX installer background image") set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-background.png" CACHE STRING "The MacOSX installer background image")
@@ -21,17 +20,14 @@ set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-back
# set( APPLICATION_LICENSE "${OEM_THEME_DIR}/license.txt ) # set( APPLICATION_LICENSE "${OEM_THEME_DIR}/license.txt )
option( WITH_CRASHREPORTER "Build crashreporter" OFF ) option( WITH_CRASHREPORTER "Build crashreporter" OFF )
#set( CRASHREPORTER_SUBMIT_URL "https://crash-reports.owncloud.com/submit" CACHE STRING "URL for crash reporter" ) #set( CRASHREPORTER_SUBMIT_URL "https://crash-reports.owncloud.com/submit" CACHE string "URL for crash reporter" )
#set( CRASHREPORTER_ICON ":/owncloud-icon.png" ) #set( CRASHREPORTER_ICON ":/owncloud-icon.png" )
## Updater options
option( BUILD_UPDATER "Build updater" OFF )
option( WITH_PROVIDERS "Build with providers list" ON ) option( WITH_PROVIDERS "Build with providers list" ON )
## Theming options ## Theming options
set( APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR "#0082c9" CACHE STRING "Hex color of the wizard header background") set( APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR "#0082c9" CACHE string "Hex color of the wizard header background")
set( APPLICATION_WIZARD_HEADER_TITLE_COLOR "#ffffff" CACHE STRING "Hex color of the text in the wizard header") set( APPLICATION_WIZARD_HEADER_TITLE_COLOR "#ffffff" CACHE string "Hex color of the text in the wizard header")
option( APPLICATION_WIZARD_USE_CUSTOM_LOGO "Use the logo from ':/client/theme/colored/wizard_logo.png' else the default application icon is used" ON ) option( APPLICATION_WIZARD_USE_CUSTOM_LOGO "Use the logo from ':/client/theme/colored/wizard_logo.png' else the default application icon is used" ON )

View File

@@ -61,14 +61,14 @@ For more info: [Wiki/Daily Builds](https://github.com/nextcloud/desktop/wiki/Dai
### :bomb: Reporting issues ### :bomb: Reporting issues
- If you find any bugs or have any suggestion for improvement, please - If you find any bugs or have any suggestion for improvement, please
file an issue at https://github.com/nextcloud/desktop/issues. Do not file an issue at https://github.com/nextcloud/client/issues. Do not
contact the authors directly by mail, as this increases the chance contact the authors directly by mail, as this increases the chance
of your report being lost. :boom: of your report being lost. :boom:
### :smiley: :trophy: Pull requests ### :smiley: :trophy: Pull requests
- If you created a patch :heart_eyes:, please submit a [Pull - If you created a patch :heart_eyes:, please submit a [Pull
Request](https://github.com/nextcloud/desktop/pulls). Request](https://github.com/nextcloud/client/pulls).
- How to create a pull request? This guide will help you get started: [Opening a pull request](https://opensource.guide/how-to-contribute/#opening-a-pull-request) :heart: - How to create a pull request? This guide will help you get started: [Opening a pull request](https://opensource.guide/how-to-contribute/#opening-a-pull-request) :heart:

View File

@@ -1,7 +1,7 @@
set( MIRALL_VERSION_MAJOR 2 ) set( MIRALL_VERSION_MAJOR 2 )
set( MIRALL_VERSION_MINOR 6 ) set( MIRALL_VERSION_MINOR 5 )
set( MIRALL_VERSION_PATCH 5 ) set( MIRALL_VERSION_PATCH 3 )
set( MIRALL_VERSION_YEAR 2020 ) set( MIRALL_VERSION_YEAR 2019 )
set( MIRALL_SOVERSION 0 ) set( MIRALL_SOVERSION 0 )
if ( NOT DEFINED MIRALL_VERSION_SUFFIX ) if ( NOT DEFINED MIRALL_VERSION_SUFFIX )

View File

@@ -14,7 +14,6 @@ RUN apt-get update -q && DEBIAN_FRONTEND=noninteractive apt-get install -q -y --
libsqlite3-dev \ libsqlite3-dev \
libssl-dev \ libssl-dev \
libcmocka-dev \ libcmocka-dev \
libcloudproviders-dev \
qt5-default \ qt5-default \
qttools5-dev-tools \ qttools5-dev-tools \
libqt5webkit5-dev \ libqt5webkit5-dev \

View File

@@ -6,26 +6,23 @@ mkdir /app
mkdir /build mkdir /build
#Set Qt-5.12 #Set Qt-5.12
export QT_BASE_DIR=/opt/qt5.12.8 export QT_BASE_DIR=/opt/qt512
export QTDIR=$QT_BASE_DIR export QTDIR=$QT_BASE_DIR
export PATH=$QT_BASE_DIR/bin:$PATH 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 export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH export PKG_CONFIG_PATH=$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
#Set APPID for .desktop file processing
export LINUX_APPLICATION_ID=com.nextcloud.desktopclient.nextcloud
#set defaults #set defaults
export SUFFIX=${DRONE_PULL_REQUEST:=master} export SUFFIX=${DRONE_PULL_REQUEST:=master}
if [ $SUFFIX != "master" ]; then if [ $SUFFIX != "master" ]; then
SUFFIX="PR-$SUFFIX" SUFFIX="PR-$SUFFIX"
fi fi
#QtKeyChain master #QtKeyChain 0.9.1
cd /build cd /build
git clone https://github.com/frankosterfeld/qtkeychain.git git clone https://github.com/frankosterfeld/qtkeychain.git
cd qtkeychain cd qtkeychain
git checkout master git checkout v0.9.1
mkdir build mkdir build
cd build cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr ../ cmake -D CMAKE_INSTALL_PREFIX=/usr ../
@@ -38,7 +35,6 @@ mkdir build-client
cd build-client cd build-client
cmake -D CMAKE_INSTALL_PREFIX=/usr \ cmake -D CMAKE_INSTALL_PREFIX=/usr \
-D NO_SHIBBOLETH=1 \ -D NO_SHIBBOLETH=1 \
-D BUILD_UPDATER=ON \
-D QTKEYCHAIN_LIBRARY=/app/usr/lib/x86_64-linux-gnu/libqt5keychain.so \ -D QTKEYCHAIN_LIBRARY=/app/usr/lib/x86_64-linux-gnu/libqt5keychain.so \
-D QTKEYCHAIN_INCLUDE_DIR=/app/usr/include/qt5keychain/ \ -D QTKEYCHAIN_INCLUDE_DIR=/app/usr/include/qt5keychain/ \
-DMIRALL_VERSION_SUFFIX=PR-$DRONE_PULL_REQUEST \ -DMIRALL_VERSION_SUFFIX=PR-$DRONE_PULL_REQUEST \
@@ -66,12 +62,11 @@ rm -rf ./usr/share/caja-python/
rm -rf ./usr/share/nautilus-python/ rm -rf ./usr/share/nautilus-python/
rm -rf ./usr/share/nemo-python/ rm -rf ./usr/share/nemo-python/
# Move sync exclude to right location # Move sync exlucde to right location
mv ./etc/Nextcloud/sync-exclude.lst ./usr/bin/ mv ./etc/Nextcloud/sync-exclude.lst ./usr/bin/
rm -rf ./etc rm -rf ./etc
DESKTOP_FILE=/app/usr/share/applications/${LINUX_APPLICATION_ID}.desktop sed -i -e 's|Icon=nextcloud|Icon=Nextcloud|g' usr/share/applications/nextcloud.desktop # Bug in desktop file?
sed -i -e 's|Icon=nextcloud|Icon=Nextcloud|g' ${DESKTOP_FILE} # Bug in desktop file?
cp ./usr/share/icons/hicolor/512x512/apps/Nextcloud.png . # Workaround for linuxeployqt bug, FIXME cp ./usr/share/icons/hicolor/512x512/apps/Nextcloud.png . # Workaround for linuxeployqt bug, FIXME
@@ -92,12 +87,17 @@ chmod a+x linuxdeployqt*.AppImage
rm ./linuxdeployqt-continuous-x86_64.AppImage rm ./linuxdeployqt-continuous-x86_64.AppImage
unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/app/usr/lib/ export LD_LIBRARY_PATH=/app/usr/lib/
./squashfs-root/AppRun ${DESKTOP_FILE} -bundle-non-qt-libs ./squashfs-root/AppRun /app/usr/share/applications/nextcloud.desktop -bundle-non-qt-libs
# Set origin # Set origin
./squashfs-root/usr/bin/patchelf --set-rpath '$ORIGIN/' /app/usr/lib/libnextcloudsync.so.0 ./squashfs-root/usr/bin/patchelf --set-rpath '$ORIGIN/' /app/usr/lib/libnextcloudsync.so.0
# Build AppImage # Build AppImage
./squashfs-root/AppRun ${DESKTOP_FILE} -appimage ./squashfs-root/AppRun /app/usr/share/applications/nextcloud.desktop -appimage
mv Nextcloud*.AppImage Nextcloud-${SUFFIX}-${DRONE_COMMIT}-x86_64.AppImage mv Nextcloud*.AppImage Nextcloud-${SUFFIX}-${DRONE_COMMIT}-x86_64.AppImage
curl --upload-file $(readlink -f ./Nextcloud*.AppImage) https://transfer.sh/Nextcloud-${SUFFIX}-${DRONE_COMMIT}-x86_64.AppImage
echo
echo "Get the AppImage at the link above!"

View File

@@ -1,22 +1,22 @@
nextcloud-client (2.3.3-1.0~eoan1) eoan; urgency=medium nextcloud-client (2.3.3-1.0~cosmic1) cosmic; urgency=medium
* Debian build support for the forked client. * Debian build support for the forked client.
-- István Váradi <ivaradi@varadiistvan.hu> Mon, 6 Nov 2017 20:20:04 +0100 -- István Váradi <ivaradi@varadiistvan.hu> Mon, 6 Nov 2017 20:20:04 +0100
nextcloud-client (2.3.1-1.0~eoan1) eoan; urgency=medium nextcloud-client (2.3.1-1.0~cosmic1) cosmic; urgency=medium
* New upstream version * New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Thu, 23 Mar 2017 19:07:36 +0100 -- István Váradi <ivaradi@varadiistvan.hu> Thu, 23 Mar 2017 19:07:36 +0100
nextcloud-client (2.3.0-1.0~eoan1) eoan; urgency=medium nextcloud-client (2.3.0-1.0~cosmic1) cosmic; urgency=medium
* New upstream version * New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 21 Mar 2017 19:34:13 +0100 -- István Váradi <ivaradi@varadiistvan.hu> Tue, 21 Mar 2017 19:34:13 +0100
nextcloud-client (2.2.4-1.4~eoan1) eoan; urgency=medium nextcloud-client (2.2.4-1.4~cosmic1) cosmic; urgency=medium
* The locale-specific icon names are correct too * The locale-specific icon names are correct too

View File

@@ -1,90 +0,0 @@
Source: nextcloud-client
Section: contrib/devel
Priority: optional
Maintainer: István Váradi <ivaradi@varadiistvan.hu>
Build-Depends: cmake,
debhelper,
cdbs,
dh-python,
extra-cmake-modules (>= 5.16),
libkf5kio-dev,
libcmocka-dev,
libcloudproviders-dev,
libdbus-1-dev,
libhttp-dav-perl,
libinotify-dev [kfreebsd-any],
libqt5svg5-dev,
libqt5webkit5-dev,
libsqlite3-dev,
libssl-dev (>= 1.1.0),
zlib1g-dev,
optipng,
pkg-kde-tools,
python-sphinx | python3-sphinx,
python3-all,
qt5keychain-dev,
qtwebengine5-dev,
qtdeclarative5-dev,
qttools5-dev,
qttools5-dev-tools,
xvfb
Standards-Version: 3.9.8
Homepage: https://github.com/nextcloud/client_theming
#Vcs-Git: git://anonscm.debian.org/collab-maint/nextcloud-client.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/nextcloud-client.git
Package: nextcloud-client
Architecture: any
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, nextcloud-client-l10n
Description: Nextcloud desktop sync client
Use the desktop client to keep your files synchronized
between your Nextcloud server and your desktop. Select
one or more directories on your local machine and always
have access to your latest files wherever you are.
Package: libnextcloudsync0
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Nextcloud sync library
Used by the Nextcloud desktop client as the synchronization engine.
Package: libnextcloudsync-dev
Architecture: any
Section: contrib/libdevel
Depends: libnextcloudsync0 (=${binary:Version}), ${misc:Depends}
Description: Nextcloud sync library development files
The headers and development library for the Nextcloud sync library.
Package: nextcloud-client-l10n
Architecture: all
Depends: ${misc:Depends}
Description: Nextcloud client internatialization files
The translation files.
Package: nextcloud-client-nautilus
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-nautilus, nautilus, ${misc:Depends}
Description: Nautilus plugin for Nextcloud
This package contains a Nautilus plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-nemo
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-nemo | nemo-python, nemo, ${misc:Depends}
Description: Nemo plugin for Nextcloud
This package contains a Nemo plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-caja
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-caja, caja, ${misc:Depends}
Description: Caja plugin for Nextcloud
This package contains a Caja plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-dolphin
Architecture: any
Depends: dolphin (>= 4:15.12.1), libnextcloudsync0 (= ${binary:Version}), nextcloud-client, ${misc:Depends}, ${shlibs:Depends}
Description: Dolphin plugin for Nextcloud
This package contains a Dolphin plugin to display
synchronization status icons for Nextcloud files.

View File

@@ -1,23 +0,0 @@
nextcloud-client (2.3.3-1.0~focal1) focal; urgency=medium
* Debian build support for the forked client.
-- István Váradi <ivaradi@varadiistvan.hu> Mon, 6 Nov 2017 20:20:04 +0100
nextcloud-client (2.3.1-1.0~focal1) focal; urgency=medium
* New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Thu, 23 Mar 2017 19:07:36 +0100
nextcloud-client (2.3.0-1.0~focal1) focal; urgency=medium
* New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 21 Mar 2017 19:34:13 +0100
nextcloud-client (2.2.4-1.4~focal1) focal; urgency=medium
* The locale-specific icon names are correct too
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 7 Feb 2017 19:55:40 +0100

View File

@@ -1,90 +0,0 @@
Source: nextcloud-client
Section: contrib/devel
Priority: optional
Maintainer: István Váradi <ivaradi@varadiistvan.hu>
Build-Depends: cmake,
debhelper,
cdbs,
dh-python,
extra-cmake-modules (>= 5.16),
libkf5kio-dev,
libcmocka-dev,
libcloudproviders-dev,
libdbus-1-dev,
libhttp-dav-perl,
libinotify-dev [kfreebsd-any],
libqt5svg5-dev,
libqt5webkit5-dev,
libsqlite3-dev,
libssl-dev (>= 1.1.0),
zlib1g-dev,
optipng,
pkg-kde-tools,
python3-sphinx,
python3-all,
qt5keychain-dev,
qtwebengine5-dev,
qtdeclarative5-dev,
qttools5-dev,
qttools5-dev-tools,
xvfb
Standards-Version: 3.9.8
Homepage: https://github.com/nextcloud/client_theming
#Vcs-Git: git://anonscm.debian.org/collab-maint/nextcloud-client.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/nextcloud-client.git
Package: nextcloud-client
Architecture: any
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, nextcloud-client-l10n
Description: Nextcloud desktop sync client
Use the desktop client to keep your files synchronized
between your Nextcloud server and your desktop. Select
one or more directories on your local machine and always
have access to your latest files wherever you are.
Package: libnextcloudsync0
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Nextcloud sync library
Used by the Nextcloud desktop client as the synchronization engine.
Package: libnextcloudsync-dev
Architecture: any
Section: contrib/libdevel
Depends: libnextcloudsync0 (=${binary:Version}), ${misc:Depends}
Description: Nextcloud sync library development files
The headers and development library for the Nextcloud sync library.
Package: nextcloud-client-l10n
Architecture: all
Depends: ${misc:Depends}
Description: Nextcloud client internatialization files
The translation files.
Package: nextcloud-client-nautilus
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python3-nautilus, nautilus, ${misc:Depends}
Description: Nautilus plugin for Nextcloud
This package contains a Nautilus plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-nemo
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-nemo | nemo-python, nemo, ${misc:Depends}
Description: Nemo plugin for Nextcloud
This package contains a Nemo plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-caja
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python3-caja, caja, ${misc:Depends}
Description: Caja plugin for Nextcloud
This package contains a Caja plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-dolphin
Architecture: any
Depends: dolphin (>= 4:15.12.1), libnextcloudsync0 (= ${binary:Version}), nextcloud-client, ${misc:Depends}, ${shlibs:Depends}
Description: Dolphin plugin for Nextcloud
This package contains a Dolphin plugin to display
synchronization status icons for Nextcloud files.

View File

@@ -1,23 +0,0 @@
nextcloud-client (2.3.3-1.0~groovy1) groovy; urgency=medium
* Debian build support for the forked client.
-- István Váradi <ivaradi@varadiistvan.hu> Mon, 6 Nov 2017 20:20:04 +0100
nextcloud-client (2.3.1-1.0~groovy1) groovy; urgency=medium
* New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Thu, 23 Mar 2017 19:07:36 +0100
nextcloud-client (2.3.0-1.0~groovy1) groovy; urgency=medium
* New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 21 Mar 2017 19:34:13 +0100
nextcloud-client (2.2.4-1.4~groovy1) groovy; urgency=medium
* The locale-specific icon names are correct too
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 7 Feb 2017 19:55:40 +0100

View File

@@ -1,90 +0,0 @@
Source: nextcloud-client
Section: contrib/devel
Priority: optional
Maintainer: István Váradi <ivaradi@varadiistvan.hu>
Build-Depends: cmake,
debhelper,
cdbs,
dh-python,
extra-cmake-modules (>= 5.16),
libkf5kio-dev,
libcmocka-dev,
libcloudproviders-dev,
libdbus-1-dev,
libhttp-dav-perl,
libinotify-dev [kfreebsd-any],
libqt5svg5-dev,
libqt5webkit5-dev,
libsqlite3-dev,
libssl-dev (>= 1.1.0),
zlib1g-dev,
optipng,
pkg-kde-tools,
python3-sphinx,
python3-all,
qt5keychain-dev,
qtwebengine5-dev,
qtdeclarative5-dev,
qttools5-dev,
qttools5-dev-tools,
xvfb
Standards-Version: 3.9.8
Homepage: https://github.com/nextcloud/client_theming
#Vcs-Git: git://anonscm.debian.org/collab-maint/nextcloud-client.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/nextcloud-client.git
Package: nextcloud-client
Architecture: any
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, nextcloud-client-l10n
Description: Nextcloud desktop sync client
Use the desktop client to keep your files synchronized
between your Nextcloud server and your desktop. Select
one or more directories on your local machine and always
have access to your latest files wherever you are.
Package: libnextcloudsync0
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Nextcloud sync library
Used by the Nextcloud desktop client as the synchronization engine.
Package: libnextcloudsync-dev
Architecture: any
Section: contrib/libdevel
Depends: libnextcloudsync0 (=${binary:Version}), ${misc:Depends}
Description: Nextcloud sync library development files
The headers and development library for the Nextcloud sync library.
Package: nextcloud-client-l10n
Architecture: all
Depends: ${misc:Depends}
Description: Nextcloud client internatialization files
The translation files.
Package: nextcloud-client-nautilus
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python3-nautilus, nautilus, ${misc:Depends}
Description: Nautilus plugin for Nextcloud
This package contains a Nautilus plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-nemo
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-nemo | nemo-python, nemo, ${misc:Depends}
Description: Nemo plugin for Nextcloud
This package contains a Nemo plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-caja
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python3-caja, caja, ${misc:Depends}
Description: Caja plugin for Nextcloud
This package contains a Caja plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-dolphin
Architecture: any
Depends: dolphin (>= 4:15.12.1), libnextcloudsync0 (= ${binary:Version}), nextcloud-client, ${misc:Depends}, ${shlibs:Depends}
Description: Dolphin plugin for Nextcloud
This package contains a Dolphin plugin to display
synchronization status icons for Nextcloud files.

View File

@@ -1,48 +0,0 @@
nextcloud-client (2.3.3-1.0~oldstable1) oldstable; urgency=medium
* Debian build support for the forked client.
-- István Váradi <ivaradi@varadiistvan.hu> Mon, 6 Nov 2017 20:20:04 +0100
nextcloud-client (2.3.1-1.0) oldstable; urgency=medium
* New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Thu, 23 Mar 2017 19:07:36 +0100
nextcloud-client (2.3.0-1.0) oldstable; urgency=medium
* New upstream version
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 21 Mar 2017 19:34:13 +0100
nextcloud-client (2.2.4-1.4) oldstable; urgency=medium
* The locale-specific icon names are correct too
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 7 Feb 2017 19:55:40 +0100
nextcloud-client (2.2.4-1.3) oldstable; urgency=medium
* Caja syncstate plugin is built.
* The syncstate plugin has application-specific name
-- István Váradi <ivaradi@varadiistvan.hu> Fri, 27 Jan 2017 19:34:18 +0100
nextcloud-client (2.2.4-1.2) oldstable; urgency=medium
* Fixed appname in the Nemo syncstate extension.
-- István Váradi <ivaradi@varadiistvan.hu> Thu, 19 Jan 2017 16:46:50 +0100
nextcloud-client (2.2.4-1.1) oldstable; urgency=medium
* Added Nautilus and Nemo syncstate extensions.
-- István Váradi <ivaradi@varadiistvan.hu> Tue, 17 Jan 2017 19:55:32 +0100
nextcloud-client (2.2.4-1.0) oldstable; urgency=medium
* Initial release.
-- István Váradi <ivaradi@varadiistvan.hu> Wed, 14 Dec 2016 20:07:46 +0100

View File

@@ -1,84 +0,0 @@
Source: nextcloud-client
Section: contrib/devel
Priority: optional
Maintainer: István Váradi <ivaradi@varadiistvan.hu>
Build-Depends: cmake,
debhelper,
cdbs,
dh-python,
extra-cmake-modules (>= 5.16),
kdelibs5-dev,
kio-dev,
libcmocka-dev,
libdbus-1-dev,
libhttp-dav-perl,
libinotify-dev [kfreebsd-any],
libqt5webkit5-dev,
libqt5svg5-dev,
libsqlite3-dev,
libssl-dev (>= 1.1.0),
zlib1g-dev,
optipng,
pkg-kde-tools,
python-sphinx | python3-sphinx,
python3-all,
qt5keychain-dev,
qtwebengine5-dev,
qtdeclarative5-dev,
qttools5-dev,
qttools5-dev-tools,
xvfb
Standards-Version: 3.9.8
Homepage: https://github.com/nextcloud/client_theming
#Vcs-Git: git://anonscm.debian.org/collab-maint/nextcloud-client.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/nextcloud-client.git
Package: nextcloud-client
Architecture: any
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, nextcloud-client-l10n
Recommends: libgnome-keyring0
Description: Nextcloud desktop sync client
Use the desktop client to keep your files synchronized
between your Nextcloud server and your desktop. Select
one or more directories on your local machine and always
have access to your latest files wherever you are.
Package: libnextcloudsync0
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Nextcloud sync library
Used by the Nextcloud desktop client as the synchronization engine.
Package: libnextcloudsync-dev
Architecture: any
Section: contrib/libdevel
Depends: libnextcloudsync0 (=${binary:Version}), ${misc:Depends}
Description: Nextcloud sync library development files
The headers and development library for the Nextcloud sync library.
Package: nextcloud-client-l10n
Architecture: all
Depends: ${misc:Depends}
Description: Nextcloud client internatialization files
The translation files.
Package: nextcloud-client-nautilus
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-nautilus, nautilus, ${misc:Depends}
Description: Nautilus plugin for Nextcloud
This package contains a Nautilus plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-nemo
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-nemo, nemo, ${misc:Depends}
Description: Nemo plugin for Nextcloud
This package contains a Nemo plugin to display
synchronization status icons for Nextcloud files.
Package: nextcloud-client-caja
Architecture: all
Depends: nextcloud-client (>=${binary:Version}), libnextcloudsync0, python-caja, caja, ${misc:Depends}
Description: Caja plugin for Nextcloud
This package contains a Caja plugin to display
synchronization status icons for Nextcloud files.

View File

@@ -1,4 +0,0 @@
usr/bin
usr/share/applications
usr/share/icons
debian/101-sync-inotify.conf etc/sysctl.d

View File

@@ -9,10 +9,7 @@ Build-Depends: cmake,
extra-cmake-modules (>= 5.16), extra-cmake-modules (>= 5.16),
kdelibs5-dev, kdelibs5-dev,
kio-dev, kio-dev,
libavcodec58,
libcmocka-dev, libcmocka-dev,
libcloudproviders-dev,
libdbus-1-dev,
libhttp-dav-perl, libhttp-dav-perl,
libinotify-dev [kfreebsd-any], libinotify-dev [kfreebsd-any],
libqt5webkit5-dev, libqt5webkit5-dev,

View File

@@ -1,4 +0,0 @@
usr/bin
usr/share/applications
usr/share/icons
debian/101-sync-inotify.conf etc/sysctl.d

View File

@@ -1,12 +1,40 @@
--- nextcloud-client-2.5.3.orig/src/3rdparty/kmessagewidget/kmessagewidget.cpp 2019-07-26 18:40:34.949349387 +0000 --- nextcloud-client-2.4.0.orig/src/gui/wizard/owncloudoauthcredspage.cpp
+++ nextcloud-client-2.5.3/src/3rdparty/kmessagewidget/kmessagewidget.cpp 2019-07-26 18:41:39.866478051 +0000 +++ nextcloud-client-2.4.0/src/gui/wizard/owncloudoauthcredspage.cpp
@@ -105,6 +105,9 @@ @@ -53,10 +53,8 @@ OwncloudOAuthCredsPage::OwncloudOAuthCredsPage()
q->setMessageType(KMessageWidget::Information); _ui.openLinkButton->setContextMenuPolicy(Qt::CustomContextMenu);
QObject::connect(_ui.openLinkButton, &QWidget::customContextMenuRequested, [this](const QPoint &pos) {
auto menu = new QMenu(_ui.openLinkButton);
- menu->addAction(tr("Copy link to clipboard"), this, [this] {
- if (_asyncAuth)
- QApplication::clipboard()->setText(_asyncAuth->authorisationLink().toString(QUrl::FullyEncoded));
- });
+ auto action = menu->addAction(tr("Copy link to clipboard"));
+ connect(action, &QAction::triggered, this, &OwncloudOAuthCredsPage::copyLinkToClipboard);
menu->setAttribute(Qt::WA_DeleteOnClose);
menu->popup(_ui.openLinkButton->mapToGlobal(pos));
});
@@ -131,4 +129,11 @@ bool OwncloudOAuthCredsPage::isComplete() const
return false; /* We can never go forward manually */
} }
+template <typename T> +void OwncloudOAuthCredsPage::copyLinkToClipboard()
+constexpr typename std::add_const<T>::type &qAsConst(T &t) noexcept { return t; } +{
+ if (_asyncAuth)
+ QApplication::clipboard()->setText(_asyncAuth->authorisationLink().toString(QUrl::FullyEncoded));
+}
+ +
void KMessageWidgetPrivate::createLayout() +
{ } // namespace OCC
delete content->layout(); --- nextcloud-client-2.4.0.orig/src/gui/wizard/owncloudoauthcredspage.h
+++ nextcloud-client-2.4.0/src/gui/wizard/owncloudoauthcredspage.h
@@ -57,6 +57,10 @@ public:
QString _refreshToken;
QScopedPointer<OAuth> _asyncAuth;
Ui_OwncloudOAuthCredsPage _ui;
+
+protected slots:
+ void copyLinkToClipboard();
+
};
} // namespace OCC

View File

@@ -10,8 +10,6 @@ Build-Depends: cmake,
kdelibs5-dev, kdelibs5-dev,
libkf5kio-dev, libkf5kio-dev,
libcmocka-dev, libcmocka-dev,
libcloudproviders-dev,
libdbus-1-dev,
libhttp-dav-perl, libhttp-dav-perl,
libinotify-dev [kfreebsd-any], libinotify-dev [kfreebsd-any],
libqt5svg5-dev, libqt5svg5-dev,

View File

@@ -1,6 +1,4 @@
usr/bin usr/bin
usr/share/applications usr/share/applications
usr/share/cloud-providers/
usr/share/dbus-1/services/
usr/share/icons usr/share/icons
debian/101-sync-inotify.conf etc/sysctl.d debian/101-sync-inotify.conf etc/sysctl.d

View File

@@ -3,19 +3,12 @@
set -xe set -xe
shopt -s extglob shopt -s extglob
env
PPA=ppa:nextcloud-devs/client PPA=ppa:nextcloud-devs/client
PPA_ALPHA=ppa:nextcloud-devs/client-alpha
PPA_BETA=ppa:nextcloud-devs/client-beta PPA_BETA=ppa:nextcloud-devs/client-beta
OBS_PROJECT=home:ivaradi OBS_PROJECT=home:ivaradi
OBS_PROJECT_ALPHA=home:ivaradi:alpha
OBS_PROJECT_BETA=home:ivaradi:beta OBS_PROJECT_BETA=home:ivaradi:beta
OBS_PACKAGE=nextcloud-desktop OBS_PACKAGE=nextcloud-client
UBUNTU_DISTRIBUTIONS="xenial bionic eoan focal groovy"
DEBIAN_DISTRIBUTIONS="buster stretch"
pull_request=${DRONE_PULL_REQUEST:=master} pull_request=${DRONE_PULL_REQUEST:=master}
@@ -38,15 +31,13 @@ fi
set -x set -x
cd "${DRONE_WORKSPACE}" cd "${DRONE_WORKSPACE}"
read basever revdate kind <<<$(admin/linux/debian/scripts/git2changelog.py /tmp/tmpchangelog stable) read basever kind <<<$(admin/linux/debian/scripts/git2changelog.py /tmp/tmpchangelog stable)
cd "${DRONE_DIR}" cd "${DRONE_DIR}"
echo "$kind" > kind echo "$kind" > kind
if test "$kind" = "alpha"; then if test "$kind" = "beta"; then
repo=nextcloud-devs/client-alpha
elif test "$kind" = "beta"; then
repo=nextcloud-devs/client-beta repo=nextcloud-devs/client-beta
else else
repo=nextcloud-devs/client repo=nextcloud-devs/client
@@ -54,80 +45,79 @@ fi
origsourceopt="" origsourceopt=""
cp -a ${DRONE_WORKSPACE} nextcloud-desktop_${basever}-${revdate} if ! wget http://ppa.launchpad.net/${repo}/ubuntu/pool/main/n/nextcloud-client/nextcloud-client_${basever}.orig.tar.bz2; then
tar cjf nextcloud-desktop_${basever}-${revdate}.orig.tar.bz2 --exclude .git --exclude binary nextcloud-desktop_${basever}-${revdate} cp -a ${DRONE_WORKSPACE} nextcloud-client_${basever}
tar cjf nextcloud-client_${basever}.orig.tar.bz2 --exclude .git nextcloud-client_${basever}
origsourceopt="-sa"
fi
cd "${DRONE_WORKSPACE}" for distribution in xenial bionic cosmic disco stable; do
git config --global user.email "drone@noemail.invalid" rm -rf nextcloud-client_${basever}
git config --global user.name "Drone User" cp -a ${DRONE_WORKSPACE} nextcloud-client_${basever}
for distribution in ${UBUNTU_DISTRIBUTIONS} ${DEBIAN_DISTRIBUTIONS}; do cd nextcloud-client_${basever}
git checkout -- .
git clean -xdf
git fetch origin debian/dist/${distribution}/${DRONE_TARGET_BRANCH} cp -a admin/linux/debian/debian .
git checkout origin/debian/dist/${distribution}/${DRONE_TARGET_BRANCH} if test -d admin/linux/debian/debian.${distribution}; then
tar cf - -C admin/linux/debian/debian.${distribution} . | tar xf - -C debian
fi
git merge ${DRONE_COMMIT} admin/linux/debian/scripts/git2changelog.py /tmp/tmpchangelog ${distribution}
cp /tmp/tmpchangelog debian/changelog
if test -f admin/linux/debian/debian.${distribution}/changelog; then
cat admin/linux/debian/debian.${distribution}/changelog >> debian/changelog
else
cat admin/linux/debian/debian/changelog >> debian/changelog
fi
admin/linux/debian/scripts/git2changelog.py /tmp/tmpchangelog ${distribution} ${revdate} for p in debian/post-patches/*.patch; do
cat /tmp/tmpchangelog debian/changelog > debian/changelog.new if test -f "${p}"; then
mv debian/changelog.new debian/changelog echo "Applying ${p}"
patch -p1 < "${p}"
fi
done
fullver=`head -1 debian/changelog | sed "s:nextcloud-desktop (\([^)]*\)).*:\1:"` fullver=`head -1 debian/changelog | sed "s:nextcloud-client (\([^)]*\)).*:\1:"`
EDITOR=true dpkg-source --commit . local-changes EDITOR=true dpkg-source --commit . local-changes
dpkg-source --build . dpkg-source --build .
dpkg-genchanges -S -sa > "../nextcloud-desktop_${fullver}_source.changes" dpkg-genchanges -S ${origsourceopt} > "../nextcloud-client_${fullver}_source.changes"
if test -f ~/.has_ppa_keys; then if test -f ~/.has_ppa_keys; then
debsign -k7D14AA7B -S debsign -k7D14AA7B -S
fi fi
cd ..
done done
cd ..
ls -al
if test "${pull_request}" = "master"; then if test "${pull_request}" = "master"; then
if test "$kind" = "alpha"; then kind=`cat kind`
PPA=$PPA_ALPHA
OBS_PROJECT=$OBS_PROJECT_ALPHA if test "$kind" = "beta"; then
elif test "$kind" = "beta"; then
PPA=$PPA_BETA PPA=$PPA_BETA
OBS_PROJECT=$OBS_PROJECT_BETA OBS_PROJECT=$OBS_PROJECT_BETA
fi fi
OBS_SUBDIR="${OBS_PROJECT}/${OBS_PACKAGE}"
if test -f ~/.has_ppa_keys; then if test -f ~/.has_ppa_keys; then
for distribution in ${UBUNTU_DISTRIBUTIONS}; do for changes in nextcloud-client_*~+([a-z])1_source.changes; do
changes=$(ls -1 nextcloud-desktop_*~${distribution}1_source.changes) dput $PPA $changes > /dev/null
if test -f "${changes}"; then
dput $PPA "${changes}" > /dev/null
fi
done done
for distribution in ${DEBIAN_DISTRIBUTIONS}; do mkdir osc
pkgsuffix=".${distribution}" cd osc
pkgvertag="~${distribution}1" osc co ${OBS_PROJECT} ${OBS_PACKAGE}
if test "$(ls ${OBS_SUBDIR})"; then
osc delete ${OBS_SUBDIR}/*
fi
cp ../nextcloud-client*.orig.tar.* ${OBS_SUBDIR}/
cp ../nextcloud-client_*[0-9.][0-9].dsc ${OBS_SUBDIR}/
cp ../nextcloud-client_*[0-9.][0-9].debian.tar* ${OBS_SUBDIR}/
cp ../nextcloud-client_*[0-9.][0-9]_source.changes ${OBS_SUBDIR}/
osc add ${OBS_SUBDIR}/*
package="${OBS_PACKAGE}${pkgsuffix}" cd ${OBS_SUBDIR}
OBS_SUBDIR="${OBS_PROJECT}/${package}" osc commit -m "Travis update"
mkdir -p osc
pushd osc
osc co ${OBS_PROJECT} ${package}
if test "$(ls ${OBS_SUBDIR})"; then
osc delete ${OBS_SUBDIR}/*
fi
cp ../nextcloud-desktop*.orig.tar.* ${OBS_SUBDIR}/
cp ../nextcloud-desktop_*[0-9.][0-9]${pkgvertag}.dsc ${OBS_SUBDIR}/
cp ../nextcloud-desktop_*[0-9.][0-9]${pkgvertag}.debian.tar* ${OBS_SUBDIR}/
cp ../nextcloud-desktop_*[0-9.][0-9]${pkgvertag}_source.changes ${OBS_SUBDIR}/
osc add ${OBS_SUBDIR}/*
cd ${OBS_SUBDIR}
osc commit -m "Travis update"
popd
done
fi fi
fi fi

View File

@@ -6,7 +6,3 @@
[versionhack] [versionhack]
commit = bc7e65b39552ac458b2adacf76cbf98735ec29a0 commit = bc7e65b39552ac458b2adacf76cbf98735ec29a0
tag = v2.4.0-beta tag = v2.4.0-beta
[base]
commit = b45f5fd1a947dc21eb11c69049a99616a2ec950e
version = 2.6.4

View File

@@ -1,6 +1,5 @@
#!//usr/bin/env python2.7 #!//usr/bin/env python2.7
from __future__ import print_function
import subprocess import subprocess
import re import re
import sys import sys
@@ -8,11 +7,6 @@ import datetime
import os import os
import ConfigParser import ConfigParser
try:
long
except NameError:
long = int
distribution="yakkety" distribution="yakkety"
versionTagRE = re.compile("^v([0-9]+((\.[0-9]+)+))(-(.+))?$") versionTagRE = re.compile("^v([0-9]+((\.[0-9]+)+))(-(.+))?$")
@@ -28,37 +22,39 @@ def getCommitVersion(commit):
major=None major=None
minor=None minor=None
patch=None patch=None
try: for line in subprocess.check_output(["git", "show",
for line in subprocess.check_output(["git", "show", commit + ":VERSION.cmake"]).splitlines():
commit + ":VERSION.cmake"]).splitlines(): m = re.match("set\( MIRALL_VERSION_([A-Z]+) +([0-9])+ *\)", line)
m = re.match("set\( MIRALL_VERSION_([A-Z]+) +([0-9])+ *\)", line) if m is not None:
if m is not None: kind=m.group(1)
kind=m.group(1) version=m.group(2)
version=m.group(2) if kind=="MAJOR":
if kind=="MAJOR": major=version
major=version elif kind=="MINOR":
elif kind=="MINOR": minor=version
minor=version elif kind=="PATCH":
elif kind=="PATCH": patch=version
patch=version if major and minor and patch:
if major and minor and patch: return major + "." + minor + "." + patch
return major + "." + minor + "." + patch else:
else:
return None
except:
return None return None
def collectEntries(baseCommit, baseVersion, kind, finalRevDate, config): def collectEntries(baseCommit, baseVersion, kind):
scriptdir = os.path.dirname(__file__)
configPath = os.path.join(scriptdir, "git2changelog.cfg")
newVersionCommit = None newVersionCommit = None
newVersionTag = None newVersionTag = None
newVersionOrigTag = None newVersionOrigTag = None
if config is not None and config.has_section("versionhack"): if os.path.exists(configPath):
if config.has_option("versionhack", "commit") and \ config = ConfigParser.SafeConfigParser()
config.has_option("versionhack", "tag"): config.read(configPath)
newVersionCommit = config.get("versionhack", "commit") if config.has_section("versionhack"):
newVersionTag = config.get("versionhack", "tag") if config.has_option("versionhack", "commit") and \
config.has_option("versionhack", "tag"):
newVersionCommit = config.get("versionhack", "commit")
newVersionTag = config.get("versionhack", "tag")
entries = [] entries = []
@@ -74,14 +70,10 @@ def collectEntries(baseCommit, baseVersion, kind, finalRevDate, config):
lastVersionTag = None lastVersionTag = None
lastCMAKEVersion = None lastCMAKEVersion = None
for line in output.splitlines(): for line in output.splitlines():
words = line.split("\t") (commit, name, email, date, revdate, subject) = line.split("\t")
(commit, name, email, date, revdate) = words[0:5]
subject = "\t".join(words[5:])
revdate = datetime.datetime.utcfromtimestamp(long(revdate)).strftime("%Y%m%d.%H%M%S") revdate = datetime.datetime.utcfromtimestamp(long(revdate)).strftime("%Y%m%d.%H%M%S")
revdate += "." + commit
kind = "alpha" kind = "beta"
if commit==newVersionCommit: if commit==newVersionCommit:
result = processVersionTag(newVersionTag) result = processVersionTag(newVersionTag)
@@ -113,63 +105,38 @@ def collectEntries(baseCommit, baseVersion, kind, finalRevDate, config):
entries.append((commit, name, email, date, revdate, subject, entries.append((commit, name, email, date, revdate, subject,
baseVersion, kind)) baseVersion, kind))
if entries:
(commit, name, email, date, revdate, subject, baseVersion, kind) = entries[-1]
if finalRevDate is None:
revdate = datetime.datetime.now().strftime("%Y%m%d.%H%M%S")+ "." + commit
else:
revdate = finalRevDate
entries[-1] = (commit, name, email, date, revdate, subject, baseVersion, kind)
entries.reverse() entries.reverse()
return entries return entries
def genChangeLogEntries(f, entries, distribution): def genChangeLogEntries(f, entries, distribution):
latestBaseVersion = None latestBaseVersion = None
latestRevDate = None
latestKind = None latestKind = None
for (commit, name, email, date, revdate, subject, baseVersion, kind) in entries: for (commit, name, email, date, revdate, subject, baseVersion, kind) in entries:
if latestBaseVersion is None: if latestBaseVersion is None:
latestBaseVersion = baseVersion latestBaseVersion = baseVersion
latestRevDate = revdate
latestKind = kind latestKind = kind
upstreamVersion = baseVersion + "-" + revdate upstreamVersion = baseVersion + "-" + revdate
if distribution=="stable": if distribution=="stable":
version = upstreamVersion version = upstreamVersion
else: else:
version = upstreamVersion + "-1.0~" + distribution + "1" version = upstreamVersion + "~" + distribution + "1"
print("nextcloud-desktop (%s) %s; urgency=medium" % (version, distribution), file=f) print >> f, "nextcloud-client (%s) %s; urgency=medium" % (version, distribution)
print(file=f) print >> f
print(" * " + subject, file=f) print >> f, " * " + subject
print(file=f) print >> f
print(" -- %s <%s> %s" % (name, email, date), file=f) print >> f, " -- %s <%s> %s" % (name, email, date)
print(file=f) print >> f
return (latestBaseVersion, latestRevDate, latestKind) return (latestBaseVersion, latestKind)
if __name__ == "__main__": if __name__ == "__main__":
scriptdir = os.path.dirname(__file__)
configPath = os.path.join(scriptdir, "git2changelog.cfg")
baseCommit = "f9b1c724d6ab5431e0cd56b7cd834f2dd48cebb1"
baseVersion = "2.4.0"
config = None
if os.path.exists(configPath):
config = ConfigParser.SafeConfigParser()
config.read(configPath)
if config.has_section("base"):
if config.has_option("base", "commit") and \
config.has_option("base", "version"):
baseCommit = config.get("base", "commit")
baseVersion = config.get("base", "version")
distribution = sys.argv[2] distribution = sys.argv[2]
finalRevDate = sys.argv[3] if len(sys.argv)>3 else None
entries = collectEntries(baseCommit, baseVersion, "alpha", finalRevDate, config) #entries = collectEntries("8aade24147b5313f8241a8b42331442b7f40eef9", "2.2.4", "release")
entries = collectEntries("f9b1c724d6ab5431e0cd56b7cd834f2dd48cebb1", "2.4.0", "beta")
with open(sys.argv[1], "wt") as f: with open(sys.argv[1], "wt") as f:
(baseVersion, revdate, kind) = genChangeLogEntries(f, entries, distribution) (baseVersion, kind) = genChangeLogEntries(f, entries, distribution)
print(baseVersion, revdate, kind) print baseVersion, kind

View File

@@ -1,21 +0,0 @@
#! /bin/bash
set -xe
cd /build
# Upload AppImage
APPIMAGE=$(readlink -f ./Nextcloud*.AppImage)
BASENAME=$(basename ${APPIMAGE})
if curl --max-time 900 --upload-file ${APPIMAGE} https://transfer.sh/${BASENAME}
then
echo
echo "Get the AppImage at the link above!"
else
echo
echo "Upload failed, however this is an optional step."
fi
# Don't let the Drone build fail
exit 0

View File

@@ -49,7 +49,7 @@ fi
if [ ! -z "$identity" ]; then if [ ! -z "$identity" ]; then
echo "Will try to sign the installer" echo "Will try to sign the installer"
pushd $install_path pushd $install_path
productsign --timestamp --sign "$identity" "$installer_file" "$installer_file.new" productsign --sign "$identity" "$installer_file" "$installer_file.new"
mv "$installer_file".new "$installer_file" mv "$installer_file".new "$installer_file"
popd popd
else else

364
admin/osx/macdeployqt.py Executable file
View File

@@ -0,0 +1,364 @@
#!/usr/bin/python
# This file is part of ownCloud.
# It was inspired in large part by the macdeploy script in Clementine
# and Tomahawk
#
# ownCloud is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# ownCLoud is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with ownCloud. If not, see <http://www.gnu.org/licenses/>.
import os
import re
import subprocess
import commands
import sys
from glob import glob
from distutils.version import LooseVersion
def QueryQMake(attrib):
return subprocess.check_output([qmake_path, '-query', attrib]).rstrip('\n')
FRAMEWORK_SEARCH_PATH=[
'/Library/Frameworks',
os.path.join(os.environ['HOME'], 'Library/Frameworks')
]
LIBRARY_SEARCH_PATH=['/usr/local/lib', '/usr/local/Qt-5.6.2/lib', '.']
QT_PLUGINS = [
'sqldrivers/libqsqlite.dylib',
'platforms/libqcocoa.dylib',
'imageformats/libqgif.dylib',
'imageformats/libqico.dylib',
'imageformats/libqjpeg.dylib',
'imageformats/libqsvg.dylib',
]
QT_PLUGINS_SEARCH_PATH=[
# os.path.join(os.environ['QTDIR'], 'plugins'),
# '/usr/local/Cellar/qt/5.2.1/plugins',
'/usr/local/Qt-5.6.2/plugins',
]
class Error(Exception):
pass
class CouldNotFindQtPluginErrorFindFrameworkError(Error):
pass
class InstallNameToolError(Error):
pass
class CouldNotFindQtPluginError(Error):
pass
class CouldNotFindScriptPluginError(Error):
pass
class CouldNotFindFrameworkError(Error):
pass
if len(sys.argv) < 3:
print 'Usage: %s <bundle.app> <path-to-qmake>' % sys.argv[0]
exit()
def is_exe(fpath):
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
bundle_dir = sys.argv[1]
qmake_path = sys.argv[2]
bundle_name = os.path.basename(bundle_dir).split('.')[0]
commands = []
binary_dir = os.path.join(bundle_dir, 'Contents', 'MacOS')
frameworks_dir = os.path.join(bundle_dir, 'Contents', 'Frameworks')
commands.append(['mkdir', '-p', frameworks_dir])
resources_dir = os.path.join(bundle_dir, 'Contents', 'Resources')
commands.append(['mkdir', '-p', resources_dir])
plugins_dir = os.path.join(bundle_dir, 'Contents', 'PlugIns')
binaries = [i for i in glob(os.path.join(bundle_dir, 'Contents', 'MacOS', "*")) if is_exe(i)];
qt_version = QueryQMake('QT_VERSION')
print "Using Qt", qt_version
fixed_libraries = []
fixed_frameworks = []
def WriteQtConf():
print "Writing qt.conf..."
with open(os.path.join(resources_dir, 'qt.conf'), 'w') as f:
f.write("[Paths]\nPlugins = PlugIns\n");
f.close()
def GetBrokenLibraries(binary):
#print "Checking libs for binary: %s" % binary
output = subprocess.Popen(['otool', '-L', binary], stdout=subprocess.PIPE).communicate()[0]
broken_libs = {
'frameworks': [],
'libs': []}
for line in [x.split(' ')[0].lstrip() for x in output.split('\n')[1:]]:
#print "Checking line: %s" % line
if not line: # skip empty lines
continue
if os.path.basename(binary) == os.path.basename(line):
#print "mnope %s-%s" % (os.path.basename(binary), os.path.basename(line))
continue
if re.match(r'^\s*/System/', line):
continue # System framework
elif re.match(r'^\s*/usr/lib/', line):
#print "unix style system lib"
continue # unix style system library
elif re.match(r'Breakpad', line):
continue # Manually added by cmake.
elif re.match(r'^\s*@executable_path', line) or re.match(r'^\s*@loader_path', line):
# Potentially already fixed library
if '.framework' in line:
relative_path = os.path.join(*line.split('/')[3:])
if not os.path.exists(os.path.join(frameworks_dir, relative_path)):
broken_libs['frameworks'].append(relative_path)
else:
relative_path = os.path.join(*line.split('/')[1:])
#print "RELPATH %s %s" % (relative_path, os.path.join(binary_dir, relative_path))
if not os.path.exists(os.path.join(binary_dir, relative_path)):
broken_libs['libs'].append(relative_path)
elif re.search(r'\w+\.framework', line):
broken_libs['frameworks'].append(line)
else:
broken_libs['libs'].append(line)
return broken_libs
def FindFramework(path):
search_pathes = FRAMEWORK_SEARCH_PATH
search_pathes.insert(0, QueryQMake('QT_INSTALL_LIBS'))
for search_path in search_pathes:
# The following two lines are needed for a custom built Qt from version 5.5 on, possibly not for the one from the Qt SDK.
# Looks like the upstream macdeployqt also had an issue there https://bugreports.qt.io/browse/QTBUG-47868
if path.find( "\@rpath/"):
path = path.replace("@rpath/", "")
abs_path = os.path.join(search_path, path)
if os.path.exists(abs_path):
return abs_path
raise CouldNotFindFrameworkError(path)
def FindLibrary(path):
if os.path.exists(path):
return path
search_pathes = LIBRARY_SEARCH_PATH
search_pathes.insert(0, QueryQMake('QT_INSTALL_LIBS'))
for search_path in search_pathes:
abs_path = os.path.join(search_path, path)
if os.path.exists(abs_path):
return abs_path
else: # try harder---look for lib name in library folders
newpath = os.path.join(search_path,os.path.basename(path))
if os.path.exists(newpath):
return newpath
return ""
#raise CouldNotFindFrameworkError(path)
def FixAllLibraries(broken_libs):
for framework in broken_libs['frameworks']:
FixFramework(framework)
for lib in broken_libs['libs']:
FixLibrary(lib)
def FixFramework(path):
if path in fixed_libraries:
return
else:
fixed_libraries.append(path)
abs_path = FindFramework(path)
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
new_path = CopyFramework(abs_path)
id = os.sep.join(new_path.split(os.sep)[3:])
FixFrameworkId(new_path, id)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixLibrary(path):
if path in fixed_libraries or FindSystemLibrary(os.path.basename(path)) is not None:
return
else:
fixed_libraries.append(path)
abs_path = FindLibrary(path)
if abs_path == "":
print "Could not resolve %s, not fixing!" % path
return
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
new_path = CopyLibrary(abs_path)
FixLibraryId(new_path)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixPlugin(abs_path, subdir):
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
new_path = CopyPlugin(abs_path, subdir)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixBinary(path):
broken_libs = GetBrokenLibraries(path)
FixAllLibraries(broken_libs)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, path)
def CopyLibrary(path):
new_path = os.path.join(binary_dir, os.path.basename(path))
args = ['ditto', '--arch=x86_64', path, new_path]
commands.append(args)
args = ['chmod', 'u+w', new_path]
commands.append(args)
return new_path
def CopyPlugin(path, subdir):
new_path = os.path.join(plugins_dir, subdir, os.path.basename(path))
args = ['mkdir', '-p', os.path.dirname(new_path)]
commands.append(args)
args = ['ditto', '--arch=x86_64', path, new_path]
commands.append(args)
args = ['chmod', 'u+w', new_path]
commands.append(args)
return new_path
def CopyFramework(source_dylib):
parts = source_dylib.split(os.sep)
print "CopyFramework:", source_dylib
for i, part in enumerate(parts):
matchObj = re.match(r'(\w+\.framework)', part)
if matchObj:
framework = matchObj.group(1)
dylib_name = parts[-1]
source_path = os.path.join('/', *parts[:i+1])
dest_path = os.path.join(frameworks_dir, framework)
dest_dylib_path = os.path.join(frameworks_dir, *parts[i:-1])
break
# if os.path.exists(dest_path):
# print dest_path, "already exists, skipping copy..."
# return os.path.join(dest_dylib_path, dylib_name)
args = ['mkdir', '-p', dest_dylib_path]
commands.append(args)
args = ['ditto', '--arch=x86_64', source_dylib, dest_dylib_path]
commands.append(args)
args = ['chmod', 'u+w', os.path.join(dest_dylib_path, parts[-1])]
commands.append(args)
args = ['ln', '-s', '5', os.path.join(dest_path, 'Versions', 'Current')]
commands.append(args)
args = ['ln', '-s', os.path.join('Versions', 'Current', dylib_name), os.path.join(dest_path, dylib_name)]
commands.append(args)
args = ['ln', '-s', os.path.join('Versions', 'Current', 'Resources'), os.path.join(dest_path, 'Resources')]
commands.append(args)
args = ['cp', '-r', os.path.join(source_path, 'Versions', '5', 'Resources'), os.path.join(dest_path, 'Versions', '5')]
commands.append(args)
args = ['ln', '-s', os.path.join('Versions', 'Current', 'Helpers'), os.path.join(dest_path, 'Helpers')]
commands.append(args)
args = ['cp', '-r', os.path.join(source_path, 'Versions', '5', 'Helpers'), os.path.join(dest_path, 'Versions', '5')]
commands.append(args)
return os.path.join(dest_dylib_path, dylib_name)
def FixId(path, library_name):
id = '@executable_path/../Frameworks/%s' % library_name
args = ['install_name_tool', '-id', id, path]
commands.append(args)
def FixLibraryId(path):
library_name = os.path.basename(path)
FixId(path, library_name)
def FixFrameworkId(path, id):
FixId(path, id)
def FixInstallPath(library_path, library, new_path):
args = ['install_name_tool', '-change', library_path, new_path, library]
commands.append(args)
def FindSystemLibrary(library_name):
for path in ['/lib', '/usr/lib']:
full_path = os.path.join(path, library_name)
if os.path.exists(full_path):
return full_path
return None
def FixLibraryInstallPath(library_path, library):
system_library = FindSystemLibrary(os.path.basename(library_path))
if system_library is None:
new_path = '@executable_path/../MacOS/%s' % os.path.basename(library_path)
FixInstallPath(library_path, library, new_path)
else:
FixInstallPath(library_path, library, system_library)
def FixFrameworkInstallPath(library_path, library):
parts = library_path.split(os.sep)
for i, part in enumerate(parts):
if re.match(r'\w+\.framework', part):
full_path = os.path.join(*parts[i:])
break
new_path = '@executable_path/../Frameworks/%s' % full_path
FixInstallPath(library_path, library, new_path)
def FindQtPlugin(name):
search_path = QT_PLUGINS_SEARCH_PATH
search_path.insert(0, QueryQMake('QT_INSTALL_PLUGINS'))
for path in search_path:
if os.path.exists(path):
if os.path.exists(os.path.join(path, name)):
return os.path.join(path, name)
raise CouldNotFindQtPluginError(name)
for binary in binaries:
FixBinary(binary)
for plugin in QT_PLUGINS:
FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))
if LooseVersion(qt_version) >= LooseVersion("5.10.0"):
args = ['plutil', '-insert', 'LSMinimumSystemVersion', '-string', '10.10.0', os.path.join(bundle_dir, 'Contents', 'Info.plist')]
commands.append(args)
else:
args = ['plutil', '-insert', 'LSMinimumSystemVersion', '-string', '10.7.0', os.path.join(bundle_dir, 'Contents', 'Info.plist')]
commands.append(args)
if len(sys.argv) <= 2:
print 'Will run %d commands:' % len(commands)
for command in commands:
print ' '.join(command)
for command in commands:
p = subprocess.Popen(command)
os.waitpid(p.pid, 0)
WriteQtConf()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -9,11 +9,6 @@ import os
import polib import polib
from optparse import OptionParser from optparse import OptionParser
try:
unicode
except NameError:
unicode = str
parser = OptionParser() parser = OptionParser()
parser.add_option("-o", "--output", dest="output", parser.add_option("-o", "--output", dest="output",
help="Directory for localized output", default="../Shared/installer/nightly_localized.nsi") help="Directory for localized output", default="../Shared/installer/nightly_localized.nsi")
@@ -131,7 +126,7 @@ for root,dirs,files in os.walk(options.podir):
if filename in localeToName: if filename in localeToName:
language = localeToName[filename] language = localeToName[filename]
translationCache[language] = collections.OrderedDict() translationCache[language] = collections.OrderedDict()
po = polib.pofile(os.path.join(root,file)) po = polib.pofile(os.path.join(root,file))
for entry in po.translated_entries(): for entry in po.translated_entries():
# Loop through all our labels and add translation (each translation may have multiple labels) # Loop through all our labels and add translation (each translation may have multiple labels)
@@ -170,14 +165,14 @@ for language,translations in translationCache.iteritems():
for label,value in translations.iteritems(): for label,value in translations.iteritems():
NSINewLines.append( tostr('StrCpy $%s "%s"\n' % (label,value)) ) NSINewLines.append( tostr('StrCpy $%s "%s"\n' % (label,value)) )
if language.upper() == options.lang.upper(): if language.upper() == options.lang.upper():
NSIDeclarations.append( tostr('Var %s\n' % label) ) NSIDeclarations.append( tostr('Var %s\n' % label) )
count += 1 count += 1
NSIWorkingFile = open('%s/%s.nsh' % (options.output, language),"w") NSIWorkingFile = open('%s/%s.nsh' % (options.output, language),"w")
NSIWorkingFile.writelines(NSINewLines) NSIWorkingFile.writelines(NSINewLines)
NSIWorkingFile.close() NSIWorkingFile.close()
print ( "%i translations merged for language '%s'"%(count,language) ) print ( "%i translations merged for language '%s'"%(count,language) )
# Finally, let's write languages.nsh and declarations.nsh # Finally, let's write languages.nsh and declarations.nsh
NSIWorkingFile = open('%s/languages.nsh' % options.output,"w") NSIWorkingFile = open('%s/languages.nsh' % options.output,"w")
NSIWorkingFile.writelines(NSILanguages) NSIWorkingFile.writelines(NSILanguages)
@@ -186,5 +181,5 @@ NSIWorkingFile.close()
NSIWorkingFile = open('%s/declarations.nsh' % options.output,"w") NSIWorkingFile = open('%s/declarations.nsh' % options.output,"w")
NSIWorkingFile.writelines(NSIDeclarations) NSIWorkingFile.writelines(NSIDeclarations)
NSIWorkingFile.close() NSIWorkingFile.close()
print ( "NSI Localization Operation Complete" ) print ( "NSI Localization Operation Complete" )

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 151 KiB

1
binary Submodule

Submodule binary added at 3425fab2c6

View File

@@ -38,7 +38,6 @@
<file>resources/copy.svg</file> <file>resources/copy.svg</file>
<file>resources/state-sync.svg</file> <file>resources/state-sync.svg</file>
<file>resources/add.png</file> <file>resources/add.png</file>
<file>resources/state-info.svg</file>
</qresource> </qresource>
<qresource prefix="/"/> <qresource prefix="/"/>
</RCC> </RCC>

View File

@@ -47,13 +47,7 @@ macro (KDE4_ADD_APP_ICON appsources pattern)
endif (fn MATCHES ".*128.*") endif (fn MATCHES ".*128.*")
if (fn MATCHES ".*256.*" ) if (fn MATCHES ".*256.*" )
list (APPEND _icons ${it}) list (APPEND _icons ${it})
endif (fn MATCHES ".*256.*") 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) endforeach (it)
if (_icons) if (_icons)
add_custom_command(OUTPUT ${_outfilename}.ico ${_outfilename}.rc add_custom_command(OUTPUT ${_outfilename}.ico ${_outfilename}.rc
@@ -110,14 +104,14 @@ macro (KDE4_ADD_APP_ICON appsources pattern)
foreach (it ${files}) foreach (it ${files})
if (it MATCHES ".*sidebar-16.*") if (it MATCHES ".*sidebar-16.*")
configure_file(${it} ${appsources}.iconset/sidebar_16x16.png COPYONLY) configure_file(${it} ${appsources}.iconset/sidebar_16x16.png COPYONLY)
elseif (it MATCHES ".*sidebar-32.*") elseif (it MATCHES ".*sidebar-18.*")
configure_file(${it} ${appsources}.iconset/sidebar_18x18.png COPYONLY) configure_file(${it} ${appsources}.iconset/sidebar_18x18.png COPYONLY)
elseif (it MATCHES ".*sidebar-32.*")
configure_file(${it} ${appsources}.iconset/sidebar_16x16@2x.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) configure_file(${it} ${appsources}.iconset/sidebar_32x32.png COPYONLY)
elseif (it MATCHES ".*sidebar-256.*") elseif (it MATCHES ".*sidebar-36.*")
configure_file(${it} ${appsources}.iconset/sidebar_18x18@2x.png COPYONLY)
elseif (it MATCHES ".*sidebar-64.*")
configure_file(${it} ${appsources}.iconset/sidebar_32x32@2x.png COPYONLY) configure_file(${it} ${appsources}.iconset/sidebar_32x32@2x.png COPYONLY)
endif() endif()
endforeach (it) endforeach (it)

View File

@@ -10,7 +10,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Put the include dirs which are in the source or build tree # Put the include dirs which are in the source or build tree
# before all other include dirs, so the headers in the sources # before all other include dirs, so the headers in the sources
# are preferred over the already installed ones # are prefered over the already installed ones
# since cmake 2.4.1 # since cmake 2.4.1
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)

View File

@@ -8,8 +8,8 @@
# #
# ecm_add_app_icon(<sources_var> # ecm_add_app_icon(<sources_var>
# ICONS <icon> [<icon> [...]] # ICONS <icon> [<icon> [...]]
# [SIDEBAR_ICONS <icon> [<icon> [...]] # Since 5.49 # [SIDEBAR_ICONS <icon> [<icon> [...]] # Since 5.4x
# [OUTFILE_BASENAME <name>]) # Since 5.49 # [OUTFILE_BASE <name>]) # Since 5.4x
# ) # )
# #
# The given icons, whose names must match the pattern:: # The given icons, whose names must match the pattern::
@@ -27,21 +27,20 @@
# #
# ``SIDEBAR_ICONS`` can be used to add Mac OS X sidebar # ``SIDEBAR_ICONS`` can be used to add Mac OS X sidebar
# icons to the generated iconset. They are used when a folder monitored by the # icons to the generated iconset. They are used when a folder monitored by the
# application is dragged into Finder's sidebar. Since 5.49. # application is dragged into Finder's sidebar. Since 5.4x.
# #
# ``OUTFILE_BASENAME`` will be used as the basename for the icon file. If # ``OUTFILE_BASE`` will be used as the basename for the icon file. If
# you specify it, the icon file will be called ``<OUTFILE_BASENAME>.icns`` on Mac OS X # you specify it, the icon file will be called ``<OUTFILE_BASE>.icns`` on Mac OS X
# and ``<OUTFILE_BASENAME>.ico`` on Windows. If you don't specify it, it defaults # and ``<OUTFILE_BASE>.ico`` on Windows. If you don't specify it, it defaults
# to ``<sources_var>.<ext>``. Since 5.49. # to ``<sources_var>.<ext>``. Since 5.4x.
# #
# #
# Windows notes # Windows notes
# * Icons are compiled into the executable using a resource file. # * Icons are compiled into the executable using a resource file.
# * Icons may not show up in Windows Explorer if the executable # * Icons may not show up in Windows Explorer if the executable
# target does not have the ``WIN32_EXECUTABLE`` property set. # target does not have the ``WIN32_EXECUTABLE`` property set.
# * One of the tools png2ico (See :find-module:`FindPng2Ico`) or # * The tool png2ico is required. See :find-module:`FindPng2Ico`.
# icotool (see :find-module:`FindIcoTool`) is required. # * Supported sizes: 16, 32, 48, 64, 128.
# * Supported sizes: 16, 24, 32, 48, 64, 128, 256, 512 and 1024.
# #
# Mac OS X notes # Mac OS X notes
# * The executable target must have the ``MACOSX_BUNDLE`` property set. # * The executable target must have the ``MACOSX_BUNDLE`` property set.
@@ -102,7 +101,7 @@ include(CMakeParseArguments)
function(ecm_add_app_icon appsources) function(ecm_add_app_icon appsources)
set(options) set(options)
set(oneValueArgs OUTFILE_BASENAME) set(oneValueArgs OUTFILE_BASE)
set(multiValueArgs ICONS SIDEBAR_ICONS) set(multiValueArgs ICONS SIDEBAR_ICONS)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
@@ -139,9 +138,9 @@ function(ecm_add_app_icon appsources)
endif() endif()
_ecm_add_app_icon_categorize_icons("${ARG_ICONS}" "icons" "16;24;32;48;64;128;256;512;1024") _ecm_add_app_icon_categorize_icons("${ARG_ICONS}" "icons" "16;32;48;64;128;256;512;1024")
if(ARG_SIDEBAR_ICONS) if(ARG_SIDEBAR_ICONS)
_ecm_add_app_icon_categorize_icons("${ARG_SIDEBAR_ICONS}" "sidebar_icons" "16;32;64;128;256") _ecm_add_app_icon_categorize_icons("${ARG_SIDEBAR_ICONS}" "sidebar_icons" "16;18;32;36;64")
endif() endif()
set(mac_icons set(mac_icons
@@ -152,37 +151,31 @@ function(ecm_add_app_icon appsources)
${icons_at_128px} ${icons_at_128px}
${icons_at_256px} ${icons_at_256px}
${icons_at_512px} ${icons_at_512px}
${icons_at_1024px}) ${icons_at_1024px}
set(mac_sidebar_icons
# Sidebar Icons: https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW15 # Sidebar Icons: https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW15
${sidebar_icons_at_16px} ${sidebar_icons_at_16px}
${sidebar_icons_at_18px}
${sidebar_icons_at_32px} ${sidebar_icons_at_32px}
${sidebar_icons_at_64px} ${sidebar_icons_at_36px}
${sidebar_icons_at_128px} ${sidebar_icons_at_64px})
${sidebar_icons_at_256px}) if (NOT icons_at_128px)
message(AUTHOR_WARNING "No 128px icon provided; this will not work on Mac OS X")
if (NOT (mac_icons OR mac_sidebar_icons))
message(AUTHOR_WARNING "No icons suitable for use on macOS provided")
endif() endif()
set(windows_icons ${icons_at_16px} set(windows_icons ${icons_at_16px}
${icons_at_24px} ${icons_at_32px}
${icons_at_32px} ${icons_at_48px}
${icons_at_48px} ${icons_at_64px}
${icons_at_64px} ${icons_at_128px}
${icons_at_128px} ${icons_at_256px})
${icons_at_256px} if (NOT windows_icons)
${icons_at_512px}
${icons_at_1024px})
if (NOT (windows_icons))
message(AUTHOR_WARNING "No icons suitable for use on Windows provided") message(AUTHOR_WARNING "No icons suitable for use on Windows provided")
endif() endif()
if (ARG_OUTFILE_BASENAME) if (ARG_OUTFILE_BASE)
set (_outfilebasename "${ARG_OUTFILE_BASENAME}") set (_outfilebasename "${ARG_OUTFILE_BASE}")
else() else()
set (_outfilebasename "${appsources}") set (_outfilebasename "${appsources}")
endif() endif()
@@ -192,15 +185,26 @@ function(ecm_add_app_icon appsources)
set(saved_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}") set(saved_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_FIND_MODULE_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_FIND_MODULE_DIR})
find_package(Png2Ico) find_package(Png2Ico)
find_package(IcoTool)
set(CMAKE_MODULE_PATH "${saved_CMAKE_MODULE_PATH}") set(CMAKE_MODULE_PATH "${saved_CMAKE_MODULE_PATH}")
function(create_windows_icon_and_rc command args deps) if (Png2Ico_FOUND)
if (Png2Ico_HAS_RCFILE_ARGUMENT)
add_custom_command(
OUTPUT "${_outfilename}.rc" "${_outfilename}.ico"
COMMAND Png2Ico::Png2Ico
ARGS
--rcfile "${_outfilename}.rc"
"${_outfilename}.ico"
${windows_icons}
DEPENDS ${windows_icons}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
else()
add_custom_command( add_custom_command(
OUTPUT "${_outfilename}.ico" OUTPUT "${_outfilename}.ico"
COMMAND ${command} COMMAND Png2Ico::Png2Ico
ARGS ${args} ARGS "${_outfilename}.ico" ${windows_icons}
DEPENDS ${deps} DEPENDS ${windows_icons}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
) )
# this bit's a little hacky to make the dependency stuff work # this bit's a little hacky to make the dependency stuff work
@@ -212,72 +216,12 @@ function(ecm_add_app_icon appsources)
DEPENDS "${_outfilename}.ico" DEPENDS "${_outfilename}.ico"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
) )
endfunction() endif()
if (IcoTool_FOUND)
list(APPEND icotool_args "-c" "-o" "${_outfilename}.ico")
# According to https://stackoverflow.com/a/40851713/2886832
# Windows always chooses the first icon above 255px, all other ones will be ignored
set(maxSize 0)
foreach(size 256 512 1024)
if(icons_at_${size}px)
set(maxSize "${size}")
endif()
endforeach()
foreach(size 16 24 32 48 64 128 ${maxSize})
if(NOT icons_at_${size}px)
continue()
endif()
set(icotool_icon_arg "")
if(size STREQUAL "${maxSize}")
# maxSize icon needs to be included as raw png
list(APPEND icotool_args "-r")
endif()
foreach(icon ${icons_at_${size}px})
list(APPEND icotool_args "${icons_at_${size}px}")
endforeach()
endforeach()
create_windows_icon_and_rc(IcoTool::IcoTool "${icotool_args}" "${windows_icons_modern}")
set(${appsources} "${${appsources}};${_outfilename}.rc" PARENT_SCOPE) set(${appsources} "${${appsources}};${_outfilename}.rc" PARENT_SCOPE)
# standard png2ico has no rcfile argument
# NOTE: We generally use https://github.com/hiiamok/png2ImageMagickICO
# or similar on windows, which is why we provide resolutions >= 256px here.
# Standard png2ico will fail with this.
elseif(Png2Ico_FOUND AND NOT Png2Ico_HAS_RCFILE_ARGUMENT AND windows_icons)
set(png2ico_args)
list(APPEND png2ico_args "${_outfilename}.ico")
list(APPEND png2ico_args "${windows_icons}")
create_windows_icon_and_rc(Png2Ico::Png2Ico "${png2ico_args}" "${windows_icons}")
set(${appsources} "${${appsources}};${_outfilename}.rc" PARENT_SCOPE)
# png2ico from kdewin provides rcfile argument
elseif(Png2Ico_FOUND AND windows_icons)
add_custom_command(
OUTPUT "${_outfilename}.rc" "${_outfilename}.ico"
COMMAND Png2Ico::Png2Ico
ARGS
--rcfile "${_outfilename}.rc"
"${_outfilename}.ico"
${windows_icons}
DEPENDS ${windows_icons}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
set(${appsources} "${${appsources}};${_outfilename}.rc" PARENT_SCOPE)
# else none of the supported tools was found
else() else()
message(WARNING "Unable to find the png2ico or icotool utilities or icons in matching sizes - application will not have an application icon!") message(WARNING "Unable to find the png2ico utility - application will not have an application icon!")
endif() endif()
elseif (APPLE AND mac_icons)
elseif (APPLE AND (mac_icons OR mac_sidebar_icons))
# first generate .iconset directory structure, then convert to .icns format using the Mac OS X "iconutil" utility, # first generate .iconset directory structure, then convert to .icns format using the Mac OS X "iconutil" utility,
# to create retina compatible icon, you need png source files in pixel resolution 16x16, 32x32, 64x64, 128x128, # to create retina compatible icon, you need png source files in pixel resolution 16x16, 32x32, 64x64, 128x128,
# 256x256, 512x512, 1024x1024 # 256x256, 512x512, 1024x1024
@@ -302,11 +246,8 @@ function(ecm_add_app_icon appsources)
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
) )
list(APPEND iconset_icons list(APPEND iconset_icons
"${_outfilename}.iconset/${type}_${sizename}.png") "${_outfilename}.iconset/${type}_${sizename}.png")
endmacro() endmacro()
# List of supported sizes and filenames taken from:
# https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html#//apple_ref/doc/uid/TP40012302-CH7-SW4
foreach(size 16 32 128 256 512) foreach(size 16 32 128 256 512)
math(EXPR double_size "2 * ${size}") math(EXPR double_size "2 * ${size}")
foreach(file ${icons_at_${size}px}) foreach(file ${icons_at_${size}px})
@@ -317,25 +258,14 @@ function(ecm_add_app_icon appsources)
endforeach() endforeach()
endforeach() endforeach()
# List of supported sizes and filenames taken from: foreach(size 16 18 32)
# https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW15 math(EXPR double_size "2 * ${size}")
foreach(file ${sidebar_icons_at_16px}) foreach(file ${sidebar_icons_at_${size}px})
copy_icon("${file}" "16x16" "sidebar") copy_icon("${file}" "${size}x${size}" "sidebar")
endforeach() endforeach()
foreach(file ${sidebar_icons_at_32px}) foreach(file ${sidebar_icons_at_${double_size}px})
copy_icon("${file}" "16x16@2x" "sidebar") copy_icon("${file}" "${size}x${size}@2x" "sidebar")
endforeach() endforeach()
foreach(file ${sidebar_icons_at_32px})
copy_icon("${file}" "18x18" "sidebar")
endforeach()
foreach(file ${sidebar_icons_at_64px})
copy_icon("${file}" "18x18@2x" "sidebar")
endforeach()
foreach(file ${sidebar_icons_at_128px})
copy_icon("${file}" "32x32" "sidebar")
endforeach()
foreach(file ${sidebar_icons_at_256px})
copy_icon("${file}" "32x32@2x" "sidebar")
endforeach() endforeach()
# generate .icns icon file # generate .icns icon file

View File

@@ -27,11 +27,9 @@
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>@MIRALL_VERSION_STRING@</string> <string>@MIRALL_VERSION_STRING@</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>
<string>(C) 2014-2020 @APPLICATION_VENDOR@</string> <string>(C) 2014-2018 @APPLICATION_VENDOR@</string>
<key>NSSupportsAutomaticGraphicsSwitching</key> <key>NSSupportsAutomaticGraphicsSwitching</key>
<true/> <true/>
<key>NSRequiresAquaSystemAppearance</key>
<false/>
<key>SUShowReleaseNotes</key> <key>SUShowReleaseNotes</key>
<false/> <false/>
<key>SUPublicDSAKeyFile</key> <key>SUPublicDSAKeyFile</key>

View File

@@ -1,37 +0,0 @@
# 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

@@ -3,11 +3,7 @@
# For details see the accompanying COPYING* file. # For details see the accompanying COPYING* file.
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long -Wno-gnu-zero-variadic-macro-arguments")
# Use this only for 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()
# Fix sqlite compilation on macOS # Fix sqlite compilation on macOS
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types-discards-qualifiers") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types-discards-qualifiers")

View File

@@ -8,12 +8,12 @@
#cmakedefine CRASHREPORTER_EXECUTABLE "@CRASHREPORTER_EXECUTABLE@" #cmakedefine CRASHREPORTER_EXECUTABLE "@CRASHREPORTER_EXECUTABLE@"
#define SOCKETAPI_TEAM_IDENTIFIER_PREFIX "@SOCKETAPI_TEAM_IDENTIFIER_PREFIX@" #define SOCKETAPI_TEAM_IDENTIFIER_PREFIX "@SOCKETAPI_TEAM_IDENTIFIER_PREFIX@"
#cmakedefine APPLICATION_DOMAIN @APPLICATION_DOMAIN@
#cmakedefine THEME_CLASS @THEME_CLASS@ #cmakedefine THEME_CLASS @THEME_CLASS@
#cmakedefine THEME_INCLUDE @THEME_INCLUDE@ #cmakedefine THEME_INCLUDE @THEME_INCLUDE@
#cmakedefine APPLICATION_NAME "@APPLICATION_NAME@" #cmakedefine APPLICATION_NAME "@APPLICATION_NAME@"
#cmakedefine APPLICATION_VENDOR "@APPLICATION_VENDOR@" #cmakedefine APPLICATION_VENDOR "@APPLICATION_VENDOR@"
#cmakedefine APPLICATION_DOMAIN "@APPLICATION_DOMAIN@"
#cmakedefine APPLICATION_REV_DOMAIN "@APPLICATION_REV_DOMAIN@" #cmakedefine APPLICATION_REV_DOMAIN "@APPLICATION_REV_DOMAIN@"
#cmakedefine APPLICATION_SHORTNAME "@APPLICATION_SHORTNAME@" #cmakedefine APPLICATION_SHORTNAME "@APPLICATION_SHORTNAME@"
#cmakedefine APPLICATION_EXECUTABLE "@APPLICATION_EXECUTABLE@" #cmakedefine APPLICATION_EXECUTABLE "@APPLICATION_EXECUTABLE@"
@@ -21,7 +21,6 @@
#cmakedefine APPLICATION_HELP_URL "@APPLICATION_HELP_URL@" #cmakedefine APPLICATION_HELP_URL "@APPLICATION_HELP_URL@"
#cmakedefine APPLICATION_ICON_NAME "@APPLICATION_ICON_NAME@" #cmakedefine APPLICATION_ICON_NAME "@APPLICATION_ICON_NAME@"
#cmakedefine APPLICATION_SERVER_URL "@APPLICATION_SERVER_URL@" #cmakedefine APPLICATION_SERVER_URL "@APPLICATION_SERVER_URL@"
#cmakedefine LINUX_APPLICATION_ID "@LINUX_APPLICATION_ID@"
#cmakedefine APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR "@APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR@" #cmakedefine APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR "@APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR@"
#cmakedefine APPLICATION_WIZARD_HEADER_TITLE_COLOR "@APPLICATION_WIZARD_HEADER_TITLE_COLOR@" #cmakedefine APPLICATION_WIZARD_HEADER_TITLE_COLOR "@APPLICATION_WIZARD_HEADER_TITLE_COLOR@"
#cmakedefine APPLICATION_WIZARD_USE_CUSTOM_LOGO "@APPLICATION_WIZARD_USE_CUSTOM_LOGO@" #cmakedefine APPLICATION_WIZARD_USE_CUSTOM_LOGO "@APPLICATION_WIZARD_USE_CUSTOM_LOGO@"

View File

@@ -87,7 +87,7 @@ To prevent automatic updates and disallow manual overrides:
1. Edit this Registry key: 1. Edit this Registry key:
``HKEY_LOCAL_MACHINE\Software\Policies\Nextcloud GmbH\Nextcloud`` ``HKEY_LOCAL_MACHINE\Software\Policies\Nextcloud\Nextcloud``
2. Add the key ``skipUpdateCheck`` (of type DWORD). 2. Add the key ``skipUpdateCheck`` (of type DWORD).

View File

@@ -27,7 +27,7 @@ download page.
System Requirements System Requirements
---------------------------------- ----------------------------------
- Windows 8.1+ - Windows 7+
- macOS 10.7+ (**64-bit only**) - macOS 10.7+ (**64-bit only**)
- CentOS 6 & 7 (64-bit only) - CentOS 6 & 7 (64-bit only)
- Debian 8.0 & 9.0 - Debian 8.0 & 9.0
@@ -36,7 +36,8 @@ System Requirements
- openSUSE Leap 42.2 & 42.3 - openSUSE Leap 42.2 & 42.3
.. note:: .. note::
For Linux distributions, we support, if technically feasible, the latest 2 versions per platform and the previous LTS. For Linux distributions, we support, if technically feasible, the latest 2 versions per platform and the previous `LTS`_.
>>>>>>> b2da03441... update supported linux platforms
Installation Wizard Installation Wizard
------------------- -------------------

View File

@@ -99,7 +99,7 @@ Activity
.. index:: activity, recent changes, sync activity .. index:: activity, recent changes, sync activity
The Activity window, which can be invoked either from the main menu (``Recent 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 Changes -> Details``) 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 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 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 because they cannot be synced in a cross-platform manner due to containing

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4.2333 4.2333" version="1.1" height="16" width="16"><g id="g3830" transform="matrix(.87498 0 0 .87498 .26458 -255.9)"><circle id="circle3818" stroke-width=".25066" fill="#2268ab" r="2.1167" cy="294.88" cx="2.1167" /><g id="g3828" stroke-linejoin="round" stroke-linecap="round" fill="none" /></g><path style="fill:#ffffff;stroke-width:0.17859235" d="m 1.6076619,2.1122981 c 0.027682,0.068222 0.058043,0.1232286 0.115014,0.043934 0.072686,-0.047862 0.314322,-0.2548509 0.29682,-0.061078 C 1.953774,2.4553739 1.8705497,2.8125586 1.8105428,3.1738508 1.7403561,3.3728027 1.9237704,3.5430012 2.1028984,3.4078068 2.295421,3.3181535 2.4582973,3.1779584 2.6256382,3.0488362 2.599921,2.9911507 2.5809903,2.9077482 2.5191973,2.9868644 2.4356161,3.0297263 2.2566665,3.2222491 2.2163047,3.07116 2.2725613,2.681829 2.3904322,2.3041062 2.4600833,1.9170966 2.5309844,1.7376113 2.3950755,1.5200858 2.210054,1.6736753 1.985742,1.7836882 1.8010774,1.9562083 1.6076619,2.1122981 Z M 2.4041839,0.77839186 C 2.1702279,0.77446305 2.0636081,1.1609366 2.2889917,1.2561264 2.4716917,1.3236342 2.659928,1.1286114 2.6086721,0.94358974 2.5911701,0.8467927 2.5018738,0.77035521 2.4038266,0.77749894 Z" /></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -467,7 +467,6 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements; CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";

View File

@@ -93,7 +93,6 @@ public:
auto menuaction = new QAction(parentWidget); auto menuaction = new QAction(parentWidget);
menuaction->setText(helper->contextMenuTitle()); menuaction->setText(helper->contextMenuTitle());
menuaction->setIcon(QIcon::fromTheme(helper->contextMenuIconName()));
menuaction->setMenu(menu); menuaction->setMenu(menu);
return { menuaction }; return { menuaction };
} }

View File

@@ -22,6 +22,7 @@
#include <QStandardPaths> #include <QStandardPaths>
#include <QFile> #include <QFile>
#include "ownclouddolphinpluginhelper.h" #include "ownclouddolphinpluginhelper.h"
#include "config.h"
OwncloudDolphinPluginHelper* OwncloudDolphinPluginHelper::instance() OwncloudDolphinPluginHelper* OwncloudDolphinPluginHelper::instance()
{ {

View File

@@ -23,7 +23,6 @@
#include <QLocalSocket> #include <QLocalSocket>
#include <QRegularExpression> #include <QRegularExpression>
#include "ownclouddolphinpluginhelper_export.h" #include "ownclouddolphinpluginhelper_export.h"
#include "config.h"
class OWNCLOUDDOLPHINPLUGINHELPER_EXPORT OwncloudDolphinPluginHelper : public QObject { class OWNCLOUDDOLPHINPLUGINHELPER_EXPORT OwncloudDolphinPluginHelper : public QObject {
Q_OBJECT Q_OBJECT
@@ -36,15 +35,11 @@ public:
QString contextMenuTitle() const QString contextMenuTitle() const
{ {
return _strings.value("CONTEXT_MENU_TITLE", APPLICATION_NAME); return _strings.value("CONTEXT_MENU_TITLE", "ownCloud");
} }
QString shareActionTitle() const QString shareActionTitle() const
{ {
return _strings.value("SHARE_MENU_TITLE", "Share"); return _strings.value("SHARE_MENU_TITLE", "Share...");
}
QString contextMenuIconName() const
{
return _strings.value("CONTEXT_MENU_ICON", APPLICATION_ICON_NAME);
} }
QString copyPrivateLinkTitle() const { return _strings["COPY_PRIVATE_LINK_MENU_TITLE"]; } QString copyPrivateLinkTitle() const { return _strings["COPY_PRIVATE_LINK_MENU_TITLE"]; }

View File

@@ -1,4 +1,4 @@
[D-BUS Service] [D-BUS Service]
Name=@LIBCLOUDPROVIDERS_DBUS_BUS_NAME@ Name=@LIBCLOUDPROVIDERS_DBUS_BUS_NAME@
Exec=@APPLICATION_EXECUTABLE@ --background Exec=@APPLICATION_EXECUTABLE@

View File

@@ -191,12 +191,11 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
def check_registered_paths(self, filename): def check_registered_paths(self, filename):
topLevelFolder = False topLevelFolder = False
internalFile = False internalFile = False
absfilename = os.path.realpath(filename)
for reg_path in socketConnect.registered_paths: for reg_path in socketConnect.registered_paths:
if absfilename == reg_path: if filename == reg_path:
topLevelFolder = True topLevelFolder = True
break break
if absfilename.startswith(reg_path): if filename.startswith(reg_path):
internalFile = True internalFile = True
# you can't have a registered path below another so it is save to break here # you can't have a registered path below another so it is save to break here
break break
@@ -209,7 +208,6 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
all_internal_files = True all_internal_files = True
for i, file_uri in enumerate(files): for i, file_uri in enumerate(files):
filename = get_local_path(file_uri.get_uri()) filename = get_local_path(file_uri.get_uri())
filename = os.path.realpath(filename)
# Check if its a folder (ends with an /), if yes add a "/" # Check if its a folder (ends with an /), if yes add a "/"
# otherwise it will not find the entry in the table # otherwise it will not find the entry in the table
@@ -298,7 +296,6 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
state = entry['state'] state = entry['state']
state_ok = state.startswith('OK') state_ok = state.startswith('OK')
state_sync = state.startswith('SYNC') state_sync = state.startswith('SYNC')
isDir = os.path.isdir(filename + os.sep)
if state_ok: if state_ok:
shareable = True shareable = True
elif state_sync and isDir: elif state_sync and isDir:
@@ -449,7 +446,6 @@ class SyncStateExtension(GObject.GObject, Nautilus.InfoProvider):
return return
filename = get_local_path(item.get_uri()) filename = get_local_path(item.get_uri())
filename = os.path.realpath(filename)
if item.is_directory(): if item.is_directory():
filename += os.sep filename += os.sep

View File

@@ -81,15 +81,15 @@ IFACEMETHODIMP OCContextMenu::Initialize(
return E_INVALIDARG; return E_INVALIDARG;
} }
FORMATETC fe = { CF_HDROP, nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; FORMATETC fe = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
STGMEDIUM stm; STGMEDIUM stm;
if (SUCCEEDED(pDataObj->GetData(&fe, &stm))) { if (SUCCEEDED(pDataObj->GetData(&fe, &stm))) {
// Get an HDROP handle. // Get an HDROP handle.
HDROP hDrop = static_cast<HDROP>(GlobalLock(stm.hGlobal)); HDROP hDrop = static_cast<HDROP>(GlobalLock(stm.hGlobal));
if (hDrop) { if (hDrop) {
UINT nFiles = DragQueryFile(hDrop, 0xFFFFFFFF, nullptr, 0); UINT nFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
for (UINT i = 0; i < nFiles; ++i) { for (int i = 0; i < nFiles; ++i) {
// Get the path of the file. // Get the path of the file.
wchar_t buffer[MAX_PATH]; wchar_t buffer[MAX_PATH];
@@ -182,38 +182,20 @@ IFACEMETHODIMP OCContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
{ {
std::wstring command; std::wstring command;
CMINVOKECOMMANDINFOEX *piciEx = nullptr;
if (pici->cbSize == sizeof(CMINVOKECOMMANDINFOEX))
piciEx = (CMINVOKECOMMANDINFOEX*)pici;
// For the Unicode case, if the high-order word is not zero, the // For the Unicode case, if the high-order word is not zero, the
// command's verb string is in lpcmi->lpVerbW. // command's verb string is in lpcmi->lpVerbW.
if (piciEx if (HIWORD(((CMINVOKECOMMANDINFOEX*)pici)->lpVerbW))
&& (piciEx->fMask & CMIC_MASK_UNICODE) {
&& HIWORD(((CMINVOKECOMMANDINFOEX*)pici)->lpVerbW)) { command = ((CMINVOKECOMMANDINFOEX *)pici)->lpVerbW;
} else {
command = piciEx->lpVerbW;
// Verify that we handle the verb
bool handled = false;
for (auto &item : m_info.menuItems) {
if (item.command == command) {
handled = true;
break;
}
}
if (!handled)
return E_FAIL;
} else if (IS_INTRESOURCE(pici->lpVerb)) {
// If the command cannot be identified through the verb string, then // If the command cannot be identified through the verb string, then
// check the identifier offset. // check the identifier offset.
auto offset = LOWORD(pici->lpVerb); auto offset = LOWORD(pici->lpVerb);
if (offset >= m_info.menuItems.size()) if (offset >= m_info.menuItems.size())
return E_FAIL; return E_FAIL;
command = m_info.menuItems[offset].command; command = m_info.menuItems[offset].command;
} else {
return E_FAIL;
} }
OCClientInterface::SendRequest(command.data(), m_selectedFiles); OCClientInterface::SendRequest(command.data(), m_selectedFiles);

View File

@@ -65,7 +65,7 @@ IFACEMETHODIMP OCContextMenuFactory::CreateInstance(IUnknown *pUnkOuter, REFIID
HRESULT hr = CLASS_E_NOAGGREGATION; HRESULT hr = CLASS_E_NOAGGREGATION;
// pUnkOuter is used for aggregation. We do not support it in the sample. // pUnkOuter is used for aggregation. We do not support it in the sample.
if (!pUnkOuter) { if (pUnkOuter == NULL) {
hr = E_OUTOFMEMORY; hr = E_OUTOFMEMORY;
// Create the COM component. // Create the COM component.
@@ -88,4 +88,4 @@ IFACEMETHODIMP OCContextMenuFactory::LockServer(BOOL fLock)
InterlockedDecrement(&g_cDllRef); InterlockedDecrement(&g_cDllRef);
} }
return S_OK; return S_OK;
} }

View File

@@ -24,16 +24,16 @@ namespace {
HRESULT SetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PCWSTR pszData) HRESULT SetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PCWSTR pszData)
{ {
HRESULT hr; HRESULT hr;
HKEY hKey = nullptr; HKEY hKey = NULL;
// Creates the specified registry key. If the key already exists, the // Creates the specified registry key. If the key already exists, the
// function opens it. // function opens it.
hr = HRESULT_FROM_WIN32(RegCreateKeyEx(HKEY_CLASSES_ROOT, pszSubKey, 0, hr = HRESULT_FROM_WIN32(RegCreateKeyEx(HKEY_CLASSES_ROOT, pszSubKey, 0,
nullptr, REG_OPTION_NON_VOLATILE, KEY_WRITE, nullptr, &hKey, nullptr)); NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL));
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
if (pszData) if (pszData != NULL)
{ {
// Set the specified value of the key. // Set the specified value of the key.
DWORD cbData = lstrlen(pszData) * sizeof(*pszData); DWORD cbData = lstrlen(pszData) * sizeof(*pszData);
@@ -50,7 +50,7 @@ HRESULT SetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PCWSTR
HRESULT GetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PWSTR pszData, DWORD cbData) HRESULT GetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PWSTR pszData, DWORD cbData)
{ {
HRESULT hr; HRESULT hr;
HKEY hKey = nullptr; HKEY hKey = NULL;
// Try to open the specified registry key. // Try to open the specified registry key.
hr = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CLASSES_ROOT, pszSubKey, 0, hr = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CLASSES_ROOT, pszSubKey, 0,
@@ -59,8 +59,8 @@ HRESULT GetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PWSTR
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
// Get the data for the specified value name. // Get the data for the specified value name.
hr = HRESULT_FROM_WIN32(RegQueryValueEx(hKey, pszValueName, nullptr, hr = HRESULT_FROM_WIN32(RegQueryValueEx(hKey, pszValueName, NULL,
nullptr, reinterpret_cast<LPBYTE>(pszData), &cbData)); NULL, reinterpret_cast<LPBYTE>(pszData), &cbData));
RegCloseKey(hKey); RegCloseKey(hKey);
} }
@@ -72,7 +72,7 @@ HRESULT GetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName, PWSTR
HRESULT OCContextMenuRegHandler::RegisterInprocServer(PCWSTR pszModule, const CLSID& clsid, PCWSTR pszFriendlyName, PCWSTR pszThreadModel) HRESULT OCContextMenuRegHandler::RegisterInprocServer(PCWSTR pszModule, const CLSID& clsid, PCWSTR pszFriendlyName, PCWSTR pszThreadModel)
{ {
if (!pszModule || !pszThreadModel) if (pszModule == NULL || pszThreadModel == NULL)
{ {
return E_INVALIDARG; return E_INVALIDARG;
} }
@@ -88,7 +88,7 @@ HRESULT OCContextMenuRegHandler::RegisterInprocServer(PCWSTR pszModule, const CL
hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey), L"CLSID\\%s", szCLSID); hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey), L"CLSID\\%s", szCLSID);
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
hr = SetHKCRRegistryKeyAndValue(szSubkey, nullptr, pszFriendlyName); hr = SetHKCRRegistryKeyAndValue(szSubkey, NULL, pszFriendlyName);
// Create the HKCR\CLSID\{<CLSID>}\InprocServer32 key. // Create the HKCR\CLSID\{<CLSID>}\InprocServer32 key.
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
@@ -99,7 +99,7 @@ HRESULT OCContextMenuRegHandler::RegisterInprocServer(PCWSTR pszModule, const CL
{ {
// Set the default value of the InprocServer32 key to the // Set the default value of the InprocServer32 key to the
// path of the COM module. // path of the COM module.
hr = SetHKCRRegistryKeyAndValue(szSubkey, nullptr, pszModule); hr = SetHKCRRegistryKeyAndValue(szSubkey, NULL, pszModule);
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
// Set the threading model of the component. // Set the threading model of the component.
@@ -136,7 +136,7 @@ HRESULT OCContextMenuRegHandler::UnregisterInprocServer(const CLSID& clsid)
HRESULT OCContextMenuRegHandler::RegisterShellExtContextMenuHandler( HRESULT OCContextMenuRegHandler::RegisterShellExtContextMenuHandler(
PCWSTR pszFileType, const CLSID& clsid, PCWSTR pszFriendlyName) PCWSTR pszFileType, const CLSID& clsid, PCWSTR pszFriendlyName)
{ {
if (!pszFileType) if (pszFileType == NULL)
{ {
return E_INVALIDARG; return E_INVALIDARG;
} }
@@ -154,7 +154,7 @@ HRESULT OCContextMenuRegHandler::RegisterShellExtContextMenuHandler(
if (*pszFileType == L'.') if (*pszFileType == L'.')
{ {
wchar_t szDefaultVal[260]; wchar_t szDefaultVal[260];
hr = GetHKCRRegistryKeyAndValue(pszFileType, nullptr, szDefaultVal, hr = GetHKCRRegistryKeyAndValue(pszFileType, NULL, szDefaultVal,
sizeof(szDefaultVal)); sizeof(szDefaultVal));
// If the key exists and its default value is not empty, use the // If the key exists and its default value is not empty, use the
@@ -171,7 +171,7 @@ HRESULT OCContextMenuRegHandler::RegisterShellExtContextMenuHandler(
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
// Set the default value of the key. // Set the default value of the key.
hr = SetHKCRRegistryKeyAndValue(szSubkey, nullptr, szCLSID); hr = SetHKCRRegistryKeyAndValue(szSubkey, NULL, szCLSID);
} }
return hr; return hr;
@@ -180,7 +180,7 @@ HRESULT OCContextMenuRegHandler::RegisterShellExtContextMenuHandler(
HRESULT OCContextMenuRegHandler::UnregisterShellExtContextMenuHandler( HRESULT OCContextMenuRegHandler::UnregisterShellExtContextMenuHandler(
PCWSTR pszFileType, PCWSTR pszFriendlyName) PCWSTR pszFileType, PCWSTR pszFriendlyName)
{ {
if (!pszFileType) if (pszFileType == NULL)
{ {
return E_INVALIDARG; return E_INVALIDARG;
} }
@@ -195,7 +195,7 @@ HRESULT OCContextMenuRegHandler::UnregisterShellExtContextMenuHandler(
if (*pszFileType == L'.') if (*pszFileType == L'.')
{ {
wchar_t szDefaultVal[260]; wchar_t szDefaultVal[260];
hr = GetHKCRRegistryKeyAndValue(pszFileType, nullptr, szDefaultVal, hr = GetHKCRRegistryKeyAndValue(pszFileType, NULL, szDefaultVal,
sizeof(szDefaultVal)); sizeof(szDefaultVal));
// If the key exists and its default value is not empty, use the // If the key exists and its default value is not empty, use the
@@ -215,4 +215,4 @@ HRESULT OCContextMenuRegHandler::UnregisterShellExtContextMenuHandler(
} }
return hr; return hr;
} }

View File

@@ -58,8 +58,8 @@ HRESULT RegDelnodeRecurse(HKEY hKeyRoot, LPTSTR lpSubKey)
// Enumerate the keys // Enumerate the keys
dwSize = MAX_PATH; dwSize = MAX_PATH;
lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, nullptr, lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, NULL,
nullptr, nullptr, &ftWrite); NULL, NULL, &ftWrite);
if (lResult == ERROR_SUCCESS) if (lResult == ERROR_SUCCESS)
{ {
@@ -73,8 +73,8 @@ HRESULT RegDelnodeRecurse(HKEY hKeyRoot, LPTSTR lpSubKey)
dwSize = MAX_PATH; dwSize = MAX_PATH;
lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, nullptr, lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, NULL,
nullptr, nullptr, &ftWrite); NULL, NULL, &ftWrite);
} while (lResult == ERROR_SUCCESS); } while (lResult == ERROR_SUCCESS);
} }

View File

@@ -22,7 +22,7 @@
// {841A0AAD-AA11-4B50-84D9-7F8E727D77D7} // {841A0AAD-AA11-4B50-84D9-7F8E727D77D7}
static const GUID CLSID_FileContextMenuExt = { 0x841a0aad, 0xaa11, 0x4b50, { 0x84, 0xd9, 0x7f, 0x8e, 0x72, 0x7d, 0x77, 0xd7 } }; static const GUID CLSID_FileContextMenuExt = { 0x841a0aad, 0xaa11, 0x4b50, { 0x84, 0xd9, 0x7f, 0x8e, 0x72, 0x7d, 0x77, 0xd7 } };
HINSTANCE g_hInst = nullptr; HINSTANCE g_hInst = NULL;
long g_cDllRef = 0; long g_cDllRef = 0;
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved) BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
@@ -105,4 +105,4 @@ STDAPI DllUnregisterServer(void)
} }
return hr; return hr;
} }

View File

@@ -5,8 +5,6 @@
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
// Note: Here was a #define for windows target version #define WINVER 0x0501
// e.g. WINVER / _WIN32_WINNT, see https://devblogs.microsoft.com/oldnewthing/20070411-00/?p=27283 #define _WIN32_WINNT 0x0501
// Unnecessary because we define both in desktop/CMakeLists.txt
#include <SDKDDKVer.h> #include <SDKDDKVer.h>

View File

@@ -17,7 +17,7 @@
#include "OCOverlayRegistrationHandler.h" #include "OCOverlayRegistrationHandler.h"
#include "OCOverlayFactory.h" #include "OCOverlayFactory.h"
HINSTANCE instanceHandle = nullptr; HINSTANCE instanceHandle = NULL;
long dllReferenceCount = 0; long dllReferenceCount = 0;

View File

@@ -82,7 +82,7 @@ IFACEMETHODIMP OCOverlay::QueryInterface(REFIID riid, void **ppv)
else else
{ {
hr = E_NOINTERFACE; hr = E_NOINTERFACE;
*ppv = nullptr; *ppv = NULL;
} }
if (*ppv) if (*ppv)

View File

@@ -43,7 +43,7 @@ IFACEMETHODIMP OCOverlayFactory::QueryInterface(REFIID riid, void **ppv)
else else
{ {
hResult = E_NOINTERFACE; hResult = E_NOINTERFACE;
*ppv = nullptr; *ppv = NULL;
} }
return hResult; return hResult;
@@ -70,7 +70,7 @@ IFACEMETHODIMP OCOverlayFactory::CreateInstance(
{ {
HRESULT hResult = CLASS_E_NOAGGREGATION; HRESULT hResult = CLASS_E_NOAGGREGATION;
if (pUnkOuter) { return hResult; } if (pUnkOuter != NULL) { return hResult; }
hResult = E_OUTOFMEMORY; hResult = E_OUTOFMEMORY;
OCOverlay *lrOverlay = new (std::nothrow) OCOverlay(_state); OCOverlay *lrOverlay = new (std::nothrow) OCOverlay(_state);
@@ -90,4 +90,4 @@ IFACEMETHODIMP OCOverlayFactory::LockServer(BOOL fLock)
InterlockedDecrement(&dllReferenceCount); InterlockedDecrement(&dllReferenceCount);
} }
return S_OK; return S_OK;
} }

View File

@@ -24,9 +24,9 @@ using namespace std;
HRESULT OCOverlayRegistrationHandler::MakeRegistryEntries(const CLSID& clsid, PCWSTR friendlyName) HRESULT OCOverlayRegistrationHandler::MakeRegistryEntries(const CLSID& clsid, PCWSTR friendlyName)
{ {
HRESULT hResult; HRESULT hResult;
HKEY shellOverlayKey = nullptr; HKEY shellOverlayKey = NULL;
// the key may not exist yet // the key may not exist yet
hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_OVERLAY_KEY, 0, nullptr, REG_OPTION_NON_VOLATILE, KEY_WRITE, nullptr, &shellOverlayKey, nullptr)); hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_OVERLAY_KEY, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &shellOverlayKey, NULL));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
hResult = RegCreateKey(HKEY_LOCAL_MACHINE, REGISTRY_OVERLAY_KEY, &shellOverlayKey); hResult = RegCreateKey(HKEY_LOCAL_MACHINE, REGISTRY_OVERLAY_KEY, &shellOverlayKey);
if(!SUCCEEDED(hResult)) { if(!SUCCEEDED(hResult)) {
@@ -34,8 +34,8 @@ HRESULT OCOverlayRegistrationHandler::MakeRegistryEntries(const CLSID& clsid, PC
} }
} }
HKEY syncExOverlayKey = nullptr; HKEY syncExOverlayKey = NULL;
hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(shellOverlayKey, friendlyName, 0, nullptr, REG_OPTION_NON_VOLATILE, KEY_WRITE, nullptr, &syncExOverlayKey, nullptr)); hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(shellOverlayKey, friendlyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &syncExOverlayKey, NULL));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
return hResult; return hResult;
@@ -44,7 +44,7 @@ HRESULT OCOverlayRegistrationHandler::MakeRegistryEntries(const CLSID& clsid, PC
wchar_t stringCLSID[MAX_PATH]; wchar_t stringCLSID[MAX_PATH];
StringFromGUID2(clsid, stringCLSID, ARRAYSIZE(stringCLSID)); StringFromGUID2(clsid, stringCLSID, ARRAYSIZE(stringCLSID));
LPCTSTR value = stringCLSID; LPCTSTR value = stringCLSID;
hResult = RegSetValueEx(syncExOverlayKey, nullptr, 0, REG_SZ, (LPBYTE)value, (DWORD)((wcslen(value)+1) * sizeof(TCHAR))); hResult = RegSetValueEx(syncExOverlayKey, NULL, 0, REG_SZ, (LPBYTE)value, (DWORD)((wcslen(value)+1) * sizeof(TCHAR)));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
return hResult; return hResult;
} }
@@ -55,14 +55,14 @@ HRESULT OCOverlayRegistrationHandler::MakeRegistryEntries(const CLSID& clsid, PC
HRESULT OCOverlayRegistrationHandler::RemoveRegistryEntries(PCWSTR friendlyName) HRESULT OCOverlayRegistrationHandler::RemoveRegistryEntries(PCWSTR friendlyName)
{ {
HRESULT hResult; HRESULT hResult;
HKEY shellOverlayKey = nullptr; HKEY shellOverlayKey = NULL;
hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_OVERLAY_KEY, 0, KEY_WRITE, &shellOverlayKey)); hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_OVERLAY_KEY, 0, KEY_WRITE, &shellOverlayKey));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
return hResult; return hResult;
} }
HKEY syncExOverlayKey = nullptr; HKEY syncExOverlayKey = NULL;
hResult = HRESULT_FROM_WIN32(RegDeleteKey(shellOverlayKey, friendlyName)); hResult = HRESULT_FROM_WIN32(RegDeleteKey(shellOverlayKey, friendlyName));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
return hResult; return hResult;
@@ -73,35 +73,35 @@ HRESULT OCOverlayRegistrationHandler::RemoveRegistryEntries(PCWSTR friendlyName)
HRESULT OCOverlayRegistrationHandler::RegisterCOMObject(PCWSTR modulePath, PCWSTR friendlyName, const CLSID& clsid) HRESULT OCOverlayRegistrationHandler::RegisterCOMObject(PCWSTR modulePath, PCWSTR friendlyName, const CLSID& clsid)
{ {
if (!modulePath) { if (modulePath == NULL) {
return E_FAIL; return E_FAIL;
} }
wchar_t stringCLSID[MAX_PATH]; wchar_t stringCLSID[MAX_PATH];
StringFromGUID2(clsid, stringCLSID, ARRAYSIZE(stringCLSID)); StringFromGUID2(clsid, stringCLSID, ARRAYSIZE(stringCLSID));
HRESULT hResult; HRESULT hResult;
HKEY hKey = nullptr; HKEY hKey = NULL;
hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CLASSES_ROOT, REGISTRY_CLSID, 0, KEY_WRITE, &hKey)); hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CLASSES_ROOT, REGISTRY_CLSID, 0, KEY_WRITE, &hKey));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
return hResult; return hResult;
} }
HKEY clsidKey = nullptr; HKEY clsidKey = NULL;
hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(hKey, stringCLSID, 0, nullptr, REG_OPTION_NON_VOLATILE, KEY_WRITE, nullptr, &clsidKey, nullptr)); hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(hKey, stringCLSID, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &clsidKey, NULL));
if(!SUCCEEDED(hResult)) { if(!SUCCEEDED(hResult)) {
return hResult; return hResult;
} }
hResult = HRESULT_FROM_WIN32(RegSetValue(clsidKey, nullptr, REG_SZ, friendlyName, (DWORD) wcslen(friendlyName))); hResult = HRESULT_FROM_WIN32(RegSetValue(clsidKey, NULL, REG_SZ, friendlyName, (DWORD) wcslen(friendlyName)));
HKEY inprocessKey = nullptr; HKEY inprocessKey = NULL;
hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(clsidKey, REGISTRY_IN_PROCESS, 0, nullptr, REG_OPTION_NON_VOLATILE, KEY_WRITE, nullptr, &inprocessKey, nullptr)); hResult = HRESULT_FROM_WIN32(RegCreateKeyEx(clsidKey, REGISTRY_IN_PROCESS, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &inprocessKey, NULL));
if(!SUCCEEDED(hResult)) { if(!SUCCEEDED(hResult)) {
return hResult; return hResult;
} }
hResult = HRESULT_FROM_WIN32(RegSetValue(inprocessKey, nullptr, REG_SZ, modulePath, (DWORD) wcslen(modulePath))); hResult = HRESULT_FROM_WIN32(RegSetValue(inprocessKey, NULL, REG_SZ, modulePath, (DWORD) wcslen(modulePath)));
if(!SUCCEEDED(hResult)) { if(!SUCCEEDED(hResult)) {
return hResult; return hResult;
@@ -126,13 +126,13 @@ HRESULT OCOverlayRegistrationHandler::UnregisterCOMObject(const CLSID& clsid)
StringFromGUID2(clsid, stringCLSID, ARRAYSIZE(stringCLSID)); StringFromGUID2(clsid, stringCLSID, ARRAYSIZE(stringCLSID));
HRESULT hResult; HRESULT hResult;
HKEY hKey = nullptr; HKEY hKey = NULL;
hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CLASSES_ROOT, REGISTRY_CLSID, 0, DELETE, &hKey)); hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CLASSES_ROOT, REGISTRY_CLSID, 0, DELETE, &hKey));
if (!SUCCEEDED(hResult)) { if (!SUCCEEDED(hResult)) {
return hResult; return hResult;
} }
HKEY clsidKey = nullptr; HKEY clsidKey = NULL;
hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(hKey, stringCLSID, 0, DELETE, &clsidKey)); hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(hKey, stringCLSID, 0, DELETE, &clsidKey));
if(!SUCCEEDED(hResult)) { if(!SUCCEEDED(hResult)) {
return hResult; return hResult;
@@ -149,4 +149,4 @@ HRESULT OCOverlayRegistrationHandler::UnregisterCOMObject(const CLSID& clsid)
} }
return S_OK; return S_OK;
} }

View File

@@ -13,10 +13,8 @@
*/ */
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#define WINVER 0x0501
// Note: Here was a #define for windows target version #define _WIN32_WINNT 0x0501
// e.g. WINVER / _WIN32_WINNT, see https://devblogs.microsoft.com/oldnewthing/20070411-00/?p=27283
// Unnecessary because we define both in desktop/CMakeLists.txt
#include "CommunicationSocket.h" #include "CommunicationSocket.h"
#include "RegistryUtil.h" #include "RegistryUtil.h"

View File

@@ -73,7 +73,7 @@ bool CommunicationSocket::Close()
bool CommunicationSocket::Connect(const std::wstring &pipename) bool CommunicationSocket::Connect(const std::wstring &pipename)
{ {
_pipe = CreateFile(pipename.data(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, 0, nullptr); _pipe = CreateFile(pipename.data(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (_pipe == INVALID_HANDLE_VALUE) { if (_pipe == INVALID_HANDLE_VALUE) {
return false; return false;
@@ -87,7 +87,7 @@ bool CommunicationSocket::SendMsg(const wchar_t* message) const
auto utf8_msg = StringUtil::toUtf8(message); auto utf8_msg = StringUtil::toUtf8(message);
DWORD numBytesWritten = 0; DWORD numBytesWritten = 0;
auto result = WriteFile( _pipe, utf8_msg.c_str(), DWORD(utf8_msg.size()), &numBytesWritten, nullptr); auto result = WriteFile( _pipe, utf8_msg.c_str(), DWORD(utf8_msg.size()), &numBytesWritten, NULL);
if (result) { if (result) {
return true; return true;
@@ -123,7 +123,7 @@ bool CommunicationSocket::ReadLine(wstring* response)
DWORD numBytesRead = 0; DWORD numBytesRead = 0;
DWORD totalBytesAvailable = 0; DWORD totalBytesAvailable = 0;
if (!PeekNamedPipe(_pipe, nullptr, 0, 0, &totalBytesAvailable, 0)) { if (!PeekNamedPipe(_pipe, NULL, 0, 0, &totalBytesAvailable, 0)) {
Close(); Close();
return false; return false;
} }
@@ -131,7 +131,7 @@ bool CommunicationSocket::ReadLine(wstring* response)
return false; return false;
} }
if (!ReadFile(_pipe, resp_utf8.data(), DWORD(resp_utf8.size()), &numBytesRead, nullptr)) { if (!ReadFile(_pipe, resp_utf8.data(), DWORD(resp_utf8.size()), &numBytesRead, NULL)) {
Close(); Close();
return false; return false;
} }

View File

@@ -39,9 +39,9 @@ bool FileUtil::IsChildFile(const wchar_t* rootFolder, vector<wstring>* files)
bool FileUtil::IsChildFile(const wchar_t* rootFolder, const wchar_t* file) bool FileUtil::IsChildFile(const wchar_t* rootFolder, const wchar_t* file)
{ {
const wstring f(file); wstring* f = new wstring(file);
size_t found = f.find(rootFolder); size_t found = f->find(rootFolder);
if(found != string::npos) if(found != string::npos)
{ {
@@ -83,4 +83,4 @@ bool FileUtil::IsChildFileOfRoot(const wchar_t* filePath)
delete rootFolder; delete rootFolder;
return needed; return needed;
} }

View File

@@ -38,9 +38,9 @@ bool RegistryUtil::ReadRegistry(const wchar_t* key, const wchar_t* name, wstring
{ {
HRESULT hResult; HRESULT hResult;
HKEY rootKey = nullptr; HKEY rootKey = NULL;
hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CURRENT_USER, (LPCWSTR)key, 0, KEY_READ, &rootKey)); hResult = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CURRENT_USER, (LPCWSTR)key, NULL, KEY_READ, &rootKey));
if(!SUCCEEDED(hResult)) if(!SUCCEEDED(hResult))
{ {
@@ -49,8 +49,8 @@ bool RegistryUtil::ReadRegistry(const wchar_t* key, const wchar_t* name, wstring
wchar_t value[SIZE]; wchar_t value[SIZE];
DWORD value_length = SIZE; DWORD value_length = SIZE;
hResult = RegQueryValueEx(rootKey, (LPCWSTR)name, nullptr, nullptr, (LPBYTE)value, &value_length ); hResult = RegQueryValueEx(rootKey, (LPCWSTR)name, NULL, NULL, (LPBYTE)value, &value_length );
if(!SUCCEEDED(hResult)) if(!SUCCEEDED(hResult))
{ {

View File

@@ -83,7 +83,7 @@ void RemotePathChecker::workerThreadLoop()
// We don't keep track of all files and can't know which file is currently visible // We don't keep track of all files and can't know which file is currently visible
// to the user, but at least reload the root dir so that any shortcut to the root // to the user, but at least reload the root dir so that any shortcut to the root
// is updated without the user needing to refresh. // is updated without the user needing to refresh.
SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_PATH | SHCNF_FLUSHNOWAIT, responsePath.data(), nullptr); SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_PATH | SHCNF_FLUSHNOWAIT, responsePath.data(), NULL);
} else if (StringUtil::begins_with(response, wstring(L"UNREGISTER_PATH:"))) { } else if (StringUtil::begins_with(response, wstring(L"UNREGISTER_PATH:"))) {
wstring responsePath = response.substr(16); // length of UNREGISTER_PATH: wstring responsePath = response.substr(16); // length of UNREGISTER_PATH:
@@ -107,7 +107,7 @@ void RemotePathChecker::workerThreadLoop()
} }
} }
for (auto& path : removedPaths) for (auto& path : removedPaths)
SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, path.data(), nullptr); SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, path.data(), NULL);
} else if (StringUtil::begins_with(response, wstring(L"STATUS:")) || } else if (StringUtil::begins_with(response, wstring(L"STATUS:")) ||
StringUtil::begins_with(response, wstring(L"BROADCAST:"))) { StringUtil::begins_with(response, wstring(L"BROADCAST:"))) {
@@ -135,7 +135,7 @@ void RemotePathChecker::workerThreadLoop()
it->second = state; it->second = state;
} }
if (updateView) { if (updateView) {
SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, responsePath.data(), nullptr); SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, responsePath.data(), NULL);
} }
} }
} }
@@ -151,7 +151,7 @@ void RemotePathChecker::workerThreadLoop()
lock.unlock(); lock.unlock();
// Let explorer know about each invalidated cache entry that needs to get its icon removed. // Let explorer know about each invalidated cache entry that needs to get its icon removed.
for (auto it = cache.begin(); it != cache.end(); ++it) { for (auto it = cache.begin(); it != cache.end(); ++it) {
SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, it->first.data(), nullptr); SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, it->first.data(), NULL);
} }
} }
@@ -168,7 +168,7 @@ RemotePathChecker::RemotePathChecker()
: _stop(false) : _stop(false)
, _watchedDirectories(make_shared<const vector<wstring>>()) , _watchedDirectories(make_shared<const vector<wstring>>())
, _connected(false) , _connected(false)
, _newQueries(CreateEvent(nullptr, FALSE, FALSE, nullptr)) , _newQueries(CreateEvent(NULL, FALSE, FALSE, NULL))
, _thread([this]{ this->workerThreadLoop(); }) , _thread([this]{ this->workerThreadLoop(); })
{ {
} }

View File

@@ -1,9 +1,7 @@
#pragma once #pragma once
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#define WINVER 0x0501
// Note: Here was a #define for windows target version #define _WIN32_WINNT 0x0501
// e.g. WINVER / _WIN32_WINNT, see https://devblogs.microsoft.com/oldnewthing/20070411-00/?p=27283
// Unnecessary because we define both in desktop/CMakeLists.txt
#include <windows.h> #include <windows.h>

View File

@@ -93,7 +93,7 @@ void QProgressIndicator::setColor(const QColor & color)
QSize QProgressIndicator::sizeHint() const QSize QProgressIndicator::sizeHint() const
{ {
return {20, 20}; return QSize(20,20);
} }
int QProgressIndicator::heightForWidth(int w) const int QProgressIndicator::heightForWidth(int w) const

View File

@@ -94,7 +94,7 @@ bool QtLockedFile::lock(LockMode mode, bool block)
QString mut_name = QString::fromLatin1(MUTEX_PREFIX) QString mut_name = QString::fromLatin1(MUTEX_PREFIX)
+ fi.absoluteFilePath().toLower(); + fi.absoluteFilePath().toLower();
m_mutex_hnd = CreateMutexW(nullptr, FALSE, (TCHAR*)mut_name.utf16()); m_mutex_hnd = CreateMutexW(NULL, FALSE, (TCHAR*)mut_name.utf16());
if (m_mutex_hnd == 0) { if (m_mutex_hnd == 0) {
qWarning("QtLockedFile::lock(): CreateMutex: %s", qWarning("QtLockedFile::lock(): CreateMutex: %s",
@@ -118,7 +118,7 @@ bool QtLockedFile::lock(LockMode mode, bool block)
if (res == WAIT_TIMEOUT) { if (res == WAIT_TIMEOUT) {
if (i) { if (i) {
// A failed nonblocking rw locking. Undo changes to semaphore. // A failed nonblocking rw locking. Undo changes to semaphore.
if (ReleaseSemaphore(m_semaphore_hnd, i, nullptr) == 0) { if (ReleaseSemaphore(m_semaphore_hnd, i, NULL) == 0) {
qWarning("QtLockedFile::unlock(): ReleaseSemaphore: %s", qWarning("QtLockedFile::unlock(): ReleaseSemaphore: %s",
errorCodeToString(GetLastError()).toLatin1().constData()); errorCodeToString(GetLastError()).toLatin1().constData());
// Fall through // Fall through

1
src/3rdparty/qtmacgoodies vendored Submodule

View File

@@ -123,7 +123,7 @@ bool QtLocalPeer::sendMessage(const QString &message, int timeout, bool block)
Sleep(DWORD(ms)); Sleep(DWORD(ms));
#else #else
struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 }; struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
nanosleep(&ts, nullptr); nanosleep(&ts, NULL);
#endif #endif
} }
if (!connOk) if (!connOk)

View File

@@ -53,7 +53,7 @@ static QString instancesLockFilename(const QString &appSessionId)
QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv) QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv)
: QApplication(argc, argv), : QApplication(argc, argv),
firstPeer(-1), firstPeer(-1),
pidPeer(nullptr) pidPeer(0)
{ {
this->appId = appId; this->appId = appId;
@@ -61,7 +61,7 @@ QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char *
// This shared memory holds a zero-terminated array of active (or crashed) instances // This shared memory holds a zero-terminated array of active (or crashed) instances
instances = new QSharedMemory(appSessionId, this); instances = new QSharedMemory(appSessionId, this);
actWin = nullptr; actWin = 0;
block = false; block = false;
// First instance creates the shared memory, later instances attach to it // First instance creates the shared memory, later instances attach to it
@@ -71,7 +71,7 @@ QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char *
qWarning() << "Failed to initialize instances shared memory: " qWarning() << "Failed to initialize instances shared memory: "
<< instances->errorString(); << instances->errorString();
delete instances; delete instances;
instances = nullptr; instances = 0;
return; return;
} }
} }

View File

@@ -70201,7 +70201,7 @@ static int btreeOverwriteContent(
){ ){
int nData = pX->nData - iOffset; int nData = pX->nData - iOffset;
if( nData<=0 ){ if( nData<=0 ){
/* Overwriting with zeros */ /* Overwritting with zeros */
int i; int i;
for(i=0; i<iAmt && pDest[i]==0; i++){} for(i=0; i<iAmt && pDest[i]==0; i++){}
if( i<iAmt ){ if( i<iAmt ){
@@ -91521,7 +91521,7 @@ static int vdbeSorterFlushPMA(VdbeSorter *pSorter){
** the background thread from a sub-tasks previous turn is still running, ** the background thread from a sub-tasks previous turn is still running,
** skip it. If the first (pSorter->nTask-1) sub-tasks are all still busy, ** skip it. If the first (pSorter->nTask-1) sub-tasks are all still busy,
** fall back to using the final sub-task. The first (pSorter->nTask-1) ** fall back to using the final sub-task. The first (pSorter->nTask-1)
** sub-tasks are preferred as they use background threads - the final ** sub-tasks are prefered as they use background threads - the final
** sub-task uses the main thread. */ ** sub-task uses the main thread. */
for(i=0; i<nWorker; i++){ for(i=0; i<nWorker; i++){
int iTest = (pSorter->iPrev + i + 1) % nWorker; int iTest = (pSorter->iPrev + i + 1) % nWorker;

View File

@@ -29,17 +29,12 @@ if(NOT MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORTIFY_SOURCE=2") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORTIFY_SOURCE=2")
endif() endif()
# Calling Qt's qCWarning(category, ...) with no params for "..." is a GNU
# extension (C++11 §16.3/4 forbids them). Silence clang's warnings.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-gnu-zero-variadic-macro-arguments")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-gnu-zero-variadic-macro-arguments")
endif() endif()
if(WIN32) if(WIN32)
# Enable DEP & ASLR # Enable DEP & ASLR
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nxcompat /dynamicbase") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /nxcompat /dynamicbase") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
elseif(UNIX AND NOT APPLE) elseif(UNIX AND NOT APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now")
@@ -52,8 +47,8 @@ include_directories(
add_subdirectory(csync) add_subdirectory(csync)
add_subdirectory(libsync) add_subdirectory(libsync)
if (NOT BUILD_LIBRARIES_ONLY) if (NOT BUILD_LIBRARIES_ONLY)
add_subdirectory(cmd)
add_subdirectory(gui) add_subdirectory(gui)
add_subdirectory(cmd)
if (WITH_CRASHREPORTER) if (WITH_CRASHREPORTER)
add_subdirectory(3rdparty/libcrashreporter-qt) add_subdirectory(3rdparty/libcrashreporter-qt)

View File

@@ -32,17 +32,24 @@ if(NOT BUILD_LIBRARIES_ONLY)
target_include_directories(${cmd_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src/3rdparty/qtokenizer) target_include_directories(${cmd_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src/3rdparty/qtokenizer)
endif() endif()
# OSX: Copy nextcloudcmd to app bundle, src/gui will run macdeployqt
if(BUILD_OWNCLOUD_OSX_BUNDLE) if(BUILD_OWNCLOUD_OSX_BUNDLE)
add_custom_command(TARGET ${cmd_NAME} POST_BUILD install(TARGETS ${cmd_NAME} DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/MacOS)
COMMAND "cp"
"$<TARGET_FILE:${cmd_NAME}>"
"${BIN_OUTPUT_DIRECTORY}/${OWNCLOUD_OSX_BUNDLE}/Contents/MacOS"
COMMENT "Copying nextcloudcmd..."
)
elseif(NOT BUILD_LIBRARIES_ONLY) elseif(NOT BUILD_LIBRARIES_ONLY)
install(TARGETS ${cmd_NAME} install(TARGETS ${cmd_NAME}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif() endif()
# FIXME: The following lines are dup in src/gui and src/cmd because it needs to be done after both are installed
#FIXME: find a nice solution to make the second if(BUILD_OWNCLOUD_OSX_BUNDLE) unnecessary
# currently it needs to be done because the code right above needs to be executed no matter
# if building a bundle or not and the install_qt4_executable needs to be called afterwards
if(BUILD_OWNCLOUD_OSX_BUNDLE AND NOT BUILD_LIBRARIES_ONLY)
get_target_property (QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
install(CODE "
message(STATUS \"Deploying (Qt) dependencies and fixing library paths...\")
execute_process(COMMAND \"${CMAKE_SOURCE_DIR}/admin/osx/macdeployqt.py\" ${CMAKE_INSTALL_PREFIX}/${OWNCLOUD_OSX_BUNDLE} ${QT_QMAKE_EXECUTABLE})
execute_process(COMMAND \"${CMAKE_SOURCE_DIR}/admin/osx/macdeployqt.py\" ${CMAKE_INSTALL_PREFIX}/${OWNCLOUD_OSX_BUNDLE}/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app ${QT_QMAKE_EXECUTABLE})
" COMPONENT RUNTIME)
endif()

View File

@@ -80,7 +80,7 @@ struct CmdOptions
// we can't use csync_set_userdata because the SyncEngine sets it already. // we can't use csync_set_userdata because the SyncEngine sets it already.
// So we have to use a global variable // So we have to use a global variable
CmdOptions *opts = nullptr; CmdOptions *opts = 0;
class EchoDisabler class EchoDisabler
{ {

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