mirror of
https://github.com/chylex/Nextcloud-Desktop.git
synced 2026-04-04 12:11:33 +02:00
Compare commits
74 Commits
techprevie
...
v2.5.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
647df7bcee | ||
|
|
64e21d5083 | ||
|
|
ea0bdddb2a | ||
|
|
e9b4453814 | ||
|
|
1991d71136 | ||
|
|
6a7a08bd01 | ||
|
|
d5a0ec7d8b | ||
|
|
eecbdb00de | ||
|
|
085de2825a | ||
|
|
cf3ee4b3a4 | ||
|
|
8f7bc8cff9 | ||
|
|
ff9177edc3 | ||
|
|
c8d5d9a622 | ||
|
|
fa4328a596 | ||
|
|
985c2ed1ca | ||
|
|
034d5b60aa | ||
|
|
a2f7355d4a | ||
|
|
17d4aeeb78 | ||
|
|
a214ecf788 | ||
|
|
0d9de74726 | ||
|
|
8b996772a4 | ||
|
|
fa5143a66d | ||
|
|
8cbc757a56 | ||
|
|
e9ae10ba6c | ||
|
|
5bcc4ece77 | ||
|
|
135bcaea3e | ||
|
|
29c11618b3 | ||
|
|
a15a470ea2 | ||
|
|
1d4fc91d79 | ||
|
|
ef9c302b5e | ||
|
|
c1c5e5da5f | ||
|
|
14615855d0 | ||
|
|
f0ef2c27a3 | ||
|
|
b50db09b01 | ||
|
|
86991b9996 | ||
|
|
c27943b46d | ||
|
|
ef71e6b0f7 | ||
|
|
8e8a619ee1 | ||
|
|
27076c0f28 | ||
|
|
fc6e6149e5 | ||
|
|
13e2bb099b | ||
|
|
8fd0ca4587 | ||
|
|
2aa942e4b8 | ||
|
|
92aaa09643 | ||
|
|
0e2cd30ea1 | ||
|
|
bc44c62471 | ||
|
|
2434523f33 | ||
|
|
534a92b709 | ||
|
|
233e10ecb1 | ||
|
|
cefc6b531c | ||
|
|
5c7c92157f | ||
|
|
176a2e6f84 | ||
|
|
647d16c792 | ||
|
|
3ad33a368a | ||
|
|
951096f569 | ||
|
|
489c0529c4 | ||
|
|
3576fbb2a5 | ||
|
|
8dedb9084e | ||
|
|
f6ef11a5c9 | ||
|
|
1d868eb809 | ||
|
|
c3aafa722a | ||
|
|
b85bad0566 | ||
|
|
a4507db31a | ||
|
|
e551b89ba7 | ||
|
|
7cbca28eb7 | ||
|
|
a1967d551d | ||
|
|
2b825a1748 | ||
|
|
5110f9618a | ||
|
|
d30f8b9094 | ||
|
|
758c2ad9ac | ||
|
|
c919b7e069 | ||
|
|
be3640dc51 | ||
|
|
343402740f | ||
|
|
1364755141 |
@@ -6,7 +6,7 @@ clone:
|
|||||||
|
|
||||||
pipeline:
|
pipeline:
|
||||||
qt-5.7:
|
qt-5.7:
|
||||||
image: nextcloudci/client-5.7:client-5.7-3
|
image: nextcloudci/client-5.7:client-5.7-4
|
||||||
commands:
|
commands:
|
||||||
# Install QtKeyChain
|
# Install QtKeyChain
|
||||||
- /bin/bash -c "
|
- /bin/bash -c "
|
||||||
@@ -34,7 +34,7 @@ pipeline:
|
|||||||
matrix:
|
matrix:
|
||||||
TESTS: qt-5.7
|
TESTS: qt-5.7
|
||||||
qt-5.8:
|
qt-5.8:
|
||||||
image: nextcloudci/client-5.8:client-5.8-3
|
image: nextcloudci/client-5.8:client-5.8-4
|
||||||
commands:
|
commands:
|
||||||
# Install QtKeyChain
|
# Install QtKeyChain
|
||||||
- /bin/bash -c "
|
- /bin/bash -c "
|
||||||
@@ -62,7 +62,7 @@ pipeline:
|
|||||||
matrix:
|
matrix:
|
||||||
TESTS: qt-5.8
|
TESTS: qt-5.8
|
||||||
qt-5.9:
|
qt-5.9:
|
||||||
image: nextcloudci/client-5.9:client-5.9-4
|
image: nextcloudci/client-5.9:client-5.9-5
|
||||||
commands:
|
commands:
|
||||||
# Install QtKeyChain
|
# Install QtKeyChain
|
||||||
- /bin/bash -c "
|
- /bin/bash -c "
|
||||||
|
|||||||
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -1,6 +1,6 @@
|
|||||||
[submodule "src/3rdparty/qtmacgoodies"]
|
[submodule "src/3rdparty/qtmacgoodies"]
|
||||||
path = src/3rdparty/qtmacgoodies
|
path = src/3rdparty/qtmacgoodies
|
||||||
url = https://github.com/guruz/qtmacgoodies.git
|
url = https://github.com/camilasan/qtmacgoodies.git
|
||||||
[submodule "binary"]
|
[submodule "binary"]
|
||||||
path = binary
|
path = binary
|
||||||
url = git://github.com/owncloud/owncloud-client-binary.git
|
url = git://github.com/owncloud/owncloud-client-binary.git
|
||||||
|
|||||||
204
.tx/nextcloud.client-desktop/ca_translation
Normal file
204
.tx/nextcloud.client-desktop/ca_translation
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
[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_EXECUTABLE@
|
||||||
|
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[ca]=@APPLICATION_NAME@ client de sincronització d'escriptori
|
||||||
|
Icon[ca]=@APPLICATION_EXECUTABLE@
|
||||||
|
Name[ca]=@APPLICATION_NAME@ client de sincro d'escriptori
|
||||||
|
GenericName[ca]=Directori de sincronització
|
||||||
@@ -198,7 +198,7 @@ X-GNOME-Autostart-Delay=3
|
|||||||
|
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
Comment[de_DE]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
Comment[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||||
Icon[de_DE]=@APPLICATION_EXECUTABLE@
|
Icon[de]=@APPLICATION_EXECUTABLE@
|
||||||
Name[de_DE]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
Name[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisation
|
||||||
GenericName[de_DE]=Synchronisationsordner
|
GenericName[de]=Synchronisationsordner
|
||||||
|
|||||||
204
.tx/nextcloud.client-desktop/lv_translation
Normal file
204
.tx/nextcloud.client-desktop/lv_translation
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
[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_EXECUTABLE@
|
||||||
|
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[lv]=@APPLICATION_NAME@ darbavirsmas sinhronizešanas klients
|
||||||
|
Icon[lv]=@APPLICATION_EXECUTABLE@
|
||||||
|
Name[lv]=@APPLICATION_NAME@ darbavirsmas sinhronizešanas klients
|
||||||
|
GenericName[lv]=Mapju Sinhronizēšana
|
||||||
204
.tx/nextcloud.client-desktop/nb_translation
Normal file
204
.tx/nextcloud.client-desktop/nb_translation
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
[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_EXECUTABLE@
|
||||||
|
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[nb_NO]=@APPLICATION_NAME@ klient for synkroinisering
|
||||||
|
Icon[nb_NO]=@APPLICATION_EXECUTABLE@
|
||||||
|
Name[nb_NO]=@APPLICATION_NAME@ klient for synkroinisering
|
||||||
|
GenericName[nb_NO]=Mappe synkroinisering
|
||||||
204
.tx/nextcloud.client-desktop/nl_translation
Normal file
204
.tx/nextcloud.client-desktop/nl_translation
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
[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_EXECUTABLE@
|
||||||
|
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[nl]=@APPLICATION_NAME@ desktopsynchronisatieclient
|
||||||
|
Icon[nl]=@APPLICATION_EXECUTABLE@
|
||||||
|
Name[nl]=@APPLICATION_NAME@ desktop sync client
|
||||||
|
GenericName[nl]=Map synchronisatie
|
||||||
204
.tx/nextcloud.client-desktop/pt_translation
Normal file
204
.tx/nextcloud.client-desktop/pt_translation
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
[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_EXECUTABLE@
|
||||||
|
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[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização da Área de Trabalho
|
||||||
|
Icon[pt_PT]=@APPLICATION_EXECUTABLE@
|
||||||
|
Name[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização da Área de Trabalho
|
||||||
|
GenericName[pt_PT]=Sincronização de Pasta
|
||||||
@@ -183,7 +183,7 @@ if(BUILD_CLIENT)
|
|||||||
endif()
|
endif()
|
||||||
find_package(Sphinx)
|
find_package(Sphinx)
|
||||||
find_package(PdfLatex)
|
find_package(PdfLatex)
|
||||||
find_package(OpenSSL REQUIRED VERSION 1.1)
|
find_package(OpenSSL 1.1 REQUIRED )
|
||||||
|
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
find_package(GLib2)
|
find_package(GLib2)
|
||||||
|
|||||||
@@ -21,4 +21,4 @@ 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" )
|
||||||
|
|
||||||
option( WITH_PROVIDERS "Build with providers list" OFF )
|
option( WITH_PROVIDERS "Build with providers list" ON )
|
||||||
|
|||||||
@@ -1,88 +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,
|
|
||||||
libhttp-dav-perl,
|
|
||||||
libinotify-dev [kfreebsd-any],
|
|
||||||
libqt5webkit5-dev,
|
|
||||||
libsqlite3-dev,
|
|
||||||
libssl-dev (>> 1.0.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}, libgnome-keyring0, 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.
|
|
||||||
@@ -13,8 +13,9 @@ Build-Depends: cmake,
|
|||||||
libhttp-dav-perl,
|
libhttp-dav-perl,
|
||||||
libinotify-dev [kfreebsd-any],
|
libinotify-dev [kfreebsd-any],
|
||||||
libqt5webkit5-dev,
|
libqt5webkit5-dev,
|
||||||
|
libqt5svg5-dev,
|
||||||
libsqlite3-dev,
|
libsqlite3-dev,
|
||||||
libssl-dev (>> 1.0.0),
|
libssl-dev (>= 1.1.0),
|
||||||
zlib1g-dev,
|
zlib1g-dev,
|
||||||
optipng,
|
optipng,
|
||||||
pkg-kde-tools,
|
pkg-kde-tools,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ Build-Depends: cmake,
|
|||||||
libhttp-dav-perl,
|
libhttp-dav-perl,
|
||||||
libinotify-dev [kfreebsd-any],
|
libinotify-dev [kfreebsd-any],
|
||||||
libqt5webkit5-dev,
|
libqt5webkit5-dev,
|
||||||
|
libqt5svg5-dev,
|
||||||
libsqlite3-dev,
|
libsqlite3-dev,
|
||||||
libssl-dev (>> 1.0.0),
|
libssl-dev (>> 1.0.0),
|
||||||
zlib1g-dev,
|
zlib1g-dev,
|
||||||
@@ -33,7 +34,8 @@ Homepage: https://github.com/nextcloud/client_theming
|
|||||||
|
|
||||||
Package: nextcloud-client
|
Package: nextcloud-client
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, libgnome-keyring0, nextcloud-client-l10n
|
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, nextcloud-client-l10n
|
||||||
|
Recommends: libgnome-keyring0
|
||||||
Description: Nextcloud desktop sync client
|
Description: Nextcloud desktop sync client
|
||||||
Use the desktop client to keep your files synchronized
|
Use the desktop client to keep your files synchronized
|
||||||
between your Nextcloud server and your desktop. Select
|
between your Nextcloud server and your desktop. Select
|
||||||
11
admin/linux/debian/debian.xenial/post-patches/libssl.patch
Normal file
11
admin/linux/debian/debian.xenial/post-patches/libssl.patch
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
--- nextcloud-client-2.5.0.orig/CMakeLists.txt 2018-08-13 16:19:57.191634632 +0200
|
||||||
|
+++ nextcloud-client-2.5.0/CMakeLists.txt 2018-08-13 16:20:05.167612238 +0200
|
||||||
|
@@ -183,7 +183,7 @@
|
||||||
|
endif()
|
||||||
|
find_package(Sphinx)
|
||||||
|
find_package(PdfLatex)
|
||||||
|
- find_package(OpenSSL 1.1 REQUIRED )
|
||||||
|
+ find_package(OpenSSL 1.0 REQUIRED )
|
||||||
|
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
find_package(GLib2)
|
||||||
@@ -8,13 +8,14 @@ Build-Depends: cmake,
|
|||||||
dh-python,
|
dh-python,
|
||||||
extra-cmake-modules (>= 5.16),
|
extra-cmake-modules (>= 5.16),
|
||||||
kdelibs5-dev,
|
kdelibs5-dev,
|
||||||
kio-dev,
|
libkf5kio-dev,
|
||||||
libcmocka-dev,
|
libcmocka-dev,
|
||||||
libhttp-dav-perl,
|
libhttp-dav-perl,
|
||||||
libinotify-dev [kfreebsd-any],
|
libinotify-dev [kfreebsd-any],
|
||||||
|
libqt5svg5-dev,
|
||||||
libqt5webkit5-dev,
|
libqt5webkit5-dev,
|
||||||
libsqlite3-dev,
|
libsqlite3-dev,
|
||||||
libssl-dev (>> 1.0.0),
|
libssl-dev (>= 1.1.0),
|
||||||
zlib1g-dev,
|
zlib1g-dev,
|
||||||
optipng,
|
optipng,
|
||||||
pkg-kde-tools,
|
pkg-kde-tools,
|
||||||
@@ -33,8 +34,7 @@ Homepage: https://github.com/nextcloud/client_theming
|
|||||||
|
|
||||||
Package: nextcloud-client
|
Package: nextcloud-client
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, nextcloud-client-l10n
|
Depends: libnextcloudsync0 (=${binary:Version}), ${shlibs:Depends}, ${misc:Depends}, libgnome-keyring0, nextcloud-client-l10n
|
||||||
Recommends: libgnome-keyring0
|
|
||||||
Description: Nextcloud desktop sync client
|
Description: Nextcloud desktop sync client
|
||||||
Use the desktop client to keep your files synchronized
|
Use the desktop client to keep your files synchronized
|
||||||
between your Nextcloud server and your desktop. Select
|
between your Nextcloud server and your desktop. Select
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<file>resources/public.svg</file>
|
<file>resources/public.svg</file>
|
||||||
<file>resources/confirm.svg</file>
|
<file>resources/confirm.svg</file>
|
||||||
<file>resources/copy.svg</file>
|
<file>resources/copy.svg</file>
|
||||||
|
<file>resources/state-sync.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/"/>
|
<qresource prefix="/"/>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
1
resources/state-sync.svg
Normal file
1
resources/state-sync.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.87498 0 0 .87498 .26458 -255.9)"><circle cx="2.1167" cy="294.88" r="2.1167" fill="#2268ab" stroke-width=".25066"/><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="m3.0714 295.43a1.1024 1.1024 0 0 1-0.95473 0.55121 1.1024 1.1024 0 0 1-0.95473-0.55121" stroke="#fff" stroke-width=".44097"/><path transform="scale(-1)" d="m-1.1619-294.33a1.1024 1.1024 0 0 1-0.95473 0.55122 1.1024 1.1024 0 0 1-0.95473-0.55122" stroke="#fff" stroke-width=".44097"/><path d="m1.4349 295.15-0.52538-4e-5 1.138e-4 0.52563" stroke="#faffff" stroke-width=".52916"/><path d="m2.815 294.62 0.52538 4e-5 -1.138e-4 -0.52563" stroke="#faffff" stroke-width=".52916"/></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 800 B |
13003
src/3rdparty/nlohmann/json.hpp
vendored
13003
src/3rdparty/nlohmann/json.hpp
vendored
File diff suppressed because it is too large
Load Diff
@@ -33,7 +33,6 @@ set(client_UI_SRCS
|
|||||||
sslerrordialog.ui
|
sslerrordialog.ui
|
||||||
addcertificatedialog.ui
|
addcertificatedialog.ui
|
||||||
proxyauthdialog.ui
|
proxyauthdialog.ui
|
||||||
notificationwidget.ui
|
|
||||||
mnemonicdialog.ui
|
mnemonicdialog.ui
|
||||||
wizard/owncloudadvancedsetuppage.ui
|
wizard/owncloudadvancedsetuppage.ui
|
||||||
wizard/owncloudconnectionmethoddialog.ui
|
wizard/owncloudconnectionmethoddialog.ui
|
||||||
@@ -95,7 +94,6 @@ set(client_SRCS
|
|||||||
proxyauthdialog.cpp
|
proxyauthdialog.cpp
|
||||||
synclogdialog.cpp
|
synclogdialog.cpp
|
||||||
tooltipupdater.cpp
|
tooltipupdater.cpp
|
||||||
notificationwidget.cpp
|
|
||||||
notificationconfirmjob.cpp
|
notificationconfirmjob.cpp
|
||||||
servernotificationhandler.cpp
|
servernotificationhandler.cpp
|
||||||
guiutility.cpp
|
guiutility.cpp
|
||||||
|
|||||||
@@ -60,6 +60,10 @@ int ActivityItemDelegate::rowHeight()
|
|||||||
QFontMetrics fm(f);
|
QFontMetrics fm(f);
|
||||||
|
|
||||||
_margin = fm.height() / 2;
|
_margin = fm.height() / 2;
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
_margin += 5;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return iconHeight() + 5 * _margin;
|
return iconHeight() + 5 * _margin;
|
||||||
}
|
}
|
||||||
@@ -228,16 +232,11 @@ void ActivityItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||||||
painter->setPen(p.color(QPalette::Disabled, QPalette::Text));
|
painter->setPen(p.color(QPalette::Disabled, QPalette::Text));
|
||||||
|
|
||||||
// change pen color if the line is selected
|
// change pen color if the line is selected
|
||||||
QPalette::ColorGroup cg = option.state & QStyle::State_Enabled
|
QPalette::ColorGroup cg = option.state & (QStyle::State_Enabled | QStyle::State_Active)
|
||||||
? QPalette::Normal
|
? QPalette::Normal
|
||||||
: QPalette::Disabled;
|
: QPalette::Inactive;
|
||||||
if (cg == QPalette::Normal && !(option.state & QStyle::State_Active))
|
|
||||||
cg = QPalette::Inactive;
|
|
||||||
|
|
||||||
if (option.state & QStyle::State_Selected)
|
painter->setPen(option.palette.color(cg, QPalette::Text));
|
||||||
painter->setPen(option.palette.color(cg, QPalette::HighlightedText));
|
|
||||||
else
|
|
||||||
painter->setPen(option.palette.color(cg, QPalette::Text));
|
|
||||||
|
|
||||||
// calculate space for text - use the max possible before using the elipses
|
// calculate space for text - use the max possible before using the elipses
|
||||||
int spaceLeftForText = option.rect.width() - (actionIconRect.width() + margin + rightMargin + leftMargin) -
|
int spaceLeftForText = option.rect.width() - (actionIconRect.width() + margin + rightMargin + leftMargin) -
|
||||||
@@ -258,12 +257,6 @@ void ActivityItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
|
|||||||
// draw the message
|
// draw the message
|
||||||
// change pen color for the message
|
// change pen color for the message
|
||||||
if(!messageText.isEmpty()){
|
if(!messageText.isEmpty()){
|
||||||
painter->setPen(p.color(QPalette::Inactive, QPalette::Text));
|
|
||||||
|
|
||||||
// check if line is selected
|
|
||||||
if (option.state & QStyle::State_Selected)
|
|
||||||
painter->setPen(option.palette.color(cg, QPalette::HighlightedText));
|
|
||||||
|
|
||||||
const QString elidedMessage = fm.elidedText(messageText, Qt::ElideRight, spaceLeftForText);
|
const QString elidedMessage = fm.elidedText(messageText, Qt::ElideRight, spaceLeftForText);
|
||||||
painter->drawText(messageTextBox, elidedMessage);
|
painter->drawText(messageTextBox, elidedMessage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,9 +108,9 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const
|
|||||||
|| a._status == SyncFileItem::Restoration){
|
|| a._status == SyncFileItem::Restoration){
|
||||||
return QIcon(QLatin1String(":/client/resources/state-warning.svg"));
|
return QIcon(QLatin1String(":/client/resources/state-warning.svg"));
|
||||||
}
|
}
|
||||||
return QIcon(QLatin1String(":/client/resources/activity.png"));
|
return QIcon(QLatin1String(":/client/resources/state-sync.svg"));
|
||||||
} else return QIcon(QLatin1String(":/client/resources/activity.png"));
|
}
|
||||||
return QVariant();
|
return QIcon(QLatin1String(":/client/resources/activity.png"));
|
||||||
break;
|
break;
|
||||||
case ActivityItemDelegate::ObjectTypeRole:
|
case ActivityItemDelegate::ObjectTypeRole:
|
||||||
return a._objectType;
|
return a._objectType;
|
||||||
@@ -237,6 +237,12 @@ void ActivityListModel::removeActivityFromActivityList(int row) {
|
|||||||
removeActivityFromActivityList(activity);
|
removeActivityFromActivityList(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ActivityListModel::addSyncFileItemToActivityList(Activity activity) {
|
||||||
|
qCInfo(lcActivity) << "Successfully added to the activity list: " << activity._subject;
|
||||||
|
_syncFileItemLists.prepend(activity);
|
||||||
|
combineActivityLists();
|
||||||
|
}
|
||||||
|
|
||||||
void ActivityListModel::removeActivityFromActivityList(Activity activity) {
|
void ActivityListModel::removeActivityFromActivityList(Activity activity) {
|
||||||
qCInfo(lcActivity) << "Activity/Notification/Error successfully dismissed: " << activity._subject;
|
qCInfo(lcActivity) << "Activity/Notification/Error successfully dismissed: " << activity._subject;
|
||||||
qCInfo(lcActivity) << "Trying to remove Activity/Notification/Error from view... ";
|
qCInfo(lcActivity) << "Trying to remove Activity/Notification/Error from view... ";
|
||||||
@@ -271,6 +277,9 @@ void ActivityListModel::combineActivityLists()
|
|||||||
std::sort(_notificationLists.begin(), _notificationLists.end());
|
std::sort(_notificationLists.begin(), _notificationLists.end());
|
||||||
resultList.append(_notificationLists);
|
resultList.append(_notificationLists);
|
||||||
|
|
||||||
|
std::sort(_syncFileItemLists.begin(), _syncFileItemLists.end());
|
||||||
|
resultList.append(_syncFileItemLists);
|
||||||
|
|
||||||
std::sort(_activityLists.begin(), _activityLists.end());
|
std::sort(_activityLists.begin(), _activityLists.end());
|
||||||
resultList.append(_activityLists);
|
resultList.append(_activityLists);
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public:
|
|||||||
ActivityList errorsList() { return _notificationErrorsLists; }
|
ActivityList errorsList() { return _notificationErrorsLists; }
|
||||||
void addNotificationToActivityList(Activity activity);
|
void addNotificationToActivityList(Activity activity);
|
||||||
void addErrorToActivityList(Activity activity);
|
void addErrorToActivityList(Activity activity);
|
||||||
|
void addSyncFileItemToActivityList(Activity activity);
|
||||||
void removeActivityFromActivityList(int row);
|
void removeActivityFromActivityList(int row);
|
||||||
void removeActivityFromActivityList(Activity activity);
|
void removeActivityFromActivityList(Activity activity);
|
||||||
|
|
||||||
@@ -68,6 +69,7 @@ private:
|
|||||||
void combineActivityLists();
|
void combineActivityLists();
|
||||||
|
|
||||||
ActivityList _activityLists;
|
ActivityList _activityLists;
|
||||||
|
ActivityList _syncFileItemLists;
|
||||||
ActivityList _notificationLists;
|
ActivityList _notificationLists;
|
||||||
ActivityList _notificationErrorsLists;
|
ActivityList _notificationErrorsLists;
|
||||||
ActivityList _finalList;
|
ActivityList _finalList;
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#include "accountmanager.h"
|
#include "accountmanager.h"
|
||||||
#include "activityitemdelegate.h"
|
#include "activityitemdelegate.h"
|
||||||
#include "QProgressIndicator.h"
|
#include "QProgressIndicator.h"
|
||||||
#include "notificationwidget.h"
|
|
||||||
#include "notificationconfirmjob.h"
|
#include "notificationconfirmjob.h"
|
||||||
#include "servernotificationhandler.h"
|
#include "servernotificationhandler.h"
|
||||||
#include "theme.h"
|
#include "theme.h"
|
||||||
@@ -68,7 +67,6 @@ ActivityWidget::ActivityWidget(AccountState *accountState, QWidget *parent)
|
|||||||
ActivityItemDelegate *delegate = new ActivityItemDelegate;
|
ActivityItemDelegate *delegate = new ActivityItemDelegate;
|
||||||
delegate->setParent(this);
|
delegate->setParent(this);
|
||||||
_ui->_activityList->setItemDelegate(delegate);
|
_ui->_activityList->setItemDelegate(delegate);
|
||||||
_ui->_activityList->setBackgroundRole(QPalette::Background);
|
|
||||||
_ui->_activityList->setAlternatingRowColors(true);
|
_ui->_activityList->setAlternatingRowColors(true);
|
||||||
_ui->_activityList->setModel(_model);
|
_ui->_activityList->setModel(_model);
|
||||||
|
|
||||||
@@ -77,15 +75,11 @@ ActivityWidget::ActivityWidget(AccountState *accountState, QWidget *parent)
|
|||||||
connect(_model, &ActivityListModel::activityJobStatusCode,
|
connect(_model, &ActivityListModel::activityJobStatusCode,
|
||||||
this, &ActivityWidget::slotAccountActivityStatus);
|
this, &ActivityWidget::slotAccountActivityStatus);
|
||||||
|
|
||||||
_ui->_copyButton->setToolTip(tr("Copy the activity list to the clipboard."));
|
|
||||||
connect(_ui->_copyButton, &QPushButton::click, this, &ActivityWidget::copyToClipboard);
|
|
||||||
|
|
||||||
connect(_model, &QAbstractItemModel::rowsInserted, this, &ActivityWidget::rowsInserted);
|
connect(_model, &QAbstractItemModel::rowsInserted, this, &ActivityWidget::rowsInserted);
|
||||||
|
|
||||||
connect(delegate, &ActivityItemDelegate::primaryButtonClickedOnItemView, this, &ActivityWidget::slotPrimaryButtonClickedOnListView);
|
connect(delegate, &ActivityItemDelegate::primaryButtonClickedOnItemView, this, &ActivityWidget::slotPrimaryButtonClickedOnListView);
|
||||||
connect(delegate, &ActivityItemDelegate::secondaryButtonClickedOnItemView, this, &ActivityWidget::slotSecondaryButtonClickedOnListView);
|
connect(delegate, &ActivityItemDelegate::secondaryButtonClickedOnItemView, this, &ActivityWidget::slotSecondaryButtonClickedOnListView);
|
||||||
connect(_ui->_activityList, &QListView::activated, this, &ActivityWidget::slotOpenFile);
|
connect(_ui->_activityList, &QListView::activated, this, &ActivityWidget::slotOpenFile);
|
||||||
connect(&_removeTimer, &QTimer::timeout, this, &ActivityWidget::slotCheckToCleanWidgets);
|
|
||||||
|
|
||||||
connect(ProgressDispatcher::instance(), &ProgressDispatcher::progressInfo,
|
connect(ProgressDispatcher::instance(), &ProgressDispatcher::progressInfo,
|
||||||
this, &ActivityWidget::slotProgressInfo);
|
this, &ActivityWidget::slotProgressInfo);
|
||||||
@@ -104,52 +98,49 @@ ActivityWidget::~ActivityWidget()
|
|||||||
|
|
||||||
void ActivityWidget::slotProgressInfo(const QString &folder, const ProgressInfo &progress)
|
void ActivityWidget::slotProgressInfo(const QString &folder, const ProgressInfo &progress)
|
||||||
{
|
{
|
||||||
|
if (progress.status() == ProgressInfo::Reconcile) {
|
||||||
|
// Wipe all non-persistent entries - as well as the persistent ones
|
||||||
|
// in cases where a local discovery was done.
|
||||||
|
auto f = FolderMan::instance()->folder(folder);
|
||||||
|
if (!f)
|
||||||
|
return;
|
||||||
|
const auto &engine = f->syncEngine();
|
||||||
|
const auto style = engine.lastLocalDiscoveryStyle();
|
||||||
|
foreach (Activity activity, _model->errorsList()) {
|
||||||
|
if (activity._folder != folder){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: this is really not working
|
if (style == LocalDiscoveryStyle::FilesystemOnly){
|
||||||
// if (progress.status() == ProgressInfo::Done
|
_model->removeActivityFromActivityList(activity);
|
||||||
// || progress.status() == ProgressInfo::Reconcile) {
|
continue;
|
||||||
// // Wipe all non-persistent entries - as well as the persistent ones
|
}
|
||||||
// // in cases where a local discovery was done.
|
|
||||||
// auto f = FolderMan::instance()->folder(folder);
|
|
||||||
// if (!f)
|
|
||||||
// return;
|
|
||||||
// const auto &engine = f->syncEngine();
|
|
||||||
// const auto style = engine.lastLocalDiscoveryStyle();
|
|
||||||
// foreach (Activity activity, _model->errorsList()) {
|
|
||||||
// if (activity._folder != folder){
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (style == LocalDiscoveryStyle::FilesystemOnly){
|
if(activity._status == SyncFileItem::Conflict && !QFileInfo(f->path() + activity._file).exists()){
|
||||||
// _model->removeActivityFromActivityList(activity);
|
_model->removeActivityFromActivityList(activity);
|
||||||
// continue;
|
continue;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if(activity._status == SyncFileItem::Conflict && !QFileInfo(f->path() + activity._file).exists()){
|
|
||||||
// _model->removeActivityFromActivityList(activity);
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// if(activity._status == SyncFileItem::FileIgnored && !QFileInfo(f->path() + activity._file).exists()){
|
if(activity._status == SyncFileItem::FileIgnored && !QFileInfo(f->path() + activity._file).exists()){
|
||||||
// _model->removeActivityFromActivityList(activity);
|
_model->removeActivityFromActivityList(activity);
|
||||||
// continue;
|
continue;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if(!QFileInfo(f->path() + activity._file).exists()){
|
if(!QFileInfo(f->path() + activity._file).exists()){
|
||||||
// _model->removeActivityFromActivityList(activity);
|
_model->removeActivityFromActivityList(activity);
|
||||||
// continue;
|
continue;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// auto path = QFileInfo(activity._file).dir().path().toUtf8();
|
auto path = QFileInfo(activity._file).dir().path().toUtf8();
|
||||||
// if (path == ".")
|
if (path == ".")
|
||||||
// path.clear();
|
path.clear();
|
||||||
|
|
||||||
// if(engine.shouldDiscoverLocally(path))
|
if(engine.shouldDiscoverLocally(path))
|
||||||
// _model->removeActivityFromActivityList(activity);
|
_model->removeActivityFromActivityList(activity);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// }
|
}
|
||||||
|
|
||||||
if (progress.status() == ProgressInfo::Done) {
|
if (progress.status() == ProgressInfo::Done) {
|
||||||
// We keep track very well of pending conflicts.
|
// We keep track very well of pending conflicts.
|
||||||
@@ -177,18 +168,26 @@ void ActivityWidget::slotItemCompleted(const QString &folder, const SyncFileItem
|
|||||||
qCWarning(lcActivity) << "Item " << item->_file << " retrieved resulted in " << item->_errorString;
|
qCWarning(lcActivity) << "Item " << item->_file << " retrieved resulted in " << item->_errorString;
|
||||||
|
|
||||||
Activity activity;
|
Activity activity;
|
||||||
activity._type = Activity::SyncFileItemType;
|
activity._type = Activity::SyncFileItemType; //client activity
|
||||||
activity._status = item->_status;
|
activity._status = item->_status;
|
||||||
activity._dateTime = QDateTime::fromString(QDateTime::currentDateTime().toString(), Qt::ISODate);
|
activity._dateTime = QDateTime::fromString(QDateTime::currentDateTime().toString(), Qt::ISODate);
|
||||||
activity._subject = item->_errorString;
|
|
||||||
activity._message = item->_originalFile;
|
activity._message = item->_originalFile;
|
||||||
activity._link = folderInstance->accountState()->account()->url();
|
activity._link = folderInstance->accountState()->account()->url();
|
||||||
activity._accName = folderInstance->accountState()->account()->displayName();
|
activity._accName = folderInstance->accountState()->account()->displayName();
|
||||||
activity._file = item->_file;
|
activity._file = item->_file;
|
||||||
activity._folder = folder;
|
activity._folder = folder;
|
||||||
|
|
||||||
// add 'protocol error' to activity list
|
if(item->_status == SyncFileItem::NoStatus || item->_status == SyncFileItem::Success){
|
||||||
_model->addErrorToActivityList(activity);
|
qCWarning(lcActivity) << "Item " << item->_file << " retrieved successfully.";
|
||||||
|
activity._message.prepend(tr("Synced "));
|
||||||
|
_model->addSyncFileItemToActivityList(activity);
|
||||||
|
} else {
|
||||||
|
qCWarning(lcActivity) << "Item " << item->_file << " retrieved resulted in error " << item->_errorString;
|
||||||
|
activity._subject = item->_errorString;
|
||||||
|
|
||||||
|
// add 'protocol error' to activity list
|
||||||
|
_model->addErrorToActivityList(activity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,14 +325,17 @@ void ActivityWidget::slotRemoveAccount()
|
|||||||
|
|
||||||
void ActivityWidget::showLabels()
|
void ActivityWidget::showLabels()
|
||||||
{
|
{
|
||||||
QString t = tr("Server Activities");
|
_ui->_bottomLabel->hide(); // hide whatever was there before
|
||||||
t.clear();
|
QString t("");
|
||||||
QSetIterator<QString> i(_accountsWithoutActivities);
|
QSetIterator<QString> i(_accountsWithoutActivities);
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
t.append(tr("<br/>Account %1 does not have activities enabled.").arg(i.next()));
|
t.append(tr("<br/>Account %1 does not have activities enabled.").arg(i.next()));
|
||||||
}
|
}
|
||||||
_ui->_bottomLabel->setTextFormat(Qt::RichText);
|
if(!t.isEmpty()){
|
||||||
_ui->_bottomLabel->setText(t);
|
_ui->_bottomLabel->setTextFormat(Qt::RichText);
|
||||||
|
_ui->_bottomLabel->setText(t);
|
||||||
|
_ui->_bottomLabel->show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActivityWidget::slotAccountActivityStatus(int statusCode)
|
void ActivityWidget::slotAccountActivityStatus(int statusCode)
|
||||||
@@ -347,7 +349,7 @@ void ActivityWidget::slotAccountActivityStatus(int statusCode)
|
|||||||
_accountsWithoutActivities.remove(_accountState->account()->displayName());
|
_accountsWithoutActivities.remove(_accountState->account()->displayName());
|
||||||
}
|
}
|
||||||
|
|
||||||
checkActivityTabVisibility();
|
checkActivityWidgetVisibility();
|
||||||
showLabels();
|
showLabels();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -398,16 +400,15 @@ void ActivityWidget::storeActivityList(QTextStream &ts)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActivityWidget::checkActivityTabVisibility()
|
void ActivityWidget::checkActivityWidgetVisibility()
|
||||||
{
|
{
|
||||||
int accountCount = AccountManager::instance()->accounts().count();
|
int accountCount = AccountManager::instance()->accounts().count();
|
||||||
bool hasAccountsWithActivity =
|
bool hasAccountsWithActivity =
|
||||||
_accountsWithoutActivities.count() != accountCount;
|
_accountsWithoutActivities.count() != accountCount;
|
||||||
bool hasNotifications = !_widgetForNotifId.isEmpty();
|
|
||||||
|
|
||||||
_ui->_activityList->setVisible(hasAccountsWithActivity);
|
_ui->_activityList->setVisible(hasAccountsWithActivity);
|
||||||
|
|
||||||
emit hideActivityTab(!hasAccountsWithActivity && !hasNotifications);
|
emit hideActivityTab(!hasAccountsWithActivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActivityWidget::slotOpenFile(QModelIndex indx)
|
void ActivityWidget::slotOpenFile(QModelIndex indx)
|
||||||
@@ -508,7 +509,7 @@ void ActivityWidget::slotSendNotificationRequest(const QString &accountName, con
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActivityWidget::endNotificationRequest(NotificationWidget *widget, int replyCode)
|
void ActivityWidget::endNotificationRequest(int replyCode)
|
||||||
{
|
{
|
||||||
_notificationRequestsRunning--;
|
_notificationRequestsRunning--;
|
||||||
slotNotificationRequestFinished(replyCode);
|
slotNotificationRequestFinished(replyCode);
|
||||||
@@ -523,7 +524,7 @@ void ActivityWidget::slotNotifyNetworkError(QNetworkReply *reply)
|
|||||||
|
|
||||||
int resultCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
int resultCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
|
||||||
endNotificationRequest(job->widget(), resultCode);
|
endNotificationRequest(resultCode);
|
||||||
qCWarning(lcActivity) << "Server notify job failed with code " << resultCode;
|
qCWarning(lcActivity) << "Server notify job failed with code " << resultCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,72 +535,10 @@ void ActivityWidget::slotNotifyServerFinished(const QString &reply, int replyCod
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
endNotificationRequest(job->widget(), replyCode);
|
endNotificationRequest(replyCode);
|
||||||
qCInfo(lcActivity) << "Server Notification reply code" << replyCode << reply;
|
qCInfo(lcActivity) << "Server Notification reply code" << replyCode << reply;
|
||||||
|
|
||||||
// if the notification was successful start a timer that triggers
|
|
||||||
// removal of the done widgets in a few seconds
|
|
||||||
// Add 200 millisecs to the predefined value to make sure that the timer in
|
|
||||||
// widget's method readyToClose() has elapsed.
|
|
||||||
if (replyCode == OCS_SUCCESS_STATUS_CODE || replyCode == OCS_SUCCESS_STATUS_CODE_V2) {
|
|
||||||
//scheduleWidgetToRemove(job->widget());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// blacklist the activity coming in here.
|
|
||||||
void ActivityWidget::slotRequestCleanupAndBlacklist(const Activity &blacklistActivity)
|
|
||||||
{
|
|
||||||
if (!_blacklistedNotifications.contains(blacklistActivity)) {
|
|
||||||
_blacklistedNotifications.append(blacklistActivity);
|
|
||||||
}
|
|
||||||
|
|
||||||
NotificationWidget *widget = _widgetForNotifId[blacklistActivity.ident()];
|
|
||||||
scheduleWidgetToRemove(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ActivityWidget::scheduleWidgetToRemove(NotificationWidget *widget, int milliseconds)
|
|
||||||
{
|
|
||||||
if (!widget) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// in five seconds from now, remove the widget.
|
|
||||||
QDateTime removeTime = QDateTime::currentDateTimeUtc().addMSecs(milliseconds);
|
|
||||||
QDateTime &it = _widgetsToRemove[widget];
|
|
||||||
if (!it.isValid() || it > removeTime) {
|
|
||||||
it = removeTime;
|
|
||||||
}
|
|
||||||
if (!_removeTimer.isActive()) {
|
|
||||||
_removeTimer.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called every second to see if widgets need to be removed.
|
|
||||||
void ActivityWidget::slotCheckToCleanWidgets()
|
|
||||||
{
|
|
||||||
auto currentTime = QDateTime::currentDateTimeUtc();
|
|
||||||
auto it = _widgetsToRemove.begin();
|
|
||||||
while (it != _widgetsToRemove.end()) {
|
|
||||||
// loop over all widgets in the to-remove queue
|
|
||||||
QDateTime t = it.value();
|
|
||||||
NotificationWidget *widget = it.key();
|
|
||||||
|
|
||||||
if (currentTime > t) {
|
|
||||||
// found one to remove!
|
|
||||||
Activity::Identifier id = widget->activity().ident();
|
|
||||||
_widgetForNotifId.remove(id);
|
|
||||||
widget->deleteLater();
|
|
||||||
it = _widgetsToRemove.erase(it);
|
|
||||||
} else {
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_widgetsToRemove.isEmpty()) {
|
|
||||||
_removeTimer.stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ==================================================================== */
|
/* ==================================================================== */
|
||||||
|
|
||||||
ActivitySettings::ActivitySettings(AccountState *accountState, QWidget *parent)
|
ActivitySettings::ActivitySettings(AccountState *accountState, QWidget *parent)
|
||||||
@@ -611,14 +550,7 @@ ActivitySettings::ActivitySettings(AccountState *accountState, QWidget *parent)
|
|||||||
|
|
||||||
_activityWidget = new ActivityWidget(_accountState, this);
|
_activityWidget = new ActivityWidget(_accountState, this);
|
||||||
|
|
||||||
// set background white
|
|
||||||
QPalette palette;
|
|
||||||
palette.setColor(QPalette::Background, Qt::white);
|
|
||||||
_activityWidget->setAutoFillBackground(true);
|
|
||||||
_activityWidget->setPalette(palette);
|
|
||||||
|
|
||||||
_vbox->insertWidget(1, _activityWidget);
|
_vbox->insertWidget(1, _activityWidget);
|
||||||
connect(_activityWidget, &ActivityWidget::copyToClipboard, this, &ActivitySettings::slotCopyToClipboard);
|
|
||||||
connect(_activityWidget, &ActivityWidget::guiLog, this, &ActivitySettings::guiLog);
|
connect(_activityWidget, &ActivityWidget::guiLog, this, &ActivitySettings::guiLog);
|
||||||
connect(&_notificationCheckTimer, &QTimer::timeout,
|
connect(&_notificationCheckTimer, &QTimer::timeout,
|
||||||
this, &ActivitySettings::slotRegularNotificationCheck);
|
this, &ActivitySettings::slotRegularNotificationCheck);
|
||||||
@@ -641,21 +573,6 @@ void ActivitySettings::setNotificationRefreshInterval(std::chrono::milliseconds
|
|||||||
_notificationCheckTimer.start(interval.count());
|
_notificationCheckTimer.start(interval.count());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActivitySettings::slotCopyToClipboard()
|
|
||||||
{
|
|
||||||
QString text;
|
|
||||||
QTextStream ts(&text);
|
|
||||||
|
|
||||||
QString message;
|
|
||||||
|
|
||||||
_activityWidget->storeActivityList(ts);
|
|
||||||
message = tr("The server activity and notifications list has been copied to the clipboard.");
|
|
||||||
|
|
||||||
QApplication::clipboard()->setText(text);
|
|
||||||
|
|
||||||
emit guiLog(tr("Copied to clipboard"), message);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ActivitySettings::slotRemoveAccount()
|
void ActivitySettings::slotRemoveAccount()
|
||||||
{
|
{
|
||||||
_activityWidget->slotRemoveAccount();
|
_activityWidget->slotRemoveAccount();
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ namespace OCC {
|
|||||||
class Account;
|
class Account;
|
||||||
class AccountStatusPtr;
|
class AccountStatusPtr;
|
||||||
class JsonApiJob;
|
class JsonApiJob;
|
||||||
class NotificationWidget;
|
|
||||||
class ActivityListModel;
|
class ActivityListModel;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
@@ -68,7 +67,7 @@ public:
|
|||||||
* Based on whether activities are enabled and whether notifications are
|
* Based on whether activities are enabled and whether notifications are
|
||||||
* available.
|
* available.
|
||||||
*/
|
*/
|
||||||
void checkActivityTabVisibility();
|
void checkActivityWidgetVisibility();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void slotOpenFile(QModelIndex indx);
|
void slotOpenFile(QModelIndex indx);
|
||||||
@@ -76,14 +75,12 @@ public slots:
|
|||||||
void slotRefreshNotifications();
|
void slotRefreshNotifications();
|
||||||
void slotRemoveAccount();
|
void slotRemoveAccount();
|
||||||
void slotAccountActivityStatus(int statusCode);
|
void slotAccountActivityStatus(int statusCode);
|
||||||
void slotRequestCleanupAndBlacklist(const Activity &blacklistActivity);
|
|
||||||
void addError(const QString &folderAlias, const QString &message, ErrorCategory category);
|
void addError(const QString &folderAlias, const QString &message, ErrorCategory category);
|
||||||
void slotProgressInfo(const QString &folder, const ProgressInfo &progress);
|
void slotProgressInfo(const QString &folder, const ProgressInfo &progress);
|
||||||
void slotItemCompleted(const QString &folder, const SyncFileItemPtr &item);
|
void slotItemCompleted(const QString &folder, const SyncFileItemPtr &item);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void guiLog(const QString &, const QString &);
|
void guiLog(const QString &, const QString &);
|
||||||
void copyToClipboard();
|
|
||||||
void rowsInserted();
|
void rowsInserted();
|
||||||
void hideActivityTab(bool);
|
void hideActivityTab(bool);
|
||||||
void sendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);
|
void sendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);
|
||||||
@@ -93,9 +90,7 @@ private slots:
|
|||||||
void slotSendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);
|
void slotSendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);
|
||||||
void slotNotifyNetworkError(QNetworkReply *);
|
void slotNotifyNetworkError(QNetworkReply *);
|
||||||
void slotNotifyServerFinished(const QString &reply, int replyCode);
|
void slotNotifyServerFinished(const QString &reply, int replyCode);
|
||||||
void endNotificationRequest(NotificationWidget *widget, int replyCode);
|
void endNotificationRequest(int replyCode);
|
||||||
void scheduleWidgetToRemove(NotificationWidget *widget, int milliseconds = 100);
|
|
||||||
void slotCheckToCleanWidgets();
|
|
||||||
void slotNotificationRequestFinished(int statusCode);
|
void slotNotificationRequestFinished(int statusCode);
|
||||||
void slotPrimaryButtonClickedOnListView(const QModelIndex &index);
|
void slotPrimaryButtonClickedOnListView(const QModelIndex &index);
|
||||||
void slotSecondaryButtonClickedOnListView(const QModelIndex &index);
|
void slotSecondaryButtonClickedOnListView(const QModelIndex &index);
|
||||||
@@ -105,12 +100,10 @@ private:
|
|||||||
QString timeString(QDateTime dt, QLocale::FormatType format) const;
|
QString timeString(QDateTime dt, QLocale::FormatType format) const;
|
||||||
Ui::ActivityWidget *_ui;
|
Ui::ActivityWidget *_ui;
|
||||||
QSet<QString> _accountsWithoutActivities;
|
QSet<QString> _accountsWithoutActivities;
|
||||||
QMap<Activity::Identifier, NotificationWidget *> _widgetForNotifId;
|
|
||||||
QElapsedTimer _guiLogTimer;
|
QElapsedTimer _guiLogTimer;
|
||||||
QSet<int> _guiLoggedNotifications;
|
QSet<int> _guiLoggedNotifications;
|
||||||
ActivityList _blacklistedNotifications;
|
ActivityList _blacklistedNotifications;
|
||||||
|
|
||||||
QHash<NotificationWidget *, QDateTime> _widgetsToRemove;
|
|
||||||
QTimer _removeTimer;
|
QTimer _removeTimer;
|
||||||
|
|
||||||
// number of currently running notification requests. If non zero,
|
// number of currently running notification requests. If non zero,
|
||||||
@@ -146,7 +139,6 @@ public slots:
|
|||||||
void setNotificationRefreshInterval(std::chrono::milliseconds interval);
|
void setNotificationRefreshInterval(std::chrono::milliseconds interval);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void slotCopyToClipboard();
|
|
||||||
void slotRegularNotificationCheck();
|
void slotRegularNotificationCheck();
|
||||||
void slotDisplayActivities();
|
void slotDisplayActivities();
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>693</width>
|
<width>652</width>
|
||||||
<height>556</height>
|
<height>556</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -77,8 +77,11 @@
|
|||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item row="0" column="0">
|
<property name="sizeConstraint">
|
||||||
|
<enum>QLayout::SetDefaultConstraint</enum>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
<widget class="QListView" name="_activityList">
|
<widget class="QListView" name="_activityList">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
@@ -92,18 +95,18 @@
|
|||||||
<colorrole role="Base">
|
<colorrole role="Base">
|
||||||
<brush brushstyle="SolidPattern">
|
<brush brushstyle="SolidPattern">
|
||||||
<color alpha="255">
|
<color alpha="255">
|
||||||
<red>255</red>
|
<red>252</red>
|
||||||
<green>255</green>
|
<green>252</green>
|
||||||
<blue>255</blue>
|
<blue>252</blue>
|
||||||
</color>
|
</color>
|
||||||
</brush>
|
</brush>
|
||||||
</colorrole>
|
</colorrole>
|
||||||
<colorrole role="Window">
|
<colorrole role="Window">
|
||||||
<brush brushstyle="SolidPattern">
|
<brush brushstyle="SolidPattern">
|
||||||
<color alpha="255">
|
<color alpha="255">
|
||||||
<red>255</red>
|
<red>252</red>
|
||||||
<green>255</green>
|
<green>252</green>
|
||||||
<blue>255</blue>
|
<blue>252</blue>
|
||||||
</color>
|
</color>
|
||||||
</brush>
|
</brush>
|
||||||
</colorrole>
|
</colorrole>
|
||||||
@@ -112,18 +115,18 @@
|
|||||||
<colorrole role="Base">
|
<colorrole role="Base">
|
||||||
<brush brushstyle="SolidPattern">
|
<brush brushstyle="SolidPattern">
|
||||||
<color alpha="255">
|
<color alpha="255">
|
||||||
<red>255</red>
|
<red>252</red>
|
||||||
<green>255</green>
|
<green>252</green>
|
||||||
<blue>255</blue>
|
<blue>252</blue>
|
||||||
</color>
|
</color>
|
||||||
</brush>
|
</brush>
|
||||||
</colorrole>
|
</colorrole>
|
||||||
<colorrole role="Window">
|
<colorrole role="Window">
|
||||||
<brush brushstyle="SolidPattern">
|
<brush brushstyle="SolidPattern">
|
||||||
<color alpha="255">
|
<color alpha="255">
|
||||||
<red>255</red>
|
<red>252</red>
|
||||||
<green>255</green>
|
<green>252</green>
|
||||||
<blue>255</blue>
|
<blue>252</blue>
|
||||||
</color>
|
</color>
|
||||||
</brush>
|
</brush>
|
||||||
</colorrole>
|
</colorrole>
|
||||||
@@ -132,18 +135,18 @@
|
|||||||
<colorrole role="Base">
|
<colorrole role="Base">
|
||||||
<brush brushstyle="SolidPattern">
|
<brush brushstyle="SolidPattern">
|
||||||
<color alpha="255">
|
<color alpha="255">
|
||||||
<red>255</red>
|
<red>252</red>
|
||||||
<green>255</green>
|
<green>252</green>
|
||||||
<blue>255</blue>
|
<blue>252</blue>
|
||||||
</color>
|
</color>
|
||||||
</brush>
|
</brush>
|
||||||
</colorrole>
|
</colorrole>
|
||||||
<colorrole role="Window">
|
<colorrole role="Window">
|
||||||
<brush brushstyle="SolidPattern">
|
<brush brushstyle="SolidPattern">
|
||||||
<color alpha="255">
|
<color alpha="255">
|
||||||
<red>255</red>
|
<red>252</red>
|
||||||
<green>255</green>
|
<green>252</green>
|
||||||
<blue>255</blue>
|
<blue>252</blue>
|
||||||
</color>
|
</color>
|
||||||
</brush>
|
</brush>
|
||||||
</colorrole>
|
</colorrole>
|
||||||
@@ -151,13 +154,13 @@
|
|||||||
</palette>
|
</palette>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Plain</enum>
|
<enum>QFrame::Sunken</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="lineWidth">
|
<property name="lineWidth">
|
||||||
<number>0</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeAdjustPolicy">
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||||
@@ -185,7 +188,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="_bottomLabel">
|
<widget class="QLabel" name="_bottomLabel">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
@@ -201,28 +204,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QPushButton" name="_copyButton">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>120</width>
|
|
||||||
<height>30</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">margin-left:40px;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Copy</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
|
|||||||
@@ -20,11 +20,10 @@
|
|||||||
|
|
||||||
namespace OCC {
|
namespace OCC {
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(lcNotifications)
|
Q_LOGGING_CATEGORY(lcNotificationsJob, "nextcloud.gui.notifications", QtInfoMsg)
|
||||||
|
|
||||||
NotificationConfirmJob::NotificationConfirmJob(AccountPtr account)
|
NotificationConfirmJob::NotificationConfirmJob(AccountPtr account)
|
||||||
: AbstractNetworkJob(account, "")
|
: AbstractNetworkJob(account, "")
|
||||||
, _widget(0)
|
|
||||||
{
|
{
|
||||||
setIgnoreCredentialFailure(true);
|
setIgnoreCredentialFailure(true);
|
||||||
}
|
}
|
||||||
@@ -35,20 +34,10 @@ void NotificationConfirmJob::setLinkAndVerb(const QUrl &link, const QByteArray &
|
|||||||
_verb = verb;
|
_verb = verb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotificationConfirmJob::setWidget(NotificationWidget *widget)
|
|
||||||
{
|
|
||||||
_widget = widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
NotificationWidget *NotificationConfirmJob::widget()
|
|
||||||
{
|
|
||||||
return _widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationConfirmJob::start()
|
void NotificationConfirmJob::start()
|
||||||
{
|
{
|
||||||
if (!_link.isValid()) {
|
if (!_link.isValid()) {
|
||||||
qCWarning(lcNotifications) << "Attempt to trigger invalid URL: " << _link.toString();
|
qCWarning(lcNotificationsJob) << "Attempt to trigger invalid URL: " << _link.toString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QNetworkRequest req;
|
QNetworkRequest req;
|
||||||
|
|||||||
@@ -25,8 +25,6 @@
|
|||||||
|
|
||||||
namespace OCC {
|
namespace OCC {
|
||||||
|
|
||||||
class NotificationWidget;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The NotificationConfirmJob class
|
* @brief The NotificationConfirmJob class
|
||||||
* @ingroup gui
|
* @ingroup gui
|
||||||
@@ -54,20 +52,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
void start() Q_DECL_OVERRIDE;
|
void start() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief setWidget stores the associated widget to be able to use
|
|
||||||
* it when the job has finished
|
|
||||||
* @param widget pointer to the notification widget to store
|
|
||||||
*/
|
|
||||||
void setWidget(NotificationWidget *widget);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief widget - get the associated notification widget as stored
|
|
||||||
* with setWidget method.
|
|
||||||
* @return widget pointer to the notification widget
|
|
||||||
*/
|
|
||||||
NotificationWidget *widget();
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -83,7 +67,6 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
QByteArray _verb;
|
QByteArray _verb;
|
||||||
QUrl _link;
|
QUrl _link;
|
||||||
NotificationWidget *_widget;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,169 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) by Klaas Freitag <freitag@owncloud.com>
|
|
||||||
*
|
|
||||||
* This program 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.
|
|
||||||
*
|
|
||||||
* This program 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "notificationwidget.h"
|
|
||||||
#include "QProgressIndicator.h"
|
|
||||||
#include "common/utility.h"
|
|
||||||
#include "common/asserts.h"
|
|
||||||
#include "guiutility.h"
|
|
||||||
|
|
||||||
#include <QPushButton>
|
|
||||||
|
|
||||||
#include "ocsjob.h"
|
|
||||||
|
|
||||||
namespace OCC {
|
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(lcNotifications, "nextcloud.gui.notifications", QtInfoMsg)
|
|
||||||
|
|
||||||
NotificationWidget::NotificationWidget(QWidget *parent)
|
|
||||||
: QWidget(parent)
|
|
||||||
{
|
|
||||||
_ui.setupUi(this);
|
|
||||||
_progressIndi = new QProgressIndicator(this);
|
|
||||||
_ui.horizontalLayout->addWidget(_progressIndi);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationWidget::setActivity(const Activity &activity)
|
|
||||||
{
|
|
||||||
_myActivity = activity;
|
|
||||||
|
|
||||||
_accountName = activity._accName;
|
|
||||||
ASSERT(!_accountName.isEmpty());
|
|
||||||
|
|
||||||
_ui._subjectLabel->setVisible(!activity._subject.isEmpty());
|
|
||||||
_ui._messageLabel->setVisible(!activity._message.isEmpty());
|
|
||||||
|
|
||||||
_ui._subjectLabel->setText(activity._subject);
|
|
||||||
_ui._messageLabel->setText(activity._message);
|
|
||||||
|
|
||||||
_ui._notifIcon->setPixmap(QPixmap(":/client/resources/bell.svg"));
|
|
||||||
_ui._notifIcon->setMinimumWidth(22);
|
|
||||||
_ui._notifIcon->setMinimumHeight(22);
|
|
||||||
_ui._notifIcon->show();
|
|
||||||
|
|
||||||
QString tText = tr("%1").arg(Utility::timeAgoInWords(activity._dateTime));
|
|
||||||
_ui._timeLabel->setText(tText);
|
|
||||||
|
|
||||||
// always remove the buttons
|
|
||||||
foreach (auto button, _ui._buttonBox->buttons()) {
|
|
||||||
_ui._buttonBox->removeButton(button);
|
|
||||||
}
|
|
||||||
_buttons.clear();
|
|
||||||
|
|
||||||
// open the notification in the browser if there is a link
|
|
||||||
if(!_myActivity._link.isEmpty()){
|
|
||||||
QString buttonText(tr("More information"));
|
|
||||||
QPushButton *openBrowser = _ui._buttonBox->addButton(buttonText, QDialogButtonBox::AcceptRole);
|
|
||||||
openBrowser->setDefault(true);
|
|
||||||
connect(openBrowser, &QAbstractButton::clicked, this, &NotificationWidget::slotOpenBrowserButtonClicked);
|
|
||||||
_buttons.prepend(openBrowser);
|
|
||||||
}
|
|
||||||
|
|
||||||
// display buttons for the links
|
|
||||||
if (activity._links.isEmpty()) {
|
|
||||||
// is there any case where this code is executed?
|
|
||||||
// in case there is no action defined, do a close button.
|
|
||||||
QPushButton *b = _ui._buttonBox->addButton(QDialogButtonBox::Close);
|
|
||||||
b->setDefault(true);
|
|
||||||
connect(b, &QAbstractButton::clicked, this, &NotificationWidget::slotButtonClicked);
|
|
||||||
_buttons.append(b);
|
|
||||||
} else {
|
|
||||||
foreach (auto link, activity._links) {
|
|
||||||
QPushButton *b = _ui._buttonBox->addButton(link._label, QDialogButtonBox::AcceptRole);
|
|
||||||
b->setDefault(link._isPrimary);
|
|
||||||
connect(b, &QAbstractButton::clicked, this, &NotificationWidget::slotButtonClicked);
|
|
||||||
_buttons.append(b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Activity NotificationWidget::activity() const
|
|
||||||
{
|
|
||||||
return _myActivity;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationWidget::slotOpenBrowserButtonClicked(){
|
|
||||||
QUrl url(_myActivity._link);
|
|
||||||
Utility::openBrowser(url, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationWidget::slotButtonClicked()
|
|
||||||
{
|
|
||||||
QObject *buttonWidget = QObject::sender();
|
|
||||||
int index = -1;
|
|
||||||
if (buttonWidget) {
|
|
||||||
// find the button that was clicked, it has to be in the list
|
|
||||||
// of buttons that were added to the button box before.
|
|
||||||
for (int i = 0; i < _buttons.count(); i++) {
|
|
||||||
if (_buttons.at(i) == buttonWidget) {
|
|
||||||
index = i;
|
|
||||||
}
|
|
||||||
_buttons.at(i)->setEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// there is an extra button: 'Open'
|
|
||||||
if(!_myActivity._link.isEmpty())
|
|
||||||
index--;
|
|
||||||
|
|
||||||
// if the button was found, the link must be called
|
|
||||||
if (index > -1 && _myActivity._links.count() == 0) {
|
|
||||||
// no links, that means it was the close button
|
|
||||||
// empty link. Just close and remove the widget.
|
|
||||||
QString doneText = tr("Closing in a few seconds...");
|
|
||||||
_ui._timeLabel->setText(doneText);
|
|
||||||
emit requestCleanupAndBlacklist(_myActivity);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (index > -1 && index < _myActivity._links.count()) {
|
|
||||||
ActivityLink triggeredLink = _myActivity._links.at(index);
|
|
||||||
_actionLabel = triggeredLink._label;
|
|
||||||
|
|
||||||
if (!triggeredLink._link.isEmpty()) {
|
|
||||||
qCInfo(lcNotifications) << "Notification Link: " << triggeredLink._verb << triggeredLink._link;
|
|
||||||
_progressIndi->startAnimation();
|
|
||||||
emit sendNotificationRequest(_accountName, triggeredLink._link, triggeredLink._verb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationWidget::slotNotificationRequestFinished(int statusCode)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
QString doneText;
|
|
||||||
QLocale locale;
|
|
||||||
|
|
||||||
QString timeStr = locale.toString(QTime::currentTime());
|
|
||||||
|
|
||||||
// the ocs API returns stat code 100 or 200 inside the xml if it succeeded.
|
|
||||||
if (statusCode != OCS_SUCCESS_STATUS_CODE && statusCode != OCS_SUCCESS_STATUS_CODE_V2) {
|
|
||||||
qCWarning(lcNotifications) << "Notification Request to Server failed, leave button visible.";
|
|
||||||
for (i = 0; i < _buttons.count(); i++) {
|
|
||||||
_buttons.at(i)->setEnabled(true);
|
|
||||||
}
|
|
||||||
//: The second parameter is a time, such as 'failed at 09:58pm'
|
|
||||||
doneText = tr("%1 request failed at %2").arg(_actionLabel, timeStr);
|
|
||||||
} else {
|
|
||||||
// the call to the ocs API succeeded.
|
|
||||||
_ui._buttonBox->hide();
|
|
||||||
|
|
||||||
//: The second parameter is a time, such as 'selected at 09:58pm'
|
|
||||||
doneText = tr("'%1' selected at %2").arg(_actionLabel, timeStr);
|
|
||||||
}
|
|
||||||
_ui._timeLabel->setText(doneText);
|
|
||||||
|
|
||||||
_progressIndi->stopAnimation();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) by Klaas Freitag <freitag@owncloud.com>
|
|
||||||
*
|
|
||||||
* This program 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.
|
|
||||||
*
|
|
||||||
* This program 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef NOTIFICATIONWIDGET_H
|
|
||||||
#define NOTIFICATIONWIDGET_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
|
|
||||||
#include "activitydata.h"
|
|
||||||
|
|
||||||
#include "ui_notificationwidget.h"
|
|
||||||
|
|
||||||
#define NOTIFICATION_WIDGET_CLOSE_AFTER_MILLISECS 4800
|
|
||||||
|
|
||||||
class QProgressIndicator;
|
|
||||||
|
|
||||||
namespace OCC {
|
|
||||||
|
|
||||||
class NotificationWidget : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit NotificationWidget(QWidget *parent = 0);
|
|
||||||
|
|
||||||
bool readyToClose();
|
|
||||||
Activity activity() const;
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void sendNotificationRequest(const QString &, const QString &link, const QByteArray &verb);
|
|
||||||
void requestCleanupAndBlacklist(const Activity &activity);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void setActivity(const Activity &activity);
|
|
||||||
void slotNotificationRequestFinished(int statusCode);
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void slotButtonClicked();
|
|
||||||
void slotOpenBrowserButtonClicked();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui_NotificationWidget _ui;
|
|
||||||
Activity _myActivity;
|
|
||||||
QList<QPushButton *> _buttons;
|
|
||||||
QString _accountName;
|
|
||||||
QProgressIndicator *_progressIndi;
|
|
||||||
QString _actionLabel;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // NOTIFICATIONWIDGET_H
|
|
||||||
@@ -1,185 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>NotificationWidget</class>
|
|
||||||
<widget class="QWidget" name="NotificationWidget">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>725</width>
|
|
||||||
<height>129</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Form</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetMaximumSize</enum>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>24</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>26</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="horizontalSpacing">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="verticalSpacing">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="labelsHorizontalLayout" stretch="1,1">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="_notifIcon">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="lineWidth">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="pixmap">
|
|
||||||
<pixmap>../../resources/bell.svg</pixmap>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="_subjectLabel">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Lorem ipsum dolor sit amet</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="_messageLabel">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </string>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="indent">
|
|
||||||
<number>28</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::Preferred</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>28</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="_timeLabel">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>8</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>TextLabel</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="_buttonBox">
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
||||||
@@ -58,7 +58,6 @@
|
|||||||
namespace OCC {
|
namespace OCC {
|
||||||
|
|
||||||
const char propertyAccountC[] = "oc_account";
|
const char propertyAccountC[] = "oc_account";
|
||||||
const char propertyMenuC[] = "oc_account_menu";
|
|
||||||
|
|
||||||
ownCloudGui::ownCloudGui(Application *parent)
|
ownCloudGui::ownCloudGui(Application *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
@@ -617,11 +616,11 @@ void ownCloudGui::updateContextMenu()
|
|||||||
_contextMenu->addMenu(accountMenu);
|
_contextMenu->addMenu(accountMenu);
|
||||||
|
|
||||||
addAccountContextMenu(account, accountMenu, true);
|
addAccountContextMenu(account, accountMenu, true);
|
||||||
fetchNavigationApps(account, accountMenu);
|
fetchNavigationApps(account);
|
||||||
}
|
}
|
||||||
} else if (accountList.count() == 1) {
|
} else if (accountList.count() == 1) {
|
||||||
addAccountContextMenu(accountList.first(), _contextMenu.data(), false);
|
addAccountContextMenu(accountList.first(), _contextMenu.data(), false);
|
||||||
fetchNavigationApps(accountList.first(), _contextMenu.data());
|
fetchNavigationApps(accountList.first());
|
||||||
}
|
}
|
||||||
|
|
||||||
_contextMenu->addSeparator();
|
_contextMenu->addSeparator();
|
||||||
@@ -769,10 +768,9 @@ void ownCloudGui::slotEtagResponseHeaderReceived(const QByteArray &value, int st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ownCloudGui::fetchNavigationApps(AccountStatePtr account, QMenu *accountMenu){
|
void ownCloudGui::fetchNavigationApps(AccountStatePtr account){
|
||||||
OcsNavigationAppsJob *job = new OcsNavigationAppsJob(account->account());
|
OcsNavigationAppsJob *job = new OcsNavigationAppsJob(account->account());
|
||||||
job->setProperty(propertyAccountC, QVariant::fromValue(account));
|
job->setProperty(propertyAccountC, QVariant::fromValue(account));
|
||||||
job->setProperty(propertyMenuC, QVariant::fromValue(accountMenu));
|
|
||||||
job->addRawHeader("If-None-Match", account->navigationAppsEtagResponseHeader());
|
job->addRawHeader("If-None-Match", account->navigationAppsEtagResponseHeader());
|
||||||
connect(job, &OcsNavigationAppsJob::appsJobFinished, this, &ownCloudGui::slotNavigationAppsFetched);
|
connect(job, &OcsNavigationAppsJob::appsJobFinished, this, &ownCloudGui::slotNavigationAppsFetched);
|
||||||
connect(job, &OcsNavigationAppsJob::etagResponseHeaderReceived, this, &ownCloudGui::slotEtagResponseHeaderReceived);
|
connect(job, &OcsNavigationAppsJob::etagResponseHeaderReceived, this, &ownCloudGui::slotEtagResponseHeaderReceived);
|
||||||
@@ -829,9 +827,18 @@ void ownCloudGui::slotNavigationAppsFetched(const QJsonDocument &reply, int stat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(QObject *accountMenuObj = qvariant_cast<QObject*>(sender()->property(propertyMenuC))){
|
// TODO see pull #523
|
||||||
if(QMenu *accountMenu = dynamic_cast<QMenu*>(accountMenuObj))
|
auto accountList = AccountManager::instance()->accounts();
|
||||||
buildNavigationAppsMenu(account, accountMenu);
|
if(accountList.size() > 1){
|
||||||
|
// the list of apps will be displayed under the account that it belongs to
|
||||||
|
foreach (QMenu *accountMenu, _accountMenus) {
|
||||||
|
if(accountMenu->title() == account->account()->displayName()){
|
||||||
|
buildNavigationAppsMenu(account, accountMenu);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if(accountList.size() == 1){
|
||||||
|
buildNavigationAppsMenu(account, _contextMenu.data());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ private:
|
|||||||
void setPauseOnAllFoldersHelper(bool pause);
|
void setPauseOnAllFoldersHelper(bool pause);
|
||||||
void setupActions();
|
void setupActions();
|
||||||
void addAccountContextMenu(AccountStatePtr accountState, QMenu *menu, bool separateMenu);
|
void addAccountContextMenu(AccountStatePtr accountState, QMenu *menu, bool separateMenu);
|
||||||
void fetchNavigationApps(AccountStatePtr account, QMenu *accountMenu);
|
void fetchNavigationApps(AccountStatePtr account);
|
||||||
void buildNavigationAppsMenu(AccountStatePtr account, QMenu *accountMenu);
|
void buildNavigationAppsMenu(AccountStatePtr account, QMenu *accountMenu);
|
||||||
|
|
||||||
QPointer<Systray> _tray;
|
QPointer<Systray> _tray;
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
|
|||||||
accountAdded(ai.data());
|
accountAdded(ai.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
_actionBefore = new QAction;
|
_actionBefore = new QAction(this);
|
||||||
_toolBar->addAction(_actionBefore);
|
_toolBar->addAction(_actionBefore);
|
||||||
|
|
||||||
// Adds space between users + activities and general + network actions
|
// Adds space between users + activities and general + network actions
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Close</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
|||||||
, _unshareLinkAction(nullptr)
|
, _unshareLinkAction(nullptr)
|
||||||
{
|
{
|
||||||
_ui->setupUi(this);
|
_ui->setupUi(this);
|
||||||
|
_ui->shareLinkToolButton->hide();
|
||||||
|
|
||||||
//Is this a file or folder?
|
//Is this a file or folder?
|
||||||
QFileInfo fi(localPath);
|
QFileInfo fi(localPath);
|
||||||
@@ -65,20 +66,14 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
|||||||
|
|
||||||
// the following progress indicator widgets are added to layouts which makes them
|
// the following progress indicator widgets are added to layouts which makes them
|
||||||
// automatically deleted once the dialog dies.
|
// automatically deleted once the dialog dies.
|
||||||
_pi_create = new QProgressIndicator();
|
_pi_indicator = new QProgressIndicator();
|
||||||
_pi_password = new QProgressIndicator();
|
_ui->horizontalLayout->insertWidget(1, _pi_indicator, Qt::AlignCenter);
|
||||||
_pi_date = new QProgressIndicator();
|
_ui->indicatorWidget->hide();
|
||||||
_pi_editing = new QProgressIndicator();
|
|
||||||
|
|
||||||
// TODO: where to loading should show up?
|
connect(_ui->enableShareLink, &QCheckBox::toggled, this, &ShareLinkWidget::slotCreateOrDeleteShareLink);
|
||||||
// _ui->verticalLayout->addWidget(_pi_create, Qt::AlignCenter);
|
|
||||||
// _ui->verticalLayout->addWidget(_pi_password, Qt::AlignCenter);
|
|
||||||
// _ui->verticalLayout->addWidget(_pi_editing, Qt::AlignCenter);
|
|
||||||
|
|
||||||
connect(_ui->enableShareLink, &QCheckBox::toggled, this, &ShareLinkWidget::slotCreateorDeleteShareLink);
|
|
||||||
connect(_ui->lineEdit_password, &QLineEdit::returnPressed, this, &ShareLinkWidget::slotCreatePassword);
|
connect(_ui->lineEdit_password, &QLineEdit::returnPressed, this, &ShareLinkWidget::slotCreatePassword);
|
||||||
connect(_ui->confirmPassword, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreatePassword);
|
connect(_ui->confirmPassword, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreatePassword);
|
||||||
connect(_ui->confirmExpirationDate, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreatePassword);
|
connect(_ui->confirmExpirationDate, &QAbstractButton::clicked, this, &ShareLinkWidget::slotSetExpireDate);
|
||||||
connect(_ui->calendar, &QDateTimeEdit::dateChanged, this, &ShareLinkWidget::slotExpireDateChanged);
|
connect(_ui->calendar, &QDateTimeEdit::dateChanged, this, &ShareLinkWidget::slotExpireDateChanged);
|
||||||
|
|
||||||
_ui->errorLabel->hide();
|
_ui->errorLabel->hide();
|
||||||
@@ -143,9 +138,19 @@ ShareLinkWidget::~ShareLinkWidget()
|
|||||||
delete _ui;
|
delete _ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShareLinkWidget::toggleAnimation(bool start){
|
||||||
|
if(start && !_pi_indicator->isAnimated())
|
||||||
|
_pi_indicator->startAnimation();
|
||||||
|
else
|
||||||
|
_pi_indicator->stopAnimation();
|
||||||
|
|
||||||
|
_ui->indicatorWidget->setVisible(start);
|
||||||
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::getShares()
|
void ShareLinkWidget::getShares()
|
||||||
{
|
{
|
||||||
if (_manager) {
|
if (_manager) {
|
||||||
|
toggleAnimation(true);
|
||||||
_manager->fetchShares(_sharePath);
|
_manager->fetchShares(_sharePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,7 +169,7 @@ void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shar
|
|||||||
// Connect all shares signals to gui slots
|
// Connect all shares signals to gui slots
|
||||||
connect(share.data(), &Share::serverError, this, &ShareLinkWidget::slotServerError);
|
connect(share.data(), &Share::serverError, this, &ShareLinkWidget::slotServerError);
|
||||||
connect(share.data(), &Share::shareDeleted, this, &ShareLinkWidget::slotDeleteShareFetched);
|
connect(share.data(), &Share::shareDeleted, this, &ShareLinkWidget::slotDeleteShareFetched);
|
||||||
//TODO connect(_linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireSet);
|
connect(_linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireDateSet);
|
||||||
connect(_linkShare.data(), &LinkShare::passwordSet, this, &ShareLinkWidget::slotPasswordSet);
|
connect(_linkShare.data(), &LinkShare::passwordSet, this, &ShareLinkWidget::slotPasswordSet);
|
||||||
connect(_linkShare.data(), &LinkShare::passwordSetError, this, &ShareLinkWidget::slotPasswordSetError);
|
connect(_linkShare.data(), &LinkShare::passwordSetError, this, &ShareLinkWidget::slotPasswordSetError);
|
||||||
|
|
||||||
@@ -173,12 +178,15 @@ void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shar
|
|||||||
SharePermissions perm = _linkShare->getPermissions();
|
SharePermissions perm = _linkShare->getPermissions();
|
||||||
QActionGroup *permissionsGroup = new QActionGroup(this);
|
QActionGroup *permissionsGroup = new QActionGroup(this);
|
||||||
|
|
||||||
|
// Prepare sharing menu
|
||||||
|
_linkContextMenu = new QMenu(this);
|
||||||
|
|
||||||
// radio button style
|
// radio button style
|
||||||
permissionsGroup->setExclusive(true);
|
permissionsGroup->setExclusive(true);
|
||||||
|
|
||||||
if(_isFile){
|
if(_isFile){
|
||||||
checked = perm & (SharePermissionRead & SharePermissionUpdate);
|
checked = perm & (SharePermissionRead & SharePermissionUpdate);
|
||||||
_allowEditingLinkAction = permissionsGroup->addAction(tr("Allow Editing"));
|
_allowEditingLinkAction = _linkContextMenu->addAction(tr("Allow Editing"));
|
||||||
_allowEditingLinkAction->setCheckable(true);
|
_allowEditingLinkAction->setCheckable(true);
|
||||||
_allowEditingLinkAction->setChecked(checked);
|
_allowEditingLinkAction->setChecked(checked);
|
||||||
|
|
||||||
@@ -202,9 +210,6 @@ void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shar
|
|||||||
_allowUploadLinkAction->setChecked(checked);
|
_allowUploadLinkAction->setChecked(checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare sharing menu
|
|
||||||
_linkContextMenu = new QMenu(this);
|
|
||||||
|
|
||||||
// Add copy action (icon only)
|
// Add copy action (icon only)
|
||||||
_copyLinkAction = _linkContextMenu->addAction(QIcon(":/client/resources/copy.svg"),
|
_copyLinkAction = _linkContextMenu->addAction(QIcon(":/client/resources/copy.svg"),
|
||||||
tr("Copy link"));
|
tr("Copy link"));
|
||||||
@@ -240,6 +245,7 @@ void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shar
|
|||||||
_expirationDateLinkAction = _linkContextMenu->addAction(tr("Expiration Date"));
|
_expirationDateLinkAction = _linkContextMenu->addAction(tr("Expiration Date"));
|
||||||
_expirationDateLinkAction->setCheckable(true);
|
_expirationDateLinkAction->setCheckable(true);
|
||||||
if(_linkShare->getExpireDate().isValid()){
|
if(_linkShare->getExpireDate().isValid()){
|
||||||
|
_ui->calendar->setDate(_linkShare->getExpireDate());
|
||||||
_expirationDateLinkAction->setChecked(true);
|
_expirationDateLinkAction->setChecked(true);
|
||||||
_ui->expirationShareProperty->show();
|
_ui->expirationShareProperty->show();
|
||||||
}
|
}
|
||||||
@@ -265,81 +271,46 @@ void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shar
|
|||||||
_ui->shareLinkToolButton->setEnabled(true);
|
_ui->shareLinkToolButton->setEnabled(true);
|
||||||
_ui->enableShareLink->setEnabled(true);
|
_ui->enableShareLink->setEnabled(true);
|
||||||
_ui->enableShareLink->setChecked(true);
|
_ui->enableShareLink->setChecked(true);
|
||||||
|
|
||||||
|
// show sharing options
|
||||||
|
_ui->shareLinkToolButton->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleAnimation(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
|
||||||
//void ShareLinkWidget::slotShareSelectionChanged()
|
|
||||||
//{
|
|
||||||
// // Disable running progress indicators
|
|
||||||
// _pi_create->stopAnimation();
|
|
||||||
// _pi_editing->stopAnimation();
|
|
||||||
// _pi_date->stopAnimation();
|
|
||||||
// _pi_password->stopAnimation();
|
|
||||||
|
|
||||||
// _ui->errorLabel->hide();
|
|
||||||
// _ui->passwordShareProperty->show();
|
|
||||||
// _ui->expirationShareProperty->show();
|
|
||||||
|
|
||||||
// if (!_account->capabilities().sharePublicLinkAllowUpload()) {
|
|
||||||
// _allowUploadEditingLinkAction->setEnabled(false);
|
|
||||||
// _allowUploadLinkAction->setEnabled(false);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Password state
|
|
||||||
// _ui->lineEdit_password->setEnabled(_linkShare->isPasswordSet());
|
|
||||||
// if(_linkShare->isPasswordSet()) _ui->lineEdit_password->setPlaceholderText("********");
|
|
||||||
// _ui->lineEdit_password->setText(QString());
|
|
||||||
// _ui->lineEdit_password->setEnabled(_linkShare->isPasswordSet());
|
|
||||||
// _ui->confirmPassword->setEnabled(_linkShare->isPasswordSet());
|
|
||||||
|
|
||||||
// // Expiry state
|
|
||||||
// _ui->calendar->setMinimumDate(QDate::currentDate().addDays(1));
|
|
||||||
// if (_linkShare->getExpireDate().isValid()) {
|
|
||||||
// _ui->calendar->setDate(_linkShare->getExpireDate());
|
|
||||||
// _ui->calendar->setEnabled(true);
|
|
||||||
// }
|
|
||||||
// // Public upload state (box is hidden for files)
|
|
||||||
// if (!_isFile) {
|
|
||||||
// if (_linkShare->getPublicUpload()) {
|
|
||||||
// if (_linkShare->getShowFileListing()) {
|
|
||||||
// _allowUploadEditingLinkAction->setChecked(true);
|
|
||||||
// } else {
|
|
||||||
// _allowUploadLinkAction->setChecked(true);
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// _readOnlyLinkAction->setChecked(true);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
void ShareLinkWidget::setExpireDate(const QDate &date)
|
void ShareLinkWidget::setExpireDate(const QDate &date)
|
||||||
{
|
{
|
||||||
if (_linkShare) {
|
if (_linkShare) {
|
||||||
_pi_date->startAnimation();
|
toggleAnimation(true);
|
||||||
_ui->errorLabel->hide();
|
_ui->errorLabel->hide();
|
||||||
_linkShare->setExpireDate(date);
|
_linkShare->setExpireDate(date);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
void ShareLinkWidget::slotExpireDateSet()
|
||||||
//void ShareLinkWidget::slotExpireSet()
|
{
|
||||||
//{
|
toggleAnimation(false);
|
||||||
// if (sender() == _linkShare.data()) {
|
}
|
||||||
// slotShareSelectionChanged();
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
void ShareLinkWidget::slotExpireDateChanged(const QDate &date)
|
void ShareLinkWidget::slotExpireDateChanged(const QDate &date)
|
||||||
{
|
{
|
||||||
setExpireDate(date);
|
setExpireDate(date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShareLinkWidget::slotSetExpireDate()
|
||||||
|
{
|
||||||
|
slotExpireDateChanged(_ui->calendar->date());
|
||||||
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::slotCreatePassword()
|
void ShareLinkWidget::slotCreatePassword()
|
||||||
{
|
{
|
||||||
if (!_manager) {
|
if (!_manager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleAnimation(true);
|
||||||
|
|
||||||
if (!_linkShare) {
|
if (!_linkShare) {
|
||||||
// If share creation requires a password, we'll be in this case
|
// If share creation requires a password, we'll be in this case
|
||||||
if (_ui->lineEdit_password->text().isEmpty()) {
|
if (_ui->lineEdit_password->text().isEmpty()) {
|
||||||
@@ -347,21 +318,21 @@ void ShareLinkWidget::slotCreatePassword()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_pi_create->startAnimation();
|
|
||||||
_manager->createLinkShare(_sharePath, QString(), _ui->lineEdit_password->text());
|
_manager->createLinkShare(_sharePath, QString(), _ui->lineEdit_password->text());
|
||||||
} else {
|
} else {
|
||||||
setPassword(_ui->lineEdit_password->text());
|
setPassword(_ui->lineEdit_password->text());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::slotCreateorDeleteShareLink(bool checked)
|
void ShareLinkWidget::slotCreateOrDeleteShareLink(bool checked)
|
||||||
{
|
{
|
||||||
if (!_manager) {
|
if (!_manager) {
|
||||||
qCWarning(lcSharing) << "No share manager set.";
|
qCWarning(lcSharing) << "No share manager set.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_pi_create->startAnimation();
|
toggleAnimation(true);
|
||||||
|
|
||||||
if(checked){
|
if(checked){
|
||||||
_manager->createLinkShare(_sharePath, QString(), QString());
|
_manager->createLinkShare(_sharePath, QString(), QString());
|
||||||
} else {
|
} else {
|
||||||
@@ -371,14 +342,13 @@ void ShareLinkWidget::slotCreateorDeleteShareLink(bool checked)
|
|||||||
}
|
}
|
||||||
confirmAndDeleteShare();
|
confirmAndDeleteShare();
|
||||||
}
|
}
|
||||||
|
|
||||||
_ui->shareLinkToolButton->setEnabled(checked);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::setPassword(const QString &password)
|
void ShareLinkWidget::setPassword(const QString &password)
|
||||||
{
|
{
|
||||||
if (_linkShare) {
|
if (_linkShare) {
|
||||||
_pi_password->startAnimation();
|
toggleAnimation(true);
|
||||||
|
|
||||||
_ui->errorLabel->hide();
|
_ui->errorLabel->hide();
|
||||||
_linkShare->setPassword(password);
|
_linkShare->setPassword(password);
|
||||||
}
|
}
|
||||||
@@ -389,7 +359,6 @@ void ShareLinkWidget::slotPasswordSet()
|
|||||||
if (!_linkShare)
|
if (!_linkShare)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_pi_password->stopAnimation();
|
|
||||||
_ui->lineEdit_password->setText(QString());
|
_ui->lineEdit_password->setText(QString());
|
||||||
if (_linkShare->isPasswordSet()) {
|
if (_linkShare->isPasswordSet()) {
|
||||||
_ui->lineEdit_password->setPlaceholderText("********");
|
_ui->lineEdit_password->setPlaceholderText("********");
|
||||||
@@ -398,6 +367,8 @@ void ShareLinkWidget::slotPasswordSet()
|
|||||||
_ui->lineEdit_password->setPlaceholderText(QString());
|
_ui->lineEdit_password->setPlaceholderText(QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleAnimation(false);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When setting/deleting a password from a share the old share is
|
* When setting/deleting a password from a share the old share is
|
||||||
* deleted and a new one is created. So we need to refetch the shares
|
* deleted and a new one is created. So we need to refetch the shares
|
||||||
@@ -410,21 +381,26 @@ void ShareLinkWidget::slotPasswordSet()
|
|||||||
|
|
||||||
void ShareLinkWidget::slotDeleteShareFetched()
|
void ShareLinkWidget::slotDeleteShareFetched()
|
||||||
{
|
{
|
||||||
|
toggleAnimation(true);
|
||||||
|
_linkShare.clear();
|
||||||
|
_ui->enableShareLink->setChecked(false);
|
||||||
|
_ui->shareLinkToolButton->setEnabled(false);
|
||||||
|
_ui->shareLinkToolButton->hide();
|
||||||
|
togglePasswordOptions(false);
|
||||||
|
toggleExpireDateOptions(false);
|
||||||
getShares();
|
getShares();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::slotCreateShareFetched()
|
void ShareLinkWidget::slotCreateShareFetched()
|
||||||
{
|
{
|
||||||
_pi_create->stopAnimation();
|
toggleAnimation(true);
|
||||||
_pi_password->stopAnimation();
|
|
||||||
getShares();
|
getShares();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message)
|
void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message)
|
||||||
{
|
{
|
||||||
// Prepare password entry
|
toggleAnimation(true);
|
||||||
_pi_create->stopAnimation();
|
|
||||||
_pi_password->stopAnimation();
|
|
||||||
_ui->passwordShareProperty->show();
|
_ui->passwordShareProperty->show();
|
||||||
if (!message.isEmpty()) {
|
if (!message.isEmpty()) {
|
||||||
_ui->errorLabel->setText(message);
|
_ui->errorLabel->setText(message);
|
||||||
@@ -439,7 +415,14 @@ void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message)
|
|||||||
void ShareLinkWidget::togglePasswordOptions(bool enable)
|
void ShareLinkWidget::togglePasswordOptions(bool enable)
|
||||||
{
|
{
|
||||||
_ui->passwordShareProperty->setVisible(enable);
|
_ui->passwordShareProperty->setVisible(enable);
|
||||||
if(enable) _ui->lineEdit_password->setFocus();
|
|
||||||
|
if(enable) {
|
||||||
|
_ui->lineEdit_password->setFocus();
|
||||||
|
} else {
|
||||||
|
// 'deletes' password
|
||||||
|
if(_linkShare)
|
||||||
|
_linkShare->setPassword(QString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::toggleExpireDateOptions(bool enable)
|
void ShareLinkWidget::toggleExpireDateOptions(bool enable)
|
||||||
@@ -447,9 +430,13 @@ void ShareLinkWidget::toggleExpireDateOptions(bool enable)
|
|||||||
_ui->expirationShareProperty->setVisible(enable);
|
_ui->expirationShareProperty->setVisible(enable);
|
||||||
if (enable) {
|
if (enable) {
|
||||||
const QDate date = QDate::currentDate().addDays(1);
|
const QDate date = QDate::currentDate().addDays(1);
|
||||||
setExpireDate(date);
|
|
||||||
_ui->calendar->setDate(date);
|
_ui->calendar->setDate(date);
|
||||||
_ui->calendar->setMinimumDate(date);
|
_ui->calendar->setMinimumDate(date);
|
||||||
|
_ui->calendar->setFocus();
|
||||||
|
} else {
|
||||||
|
// 'deletes' expire date
|
||||||
|
if(_linkShare)
|
||||||
|
_linkShare->setExpireDate(QDate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -469,12 +456,8 @@ void ShareLinkWidget::confirmAndDeleteShare()
|
|||||||
|
|
||||||
connect(messageBox, &QMessageBox::finished, this,
|
connect(messageBox, &QMessageBox::finished, this,
|
||||||
[messageBox, yesButton, this]() {
|
[messageBox, yesButton, this]() {
|
||||||
if (messageBox->clickedButton() == yesButton){
|
if (messageBox->clickedButton() == yesButton)
|
||||||
// TODO: dlete is not hapenning correctly
|
|
||||||
this->_linkShare->deleteShare();
|
this->_linkShare->deleteShare();
|
||||||
this->_ui->enableShareLink->setChecked(false);
|
|
||||||
this->_ui->shareLinkToolButton->setEnabled(false);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
messageBox->open();
|
messageBox->open();
|
||||||
}
|
}
|
||||||
@@ -525,16 +508,13 @@ void ShareLinkWidget::slotLinkContextMenuActionTriggered(QAction *action)
|
|||||||
toggleExpireDateOptions(state);
|
toggleExpireDateOptions(state);
|
||||||
|
|
||||||
} else if (action == _unshareLinkAction) {
|
} else if (action == _unshareLinkAction) {
|
||||||
confirmAndDeleteShare();
|
slotCreateOrDeleteShareLink(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShareLinkWidget::slotServerError(int code, const QString &message)
|
void ShareLinkWidget::slotServerError(int code, const QString &message)
|
||||||
{
|
{
|
||||||
_pi_create->stopAnimation();
|
toggleAnimation(false);
|
||||||
_pi_date->stopAnimation();
|
|
||||||
_pi_password->stopAnimation();
|
|
||||||
_pi_editing->stopAnimation();
|
|
||||||
|
|
||||||
qCWarning(lcSharing) << "Error from server" << code << message;
|
qCWarning(lcSharing) << "Error from server" << code << message;
|
||||||
displayError(message);
|
displayError(message);
|
||||||
|
|||||||
@@ -61,10 +61,11 @@ private slots:
|
|||||||
void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
|
void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
|
||||||
//void slotShareSelectionChanged();
|
//void slotShareSelectionChanged();
|
||||||
|
|
||||||
void slotCreateorDeleteShareLink(bool checked);
|
void slotCreateOrDeleteShareLink(bool checked);
|
||||||
void slotCreatePassword();
|
void slotCreatePassword();
|
||||||
|
|
||||||
void slotExpireDateChanged(const QDate &date);
|
void slotExpireDateChanged(const QDate &date);
|
||||||
|
void slotSetExpireDate();
|
||||||
|
|
||||||
void slotContextMenuButtonClicked();
|
void slotContextMenuButtonClicked();
|
||||||
void slotLinkContextMenuActionTriggered(QAction *action);
|
void slotLinkContextMenuActionTriggered(QAction *action);
|
||||||
@@ -72,8 +73,9 @@ private slots:
|
|||||||
void slotDeleteShareFetched();
|
void slotDeleteShareFetched();
|
||||||
void slotCreateShareFetched();
|
void slotCreateShareFetched();
|
||||||
void slotCreateShareRequiresPassword(const QString &message);
|
void slotCreateShareRequiresPassword(const QString &message);
|
||||||
|
|
||||||
void slotPasswordSet();
|
void slotPasswordSet();
|
||||||
//void slotExpireSet();
|
void slotExpireDateSet();
|
||||||
|
|
||||||
void slotServerError(int code, const QString &message);
|
void slotServerError(int code, const QString &message);
|
||||||
void slotPasswordSetError(int code, const QString &message);
|
void slotPasswordSetError(int code, const QString &message);
|
||||||
@@ -95,10 +97,7 @@ private:
|
|||||||
/** Retrieve a share's name, accounting for _namesSupported */
|
/** Retrieve a share's name, accounting for _namesSupported */
|
||||||
QString shareName() const;
|
QString shareName() const;
|
||||||
|
|
||||||
/**
|
void toggleAnimation(bool start);
|
||||||
* Retrieve the selected share, returning 0 if none.
|
|
||||||
*/
|
|
||||||
//QSharedPointer<LinkShare> selectedShare() const;
|
|
||||||
|
|
||||||
Ui::ShareLinkWidget *_ui;
|
Ui::ShareLinkWidget *_ui;
|
||||||
AccountPtr _account;
|
AccountPtr _account;
|
||||||
@@ -106,10 +105,7 @@ private:
|
|||||||
QString _localPath;
|
QString _localPath;
|
||||||
QString _shareUrl;
|
QString _shareUrl;
|
||||||
|
|
||||||
QProgressIndicator *_pi_create;
|
QProgressIndicator *_pi_indicator;
|
||||||
QProgressIndicator *_pi_password;
|
|
||||||
QProgressIndicator *_pi_date;
|
|
||||||
QProgressIndicator *_pi_editing;
|
|
||||||
|
|
||||||
ShareManager *_manager;
|
ShareManager *_manager;
|
||||||
QSharedPointer<LinkShare> _linkShare;
|
QSharedPointer<LinkShare> _linkShare;
|
||||||
|
|||||||
@@ -181,6 +181,27 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="indicatorWidget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="passwordShareProperty" native="true">
|
<widget class="QWidget" name="passwordShareProperty" native="true">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -266,7 +287,7 @@
|
|||||||
<enum>QLineEdit::Password</enum>
|
<enum>QLineEdit::Password</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -376,14 +376,15 @@ ShareUserLine::ShareUserLine(QSharedPointer<Share> share,
|
|||||||
|
|
||||||
// adds permissions
|
// adds permissions
|
||||||
// can edit permission
|
// can edit permission
|
||||||
bool enabled = maxSharingPermissions & (SharePermissionRead & SharePermissionUpdate);
|
bool enabled = (maxSharingPermissions & SharePermissionUpdate);
|
||||||
if(!_isFile) enabled = enabled & (SharePermissionCreate & SharePermissionDelete);
|
if(!_isFile) enabled = enabled && (maxSharingPermissions & SharePermissionCreate &&
|
||||||
|
maxSharingPermissions & SharePermissionDelete);
|
||||||
_ui->permissionsEdit->setEnabled(enabled);
|
_ui->permissionsEdit->setEnabled(enabled);
|
||||||
connect(_ui->permissionsEdit, &QAbstractButton::clicked, this, &ShareUserLine::slotEditPermissionsChanged);
|
connect(_ui->permissionsEdit, &QAbstractButton::clicked, this, &ShareUserLine::slotEditPermissionsChanged);
|
||||||
|
|
||||||
// create menu with checkable permissions
|
// create menu with checkable permissions
|
||||||
QMenu *menu = new QMenu(this);
|
QMenu *menu = new QMenu(this);
|
||||||
_permissionReshare= new QAction(tr("Can reshare"));
|
_permissionReshare= new QAction(tr("Can reshare"), this);
|
||||||
_permissionReshare->setCheckable(true);
|
_permissionReshare->setCheckable(true);
|
||||||
_permissionReshare->setEnabled(maxSharingPermissions & SharePermissionShare);
|
_permissionReshare->setEnabled(maxSharingPermissions & SharePermissionShare);
|
||||||
menu->addAction(_permissionReshare);
|
menu->addAction(_permissionReshare);
|
||||||
@@ -393,19 +394,19 @@ ShareUserLine::ShareUserLine(QSharedPointer<Share> share,
|
|||||||
* Files can't have create or delete permissions
|
* Files can't have create or delete permissions
|
||||||
*/
|
*/
|
||||||
if (!_isFile) {
|
if (!_isFile) {
|
||||||
_permissionCreate = new QAction(tr("Can create"));
|
_permissionCreate = new QAction(tr("Can create"), this);
|
||||||
_permissionCreate->setCheckable(true);
|
_permissionCreate->setCheckable(true);
|
||||||
_permissionCreate->setEnabled(maxSharingPermissions & SharePermissionCreate);
|
_permissionCreate->setEnabled(maxSharingPermissions & SharePermissionCreate);
|
||||||
menu->addAction(_permissionCreate);
|
menu->addAction(_permissionCreate);
|
||||||
connect(_permissionCreate, &QAction::triggered, this, &ShareUserLine::slotPermissionsChanged);
|
connect(_permissionCreate, &QAction::triggered, this, &ShareUserLine::slotPermissionsChanged);
|
||||||
|
|
||||||
_permissionChange = new QAction(tr("Can change"));
|
_permissionChange = new QAction(tr("Can change"), this);
|
||||||
_permissionChange->setCheckable(true);
|
_permissionChange->setCheckable(true);
|
||||||
_permissionChange->setEnabled(maxSharingPermissions & SharePermissionUpdate);
|
_permissionChange->setEnabled(maxSharingPermissions & SharePermissionUpdate);
|
||||||
menu->addAction(_permissionChange);
|
menu->addAction(_permissionChange);
|
||||||
connect(_permissionChange, &QAction::triggered, this, &ShareUserLine::slotPermissionsChanged);
|
connect(_permissionChange, &QAction::triggered, this, &ShareUserLine::slotPermissionsChanged);
|
||||||
|
|
||||||
_permissionDelete = new QAction(tr("Can delete"));
|
_permissionDelete = new QAction(tr("Can delete"), this);
|
||||||
_permissionDelete->setCheckable(true);
|
_permissionDelete->setCheckable(true);
|
||||||
_permissionDelete->setEnabled(maxSharingPermissions & SharePermissionDelete);
|
_permissionDelete->setEnabled(maxSharingPermissions & SharePermissionDelete);
|
||||||
menu->addAction(_permissionDelete);
|
menu->addAction(_permissionDelete);
|
||||||
@@ -526,25 +527,28 @@ void ShareUserLine::slotEditPermissionsChanged()
|
|||||||
|
|
||||||
Share::Permissions permissions = SharePermissionRead;
|
Share::Permissions permissions = SharePermissionRead;
|
||||||
|
|
||||||
if (_permissionReshare->isChecked()) {
|
// folders edit = CREATE, READ, UPDATE, DELETE
|
||||||
permissions |= SharePermissionShare;
|
// files edit = READ + UPDATE
|
||||||
}
|
|
||||||
|
|
||||||
if (_ui->permissionsEdit->checkState() == Qt::Checked) {
|
if (_ui->permissionsEdit->checkState() == Qt::Checked) {
|
||||||
if (_permissionChange->isEnabled())
|
|
||||||
permissions |= SharePermissionUpdate;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Files can't have create or delete permisisons
|
* Files can't have create or delete permisisons
|
||||||
*/
|
*/
|
||||||
if (!_isFile) {
|
if (!_isFile) {
|
||||||
|
if (_permissionChange->isEnabled())
|
||||||
|
permissions |= SharePermissionUpdate;
|
||||||
if (_permissionCreate->isEnabled())
|
if (_permissionCreate->isEnabled())
|
||||||
permissions |= SharePermissionCreate;
|
permissions |= SharePermissionCreate;
|
||||||
if (_permissionDelete->isEnabled())
|
if (_permissionDelete->isEnabled())
|
||||||
permissions |= SharePermissionDelete;
|
permissions |= SharePermissionDelete;
|
||||||
|
} else {
|
||||||
|
permissions |= SharePermissionUpdate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_isFile && _permissionReshare->isEnabled() && _permissionReshare->isChecked())
|
||||||
|
permissions |= SharePermissionShare;
|
||||||
|
|
||||||
_share->setPermissions(permissions);
|
_share->setPermissions(permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -554,23 +558,20 @@ void ShareUserLine::slotPermissionsChanged()
|
|||||||
|
|
||||||
Share::Permissions permissions = SharePermissionRead;
|
Share::Permissions permissions = SharePermissionRead;
|
||||||
|
|
||||||
if (_permissionReshare->isChecked()) {
|
if (_permissionReshare->isChecked())
|
||||||
permissions |= SharePermissionShare;
|
permissions |= SharePermissionShare;
|
||||||
}
|
|
||||||
|
|
||||||
if (!_isFile) {
|
if (!_isFile) {
|
||||||
if (_permissionCreate->isChecked()) {
|
if (_permissionChange->isChecked())
|
||||||
permissions |= SharePermissionCreate;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_permissionChange->isChecked()) {
|
|
||||||
permissions |= SharePermissionUpdate;
|
permissions |= SharePermissionUpdate;
|
||||||
}
|
if (_permissionCreate->isChecked())
|
||||||
|
permissions |= SharePermissionCreate;
|
||||||
if (_permissionDelete->isChecked()) {
|
if (_permissionDelete->isChecked())
|
||||||
permissions |= SharePermissionDelete;
|
permissions |= SharePermissionDelete;
|
||||||
}
|
} else {
|
||||||
}
|
if (_ui->permissionsEdit->isChecked())
|
||||||
|
permissions |= SharePermissionUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
_share->setPermissions(permissions);
|
_share->setPermissions(permissions);
|
||||||
}
|
}
|
||||||
@@ -616,21 +617,20 @@ void ShareUserLine::displayPermissions()
|
|||||||
{
|
{
|
||||||
auto perm = _share->getPermissions();
|
auto perm = _share->getPermissions();
|
||||||
|
|
||||||
if (perm & SharePermissionUpdate
|
// folders edit = CREATE, READ, UPDATE, DELETE
|
||||||
&& (_isFile
|
// files edit = READ + UPDATE
|
||||||
|| (perm & SharePermissionCreate
|
if (perm & SharePermissionUpdate && (_isFile ||
|
||||||
&& perm & SharePermissionDelete))) {
|
(perm & SharePermissionCreate && perm & SharePermissionDelete))) {
|
||||||
_ui->permissionsEdit->setCheckState(Qt::Checked);
|
_ui->permissionsEdit->setCheckState(Qt::Checked);
|
||||||
} else if (perm & (SharePermissionUpdate | SharePermissionCreate | SharePermissionDelete)) {
|
} else if (!_isFile && perm & (SharePermissionUpdate | SharePermissionCreate | SharePermissionDelete)) {
|
||||||
_ui->permissionsEdit->setCheckState(Qt::PartiallyChecked);
|
_ui->permissionsEdit->setCheckState(Qt::PartiallyChecked);
|
||||||
} else {
|
} else if(perm & SharePermissionRead) {
|
||||||
_ui->permissionsEdit->setCheckState(Qt::Unchecked);
|
_ui->permissionsEdit->setCheckState(Qt::Unchecked);
|
||||||
}
|
}
|
||||||
|
|
||||||
_permissionReshare->setChecked(Qt::Unchecked);
|
// edit is independent of reshare
|
||||||
if (perm & SharePermissionShare) {
|
if (perm & SharePermissionShare)
|
||||||
_permissionReshare->setChecked(Qt::Checked);
|
_permissionReshare->setChecked(Qt::Checked);
|
||||||
}
|
|
||||||
|
|
||||||
if(!_isFile){
|
if(!_isFile){
|
||||||
_permissionCreate->setChecked(perm & SharePermissionCreate);
|
_permissionCreate->setChecked(perm & SharePermissionCreate);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include <QWebEngineUrlRequestJob>
|
#include <QWebEngineUrlRequestJob>
|
||||||
#include <QWebEngineUrlSchemeHandler>
|
#include <QWebEngineUrlSchemeHandler>
|
||||||
#include <QWebEngineView>
|
#include <QWebEngineView>
|
||||||
|
#include <QDesktopServices>
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
#include <QLocale>
|
#include <QLocale>
|
||||||
@@ -36,6 +37,19 @@ Q_SIGNALS:
|
|||||||
void urlCatched(QString user, QString pass, QString host);
|
void urlCatched(QString user, QString pass, QString host);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class WebEnginePage : public QWebEnginePage {
|
||||||
|
public:
|
||||||
|
WebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr);
|
||||||
|
QWebEnginePage * createWindow(QWebEnginePage::WebWindowType type) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
// We need a separate class here, since we cannot simply return the same WebEnginePage object
|
||||||
|
// this leads to a strage segfault somewhere deep inside of the QWebEngine code
|
||||||
|
class ExternalWebEnginePage : public QWebEnginePage {
|
||||||
|
public:
|
||||||
|
ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr);
|
||||||
|
bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override;
|
||||||
|
};
|
||||||
|
|
||||||
WebView::WebView(QWidget *parent)
|
WebView::WebView(QWidget *parent)
|
||||||
: QWidget(parent),
|
: QWidget(parent),
|
||||||
@@ -45,11 +59,13 @@ WebView::WebView(QWidget *parent)
|
|||||||
|
|
||||||
_webview = new QWebEngineView(this);
|
_webview = new QWebEngineView(this);
|
||||||
_profile = new QWebEngineProfile(this);
|
_profile = new QWebEngineProfile(this);
|
||||||
_page = new QWebEnginePage(_profile);
|
_page = new WebEnginePage(_profile);
|
||||||
_interceptor = new WebViewPageUrlRequestInterceptor(this);
|
_interceptor = new WebViewPageUrlRequestInterceptor(this);
|
||||||
_schemeHandler = new WebViewPageUrlSchemeHandler(this);
|
_schemeHandler = new WebViewPageUrlSchemeHandler(this);
|
||||||
|
|
||||||
_profile->setHttpUserAgent(Utility::userAgentString());
|
const QString userAgent(Utility::userAgentString());
|
||||||
|
_profile->setHttpUserAgent(userAgent);
|
||||||
|
QWebEngineProfile::defaultProfile()->setHttpUserAgent(userAgent);
|
||||||
_profile->setRequestInterceptor(_interceptor);
|
_profile->setRequestInterceptor(_interceptor);
|
||||||
_profile->installUrlSchemeHandler("nc", _schemeHandler);
|
_profile->installUrlSchemeHandler("nc", _schemeHandler);
|
||||||
|
|
||||||
@@ -120,6 +136,27 @@ void WebViewPageUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *reques
|
|||||||
emit urlCatched(user, password, server);
|
emit urlCatched(user, password, server);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebEnginePage * WebEnginePage::createWindow(QWebEnginePage::WebWindowType type) {
|
||||||
|
ExternalWebEnginePage *view = new ExternalWebEnginePage(this->profile());
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
ExternalWebEnginePage::ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ExternalWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame)
|
||||||
|
{
|
||||||
|
QDesktopServices::openUrl(url);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "webview.moc"
|
#include "webview.moc"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ namespace OCC {
|
|||||||
|
|
||||||
class WebViewPageUrlRequestInterceptor;
|
class WebViewPageUrlRequestInterceptor;
|
||||||
class WebViewPageUrlSchemeHandler;
|
class WebViewPageUrlSchemeHandler;
|
||||||
|
class WebEnginePage;
|
||||||
|
|
||||||
class WebView : public QWidget
|
class WebView : public QWidget
|
||||||
{
|
{
|
||||||
@@ -30,7 +31,7 @@ private:
|
|||||||
|
|
||||||
QWebEngineView *_webview;
|
QWebEngineView *_webview;
|
||||||
QWebEngineProfile *_profile;
|
QWebEngineProfile *_profile;
|
||||||
QWebEnginePage *_page;
|
WebEnginePage *_page;
|
||||||
|
|
||||||
WebViewPageUrlRequestInterceptor *_interceptor;
|
WebViewPageUrlRequestInterceptor *_interceptor;
|
||||||
WebViewPageUrlSchemeHandler *_schemeHandler;
|
WebViewPageUrlSchemeHandler *_schemeHandler;
|
||||||
|
|||||||
@@ -938,7 +938,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusdelegate.cpp" line="46"/>
|
<location filename="../src/gui/folderstatusdelegate.cpp" line="46"/>
|
||||||
<source>Add Folder Sync Connection</source>
|
<source>Add Folder Sync Connection</source>
|
||||||
<translation>Přidat synchronizaci adresáře</translation>
|
<translation>Přidat spojení synchronizace složky</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusdelegate.cpp" line="249"/>
|
<location filename="../src/gui/folderstatusdelegate.cpp" line="249"/>
|
||||||
@@ -956,12 +956,12 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="143"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="143"/>
|
||||||
<source>You need to be connected to add a folder</source>
|
<source>You need to be connected to add a folder</source>
|
||||||
<translation>Pro přidání adresáře musíte být připojeni</translation>
|
<translation>Pro přidání složky je třeba, abyste byli připojení</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
|
||||||
<source>Click this button to add a folder to synchronize.</source>
|
<source>Click this button to add a folder to synchronize.</source>
|
||||||
<translation>Stisknutím tlačítka přidáte adresář k synchronizaci.</translation>
|
<translation>Stisknutím tlačítka přidáte složku k synchronizaci.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="154"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="154"/>
|
||||||
@@ -973,7 +973,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
|
||||||
<source>Error while loading the list of folders from the server.</source>
|
<source>Error while loading the list of folders from the server.</source>
|
||||||
<translation>Chyba při načítání seznamu adresářů ze serveru.</translation>
|
<translation>Chyba při načítání seznamu složek ze serveru.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="231"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="231"/>
|
||||||
@@ -983,17 +983,17 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
|
||||||
<source>Fetching folder list from server...</source>
|
<source>Fetching folder list from server...</source>
|
||||||
<translation>Načítání seznamu adresářů ze serveru...</translation>
|
<translation>Načítání seznamu složek ze serveru…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
|
||||||
<source>There are unresolved conflicts. Click for details.</source>
|
<source>There are unresolved conflicts. Click for details.</source>
|
||||||
<translation>Existují nevyřešené konflikty. Klikněte pro detaily.</translation>
|
<translation>Existují nevyřešené konflikty. Klikněte pro podrobnosti.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
|
||||||
<source>Checking for changes in '%1'</source>
|
<source>Checking for changes in '%1'</source>
|
||||||
<translation>Kontrola změn v '%1'</translation>
|
<translation>Zjišťování případných změn v „%1“</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
||||||
@@ -1004,19 +1004,19 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
||||||
<source>, '%1'</source>
|
<source>, '%1'</source>
|
||||||
<extracomment>Build a list of file names</extracomment>
|
<extracomment>Build a list of file names</extracomment>
|
||||||
<translation>, '%1'</translation>
|
<translation>, „%1“</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="922"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="922"/>
|
||||||
<source>'%1'</source>
|
<source>'%1'</source>
|
||||||
<extracomment>Argument is a file name</extracomment>
|
<extracomment>Argument is a file name</extracomment>
|
||||||
<translation>'%1'</translation>
|
<translation>„%1“</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="946"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="946"/>
|
||||||
<source>Syncing %1</source>
|
<source>Syncing %1</source>
|
||||||
<extracomment>Example text: "Syncing 'foo.txt', 'bar.txt'"</extracomment>
|
<extracomment>Example text: "Syncing 'foo.txt', 'bar.txt'"</extracomment>
|
||||||
<translation>Synchronizuji %1</translation>
|
<translation>Synchronizuje se %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="948"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="948"/>
|
||||||
@@ -1088,7 +1088,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="1064"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="1064"/>
|
||||||
<source>Preparing to sync...</source>
|
<source>Preparing to sync...</source>
|
||||||
<translation>Synchronizace se připravuje...</translation>
|
<translation>Příprava na synchronizaci…</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1119,7 +1119,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="133"/>
|
<location filename="../src/gui/folderwizard.cpp" line="133"/>
|
||||||
<source>Select the source folder</source>
|
<source>Select the source folder</source>
|
||||||
<translation>Zvolte zdrojový adresář</translation>
|
<translation>Zvolte zdrojovou složku</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1127,7 +1127,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="181"/>
|
<location filename="../src/gui/folderwizard.cpp" line="181"/>
|
||||||
<source>Create Remote Folder</source>
|
<source>Create Remote Folder</source>
|
||||||
<translation>Vytvořit vzdálený adresář</translation>
|
<translation>Vytvořit složku na protějšku</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="182"/>
|
<location filename="../src/gui/folderwizard.cpp" line="182"/>
|
||||||
@@ -1137,7 +1137,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="212"/>
|
<location filename="../src/gui/folderwizard.cpp" line="212"/>
|
||||||
<source>Folder was successfully created on %1.</source>
|
<source>Folder was successfully created on %1.</source>
|
||||||
<translation>Adresář byl úspěšně vytvořen na %1.</translation>
|
<translation>Složka byl úspěšně vytvořena na %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="223"/>
|
<location filename="../src/gui/folderwizard.cpp" line="223"/>
|
||||||
@@ -1147,12 +1147,12 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="225"/>
|
<location filename="../src/gui/folderwizard.cpp" line="225"/>
|
||||||
<source>Failed to create the folder on %1. Please check manually.</source>
|
<source>Failed to create the folder on %1. Please check manually.</source>
|
||||||
<translation>Na %1 selhalo vytvoření adresáře. Zkontrolujte to prosím ručně.</translation>
|
<translation>Na %1 se nepodařilo vytvořit složku. Zkontrolujte to ručně.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="234"/>
|
<location filename="../src/gui/folderwizard.cpp" line="234"/>
|
||||||
<source>Failed to list a folder. Error: %1</source>
|
<source>Failed to list a folder. Error: %1</source>
|
||||||
<translation>Chyba při vypsání adresáře. Chyba: %1</translation>
|
<translation>Chyba při vypsání složky. Chyba: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="315"/>
|
<location filename="../src/gui/folderwizard.cpp" line="315"/>
|
||||||
@@ -1162,7 +1162,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="445"/>
|
<location filename="../src/gui/folderwizard.cpp" line="445"/>
|
||||||
<source>This folder is already being synced.</source>
|
<source>This folder is already being synced.</source>
|
||||||
<translation>Tento adresář je již synchronizován.</translation>
|
<translation>Tato složka už je synchronizována.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizard.cpp" line="447"/>
|
<location filename="../src/gui/folderwizard.cpp" line="447"/>
|
||||||
@@ -1291,12 +1291,12 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="100"/>
|
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="100"/>
|
||||||
<source>Please enter %1 password:<br><br>User: %2<br>Account: %3<br></source>
|
<source>Please enter %1 password:<br><br>User: %2<br>Account: %3<br></source>
|
||||||
<translation>Vložte prosím %1 heslo:<br><br>Uživatel: %2<br>Účet: %3<br></translation>
|
<translation>Zadejte heslo %1:<br><br>Uživatel: %2<br>Účet: %3<br></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="114"/>
|
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="114"/>
|
||||||
<source>Reading from keychain failed with error: '%1'</source>
|
<source>Reading from keychain failed with error: '%1'</source>
|
||||||
<translation>Čtení z klíčenky selhalo s chybou: '%1'</translation>
|
<translation>Čtení z klíčenky se nezdařilo s chybou: „%1“</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="120"/>
|
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="120"/>
|
||||||
@@ -1413,12 +1413,12 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
|
|||||||
<location filename="../src/gui/issueswidget.ui" line="50"/>
|
<location filename="../src/gui/issueswidget.ui" line="50"/>
|
||||||
<location filename="../src/gui/issueswidget.cpp" line="83"/>
|
<location filename="../src/gui/issueswidget.cpp" line="83"/>
|
||||||
<source>Folder</source>
|
<source>Folder</source>
|
||||||
<translation>Adresář</translation>
|
<translation>Složka</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="73"/>
|
<location filename="../src/gui/issueswidget.ui" line="73"/>
|
||||||
<source>Show warnings</source>
|
<source>Show warnings</source>
|
||||||
<translation>Ukázat varování</translation>
|
<translation>Zobrazit varování</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="83"/>
|
<location filename="../src/gui/issueswidget.ui" line="83"/>
|
||||||
@@ -1693,7 +1693,7 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
|
||||||
<source>Error returned from the server: <em>%1</em></source>
|
<source>Error returned from the server: <em>%1</em></source>
|
||||||
<translation type="unfinished"/>
|
<translation>Od serveru vrácena chyba: <em>%1</em></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
||||||
@@ -1703,7 +1703,7 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
|
||||||
<source>Could not parse the JSON returned from the server: <br><em>%1</em></source>
|
<source>Could not parse the JSON returned from the server: <br><em>%1</em></source>
|
||||||
<translation type="unfinished"/>
|
<translation>Nedaří se vyhodnotit JSON data vrácená serverem:<br><em>%1</em></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
||||||
|
|||||||
@@ -1308,7 +1308,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="157"/>
|
<location filename="../src/gui/creds/httpcredentialsgui.cpp" line="157"/>
|
||||||
<source><a href="%1">Click here</a> to request an app password from the web interface.</source>
|
<source><a href="%1">Click here</a> to request an app password from the web interface.</source>
|
||||||
<translation><a href="%1">Klicke hier</a> um ein App-Passwort von dem Web-Interface zu erhalten.</translation>
|
<translation><a href="%1">Klicke hier</a> um ein App-Passwort vom Web-Interface zu erhalten.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
|
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
|
||||||
<source>Unknown error: network reply was deleted</source>
|
<source>Unknown error: network reply was deleted</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Errore ezezaguna: sareko erantzuna ezabatu da</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
|
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
|
||||||
@@ -253,7 +253,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="667"/>
|
<location filename="../src/gui/accountsettings.cpp" line="667"/>
|
||||||
<source>Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser.</source>
|
<source>Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Nabigatzailearen baimena eskuratzen. Egin <a href= '%1'>klik hemen</a> nabigatzailea berrabiarazteko.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="671"/>
|
<location filename="../src/gui/accountsettings.cpp" line="671"/>
|
||||||
@@ -388,7 +388,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||||
<source>Asking Credentials</source>
|
<source>Asking Credentials</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kredentzialak eskatzen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||||
@@ -436,17 +436,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="606"/>
|
<location filename="../src/gui/activitywidget.cpp" line="606"/>
|
||||||
<source>The server activity list has been copied to the clipboard.</source>
|
<source>The server activity list has been copied to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Zerbitzariaren eginkizunen zerrenda arbelera kopiatu da.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="610"/>
|
<location filename="../src/gui/activitywidget.cpp" line="610"/>
|
||||||
<source>The sync activity list has been copied to the clipboard.</source>
|
<source>The sync activity list has been copied to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Sinkronizatutako eginkizunen zerrenda arbelera kopiatu da.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
||||||
<source>The list of unsynced items has been copied to the clipboard.</source>
|
<source>The list of unsynced items has been copied to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Sinkronizatu gabeko elementuen zerrenda arbelera kopiatu da.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="618"/>
|
<location filename="../src/gui/activitywidget.cpp" line="618"/>
|
||||||
@@ -747,13 +747,15 @@
|
|||||||
<location filename="../src/gui/folder.cpp" line="888"/>
|
<location filename="../src/gui/folder.cpp" line="888"/>
|
||||||
<source>A new folder larger than %1 MB has been added: %2.
|
<source>A new folder larger than %1 MB has been added: %2.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 MB baino handiagoa den karpeta berri bat gehitu da: %2.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="891"/>
|
<location filename="../src/gui/folder.cpp" line="891"/>
|
||||||
<source>A folder from an external storage has been added.
|
<source>A folder from an external storage has been added.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kanpoko biltegi bateko karpeta gehitu da.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="892"/>
|
<location filename="../src/gui/folder.cpp" line="892"/>
|
||||||
@@ -828,12 +830,12 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderman.cpp" line="1054"/>
|
<location filename="../src/gui/folderman.cpp" line="1054"/>
|
||||||
<source> (backup)</source>
|
<source> (backup)</source>
|
||||||
<translation type="unfinished"/>
|
<translation> (backup)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderman.cpp" line="1059"/>
|
<location filename="../src/gui/folderman.cpp" line="1059"/>
|
||||||
<source> (backup %1)</source>
|
<source> (backup %1)</source>
|
||||||
<translation type="unfinished"/>
|
<translation> (backup %1)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderman.cpp" line="1265"/>
|
<location filename="../src/gui/folderman.cpp" line="1265"/>
|
||||||
@@ -936,7 +938,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusdelegate.cpp" line="249"/>
|
<location filename="../src/gui/folderstatusdelegate.cpp" line="249"/>
|
||||||
<source>Synchronizing with local folder</source>
|
<source>Synchronizing with local folder</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Karpeta lokalarekin sinkronizatzen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusdelegate.cpp" line="296"/>
|
<location filename="../src/gui/folderstatusdelegate.cpp" line="296"/>
|
||||||
@@ -949,19 +951,19 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="143"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="143"/>
|
||||||
<source>You need to be connected to add a folder</source>
|
<source>You need to be connected to add a folder</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Konektatuta egon behar duzu karpeta bat gehitzeko</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
|
||||||
<source>Click this button to add a folder to synchronize.</source>
|
<source>Click this button to add a folder to synchronize.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Klikatu botoi hau karpeta bat gehitzeko sinkronizazioari.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="154"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="154"/>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="156"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="156"/>
|
||||||
<source>%1 (%2)</source>
|
<source>%1 (%2)</source>
|
||||||
<extracomment>Example text: "File.txt (23KB)"</extracomment>
|
<extracomment>Example text: "File.txt (23KB)"</extracomment>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 (%2)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
|
||||||
@@ -981,7 +983,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
|
||||||
<source>There are unresolved conflicts. Click for details.</source>
|
<source>There are unresolved conflicts. Click for details.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Konpondu gabeko gatazkak daude. Klikatu zehaztasunak ikusteko.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
|
||||||
|
|||||||
@@ -273,17 +273,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="785"/>
|
<location filename="../src/gui/accountsettings.cpp" line="785"/>
|
||||||
<source>There are folders that were not synchronized because they are too big: </source>
|
<source>There are folders that were not synchronized because they are too big: </source>
|
||||||
<translation type="unfinished"/>
|
<translation>Az alábbi mappák nem lettek szinkronizálva, mert túl nagyok:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="787"/>
|
<location filename="../src/gui/accountsettings.cpp" line="787"/>
|
||||||
<source>There are folders that were not synchronized because they are external storages: </source>
|
<source>There are folders that were not synchronized because they are external storages: </source>
|
||||||
<translation type="unfinished"/>
|
<translation>Az alábbi mappák nem lettek szinkronizálva, mert külső tárolóra mutatnak:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="788"/>
|
<location filename="../src/gui/accountsettings.cpp" line="788"/>
|
||||||
<source>There are folders that were not synchronized because they are too big or external storages: </source>
|
<source>There are folders that were not synchronized because they are too big or external storages: </source>
|
||||||
<translation type="unfinished"/>
|
<translation>Az alábbi mappák nem lettek szinkronizálva, mert túl nagyok, vagy külső tárolóra mutatnak:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="834"/>
|
<location filename="../src/gui/accountsettings.cpp" line="834"/>
|
||||||
@@ -373,7 +373,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="132"/>
|
<location filename="../src/gui/accountstate.cpp" line="132"/>
|
||||||
<source>Maintenance mode</source>
|
<source>Maintenance mode</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Karbantartó üzemmód</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="134"/>
|
<location filename="../src/gui/accountstate.cpp" line="134"/>
|
||||||
@@ -388,7 +388,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||||
<source>Asking Credentials</source>
|
<source>Asking Credentials</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Hitelesítési adatok</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||||
@@ -446,7 +446,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
||||||
<source>The list of unsynced items has been copied to the clipboard.</source>
|
<source>The list of unsynced items has been copied to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>A nem szinkronizált elemek listája a vágólapra került.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="618"/>
|
<location filename="../src/gui/activitywidget.cpp" line="618"/>
|
||||||
@@ -529,7 +529,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/addcertificatedialog.ui" line="35"/>
|
<location filename="../src/gui/addcertificatedialog.ui" line="35"/>
|
||||||
<source>Certificate & Key (pkcs12) :</source>
|
<source>Certificate & Key (pkcs12) :</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Tanúsítvány és kulcs (pkcs12):</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/addcertificatedialog.ui" line="51"/>
|
<location filename="../src/gui/addcertificatedialog.ui" line="51"/>
|
||||||
@@ -557,17 +557,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/application.cpp" line="164"/>
|
<location filename="../src/gui/application.cpp" line="164"/>
|
||||||
<source>Error accessing the configuration file</source>
|
<source>Error accessing the configuration file</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Hiba a konfigurációs állomány elérésében</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/application.cpp" line="165"/>
|
<location filename="../src/gui/application.cpp" line="165"/>
|
||||||
<source>There was an error while accessing the configuration file at %1.</source>
|
<source>There was an error while accessing the configuration file at %1.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Hiba törént az alábbi konfigurációs állomány elérésekor: %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/application.cpp" line="168"/>
|
<location filename="../src/gui/application.cpp" line="168"/>
|
||||||
<source>Quit ownCloud</source>
|
<source>Quit ownCloud</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kilépés az ownCloudból</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -598,7 +598,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="1001"/>
|
<location filename="../src/libsync/owncloudpropagator.cpp" line="1001"/>
|
||||||
<source>Error writing metadata to the database</source>
|
<source>Error writing metadata to the database</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Hiba történt a metaadatok adatbázisba írásakor</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -741,24 +741,26 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="640"/>
|
<location filename="../src/gui/folder.cpp" line="640"/>
|
||||||
<source>Could not read system exclude file</source>
|
<source>Could not read system exclude file</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Nem lehetett beolvasni a rendszer kizárási fájlját</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="888"/>
|
<location filename="../src/gui/folder.cpp" line="888"/>
|
||||||
<source>A new folder larger than %1 MB has been added: %2.
|
<source>A new folder larger than %1 MB has been added: %2.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Egy %1 MB méretet meghaladó mappa hozzá lett adva: %2.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="891"/>
|
<location filename="../src/gui/folder.cpp" line="891"/>
|
||||||
<source>A folder from an external storage has been added.
|
<source>A folder from an external storage has been added.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Egy mappa egy külső tárolóból hozzá lett adva.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="892"/>
|
<location filename="../src/gui/folder.cpp" line="892"/>
|
||||||
<source>Please go in the settings to select it if you wish to download it.</source>
|
<source>Please go in the settings to select it if you wish to download it.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kérlek, a beállításoknál válaszd ki, ha le szeretnéd tölteni.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="927"/>
|
<location filename="../src/gui/folder.cpp" line="927"/>
|
||||||
@@ -766,7 +768,10 @@
|
|||||||
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore.
|
||||||
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
If you decide to keep the files, they will be re-synced with the server if you have rights to do so.
|
||||||
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
If you decide to delete the files, they will be unavailable to you, unless you are the owner.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Az összes fájl a szinkronizálási mappában - %1 - törölve lett a kiszolgálón.
|
||||||
|
Ezek a törlések szinkronizálódni fognak a helyi mappádban, elérhetetlenné téve ezeket a fájlokat kivéve ha van jogosultságod a visszaállításhoz.
|
||||||
|
Ha úgy döntesz, hogy megtartod a fájlokat, azok újra lesznek szinkronizálva a szerverrel, ha van rá jogosultságod.
|
||||||
|
Ha úgy döntesz, hogy letörlöd a fájlokat, elérhetetlenné válnak számodra, kivéve ha te vagy a tulajdonos.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="932"/>
|
<location filename="../src/gui/folder.cpp" line="932"/>
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
|
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
|
||||||
<source>Unknown error: network reply was deleted</source>
|
<source>Unknown error: network reply was deleted</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Onbekende fout: netwerkantwoord verwijderd</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
|
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="656"/>
|
<location filename="../src/gui/accountsettings.cpp" line="656"/>
|
||||||
<source>Server %1 is currently in maintenance mode.</source>
|
<source>Server %1 is currently in maintenance mode.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Server %1 momenteel in onderhoudsmodus.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="658"/>
|
<location filename="../src/gui/accountsettings.cpp" line="658"/>
|
||||||
@@ -253,7 +253,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="667"/>
|
<location filename="../src/gui/accountsettings.cpp" line="667"/>
|
||||||
<source>Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser.</source>
|
<source>Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Authorization van de browser verkrijgen. <a href='%1'>Klik hier</a> om de browser te heropenen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="671"/>
|
<location filename="../src/gui/accountsettings.cpp" line="671"/>
|
||||||
@@ -388,7 +388,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||||
<source>Asking Credentials</source>
|
<source>Asking Credentials</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Vragen naar inloggegevens</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||||
@@ -990,7 +990,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
|
||||||
<source>There are unresolved conflicts. Click for details.</source>
|
<source>There are unresolved conflicts. Click for details.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Er zijn nog niet-opgehelderde conflicten. Klik voor details.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
|
||||||
@@ -1000,7 +1000,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
||||||
<source>Reconciling changes</source>
|
<source>Reconciling changes</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Wijzigingen in overeenstemming brengen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
||||||
@@ -1434,12 +1434,12 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="133"/>
|
<location filename="../src/gui/issueswidget.ui" line="133"/>
|
||||||
<source>There were too many issues. Not all will be visible here.</source>
|
<source>There were too many issues. Not all will be visible here.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Te veel problemen. Niet alles is hier zichtbaar.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
||||||
<source>Copy the issues list to the clipboard.</source>
|
<source>Copy the issues list to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kopieer de problemen naar het klembord.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
||||||
@@ -1482,7 +1482,7 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/logbrowser.cpp" line="89"/>
|
<location filename="../src/gui/logbrowser.cpp" line="89"/>
|
||||||
<source>&Capture debug messages</source>
|
<source>&Capture debug messages</source>
|
||||||
<translation type="unfinished"/>
|
<translation>&Opvangen debug berichten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/logbrowser.cpp" line="101"/>
|
<location filename="../src/gui/logbrowser.cpp" line="101"/>
|
||||||
@@ -1704,17 +1704,17 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
||||||
<source>There was an error accessing the 'token' endpoint: <br><em>%1</em></source>
|
<source>There was an error accessing the 'token' endpoint: <br><em>%1</em></source>
|
||||||
<translation type="unfinished"/>
|
<translation>Er trad een fout op bij het benaderen van het 'token' endpoint: <br><em>%1</em></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
|
||||||
<source>Could not parse the JSON returned from the server: <br><em>%1</em></source>
|
<source>Could not parse the JSON returned from the server: <br><em>%1</em></source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kon de van de server ontvangen JSON niet verklaren: <br><em>%1</em></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
||||||
<source>The reply from the server did not contain all expected fields</source>
|
<source>The reply from the server did not contain all expected fields</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Het antwoord van de server bevatte niet alle verwachte velden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
|
||||||
@@ -1724,7 +1724,7 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
|
||||||
<source><h1>Wrong user</h1><p>You logged-in with user <em>%1</em>, but must login with user <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in as user %2</p></source>
|
<source><h1>Wrong user</h1><p>You logged-in with user <em>%1</em>, but must login with user <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in as user %2</p></source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>Verkeerde gebruiker</h1><p>Je bent ingelogd met gebruiker <em>%1</em>, maar moest inloggen als gebruiker <em>%2</em>.<br>Log uit van %3 in een andere tab en dan <a href='%4'>klik hier</a> en log in als gebruiker %2</p></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1892,7 +1892,7 @@ vragen om extra autorisaties tijdens installatie.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
|
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
|
||||||
<source>Login in your browser</source>
|
<source>Login in your browser</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Login in je browser</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1970,7 +1970,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
|
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
|
||||||
<source>The server reported the following error:</source>
|
<source>The server reported the following error:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>De server gaf de volgende foutmelding:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
|
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
|
||||||
@@ -2132,7 +2132,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
|
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
|
||||||
<source>The download would reduce free local disk space below the limit</source>
|
<source>The download would reduce free local disk space below the limit</source>
|
||||||
<translation type="unfinished"/>
|
<translation>De download zou de vrije lokale schijfruimte beperken tot onder de limiet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
|
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
|
||||||
@@ -2319,7 +2319,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
|
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
|
||||||
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
|
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
|
||||||
<source>Upload of %1 exceeds the quota for the folder</source>
|
<source>Upload of %1 exceeds the quota for the folder</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Upload van %1 overschrijdt het quotum voor de map</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
|
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
|
||||||
@@ -2659,12 +2659,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.ui" line="35"/>
|
<location filename="../src/gui/sharelinkwidget.ui" line="35"/>
|
||||||
<source>Enter a name to create a new public link...</source>
|
<source>Enter a name to create a new public link...</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Geef een naam op om een nieuwe openbare link te maken...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
|
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
|
||||||
<source>&Create new</source>
|
<source>&Create new</source>
|
||||||
<translation type="unfinished"/>
|
<translation>&Creëer nieuw</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
|
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
|
||||||
@@ -2715,12 +2715,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
|
||||||
<source>Link shares have been disabled</source>
|
<source>Link shares have been disabled</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Deellinks zijn uitgeschakeld</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
|
||||||
<source>Create public link share</source>
|
<source>Create public link share</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Creëren openbare deellink</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
|
||||||
@@ -2741,7 +2741,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
|
||||||
<source>Copy link to clipboard (direct download)</source>
|
<source>Copy link to clipboard (direct download)</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kopieer link naar klembord (directe download)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
|
||||||
@@ -2751,12 +2751,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
|
||||||
<source>Send link by email (direct download)</source>
|
<source>Send link by email (direct download)</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Verstuur link per e-mail (directe download)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
|
||||||
<source>Confirm Link Share Deletion</source>
|
<source>Confirm Link Share Deletion</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Bevestig verwijderen deellink</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
||||||
@@ -2943,7 +2943,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/socketapi.cpp" line="568"/>
|
<location filename="../src/gui/socketapi.cpp" line="568"/>
|
||||||
<source>Send private link by email...</source>
|
<source>Send private link by email...</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Verstuur privé link via mail</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -3236,7 +3236,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
||||||
<source>Conflict: Server version downloaded, local copy renamed and not uploaded.</source>
|
<source>Conflict: Server version downloaded, local copy renamed and not uploaded.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Bestandsconflict: server versie is gedownload en lokale kopie hernoemd en niet geüpload</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="777"/>
|
<location filename="../src/libsync/syncengine.cpp" line="777"/>
|
||||||
@@ -3362,7 +3362,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="489"/>
|
<location filename="../src/libsync/syncengine.cpp" line="489"/>
|
||||||
<source>Unresolved conflict.</source>
|
<source>Unresolved conflict.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Bestandsconflict</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="500"/>
|
<location filename="../src/libsync/syncengine.cpp" line="500"/>
|
||||||
@@ -3608,7 +3608,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="240"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="240"/>
|
||||||
<source>Disconnected from some accounts</source>
|
<source>Disconnected from some accounts</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Niet verbonden met sommige accounts</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="251"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="251"/>
|
||||||
@@ -3634,12 +3634,12 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
|
||||||
<source>Synchronization is paused</source>
|
<source>Synchronization is paused</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Synchronisatie is gepauzeerd</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
|
||||||
<source>Error during synchronization</source>
|
<source>Error during synchronization</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Fout bij synchronisatie</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="314"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="314"/>
|
||||||
@@ -3859,7 +3859,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
|
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
|
||||||
<source>Re-open Browser</source>
|
<source>Re-open Browser</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Heropen browser</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -4186,7 +4186,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/guiutility.cpp" line="33"/>
|
<location filename="../src/gui/guiutility.cpp" line="33"/>
|
||||||
<source>Could not open browser</source>
|
<source>Could not open browser</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kon browser niet openen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/guiutility.cpp" line="34"/>
|
<location filename="../src/gui/guiutility.cpp" line="34"/>
|
||||||
|
|||||||
@@ -1405,7 +1405,7 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn
|
|||||||
<location filename="../src/gui/issueswidget.ui" line="42"/>
|
<location filename="../src/gui/issueswidget.ui" line="42"/>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="61"/>
|
<location filename="../src/gui/issueswidget.ui" line="61"/>
|
||||||
<source><no filter></source>
|
<source><no filter></source>
|
||||||
<translation type="unfinished"/>
|
<translation><no filter></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="50"/>
|
<location filename="../src/gui/issueswidget.ui" line="50"/>
|
||||||
@@ -4028,7 +4028,7 @@ Kliknij</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/theme.cpp" line="299"/>
|
<location filename="../src/libsync/theme.cpp" line="299"/>
|
||||||
<source><p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p></source>
|
<source><p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p></source>
|
||||||
<translation type="unfinished"/>
|
<translation><p><small>Skompilowano z wersji Git <a href="%1">%2</a> na %3, %4 używając Qt %5, %6</small></p></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|||||||
@@ -178,7 +178,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="307"/>
|
<location filename="../src/gui/accountsettings.cpp" line="307"/>
|
||||||
<source>Restart sync</source>
|
<source>Restart sync</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Reštartovať synchronizáciu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="316"/>
|
<location filename="../src/gui/accountsettings.cpp" line="316"/>
|
||||||
@@ -278,12 +278,12 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="787"/>
|
<location filename="../src/gui/accountsettings.cpp" line="787"/>
|
||||||
<source>There are folders that were not synchronized because they are external storages: </source>
|
<source>There are folders that were not synchronized because they are external storages: </source>
|
||||||
<translation type="unfinished"/>
|
<translation>Niektoré priečinky neboli synchronizované, pretože sú na externom úložisku</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="788"/>
|
<location filename="../src/gui/accountsettings.cpp" line="788"/>
|
||||||
<source>There are folders that were not synchronized because they are too big or external storages: </source>
|
<source>There are folders that were not synchronized because they are too big or external storages: </source>
|
||||||
<translation type="unfinished"/>
|
<translation>Niektoré priečinky neboli synchronizované, pretože sú príliš veľké alebo sú na externom úložisku</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.cpp" line="834"/>
|
<location filename="../src/gui/accountsettings.cpp" line="834"/>
|
||||||
@@ -446,7 +446,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
<location filename="../src/gui/activitywidget.cpp" line="613"/>
|
||||||
<source>The list of unsynced items has been copied to the clipboard.</source>
|
<source>The list of unsynced items has been copied to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Zoznam nezosynchronizovaných položiek bol skopírovaný do schránky.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/activitywidget.cpp" line="618"/>
|
<location filename="../src/gui/activitywidget.cpp" line="618"/>
|
||||||
@@ -557,7 +557,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/application.cpp" line="164"/>
|
<location filename="../src/gui/application.cpp" line="164"/>
|
||||||
<source>Error accessing the configuration file</source>
|
<source>Error accessing the configuration file</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Chyba pri prístupe ku konfiguračnému súboru</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/application.cpp" line="165"/>
|
<location filename="../src/gui/application.cpp" line="165"/>
|
||||||
@@ -747,13 +747,15 @@
|
|||||||
<location filename="../src/gui/folder.cpp" line="888"/>
|
<location filename="../src/gui/folder.cpp" line="888"/>
|
||||||
<source>A new folder larger than %1 MB has been added: %2.
|
<source>A new folder larger than %1 MB has been added: %2.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Bol pridaný nový priečinok väčší ako %1 MB: %2.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="891"/>
|
<location filename="../src/gui/folder.cpp" line="891"/>
|
||||||
<source>A folder from an external storage has been added.
|
<source>A folder from an external storage has been added.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Bol pridaný priečinok z externého úložiska.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folder.cpp" line="892"/>
|
<location filename="../src/gui/folder.cpp" line="892"/>
|
||||||
@@ -1255,7 +1257,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/generalsettings.ui" line="147"/>
|
<location filename="../src/gui/generalsettings.ui" line="147"/>
|
||||||
<source>Edit &Ignored Files</source>
|
<source>Edit &Ignored Files</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Editovať &ignorované súbory</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/generalsettings.ui" line="232"/>
|
<location filename="../src/gui/generalsettings.ui" line="232"/>
|
||||||
@@ -1387,7 +1389,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="20"/>
|
<location filename="../src/gui/issueswidget.ui" line="20"/>
|
||||||
<source>List of issues</source>
|
<source>List of issues</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Zoznam problémov</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="34"/>
|
<location filename="../src/gui/issueswidget.ui" line="34"/>
|
||||||
@@ -1409,7 +1411,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="73"/>
|
<location filename="../src/gui/issueswidget.ui" line="73"/>
|
||||||
<source>Show warnings</source>
|
<source>Show warnings</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Zobraziť varovania</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="83"/>
|
<location filename="../src/gui/issueswidget.ui" line="83"/>
|
||||||
@@ -1424,7 +1426,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
||||||
<source>Copy the issues list to the clipboard.</source>
|
<source>Copy the issues list to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Skopírovať zoznam problémov do schránky.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
||||||
@@ -1955,7 +1957,7 @@ Nie je vhodné ju používať.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
|
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
|
||||||
<source>The server reported the following error:</source>
|
<source>The server reported the following error:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Server nahlásil nasledovnú chybu:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
|
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
|
||||||
@@ -3216,7 +3218,7 @@ Nie je vhodné ju používať.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="477"/>
|
<location filename="../src/libsync/syncengine.cpp" line="477"/>
|
||||||
<source>Folder hierarchy is too deep</source>
|
<source>Folder hierarchy is too deep</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Hierarchia priečinkov je príliš hlboká</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
||||||
@@ -3619,7 +3621,7 @@ Nie je vhodné ju používať.</translation>
|
|||||||
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
|
||||||
<source>Synchronization is paused</source>
|
<source>Synchronization is paused</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Synchronizácia je pozastavená</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
|
||||||
@@ -3695,7 +3697,7 @@ Nie je vhodné ju používať.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="786"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="786"/>
|
||||||
<source>Syncing %1 of %2</source>
|
<source>Syncing %1 of %2</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Synchronizuje sa %1 z %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/owncloudgui.cpp" line="795"/>
|
<location filename="../src/gui/owncloudgui.cpp" line="795"/>
|
||||||
@@ -4171,7 +4173,7 @@ Nie je vhodné ju používať.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/guiutility.cpp" line="33"/>
|
<location filename="../src/gui/guiutility.cpp" line="33"/>
|
||||||
<source>Could not open browser</source>
|
<source>Could not open browser</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Nepodarilo sa otvoriť prehliadač</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/guiutility.cpp" line="34"/>
|
<location filename="../src/gui/guiutility.cpp" line="34"/>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizardsourcepage.ui" line="14"/>
|
<location filename="../src/gui/folderwizardsourcepage.ui" line="14"/>
|
||||||
<source>Form</source>
|
<source>Form</source>
|
||||||
<translation>窗体</translation>
|
<translation>格式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizardsourcepage.ui" line="33"/>
|
<location filename="../src/gui/folderwizardsourcepage.ui" line="33"/>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="14"/>
|
<location filename="../src/gui/folderwizardtargetpage.ui" line="14"/>
|
||||||
<source>Form</source>
|
<source>Form</source>
|
||||||
<translation>窗体</translation>
|
<translation>格式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="131"/>
|
<location filename="../src/gui/folderwizardtargetpage.ui" line="131"/>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/notificationwidget.ui" line="20"/>
|
<location filename="../src/gui/notificationwidget.ui" line="20"/>
|
||||||
<source>Form</source>
|
<source>Form</source>
|
||||||
<translation>窗体</translation>
|
<translation>格式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/notificationwidget.ui" line="56"/>
|
<location filename="../src/gui/notificationwidget.ui" line="56"/>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.ui" line="14"/>
|
<location filename="../src/gui/accountsettings.ui" line="14"/>
|
||||||
<source>Form</source>
|
<source>Form</source>
|
||||||
<translation>窗体</translation>
|
<translation>格式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountsettings.ui" line="58"/>
|
<location filename="../src/gui/accountsettings.ui" line="58"/>
|
||||||
@@ -388,7 +388,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
<location filename="../src/gui/accountstate.cpp" line="138"/>
|
||||||
<source>Asking Credentials</source>
|
<source>Asking Credentials</source>
|
||||||
<translation type="unfinished"/>
|
<translation>凭证</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
<location filename="../src/gui/accountstate.cpp" line="140"/>
|
||||||
@@ -1000,7 +1000,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
|
||||||
<source>Reconciling changes</source>
|
<source>Reconciling changes</source>
|
||||||
<translation type="unfinished"/>
|
<translation>状态发生变化</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
|
||||||
@@ -1398,7 +1398,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="20"/>
|
<location filename="../src/gui/issueswidget.ui" line="20"/>
|
||||||
<source>List of issues</source>
|
<source>List of issues</source>
|
||||||
<translation type="unfinished"/>
|
<translation>问题列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="34"/>
|
<location filename="../src/gui/issueswidget.ui" line="34"/>
|
||||||
@@ -1430,12 +1430,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="133"/>
|
<location filename="../src/gui/issueswidget.ui" line="133"/>
|
||||||
<source>There were too many issues. Not all will be visible here.</source>
|
<source>There were too many issues. Not all will be visible here.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>问题太多了。不是所有的都能在这里看到。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
<location filename="../src/gui/issueswidget.ui" line="155"/>
|
||||||
<source>Copy the issues list to the clipboard.</source>
|
<source>Copy the issues list to the clipboard.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>将问题列表复制到剪贴板。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
<location filename="../src/gui/issueswidget.ui" line="158"/>
|
||||||
@@ -1455,7 +1455,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/issueswidget.cpp" line="84"/>
|
<location filename="../src/gui/issueswidget.cpp" line="84"/>
|
||||||
<source>Issue</source>
|
<source>Issue</source>
|
||||||
<translation type="unfinished"/>
|
<translation>问题</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1478,7 +1478,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/logbrowser.cpp" line="89"/>
|
<location filename="../src/gui/logbrowser.cpp" line="89"/>
|
||||||
<source>&Capture debug messages</source>
|
<source>&Capture debug messages</source>
|
||||||
<translation type="unfinished"/>
|
<translation>抓取调试消息</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/logbrowser.cpp" line="101"/>
|
<location filename="../src/gui/logbrowser.cpp" line="101"/>
|
||||||
@@ -1696,7 +1696,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
|
||||||
<source>Error returned from the server: <em>%1</em></source>
|
<source>Error returned from the server: <em>%1</em></source>
|
||||||
<translation type="unfinished"/>
|
<translation>服务器返回错误:<em>%1</em></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
|
||||||
@@ -1711,12 +1711,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
|
||||||
<source>The reply from the server did not contain all expected fields</source>
|
<source>The reply from the server did not contain all expected fields</source>
|
||||||
<translation type="unfinished"/>
|
<translation>服务器没有回复预期的字段</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
|
||||||
<source><h1>Login Error</h1><p>%1</p></source>
|
<source><h1>Login Error</h1><p>%1</p></source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>登录错误</h1><p>%1</p></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
|
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
|
||||||
@@ -2314,7 +2314,7 @@ It is not advisable to use it.</source>
|
|||||||
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
|
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
|
||||||
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
|
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
|
||||||
<source>Upload of %1 exceeds the quota for the folder</source>
|
<source>Upload of %1 exceeds the quota for the folder</source>
|
||||||
<translation type="unfinished"/>
|
<translation>上传 %1 超过文件夹的限额</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
|
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
|
||||||
@@ -2659,7 +2659,7 @@ It is not advisable to use it.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
|
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
|
||||||
<source>&Create new</source>
|
<source>&Create new</source>
|
||||||
<translation type="unfinished"/>
|
<translation>&创建新的</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
|
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
|
||||||
@@ -2751,7 +2751,7 @@ It is not advisable to use it.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
|
||||||
<source>Confirm Link Share Deletion</source>
|
<source>Confirm Link Share Deletion</source>
|
||||||
<translation type="unfinished"/>
|
<translation>确认删除共享链接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="521"/>
|
||||||
@@ -2772,7 +2772,7 @@ It is not advisable to use it.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="254"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="254"/>
|
||||||
<source>Delete link share</source>
|
<source>Delete link share</source>
|
||||||
<translation type="unfinished"/>
|
<translation>删除共享链接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui/sharelinkwidget.cpp" line="459"/>
|
<location filename="../src/gui/sharelinkwidget.cpp" line="459"/>
|
||||||
@@ -3216,7 +3216,7 @@ It is not advisable to use it.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="264"/>
|
<location filename="../src/libsync/syncengine.cpp" line="264"/>
|
||||||
<source>%1 (skipped due to earlier error, trying again in %2)</source>
|
<source>%1 (skipped due to earlier error, trying again in %2)</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 (由于先前的错误而跳过,在%2中再次尝试 )</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="474"/>
|
<location filename="../src/libsync/syncengine.cpp" line="474"/>
|
||||||
@@ -3226,7 +3226,7 @@ It is not advisable to use it.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="477"/>
|
<location filename="../src/libsync/syncengine.cpp" line="477"/>
|
||||||
<source>Folder hierarchy is too deep</source>
|
<source>Folder hierarchy is too deep</source>
|
||||||
<translation type="unfinished"/>
|
<translation>文件夹等级制度太深</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
<location filename="../src/libsync/syncengine.cpp" line="493"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user