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

Compare commits

...

176 Commits

Author SHA1 Message Date
Markus Goetz
5605553e3a VERSION.cmake: 2.4.3 final 2018-08-10 21:16:29 +02:00
Markus Goetz
b5384c9ad7 ChangeLog: 2.4.3 2018-08-09 16:33:43 +02:00
Markus Goetz
8c77bfad93 Windows: Don't ignore files with FILE_ATTRIBUTE_TEMPORARY
Too many applications incorrectly use this attribute.

For #6696 #6610

(cherry picked from commit d0bdccc60a)
2018-08-09 15:31:47 +02:00
Olivier Goffart
235e314da7 OAuth: Fix infinite loop when the refresh token is expired
The server reply with a code 400 when the token is invalid,
the client was understanding this error as a network error, and was retying
again with the same token.

Instead, we must rely on what the json is saying, even if the reply is
not a 200 code.

Issue https://github.com/owncloud/enterprise/issues/2777

(cherry picked from commit eb7e074795)
2018-08-09 13:49:10 +02:00
Olivier Goffart
628daeadfe MSI: Fix crash in the auto updater
'auto' here is a QStringBuilder referencing a temporary

Ammend commit 150d4f5935
(MSI: Always with logfile #6609)

Found in the crash reporter:
https://sentry.io/owncloud/desktop-win-and-mac/issues/623245771/

(cherry picked from commit 45bf2e9023)
2018-08-07 09:56:45 +02:00
Christian Kamm
2a55b20b8d Nautilus: Guard against None state #6643
It seems None gets assigned to 'state' in some paths.

(cherry picked from commit c9e97c12cd)
2018-07-16 10:19:50 +02:00
Markus Goetz
6c818ac3c7 VERSION.cmake: This is now 2.4.3 2018-07-09 11:05:14 +02:00
Markus Goetz
f283c0c59c ChangeLog: 2.4.2 additions 2018-07-05 18:55:04 +02:00
Christian Kamm
0d83d7cb68 Log: Adjust update/reconcile log verbosity
Not having these enabled by default is causing significant extra back
and forth with reporters since they must manually use --logdebug for the
log to be useful.

(cherry picked from commit 25cca051a9)
2018-07-05 17:34:07 +02:00
Olivier Goffart
2e10cec2cb Reconcile: When detecting a local move, keep the local mtime
https://github.com/owncloud/client/issues/6629#issuecomment-402450691
(cherry picked from commit 90ec9a9735)
2018-07-05 17:32:11 +02:00
Thomas Boerger
3802131bad Drop Jenkinsfile, replaced by DroneCI
So far DroneCI is showing stable results, that's the point in time where
we can get rid of Jenkins 💣
2018-07-05 13:44:40 +02:00
Markus Goetz
5467950f62 MSI: Always with logfile #6609 2018-06-26 13:39:23 +02:00
Markus Goetz
3ba5bb52f3 OCUpdater: Fix missing return 2018-06-20 13:36:05 +02:00
Markus Goetz
5c011c5c21 ChangeLog: 2.4.2 2018-06-20 12:32:28 +02:00
Markus Goetz
532e975687 GeneralSettings: Hide update channel for other themes
For #6585

(cherry picked from commit e1a4c3ab72)
2018-06-20 12:30:25 +02:00
Olivier Goffart
7efc3220f4 OAuth2: Try to refresh the token even if the credentials weren't ready.
This can happen when the client is started and the internet connection
was not enabled. Then we would fetch the credentials, but we would
no do the refresh token step (because network is down).
So next time we try to connect, we would also not refresh the token
because the credentials are not marked as 'ready'

Reported in
https://github.com/owncloud/client/issues/6522#issuecomment-396845167

(cherry picked from commit 4cc0539080)
2018-06-20 12:27:57 +02:00
Christian Kamm
b5444def55 Tray workarounds backport for 2.4 #6545
* Disentangle the previous 'qdbusWorkarounds' into three different
  things
* Make not trusting tray.isVisible() a new workaround
* Introduce env vars for all workaround flags
* Use the workaround flags for OSX
* Determine workaround flags for KDE when the plasma integration plugin
  is missing

(cherry picked from commit 99116acdca)
(cherry picked from commit ca033b9685)
(cherry picked from commit 8b1d9799a3)
(cherry picked from commit a0d6139505)
2018-06-19 18:22:34 +02:00
Dominik Schmidt
c7ba898fe0 Implement startDetached() via QProcess::startDetached on non windows 2018-06-19 18:18:25 +02:00
Dominik Schmidt
7a8c8b19c2 Remove anonymous namespace 2018-06-19 18:18:25 +02:00
Dominik Schmidt
72c9d207a0 Workaround bug in Qt 5.6 that makes QProcess::startDetached always launch a console window 2018-06-19 18:18:25 +02:00
Dominik Schmidt
1e4727cfec Extract filename of updateFile without leading slash 2018-06-19 18:18:25 +02:00
Dominik Schmidt
8237c5be69 Escape msi and owncloud.exe path (who knows...) 2018-06-19 18:18:25 +02:00
Dominik Schmidt
63877d5293 Run msi properly and restart client after update 2018-06-19 18:18:25 +02:00
Dominik Schmidt
737353a017 Implement basic .msi support in updater 2018-06-19 18:18:25 +02:00
Olivier Goffart
528b5e3108 Updater: Fix beta channel for translated clients.
The names in the combobox are being translated, so we need to rely
on the index rather than the text.

(cherry picked from commit ae80317a74)
2018-06-19 12:57:28 +02:00
Christian Kamm
5d098140e7 Settings: Add warning when switching update channel
(cherry picked from commit 53f52b4cf5)
2018-05-24 13:39:00 +02:00
Christian Kamm
aeb4eed7b5 Updater: Make sparkle updater respect release channel
(cherry picked from commit 293c2b4f79)
2018-05-24 13:39:00 +02:00
Markus Goetz
c68b112858 Auto Updater: Show UI element also on macOS
(cherry picked from commit dfdc2e1e87f99d387a042f4983c999fbb7fcf3d9)
(cherry picked from commit 29349d4b3a)
2018-05-24 13:39:00 +02:00
Christian Kamm
b4f2c3c369 Settings: Add update channel combobox #6259
(cherry picked from commit 7790953a2c)

Significant conflicts in:
	src/gui/updater/updater.cpp
2018-05-24 13:39:00 +02:00
Olivier Goffart
084f522de1 Credentials: Retry fetching from the keychain in case the keychain is still starting
When owncloud is restored, at boot time, it might be started before the
crendential manager. So if we detect an error, wait 10 seconds and hopefully
it'd be loaded by then.

Issues: #4274, #6522
(cherry picked from commit c625d8e3b7)
2018-05-24 12:41:17 +02:00
Markus Goetz
5d5e0220b4 macOS: Don't use WAL for sqlite3 in /Volumes
For #6049

(cherry picked from commit 309c53ca8f)
2018-05-17 13:21:24 +02:00
Christian Kamm
7b5ce24302 Upload: Adjust timeout for final job based on size #6527
Some servers have virus scanners and the like that can delay the
response of the final chunked upload assembly significantly, often
breaking the current 5min (!) timeout. See owncloud/enterprise#2480
for details.

(cherry picked from commit 2638332dc6)
2018-05-17 13:15:51 +02:00
Christian Kamm
19e33d0924 SyncJournal: Check file existence even for open dbs #6049
With WAL mode sqlite seems to occasionally crash when the
underlying filesystem goes away.

(cherry picked from commit b1224cff0c)
2018-05-17 13:13:31 +02:00
Olivier Goffart
f8a4994307 Nautilus: Fix Python3 and remove many debug
Use b'\n' in the call to rfind, as the _remainder is bytes, not a string.

Remove most of the debug message which happens during normal operation.
They are mostly spamming the nautilus console, and can also cause bug
as they may throw exception in case of wrong encoding.

Relates to issue: #6406

(cherry picked from commit 1ab3a9fc13)
2018-04-26 10:18:37 +02:00
Christian Kamm
04fb952814 Nautilus shell integration: Print python version on startup #6406
(cherry picked from commit 44071f0892)
2018-04-26 10:18:37 +02:00
Christian Kamm
8d6e9523bb Nautilus integration: Not a ColumnProvider
The nautilus plugin doesn't actually define get_columns(), so pretending
to be a ColumnProvider lead to a critical warning on startup.

(cherry picked from commit 9f346037ee)
2018-04-26 10:18:37 +02:00
Thomas Boerger
b317cc18d0 Dropped .travis.yml from repo 2018-04-24 12:53:13 +02:00
Thomas Boerger
03a5833e29 Build clang and gcc on drone 2018-04-24 12:53:13 +02:00
Markus Goetz
91a9c65173 macOS: Unload the Finder extension on exit #5382 #3819
(cherry picked from commit 930053449184a3204525ba5d1e307b6629f0b925)
2018-04-11 13:40:51 +02:00
Markus Goetz
edabed9594 macdeployqt: Adjust minimum version based on our Qt #5932
(cherry picked from commit e9646364a0)
2018-04-03 21:31:51 +02:00
Olivier Goffart
838beded20 csync_update: add the checksum in the discovery log
Issue #6414

(cherry picked from commit 39d909b05a)
2018-04-03 15:17:15 +02:00
Christian Kamm
7dcfe9993c Blacklisting must prevent parent etag updates #6411
(cherry picked from commit 5e75d224ee)
2018-03-28 10:02:46 +02:00
Olivier Goffart
b73e2fbdab Folder: normalize the local path.
We otherwise normalize all path in the C form, so we must have
the Folder's path normalized the same. Or all comparizon will fail
(such as knowing if a file from the SocketAPI or the FilesystemWatcher
are part of the folder)

Issue #4424

(cherry picked from commit 26b991c0c0)
2018-03-27 10:56:14 +02:00
Olivier Goffart
d49771b43a propagateuploadv1: don't finalize after a done()
Should fix an assert when "Server does not support X-OC-MTime"
(Which only happens with owncloud 5)

Issue #6403

(cherry picked from commit 3f4d504c34)
2018-03-27 10:56:10 +02:00
Markus Goetz
928cdf4f4f SslButton: Add HTTP/2 info #3146
(cherry picked from commit 7739157bfc)
2018-03-27 09:02:29 +02:00
Markus Goetz
8da6fc40a1 macdeployqt: Qt 5.10.1 #5932
(cherry picked from commit 20bd943a87)
2018-03-27 08:49:57 +02:00
Markus Goetz
6e84a8d420 macOS: Put Qt version in .pkg name
(cherry picked from commit b34878c16d)
2018-03-26 19:41:46 +02:00
Christian Kamm
29557ea550 Fix nautilus/nemo shell integration encoding issues #6393
The problem was that plain encode()/decode() in python2 use ascii
encoding, not utf8.
2018-03-21 11:25:37 +01:00
Jenkins for ownCloud
37a93dca63 [tx-robot] updated from transifex 2018-03-21 02:18:33 +01:00
Jenkins for ownCloud
b632b7e0fa [tx-robot] updated from transifex 2018-03-20 02:18:30 +01:00
Jenkins for ownCloud
fc8e3b0914 [tx-robot] updated from transifex 2018-03-19 02:18:32 +01:00
Jenkins for ownCloud
861d777899 [tx-robot] updated from transifex 2018-03-18 02:18:31 +01:00
Jenkins for ownCloud
ff3e3ce886 [tx-robot] updated from transifex 2018-03-17 02:18:31 +01:00
Dominik Schmidt
567f7eb205 Apply branding to crashreporter resources file 2018-03-16 16:35:49 +01:00
Jenkins for ownCloud
c3c8ab85ec [tx-robot] updated from transifex 2018-03-16 02:18:30 +01:00
Jenkins for ownCloud
d1c887d754 [tx-robot] updated from transifex 2018-03-15 02:18:32 +01:00
Jenkins for ownCloud
991f4faafb [tx-robot] updated from transifex 2018-03-14 02:18:31 +01:00
Jenkins for ownCloud
371acb296d [tx-robot] updated from transifex 2018-03-13 02:18:36 +01:00
Jenkins for ownCloud
1119bcf539 [tx-robot] updated from transifex 2018-03-11 02:18:36 +01:00
Jenkins for ownCloud
d67018311f [tx-robot] updated from transifex 2018-03-10 02:18:34 +01:00
Jenkins for ownCloud
eaecec418e [tx-robot] updated from transifex 2018-03-09 02:18:35 +01:00
Jenkins for ownCloud
ab27bcacdf [tx-robot] updated from transifex 2018-03-08 02:18:36 +01:00
Jenkins for ownCloud
536a051460 [tx-robot] updated from transifex 2018-03-07 02:18:36 +01:00
Jenkins for ownCloud
259a117db5 [tx-robot] updated from transifex 2018-03-06 02:18:36 +01:00
Jenkins for ownCloud
167939a8c9 [tx-robot] updated from transifex 2018-03-05 02:18:37 +01:00
Jenkins for ownCloud
41ebfb635e [tx-robot] updated from transifex 2018-03-04 02:18:36 +01:00
Jenkins for ownCloud
017b8e9de3 [tx-robot] updated from transifex 2018-03-03 02:18:35 +01:00
Jenkins for ownCloud
6453c57979 [tx-robot] updated from transifex 2018-03-02 02:18:36 +01:00
Jenkins for ownCloud
a01c73be19 [tx-robot] updated from transifex 2018-03-01 02:18:37 +01:00
Jenkins for ownCloud
f63737ecb0 [tx-robot] updated from transifex 2018-02-28 02:18:35 +01:00
Jenkins for ownCloud
dd87799a82 [tx-robot] updated from transifex 2018-02-27 02:19:02 +01:00
Jenkins for ownCloud
da6b515bfc [tx-robot] updated from transifex 2018-02-26 02:19:12 +01:00
Jenkins for ownCloud
f9a03fa288 [tx-robot] updated from transifex 2018-02-25 02:19:29 +01:00
Jenkins for ownCloud
a5c66cf289 [tx-robot] updated from transifex 2018-02-24 02:18:36 +01:00
Jenkins for ownCloud
41b908e293 [tx-robot] updated from transifex 2018-02-23 02:18:35 +01:00
Jenkins for ownCloud
6ffed87b08 [tx-robot] updated from transifex 2018-02-22 02:18:34 +01:00
Jenkins for ownCloud
bd5ea43547 [tx-robot] updated from transifex 2018-02-21 02:18:51 +01:00
Markus Goetz
8ba27cb0f1 VERSION.cmake: This is 2.4.2 now 2018-02-20 12:13:58 +01:00
Markus Goetz
1ab8bb62ae ChangeLog: 2.4.1 2018-02-20 12:11:11 +01:00
Markus Goetz
6f8248ebfd test/testsyncengine: testNoLocalEncoding is for Linux 2018-02-20 11:26:11 +01:00
Christian Kamm
33306dcc38 Set launch-on-startup when the first account is set up
The previous code would disable it when the second account was
configured.

See #6347
2018-02-20 11:20:52 +01:00
Jenkins for ownCloud
888818a9f7 [tx-robot] updated from transifex 2018-02-20 02:18:34 +01:00
Jenkins for ownCloud
d90229242e [tx-robot] updated from transifex 2018-02-19 02:18:34 +01:00
Jenkins for ownCloud
b14ba325d5 [tx-robot] updated from transifex 2018-02-18 02:18:35 +01:00
Jenkins for ownCloud
628e310501 [tx-robot] updated from transifex 2018-02-17 02:18:34 +01:00
Jenkins for ownCloud
131647442f [tx-robot] updated from transifex 2018-02-16 02:18:34 +01:00
ChrisEdS
01b79f2ff1 Fix ownCloud icon in unbranded installer
Fix ownCloud icon in unbranded installer
2018-02-15 12:07:24 +01:00
Christian Kamm
73062e21a3 SyncJournal: Don't use LIKE with paths
Paths can contain the wildcards % and _ and that would lead to odd
behavior.

This patch also clarifies the behavior of avoidReadFromDbOnNextSync()
which previously dependend on whether "foo/bar" or "foo/bar/" was
passed as input.

Possibly affects #6322
2018-02-15 09:56:43 +01:00
Christian Kamm
e7e6584cab Sharing: Use maximum allowed permissions for new share #6346
The client already computed the valid permissions, there was just a typo
that meant we didn't end up using them.
2018-02-15 09:10:47 +01:00
Jenkins for ownCloud
7373c68aeb [tx-robot] updated from transifex 2018-02-15 02:18:35 +01:00
Markus Goetz
13f1122c50 HTTP2: Only from Qt 5.9.4 #6285 2018-02-14 12:11:27 +01:00
Jenkins for ownCloud
ba5fb5aca7 [tx-robot] updated from transifex 2018-02-14 02:18:33 +01:00
Jenkins for ownCloud
55a91926c1 [tx-robot] updated from transifex 2018-02-13 02:18:34 +01:00
Markus Goetz
b5e129aa6b Theme: Icon cache explanation 2018-02-12 17:11:58 +01:00
Markus Goetz
9fc175231d Notifications: Immediately request when getting account online 2018-02-12 09:01:00 +01:00
Markus Goetz
4dd0a75cce SettingsDialogMac: Also start timer for notifications 2018-02-12 09:01:00 +01:00
Jenkins for ownCloud
3cfd502f7e [tx-robot] updated from transifex 2018-02-12 02:18:34 +01:00
Jenkins for ownCloud
452a99f7d3 [tx-robot] updated from transifex 2018-02-11 02:18:34 +01:00
Jenkins for ownCloud
a9d37a0784 [tx-robot] updated from transifex 2018-02-10 02:18:51 +01:00
Christian Kamm
22b19636e9 Don't delete contents behind directory junctions #6322
QFileInfo::isSymLink() does detect reparse points that are symlinks but
returns false for junctions. The new function FileSystem::isJunction()
can detect those and is used to not recursively delete files inside
directories that are junctions.

See also https://bugreports.qt.io/browse/QTBUG-45344 and the
discussion in the PR https://codereview.qt-project.org/#/c/113019/.
2018-02-09 09:15:29 +01:00
Jenkins for ownCloud
6ee3310e2b [tx-robot] updated from transifex 2018-02-09 02:18:54 +01:00
Jenkins for ownCloud
065b1eed11 [tx-robot] updated from transifex 2018-02-08 02:18:53 +01:00
Jenkins for ownCloud
dbc2d4a8b6 [tx-robot] updated from transifex 2018-02-07 02:18:35 +01:00
Markus Goetz
7eb2dc21af ServerNotificationHandler: Properly create "Dismiss" URL
Qt's JSON API is confusing, it doesn't convert to a string as one expects.
2018-02-06 20:28:00 +01:00
Jenkins for ownCloud
8fb9700869 [tx-robot] updated from transifex 2018-02-06 02:18:36 +01:00
Jenkins for ownCloud
f95e044206 [tx-robot] updated from transifex 2018-02-05 02:18:34 +01:00
Jenkins for ownCloud
795ab29514 [tx-robot] updated from transifex 2018-02-04 02:18:38 +01:00
Jenkins for ownCloud
72262b565e [tx-robot] updated from transifex 2018-02-03 02:18:36 +01:00
Markus Goetz
06a86033c1 ChangeLog: Entries for 2.4.1 2018-02-02 16:30:49 +01:00
Jenkins for ownCloud
e17d5defe3 [tx-robot] updated from transifex 2018-02-02 02:18:34 +01:00
Jenkins for ownCloud
959d60e957 [tx-robot] updated from transifex 2018-02-01 02:18:34 +01:00
Samuel Alfageme
31f516f390 Fix 2.4.0 release date that somehow got lost 2018-01-31 13:43:13 +01:00
Jenkins for ownCloud
b6835186a3 [tx-robot] updated from transifex 2018-01-31 02:18:36 +01:00
Jenkins for ownCloud
c32ba4aee3 [tx-robot] updated from transifex 2018-01-30 02:18:36 +01:00
Olivier Goffart
e720f84005 owncloudcmd: Do not do the capability call when --nonshib is passed
https://github.com/owncloud/enterprise/issues/2391
2018-01-29 09:57:18 +01:00
Jenkins for ownCloud
48ef2e4563 [tx-robot] updated from transifex 2018-01-29 02:18:36 +01:00
Jenkins for ownCloud
a0d9fc4354 [tx-robot] updated from transifex 2018-01-28 02:18:53 +01:00
Jenkins for ownCloud
e4b2d27c65 [tx-robot] updated from transifex 2018-01-27 02:18:50 +01:00
Jenkins for ownCloud
c846a329a8 [tx-robot] updated from transifex 2018-01-26 02:18:34 +01:00
Jenkins for ownCloud
c1bf90ddad [tx-robot] updated from transifex 2018-01-25 02:18:51 +01:00
Jenkins for ownCloud
b418bf6db4 [tx-robot] updated from transifex 2018-01-24 02:18:35 +01:00
Christian Kamm
72363155d8 Nautilus integration: Work with python2 and python3 2018-01-23 12:30:58 +01:00
Olivier Goffart
f254ee3211 Nautilus shell integration: Port to Python 3 2018-01-23 12:30:58 +01:00
Christian Kamm
497b327d43 ShareLinkWidget: Remove outdated signal connection
Also convert the others to the new syntax to avoid similar errors in the
future.
2018-01-23 12:01:22 +01:00
Christian Kamm
d831369f86 Protocol: Remove entries for auto resolved conflicts #6316 2018-01-23 12:01:22 +01:00
Jenkins for ownCloud
c1a1e55207 [tx-robot] updated from transifex 2018-01-23 02:18:36 +01:00
Olivier Goffart
c3dbb20ce3 Logger: --logdebug only show owncloud's debug message
Recent Qt version show way too many debug messages, spamming the console.
So filter only messages that comes from the client.
2018-01-22 21:13:15 +01:00
Jenkins for ownCloud
ba4712c922 [tx-robot] updated from transifex 2018-01-22 02:18:54 +01:00
Jenkins for ownCloud
a19eb59461 [tx-robot] updated from transifex 2018-01-21 02:18:35 +01:00
Jenkins for ownCloud
484ec95596 [tx-robot] updated from transifex 2018-01-20 02:18:50 +01:00
Jenkins for ownCloud
6f5b3eb4d7 [tx-robot] updated from transifex 2018-01-19 02:18:35 +01:00
Jenkins for ownCloud
a32b3e565b [tx-robot] updated from transifex 2018-01-18 02:18:38 +01:00
Christian Kamm
a8a6f82270 Link shares: Change default share name #6298
There's a 64 character limit and we don't want to accidentally exceed
it.

Eventually there might be server API for default share name generation.

See owncloud/core#29913
2018-01-17 15:03:11 +01:00
Jenkins for ownCloud
24d6fda360 [tx-robot] updated from transifex 2018-01-17 02:18:35 +01:00
Jenkins for ownCloud
d4106b9a88 [tx-robot] updated from transifex 2018-01-16 02:18:35 +01:00
Olivier Goffart
d0713d018c client_de.ts: Fix spacing in a translation
Issue #6303
2018-01-15 11:29:08 +01:00
Jürgen Weigert
a33fc2a0db Update updater.cpp
deprecate suffix nightly, promote suffix daily
2018-01-15 11:25:10 +01:00
Jenkins for ownCloud
ca200e788e [tx-robot] updated from transifex 2018-01-15 02:18:34 +01:00
Jenkins for ownCloud
c454d626b6 [tx-robot] updated from transifex 2018-01-14 02:18:36 +01:00
Jenkins for ownCloud
4cf7ca4162 [tx-robot] updated from transifex 2018-01-13 02:18:33 +01:00
Jenkins for ownCloud
c22e3aaa4b [tx-robot] updated from transifex 2018-01-12 02:19:52 +01:00
Christian Kamm
7d70f1becb Ignore files that can't be encoded for the filesystem
There's an upstream bug where QTextCodec::canEncode returns true even
though it should be false. This works around that issue and adds a test.

The original work was done in 72809ef5b1

See #6287, #5676, #5719
See https://bugreports.qt.io/browse/QTBUG-6925
2018-01-10 13:36:00 +01:00
Jenkins for ownCloud
a476c5420a [tx-robot] updated from transifex 2018-01-10 02:18:51 +01:00
Christian Kamm
cdd8d10940 Fix resizing crash when currentPage() is null
Sentry:
https://sentry.io/owncloud/desktop-win-and-mac/issues/425331770/
2018-01-09 13:54:11 +01:00
Christian Kamm
883deb1c5d Fix potential crash in Composite job destruction
Sentry:
https://sentry.io/owncloud/desktop-win-and-mac/issues/427476987/
2018-01-09 13:53:57 +01:00
Christian Kamm
e389fcaecb Avatars: Use old location for servers <10 #6279 2018-01-09 11:34:56 +01:00
Jenkins for ownCloud
9078d9cfab [tx-robot] updated from transifex 2018-01-09 02:18:35 +01:00
Christian Kamm
51b662fdfe Minor logging additions
- Clearly mark local and remote discovery start, to make this searchable
even without --logdebug.
- Promote two messages from debug to info: The 'N entries read from db'
message is useful and the 'read from db but ignored' message is rare
and surprising - if there's a bug there we want to see what happened in
the logs.
2018-01-08 09:36:30 +01:00
Jenkins for ownCloud
b6d74ad753 [tx-robot] updated from transifex 2018-01-08 02:18:35 +01:00
Jenkins for ownCloud
5656323434 [tx-robot] updated from transifex 2018-01-06 02:18:39 +01:00
Christian Kamm
81baebf113 owncloudcmd: Set proxy earlier #6281
In particular before the capability call.

Also warn if no proxy is set because the command line doesn't follow the
strict format requirements.

(cherry picked from commit d0e7f61db6)
2018-01-05 10:26:55 +01:00
Christian Kamm
f7c884d4d1 owncloudcmd: Remove some dead code
(cherry picked from commit 0f8790d993)
2018-01-05 10:26:53 +01:00
Christian Kamm
7aa9af08c3 Issues: Speed up insertion and add hard upper limit #6272
Since sorting was enabled permanenty the list would be resorted with
each inserted issue. When inserting thousands of ignored files that
would make the whole ui freeze up.

Instead, sorting is disabled for inserts now and is reenabled after some
time has passed. That way users usually see the sorted view without the
lockups. Also, there's now a maximum of 50k issue entries.
2018-01-05 08:44:27 +01:00
Jenkins for ownCloud
15803d1837 [tx-robot] updated from transifex 2018-01-05 02:18:35 +01:00
Jenkins for ownCloud
c0c10fd5f1 [tx-robot] updated from transifex 2018-01-04 02:18:34 +01:00
Jenkins for ownCloud
e2d4a38639 [tx-robot] updated from transifex 2018-01-03 02:18:34 +01:00
Jenkins for ownCloud
f89676d4bb [tx-robot] updated from transifex 2018-01-02 02:18:36 +01:00
Jenkins for ownCloud
b9c167fc13 [tx-robot] updated from transifex 2018-01-01 02:18:34 +01:00
Jenkins for ownCloud
3bac06d6e5 [tx-robot] updated from transifex 2017-12-31 02:18:36 +01:00
Jenkins for ownCloud
504e11b5bb [tx-robot] updated from transifex 2017-12-30 02:18:36 +01:00
Jenkins for ownCloud
b80ba97154 [tx-robot] updated from transifex 2017-12-29 02:18:34 +01:00
Jenkins for ownCloud
e3e38f3eac [tx-robot] updated from transifex 2017-12-28 02:18:36 +01:00
Jenkins for ownCloud
93c9f4316b [tx-robot] updated from transifex 2017-12-27 02:18:35 +01:00
Jenkins for ownCloud
47a7000121 [tx-robot] updated from transifex 2017-12-26 02:18:36 +01:00
Jenkins for ownCloud
6c9026e330 [tx-robot] updated from transifex 2017-12-25 02:18:36 +01:00
Jenkins for ownCloud
d59c609a73 [tx-robot] updated from transifex 2017-12-24 02:18:35 +01:00
Jenkins for ownCloud
6ee48c8f15 [tx-robot] updated from transifex 2017-12-23 02:18:34 +01:00
Jenkins for ownCloud
6af823b36a [tx-robot] updated from transifex 2017-12-22 02:18:56 +01:00
Jenkins for ownCloud
8c7ea61623 [tx-robot] updated from transifex 2017-12-21 02:18:35 +01:00
Markus Goetz
067508c082 VERSION.cmake: This branch is now 2.4.1 2017-12-20 16:03:35 +01:00
Jenkins for ownCloud
79065ba5c6 [tx-robot] updated from transifex 2017-12-20 02:18:53 +01:00
Jenkins for ownCloud
3fbd156c83 [tx-robot] updated from transifex 2017-12-19 02:18:35 +01:00
Jenkins for ownCloud
8fb191afcf [tx-robot] updated from transifex 2017-12-18 02:18:34 +01:00
Jenkins for ownCloud
ab37856a91 [tx-robot] updated from transifex 2017-12-17 02:18:35 +01:00
Hefee
69e81e8f65 Also disable fstack-protector for alpha plattform.
This fixes #6211.
2017-12-16 14:03:59 +01:00
Jenkins for ownCloud
46e796303e [tx-robot] updated from transifex 2017-12-16 02:18:35 +01:00
108 changed files with 3650 additions and 2488 deletions

91
.drone.yml Normal file
View File

@@ -0,0 +1,91 @@
#
# We are building GCC with make and Clang with ninja, the combinations are more
# or less arbitrarily chosen. We just want to check that both compilers and both
# CMake generators work. It's unlikely that a specific generator only breaks
# with a specific compiler.
#
workspace:
base: /drone
path: src/github.com/owncloud/client
branches:
- master
- 2.4
clone:
git:
image: plugins/git
pull: true
tags: false
pipeline:
prepare-clang:
image: owncloudci/client:latest
pull: true
environment:
- LC_ALL=C.UTF-8
commands:
- mkdir clang-build
- cd clang-build
- cmake -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE="Debug" -DUNIT_TESTING=1 ..
building-clang:
image: owncloudci/client:latest
pull: true
environment:
- LC_ALL=C.UTF-8
commands:
- cd clang-build
- ninja -j4
testing-clang:
image: owncloudci/client:latest
pull: true
environment:
- LC_ALL=C.UTF-8
commands:
- cd clang-build
- useradd -m -s /bin/bash tester
- chown -R tester:tester .
- su-exec tester ctest --output-on-failure
prepare-gcc:
image: owncloudci/client:latest
pull: true
environment:
- LC_ALL=C.UTF-8
commands:
- mkdir gcc-build
- cd gcc-build
- cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE="Debug" -DUNIT_TESTING=1 ..
building-gcc:
image: owncloudci/client:latest
pull: true
environment:
- LC_ALL=C.UTF-8
commands:
- cd gcc-build
- make -j4
testing-gcc:
image: owncloudci/client:latest
pull: true
environment:
- LC_ALL=C.UTF-8
commands:
- cd gcc-build
- useradd -m -s /bin/bash tester
- chown -R tester:tester .
- su-exec tester ctest --output-on-failure
notify-slack:
image: plugins/slack
pull: true
secrets: [ slack_webhook ]
channel: desktop
when:
local: false
status: [ changed, failure ]
event: [ push ]

View File

@@ -1,37 +0,0 @@
sudo: required
language: cpp
services:
- docker
branches:
only:
- coverity_scan
before_install:
- sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
- sudo sh -c "echo 'deb-src http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
- wget http://download.opensuse.org/repositories/isv:ownCloud:desktop/Ubuntu_14.04/Release.key
- sudo apt-key add - < Release.key
- sudo apt-get update
- sudo apt-get -y build-dep owncloud-client
- checkout=$(git show-ref --head --hash head)
- cd ../
- wget https://scan.coverity.com/download/linux-64 --post-data "token=$token&project=owncloud%2Fmirall" -O coverity_tool.tgz
- mkdir coverity
- tar -xvf coverity_tool.tgz -C coverity --strip-components=1
- export PATH=$PATH:$PWD/coverity/bin/
- cd $TRAVIS_BUILD_DIR
install:
- cd ../
- mkdir client-build
- cd client-build
- cmake -DCMAKE_BUILD_TYPE="Debug" $TRAVIS_BUILD_DIR
- cov-build --dir cov-int make
- tar czvf client.tgz cov-int
- curl --form token=$token --form email=lukas@statuscode.ch --form file=@$PWD/client.tgz --form version="$checkout" --form description="$checkout" https://scan.coverity.com/builds?project=owncloud%2Fmirall
# Hack to stop processing
script: true

View File

@@ -1,7 +1,49 @@
ChangeLog
=========
version 2.4.0 (2017-12-XX)
version 2.4.3 (2018-08-xx)
* Windows: Don't ignore files with FILE_ATTRIBUTE_TEMPORARY (#6696, #6610)
* OAuth2: Fix infinite loop when the refresh token is expired
* Windows MSI: Fix crash in the auto updater
* Nautilus: Guard against None state (#6643)
version 2.4.2 (2018-07-18)
* Linux: Tray workarounds (#6545)
* Fix nautilus/nemo shell issues (#6393, #6406)
* Updater: Add update channel feature (#6259)
* Updater: Support EXE->MSI upgrade
* SyncJournal: Fixes for sync folders on removable media (#6049, #6049)
* SslButton: Add HTTP/2 info (#3146)
* Fix assert when using ownCloud server 5 (which you should not) (#6403)
* Normalize local path (#4424)
* Blacklisting must prevent parent etag updates (#6411)
* macdeployqt: Adjust minimum version based on our Qt (#5932)
* macOS: Unload the Finder extension on exit (#5382, #3819)
* Upload: Adjust timeout for final job based on file size (#6527)
* Sync: When detecting a local move, keep the local mtime (#6629)
* Credentials: Retry fetching from the keychain in case the keychain is still starting (#4274, #6522)
* OAuth2: Try to refresh the token even if the credentials weren't ready (#6522)
version 2.4.1 (2018-02-xx)
* Ignore files with file names that can't be encoded for the filesystem (#6287, #5676, #5719)
* Issues: Speed up insertion and add hard upper limit (#6272)
* Notifications: Fix "Dismiss" action
* Notifications: Fix timer invocation on macOS
* Notifications: Immediately poll when account online
* Protocol: Remove entries for auto resolved conflicts (#6316)
* owncloudcmd: Set proxy before capabilities call (#6281)
* owncloudcmd: Do not do the capability call when --nonshib is passed
* Avatars: Use old location for servers <10 (#6279)
* Link shares: Change default share name (#6298)
* Sharing: Use maximum allowed permissions for new share (#6346)
* Nautilus integration: Work with python2 and python3
* Windows: Don't delete contents behind directory junctions (#6322)
* SyncJournal: Don't use LIKE with paths (#6322)
* Fix setting launch-on-startup when the first account is set up (#6347)
* HTTP2: Only allow with Qt 5.9.4 (#6285)
* Crash fixes
version 2.4.0 (2017-12-21)
* If you're using 2.4.0 alpha1, please upgrade as previous alphas/rcs had an issue with hidden files and renames!
* OAuth2 authentication support by opening external browser (#5668)
* Shibboleth: Change to use OAuth2 if supported (#6198)

51
Jenkinsfile vendored
View File

@@ -1,51 +0,0 @@
#!groovy
//
// We now run the tests in Debug mode so that ASSERTs are triggered.
// Ideally we should run the tests in both Debug and Release so we catch
// all possible error combinations.
// See also the top comment in syncenginetestutils.h
//
node('CLIENT') {
stage 'Checkout'
checkout scm
sh '''git submodule update --init'''
stage 'Qt5'
sh '''rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE="Debug" -DUNIT_TESTING=1 -DWITH_TESTING=1 -DCMAKE_PREFIX_PATH=/var/lib/jenkins/qt/5.6.2 ..
make -j4
ctest -V --output-on-failure'''
stage 'Qt5 - clang'
sh '''rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DUNIT_TESTING=1 -DWITH_TESTING=1 -DCMAKE_PREFIX_PATH=/var/lib/jenkins/qt/5.6.2 ..
make -j4
ctest -V --output-on-failure'''
stage 'Win32'
def win32 = docker.image('guruz/docker-owncloud-client-win32:latest')
win32.pull() // make sure we have the latest available from Docker Hub
win32.inside {
sh '''
rm -rf build-win32
mkdir build-win32
cd build-win32
../admin/win/download_runtimes.sh
cmake .. -DCMAKE_TOOLCHAIN_FILE=../admin/win/Toolchain-mingw32-openSUSE.cmake -DWITH_CRASHREPORTER=ON
make -j4
make package
ctest .
'''
}
// Stage 'macOS' TODO
}

View File

@@ -19,4 +19,4 @@ set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-back
option( WITH_CRASHREPORTER "Build crashreporter" OFF )
set( CRASHREPORTER_SUBMIT_URL "https://crash-reports.owncloud.com/submit" CACHE string "URL for crash reporter" )
set( CRASHREPORTER_ICON ":/owncloud-icon.png" )

View File

@@ -1,6 +1,6 @@
# ownCloud Desktop Client
[![Build Status](https://jenkins.owncloud.org/buildStatus/icon?job=owncloud-client/client/master)](https://jenkins.owncloud.org/job/owncloud-client/job/client/job/master/)
[![Build Status](https://drone.owncloud.com/api/badges/owncloud/client/status.svg)](https://drone.owncloud.com/owncloud/client)
## Introduction

View File

@@ -1,11 +1,11 @@
set( MIRALL_VERSION_MAJOR 2 )
set( MIRALL_VERSION_MINOR 4 )
set( MIRALL_VERSION_PATCH 0 )
set( MIRALL_VERSION_YEAR 2017 )
set( MIRALL_VERSION_PATCH 3 )
set( MIRALL_VERSION_YEAR 2018 )
set( MIRALL_SOVERSION 0 )
if ( NOT DEFINED MIRALL_VERSION_SUFFIX )
set( MIRALL_VERSION_SUFFIX "git") #e.g. beta1, beta2, rc1
set( MIRALL_VERSION_SUFFIX "") #e.g. beta1, beta2, rc1
endif( NOT DEFINED MIRALL_VERSION_SUFFIX )
if( NOT DEFINED MIRALL_VERSION_BUILD )

View File

@@ -11,6 +11,7 @@ else()
set(MAC_INSTALLER_DO_CUSTOM_BACKGROUND "0")
endif()
find_package(Qt5 5.6 COMPONENTS Core REQUIRED)
configure_file(create_mac_pkg.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/create_mac.sh)
configure_file(macosx.pkgproj ${CMAKE_CURRENT_BINARY_DIR}/macosx.pkgproj)
configure_file(pre_install.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/pre_install.sh)

View File

@@ -23,7 +23,7 @@ identity="$3"
prjfile=$build_path/admin/osx/macosx.pkgproj
# The name of the installer package
installer="@APPLICATION_SHORTNAME@-@MIRALL_VERSION_FULL@@MIRALL_VERSION_SUFFIX@"
installer="@APPLICATION_SHORTNAME@-qt@Qt5Core_VERSION@-@MIRALL_VERSION_FULL@@MIRALL_VERSION_SUFFIX@"
installer_file="$installer.pkg"
installer_file_tar="$installer.pkg.tar"
installer_file_tar_bz2="$installer.pkg.tar.bz2"

View File

@@ -22,6 +22,7 @@ import subprocess
import commands
import sys
from glob import glob
from distutils.version import LooseVersion
def QueryQMake(attrib):
return subprocess.check_output([qmake_path, '-query', attrib]).rstrip('\n')
@@ -92,6 +93,8 @@ commands.append(['mkdir', '-p', resources_dir])
plugins_dir = os.path.join(bundle_dir, 'Contents', 'PlugIns')
binaries = [i for i in glob(os.path.join(bundle_dir, 'Contents', 'MacOS', "*")) if is_exe(i)];
qt_version = QueryQMake('QT_VERSION')
print "Using Qt", qt_version
fixed_libraries = []
fixed_frameworks = []
@@ -334,9 +337,19 @@ def FindQtPlugin(name):
for binary in binaries:
FixBinary(binary)
if LooseVersion(qt_version) >= LooseVersion("5.10.0"):
QT_PLUGINS.append('styles/libqmacstyle.dylib')
for plugin in QT_PLUGINS:
FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))
if LooseVersion(qt_version) >= LooseVersion("5.10.0"):
args = ['plutil', '-insert', 'LSMinimumSystemVersion', '-string', '10.10.0', os.path.join(bundle_dir, 'Contents', 'Info.plist')]
commands.append(args)
else:
args = ['plutil', '-insert', 'LSMinimumSystemVersion', '-string', '10.7.0', os.path.join(bundle_dir, 'Contents', 'Info.plist')]
commands.append(args)
if len(sys.argv) <= 2:
print 'Will run %d commands:' % len(commands)
for command in commands:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -27,11 +27,9 @@
<key>CFBundleShortVersionString</key>
<string>@MIRALL_VERSION_STRING@</string>
<key>NSHumanReadableCopyright</key>
<string>(C) 2014-2016 @APPLICATION_VENDOR@</string>
<string>(C) 2014-2018 @APPLICATION_VENDOR@</string>
<key>SUShowReleaseNotes</key>
<false/>
<key>LSMinimumBundleVersion</key>
<string>10.7.0</string>
<key>SUPublicDSAKeyFile</key>
<string>dsa_pub.pem</string>
</dict>

View File

@@ -83,6 +83,285 @@ 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
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# Translations
# 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[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
@@ -166,6 +445,11 @@ Icon[it]=@APPLICATION_EXECUTABLE@
Comment[ko]=@APPLICATION_NAME@ 데스크톱 동기화 클라이언트
GenericName[ko]=폴더 동기화
Name[ko]=@APPLICATION_NAME@ 데스크톱 동기화 클라이언트
Icon[ko]=@APPLICATION_EXECUTABLE@
Comment[lo]=@APPLICATION_NAME@ ການປະສານຂໍ້ມູນຄອມພິວເຕີລູກຂ່າຍ
GenericName[lo]=ໂຟນເດີຊິງ
Name[lo]=@APPLICATION_NAME@ ຊິງຄອມພິວເຕີລູກຂ່າຍ
Icon[lo]=@APPLICATION_EXECUTABLE@
Comment[hu_HU]=@APPLICATION_NAME@ asztali szinkronizációs kliens
GenericName[hu_HU]=Könyvtár szinkronizálás
Name[hu_HU]=@APPLICATION_NAME@ asztali szinkr. kliens

View File

@@ -15,8 +15,13 @@
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
import sys
python3 = sys.version_info[0] >= 3
import os
import urllib
if python3:
import urllib.parse
import socket
import tempfile
@@ -29,12 +34,15 @@ from gi.repository import GObject, Nautilus
appname = 'ownCloud'
print("Initializing "+appname+"-client-nautilus extension")
print("Using python version {}".format(sys.version_info))
def get_local_path(url):
if url[0:7] == 'file://':
url = url[7:]
return urllib.unquote(url)
if python3:
return urllib.parse.unquote(url)
else:
return urllib.unquote(url).decode('utf-8')
def get_runtime_dir():
"""Returns the value of $XDG_RUNTIME_DIR, a directory path.
@@ -56,7 +64,7 @@ class SocketConnect(GObject.GObject):
self._watch_id = 0
self._sock = None
self._listeners = [self._update_registered_paths]
self._remainder = ''
self._remainder = ''.encode('utf-8')
self.nautilusVFSFile_table = {} # not needed in this object actually but shared
# all over the other objects.
@@ -74,7 +82,7 @@ class SocketConnect(GObject.GObject):
# print("Server command: " + cmd)
if self.connected:
try:
self._sock.send(cmd)
self._sock.send(cmd.encode('utf-8'))
except:
print("Sending failed.")
self.reconnect()
@@ -89,18 +97,15 @@ class SocketConnect(GObject.GObject):
self._sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock_file = os.path.join(get_runtime_dir(), appname, "socket")
try:
print("Socket File: " + sock_file)
self._sock.connect(sock_file) # fails if sock_file doesn't exist
self.connected = True
print("Setting connected to %r." % self.connected )
self._watch_id = GObject.io_add_watch(self._sock, GObject.IO_IN, self._handle_notify)
print("Socket watch id: " + str(self._watch_id))
self.sendCommand('GET_STRINGS:\n')
return False # Don't run again
except Exception as e:
print("Could not connect to unix socket. " + str(e))
print("Could not connect to unix socket " + sock_file + ". " + str(e))
except Exception as e: # Bad habbit
print("Connect could not be established, try again later.")
self._sock.close()
@@ -113,24 +118,24 @@ class SocketConnect(GObject.GObject):
# Prepend the remaining data from last call
if len(self._remainder) > 0:
data = self._remainder + data
self._remainder = ''
self._remainder = ''.encode('utf-8')
if len(data) > 0:
# Remember the remainder for next round
lastNL = data.rfind('\n');
lastNL = data.rfind('\n'.encode('utf-8'));
if lastNL > -1 and lastNL < len(data):
self._remainder = data[lastNL+1:]
data = data[:lastNL]
for l in data.split('\n'):
self._handle_server_response(l)
for l in data.split('\n'.encode('utf-8')):
self._handle_server_response(l.decode('utf-8'))
else:
return False
return True # Run again
def _handle_server_response(self, line):
print("Server response: " + line)
# print("Server response: " + line)
parts = line.split(':')
action = parts[0]
args = parts[1:]
@@ -209,8 +214,8 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
# and we definitely don't want to show them for IGNORED.
shareable = False
state = entry['state']
state_ok = state.startswith('OK')
state_sync = state.startswith('SYNC')
state_ok = state and state.startswith('OK')
state_sync = state and state.startswith('SYNC')
if state_ok:
shareable = True
elif state_sync and isDir:
@@ -257,11 +262,11 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
def context_menu_action(self, menu, action, file):
filename = get_local_path(file.get_uri())
print("Context menu: " + action + ' ' + filename)
# print("Context menu: " + action + ' ' + filename)
socketConnect.sendCommand(action + ":" + filename + "\n")
class SyncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoProvider):
class SyncStateExtension(GObject.GObject, Nautilus.InfoProvider):
def __init__(self):
GObject.GObject.__init__(self)

View File

@@ -9,7 +9,7 @@ if(NOT TOKEN_AUTH_ONLY)
endif()
if(NOT WIN32)
if(NOT (CMAKE_SYSTEM_PROCESSOR MATCHES "^(parisc|hppa)"))
if(NOT (CMAKE_SYSTEM_PROCESSOR MATCHES "^(alpha|parisc|hppa)"))
if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9))
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector --param=ssp-buffer-size=4")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector --param=ssp-buffer-size=4")

View File

@@ -420,46 +420,6 @@ int main(int argc, char **argv)
folder.chop(1);
}
SimpleSslErrorHandler *sslErrorHandler = new SimpleSslErrorHandler;
HttpCredentialsText *cred = new HttpCredentialsText(user, password);
if (options.trustSSL) {
cred->setSSLTrusted(true);
}
account->setUrl(url);
account->setCredentials(cred);
account->setSslErrorHandler(sslErrorHandler);
//obtain capabilities using event loop
QEventLoop loop;
JsonApiJob *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
job->setTimeout(timeoutToUseMsec);
QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QJsonDocument &json) {
auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject();
qDebug() << "Server capabilities" << caps;
account->setCapabilities(caps.toVariantMap());
loop.quit();
});
job->start();
loop.exec();
if (job->reply()->error() != QNetworkReply::NoError){
std::cout<<"Error connecting to server\n";
return EXIT_FAILURE;
}
// much lower age than the default since this utility is usually made to be run right after a change in the tests
SyncEngine::minimumFileAgeForUpload = 0;
int restartCount = 0;
restart_sync:
opts = &options;
if (!options.proxy.isNull()) {
QString host;
int port = 0;
@@ -477,16 +437,58 @@ restart_sync:
QNetworkProxyFactory::setUseSystemConfiguration(false);
QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::HttpProxy, host, port));
} else {
qFatal("Could not read httpproxy. The proxy should have the format \"http://hostname:port\".");
}
} else {
clientProxy.setupQtProxyFromConfig();
QString url(options.target_url);
if (url.startsWith("owncloud")) {
url.remove(0, 8);
url = QString("http%1").arg(url);
}
SimpleSslErrorHandler *sslErrorHandler = new SimpleSslErrorHandler;
HttpCredentialsText *cred = new HttpCredentialsText(user, password);
if (options.trustSSL) {
cred->setSSLTrusted(true);
}
account->setUrl(url);
account->setCredentials(cred);
account->setSslErrorHandler(sslErrorHandler);
// Perform a call to get the capabilities.
if (!options.nonShib) {
// Do not do it if '--nonshib' was passed. This mean we should only connect to the 'nonshib'
// dav endpoint. Since we do not get the capabilities, in that case, this has the additional
// side effect that chunking-ng will be disabled. (because otherwise it would use the new
// 'dav' endpoint instead of the nonshib one (which still use the old chunking)
QEventLoop loop;
JsonApiJob *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
job->setTimeout(timeoutToUseMsec);
QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QJsonDocument &json) {
auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject();
qDebug() << "Server capabilities" << caps;
account->setCapabilities(caps.toVariantMap());
loop.quit();
});
job->start();
loop.exec();
if (job->reply()->error() != QNetworkReply::NoError){
std::cout<<"Error connecting to server\n";
return EXIT_FAILURE;
}
}
// much lower age than the default since this utility is usually made to be run right after a change in the tests
SyncEngine::minimumFileAgeForUpload = 0;
int restartCount = 0;
restart_sync:
opts = &options;
QStringList selectiveSyncList;
if (!options.unsyncedfolders.isEmpty()) {
QFile f(options.unsyncedfolders);

View File

@@ -478,4 +478,22 @@ bool FileSystem::isLnkFile(const QString &filename)
return filename.endsWith(".lnk");
}
bool FileSystem::isJunction(const QString &filename)
{
#ifdef Q_OS_WIN
WIN32_FIND_DATA findData;
HANDLE hFind = FindFirstFileEx((const wchar_t *)filename.utf16(), FindExInfoBasic, &findData, FindExSearchNameMatch, NULL, 0);
if (hFind != INVALID_HANDLE_VALUE) {
FindClose(hFind);
return false;
}
return findData.dwFileAttributes != INVALID_FILE_ATTRIBUTES
&& findData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT
&& findData.dwReserved0 == IO_REPARSE_TAG_MOUNT_POINT;
#else
Q_UNUSED(filename);
return false;
#endif
}
} // namespace OCC

View File

@@ -141,8 +141,16 @@ namespace FileSystem {
*/
bool OCSYNC_EXPORT isFileLocked(const QString &fileName);
/**
* Returns whether the file is a shortcut file (ends with .lnk)
*/
bool OCSYNC_EXPORT isLnkFile(const QString &filename);
/**
* Returns whether the file is a junction (windows only)
*/
bool OCSYNC_EXPORT isJunction(const QString &filename);
/*
* This function takes a path and converts it to a UNC representation of the
* string. That means that it prepends a \\?\ (unless already UNC) and converts

View File

@@ -32,6 +32,13 @@
#include "common/c_jhash.h"
// SQL expression to check whether path.startswith(prefix + '/')
// Note: '/' + 1 == '0'
#define IS_PREFIX_PATH_OF(prefix, path) \
"(" path " > (" prefix "||'/') AND " path " < (" prefix "||'0'))"
#define IS_PREFIX_PATH_OR_EQUAL(prefix, path) \
"(" path " == " prefix " OR " IS_PREFIX_PATH_OF(prefix, path) ")"
namespace OCC {
Q_LOGGING_CATEGORY(lcDb, "sync.database", QtInfoMsg)
@@ -58,7 +65,7 @@ static void fillFileRecordFromGetQuery(SyncJournalFileRecord &rec, SqlQuery &que
static QString defaultJournalMode(const QString &dbPath)
{
#ifdef Q_OS_WIN
#if defined(Q_OS_WIN)
// See #2693: Some exFAT file systems seem unable to cope with the
// WAL journaling mode. They work fine with DELETE.
QString fileSystem = FileSystem::fileSystemForPath(dbPath);
@@ -67,6 +74,11 @@ static QString defaultJournalMode(const QString &dbPath)
qCInfo(lcDb) << "Filesystem contains FAT - using DELETE journal mode";
return "DELETE";
}
#elif defined(Q_OS_MAC)
if (dbPath.startsWith("/Volumes/")) {
qCInfo(lcDb) << "Mounted sync dir, do not use WAL for" << dbPath;
return "DELETE";
}
#else
Q_UNUSED(dbPath)
#endif
@@ -264,6 +276,11 @@ bool SyncJournalDb::sqlFail(const QString &log, const SqlQuery &query)
bool SyncJournalDb::checkConnect()
{
if (_db.isOpen()) {
if (!QFile::exists(_dbFile)) {
qCWarning(lcDb) << "Database open, but file file" + _dbFile + " does not exist";
close();
return false;
}
return true;
}
@@ -550,7 +567,7 @@ bool SyncJournalDb::checkConnect()
_getFilesBelowPathQuery.reset(new SqlQuery(_db));
if (_getFilesBelowPathQuery->prepare(
GET_FILE_RECORD_QUERY
" WHERE path > (?1||'/') AND path < (?1||'0') ORDER BY path||'/' ASC")) {
" WHERE " IS_PREFIX_PATH_OF("?1", "path") " ORDER BY path||'/' ASC")) {
return sqlFail("prepare _getFilesBelowPathQuery", *_getFilesBelowPathQuery);
}
@@ -620,7 +637,7 @@ bool SyncJournalDb::checkConnect()
}
_deleteFileRecordRecursively.reset(new SqlQuery(_db));
if (_deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE path LIKE(?||'/%')")) {
if (_deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE " IS_PREFIX_PATH_OF("?1", "path"))) {
return sqlFail("prepare _deleteFileRecordRecursively", *_deleteFileRecordRecursively);
}
@@ -1780,9 +1797,8 @@ void SyncJournalDb::avoidRenamesOnNextSync(const QByteArray &path)
}
SqlQuery query(_db);
query.prepare("UPDATE metadata SET fileid = '', inode = '0' WHERE path == ?1 OR path LIKE(?2||'/%')");
query.prepare("UPDATE metadata SET fileid = '', inode = '0' WHERE " IS_PREFIX_PATH_OR_EQUAL("?1", "path"));
query.bindValue(1, path);
query.bindValue(2, path);
query.exec();
// We also need to remove the ETags so the update phase refreshes the directory paths
@@ -1792,25 +1808,28 @@ void SyncJournalDb::avoidRenamesOnNextSync(const QByteArray &path)
void SyncJournalDb::avoidReadFromDbOnNextSync(const QByteArray &fileName)
{
// Make sure that on the next sync, fileName is not read from the DB but uses the PROPFIND to
// get the info from the server
// We achieve that by clearing the etag of the parents directory recursively
QMutexLocker locker(&_mutex);
if (!checkConnect()) {
return;
}
// Remove trailing slash
auto argument = fileName;
if (argument.endsWith('/'))
argument.chop(1);
SqlQuery query(_db);
// This query will match entries for which the path is a prefix of fileName
// Note: CSYNC_FTW_TYPE_DIR == 2
query.prepare("UPDATE metadata SET md5='_invalid_' WHERE ?1 LIKE(path||'/%') AND type == 2;");
query.bindValue(1, fileName);
query.prepare("UPDATE metadata SET md5='_invalid_' WHERE " IS_PREFIX_PATH_OR_EQUAL("path", "?1") " AND type == 2;");
query.bindValue(1, argument);
query.exec();
// Prevent future overwrite of the etag for this sync
_avoidReadFromDbOnNextSyncFilter.append(fileName);
// Prevent future overwrite of the etags of this folder and all
// parent folders for this sync
argument.append('/');
_avoidReadFromDbOnNextSyncFilter.append(argument);
}
void SyncJournalDb::forceRemoteDiscoveryNextSync()

View File

@@ -158,15 +158,16 @@ public:
void setSelectiveSyncList(SelectiveSyncListType type, const QStringList &list);
/**
* Make sure that on the next sync, fileName is not read from the DB but uses the PROPFIND to
* get the info from the server
* Make sure that on the next sync fileName and its parents are discovered from the server.
*
* Specifically, this sets the md5 field of fileName and all its parents to _invalid_.
* That means its metadata and, if it's a directory, its direct contents.
*
* Specifically, etag (md5 field) of fileName and all its parents are set to _invalid_.
* That causes a metadata difference and a resulting discovery from the remote for the
* affected folders.
*
* Since folders in the selective sync list will not be rediscovered (csync_ftw,
* _csync_detect_update skip them), the _invalid_ marker will stay and it. And any
* _csync_detect_update skip them), the _invalid_ marker will stay. And any
* child items in the db will be ignored when reading a remote tree from the database.
*/
void avoidReadFromDbOnNextSync(const QString &fileName) { avoidReadFromDbOnNextSync(fileName.toUtf8()); }
@@ -268,6 +269,8 @@ private:
/* This is the list of paths we called avoidReadFromDbOnNextSync on.
* It means that they should not be written to the DB in any case since doing
* that would write the etag and would void the purpose of avoidReadFromDbOnNextSync
*
* The contained paths have a trailing /.
*/
QList<QByteArray> _avoidReadFromDbOnNextSyncFilter;

View File

@@ -1,13 +1,6 @@
PROJECT( CrashReporter )
cmake_policy(SET CMP0017 NEW)
list(APPEND crashreporter_SOURCES main.cpp)
list(APPEND crashreporter_RC resources.qrc)
qt_wrap_ui( crashreporter_UI_HEADERS ${crashreporter_UI} )
qt_add_resources( crashreporter_RC_RCC ${crashreporter_RC} )
# TODO: differentiate release channel
# if(BUILD_RELEASE)
# set(CRASHREPORTER_RELEASE_CHANNEL "release")
@@ -15,9 +8,30 @@ qt_add_resources( crashreporter_RC_RCC ${crashreporter_RC} )
set(CRASHREPORTER_RELEASE_CHANNEL "nightly")
# endif()
# Theme
if(DEFINED OEM_THEME_DIR AND EXISTS "${OEM_THEME_DIR}/theme/colored")
set(CRASHREPORTER_ICON_DIR "${OEM_THEME_DIR}/theme/colored")
else()
set(CRASHREPORTER_ICON_DIR "${CMAKE_SOURCE_DIR}/theme/colored")
endif()
set(CRASHREPORTER_ICON_FILENAME "${APPLICATION_ICON_NAME}-icon.png")
set(CRASHREPORTER_ICON ":/${CRASHREPORTER_ICON_FILENAME}")
set(CRASHREPORTER_ICON_SIZE "128")
set(CRASHREPORTER_ICON_PATH "${CRASHREPORTER_ICON_DIR}/${APPLICATION_ICON_NAME}-icon-${CRASHREPORTER_ICON_SIZE}.png")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources.qrc.in
${CMAKE_CURRENT_BINARY_DIR}/resources.qrc)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CrashReporterConfig.h.in
${CMAKE_CURRENT_BINARY_DIR}/CrashReporterConfig.h)
# Sources
list(APPEND crashreporter_SOURCES main.cpp)
list(APPEND crashreporter_RC "${CMAKE_CURRENT_BINARY_DIR}/resources.qrc")
qt_wrap_ui( crashreporter_UI_HEADERS ${crashreporter_UI} )
qt_add_resources( crashreporter_RC_RCC ${crashreporter_RC} )
include_directories(${CMAKE_CURRENT_BINARY_DIR}
"../3rdparty/libcrashreporter-qt/src/"

View File

@@ -1,5 +0,0 @@
<RCC>
<qresource prefix="/">
<file alias="owncloud-icon.png">../../theme/colored/owncloud-icon-128.png</file>
</qresource>
</RCC>

View File

@@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/">
<file alias="@CRASHREPORTER_ICON_FILENAME@">@CRASHREPORTER_ICON_PATH@</file>
</qresource>
</RCC>

View File

@@ -85,6 +85,8 @@ int csync_update(CSYNC *ctx) {
csync_gettime(&start);
ctx->current = LOCAL_REPLICA;
CSYNC_LOG(CSYNC_LOG_PRIORITY_INFO, "## Starting local discovery ##");
rc = csync_ftw(ctx, ctx->local.uri, csync_walker, MAX_DEPTH);
if (rc < 0) {
if(ctx->status_code == CSYNC_STATUS_OK) {
@@ -104,6 +106,8 @@ int csync_update(CSYNC *ctx) {
csync_gettime(&start);
ctx->current = REMOTE_REPLICA;
CSYNC_LOG(CSYNC_LOG_PRIORITY_INFO, "## Starting remote discovery ##");
rc = csync_ftw(ctx, "", csync_walker, MAX_DEPTH);
if (rc < 0) {
if(ctx->status_code == CSYNC_STATUS_OK) {

View File

@@ -156,7 +156,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
/* First, check that the file is NOT in our tree (another file with the same name was added) */
if (our_tree->findFile(basePath)) {
other = nullptr;
qCDebug(lcReconcile, "Origin found in our tree : %s", basePath.constData());
qCInfo(lcReconcile, "Origin found in our tree : %s", basePath.constData());
} else {
/* Find the potential rename source file in the other tree.
* If the renamed file could not be found in the opposite tree, that is because it
@@ -164,7 +164,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
* The journal is cleaned up later after propagation.
*/
other = other_tree->findFile(basePath);
qCDebug(lcReconcile, "Rename origin in other tree (%s) %s",
qCInfo(lcReconcile, "Rename origin in other tree (%s) %s",
basePath.constData(), other ? "found" : "not found");
}
@@ -175,7 +175,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
// Some other EVAL_RENAME already claimed other.
// We do nothing: maybe a different candidate for
// other is found as well?
qCDebug(lcReconcile, "Other has already been renamed to %s",
qCInfo(lcReconcile, "Other has already been renamed to %s",
other->rename_path.constData());
} else if (cur->type == CSYNC_FTW_TYPE_DIR
// The local replica is reconciled first, so the remote tree would
@@ -187,13 +187,17 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
|| other->instruction == CSYNC_INSTRUCTION_NONE
|| other->instruction == CSYNC_INSTRUCTION_UPDATE_METADATA
|| other->instruction == CSYNC_INSTRUCTION_REMOVE) {
qCDebug(lcReconcile, "Switching %s to RENAME to %s",
qCInfo(lcReconcile, "Switching %s to RENAME to %s",
other->path.constData(), cur->path.constData());
other->instruction = CSYNC_INSTRUCTION_RENAME;
other->rename_path = cur->path;
if( !cur->file_id.isEmpty() ) {
other->file_id = cur->file_id;
}
if (ctx->current == LOCAL_REPLICA) {
// Keep the local mtime.
other->modtime = cur->modtime;
}
other->inode = cur->inode;
cur->instruction = CSYNC_INSTRUCTION_NONE;
// We have consumed 'other': exit this loop to not consume another one.
@@ -207,7 +211,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
// Local: The remote reconcile will be able to deal with this.
// Remote: The local replica has already dealt with this.
// See the EVAL_RENAME case when other was found directly.
qCDebug(lcReconcile, "File in a renamed directory, other side's instruction: %d",
qCInfo(lcReconcile, "File in a renamed directory, other side's instruction: %d",
other->instruction);
cur->instruction = CSYNC_INSTRUCTION_NONE;
} else {
@@ -215,7 +219,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
// and the instruction in the local tree is NEW while cur has EVAL_RENAME
// due to a remote move of the same file. In these scenarios we just
// want the instruction to stay NEW.
qCDebug(lcReconcile, "Other already has instruction %d",
qCInfo(lcReconcile, "Other already has instruction %d",
other->instruction);
}
};
@@ -223,7 +227,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
if (ctx->current == LOCAL_REPLICA) {
/* use the old name to find the "other" node */
OCC::SyncJournalFileRecord base;
qCDebug(lcReconcile, "Finding rename origin through inode %" PRIu64 "",
qCInfo(lcReconcile, "Finding rename origin through inode %" PRIu64 "",
cur->inode);
ctx->statedb->getFileRecordByInode(cur->inode, &base);
renameCandidateProcessing(base._path);
@@ -236,7 +240,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
// line.
auto basePath = csync_rename_adjust_full_path_source(ctx, cur->path);
if (basePath != cur->path) {
qCDebug(lcReconcile, "Trying rename origin by csync_rename mapping %s",
qCInfo(lcReconcile, "Trying rename origin by csync_rename mapping %s",
basePath.constData());
// We go through getFileRecordsByFileId to ensure the basePath
// computed in this way also has the expected fileid.
@@ -249,7 +253,7 @@ static int _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx) {
// Also feed all the other files with the same fileid if necessary
if (!processedRename) {
qCDebug(lcReconcile, "Finding rename origin through file ID %s",
qCInfo(lcReconcile, "Finding rename origin through file ID %s",
cur->file_id.constData());
ctx->statedb->getFileRecordsByFileId(cur->file_id,
[&](const OCC::SyncJournalFileRecord &base) { renameCandidateProcessing(base._path); });

View File

@@ -130,12 +130,12 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
* This code should probably be in csync_exclude, but it does not have the fs parameter.
* Keep it here for now */
if (ctx->ignore_hidden_files && (fs->is_hidden)) {
qCDebug(lcUpdate, "file excluded because it is a hidden file: %s", fs->path.constData());
qCInfo(lcUpdate, "file excluded because it is a hidden file: %s", fs->path.constData());
excluded = CSYNC_FILE_EXCLUDE_HIDDEN;
}
} else {
/* File is ignored because it's matched by a user- or system exclude pattern. */
qCDebug(lcUpdate, "%s excluded (%d)", fs->path.constData(), excluded);
qCInfo(lcUpdate, "%s excluded (%d)", fs->path.constData(), excluded);
if (excluded == CSYNC_FILE_EXCLUDE_AND_REMOVE) {
return 1;
}
@@ -150,17 +150,25 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
}
}
if (ctx->current == REMOTE_REPLICA && QTextCodec::codecForLocale()->mibEnum() != 106) {
auto localCodec = QTextCodec::codecForLocale();
if (ctx->current == REMOTE_REPLICA && localCodec->mibEnum() != 106) {
/* If the locale codec is not UTF-8, we must check that the filename from the server can
* be encoded in the local file system. */
if (!QTextCodec::codecForLocale()->canEncode(QString::fromUtf8(fs->path))) {
* be encoded in the local file system.
*
* We cannot use QTextCodec::canEncode() since that can incorrectly return true, see
* https://bugreports.qt.io/browse/QTBUG-6925.
*/
QTextEncoder encoder(localCodec, QTextCodec::ConvertInvalidToNull);
if (encoder.fromUnicode(QString::fromUtf8(fs->path)).contains('\0')) {
qCInfo(lcUpdate, "cannot encode %s to local encoding %d",
fs->path.constData(), localCodec->mibEnum());
excluded = CSYNC_FILE_EXCLUDE_CANNOT_ENCODE;
}
}
if (fs->type == CSYNC_FTW_TYPE_FILE ) {
if (fs->modtime == 0) {
qCDebug(lcUpdate, "file: %s - mtime is zero!", fs->path.constData());
qCInfo(lcUpdate, "file: %s - mtime is zero!", fs->path.constData());
}
}
@@ -187,10 +195,12 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
/* we have an update! */
qCInfo(lcUpdate, "Database entry found, compare: %" PRId64 " <-> %" PRId64
", etag: %s <-> %s, inode: %" PRId64 " <-> %" PRId64
", size: %" PRId64 " <-> %" PRId64 ", perms: %x <-> %x, ignore: %d",
", size: %" PRId64 " <-> %" PRId64 ", perms: %x <-> %x"
", checksum: %s <-> %s , ignore: %d",
((int64_t) fs->modtime), ((int64_t) base._modtime),
fs->etag.constData(), base._etag.constData(), (uint64_t) fs->inode, (uint64_t) base._inode,
(uint64_t) fs->size, (uint64_t) base._fileSize, *reinterpret_cast<short*>(&fs->remotePerm), *reinterpret_cast<short*>(&base._remotePerm), base._serverHasIgnoredFiles );
(uint64_t) fs->size, (uint64_t) base._fileSize, *reinterpret_cast<short*>(&fs->remotePerm), *reinterpret_cast<short*>(&base._remotePerm), fs->checksumHeader.constData(),
base._checksumHeader.constData(), base._serverHasIgnoredFiles);
if (ctx->current == REMOTE_REPLICA && fs->etag != base._etag) {
fs->instruction = CSYNC_INSTRUCTION_EVAL;
@@ -220,7 +230,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
checksumIdentical = fs->checksumHeader == base._checksumHeader;
}
if (checksumIdentical) {
qCDebug(lcUpdate, "NOTE: Checksums are identical, file did not actually change: %s", fs->path.constData());
qCInfo(lcUpdate, "NOTE: Checksums are identical, file did not actually change: %s", fs->path.constData());
fs->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
goto out;
}
@@ -244,7 +254,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
* The metadata comparison ensure that we fetch all the file id or permission when
* upgrading owncloud
*/
qCDebug(lcUpdate, "Reading from database: %s", fs->path.constData());
qCInfo(lcUpdate, "Reading from database: %s", fs->path.constData());
ctx->remote.read_from_db = true;
}
/* If it was remembered in the db that the remote dir has ignored files, store
@@ -255,7 +265,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
}
if (metadata_differ) {
/* file id or permissions has changed. Which means we need to update them in the DB. */
qCDebug(lcUpdate, "Need to update metadata for: %s", fs->path.constData());
qCInfo(lcUpdate, "Need to update metadata for: %s", fs->path.constData());
fs->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
} else {
fs->instruction = CSYNC_INSTRUCTION_NONE;
@@ -263,7 +273,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
} else {
/* check if it's a file and has been renamed */
if (ctx->current == LOCAL_REPLICA) {
qCDebug(lcUpdate, "Checking for rename based on inode # %" PRId64 "", (uint64_t) fs->inode);
qCInfo(lcUpdate, "Checking for rename based on inode # %" PRId64 "", (uint64_t) fs->inode);
OCC::SyncJournalFileRecord base;
if(!ctx->statedb->getFileRecordByInode(fs->inode, &base)) {
@@ -290,13 +300,13 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
_rel_to_abs(ctx, fs->path), base._checksumHeader,
ctx->callbacks.checksum_userdata);
if (!fs->checksumHeader.isEmpty()) {
qCDebug(lcUpdate, "checking checksum of potential rename %s %s <-> %s", fs->path.constData(), fs->checksumHeader.constData(), base._checksumHeader.constData());
qCInfo(lcUpdate, "checking checksum of potential rename %s %s <-> %s", fs->path.constData(), fs->checksumHeader.constData(), base._checksumHeader.constData());
isRename = fs->checksumHeader == base._checksumHeader;
}
}
if (isRename) {
qCDebug(lcUpdate, "pot rename detected based on inode # %" PRId64 "", (uint64_t) fs->inode);
qCInfo(lcUpdate, "pot rename detected based on inode # %" PRId64 "", (uint64_t) fs->inode);
/* inode found so the file has been renamed */
fs->instruction = CSYNC_INSTRUCTION_EVAL_RENAME;
if (fs->type == CSYNC_FTW_TYPE_DIR) {
@@ -306,6 +316,8 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
goto out;
} else {
qCInfo(lcUpdate, "Checking for rename based on fileid %s", fs->file_id.constData());
/* Remote Replica Rename check */
fs->instruction = CSYNC_INSTRUCTION_NEW;
@@ -342,7 +354,7 @@ static int _csync_detect_update(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> f
csync_rename_record(ctx, base._path, fs->path);
}
qCDebug(lcUpdate, "remote rename detected based on fileid %s --> %s", base._path.constData(), fs->path.constData());
qCInfo(lcUpdate, "remote rename detected based on fileid %s --> %s", base._path.constData(), fs->path.constData());
fs->instruction = CSYNC_INSTRUCTION_EVAL_RENAME;
done = true;
};
@@ -450,11 +462,11 @@ int csync_walker(CSYNC *ctx, std::unique_ptr<csync_file_stat_t> fs) {
}
break;
case CSYNC_FTW_TYPE_SLINK:
qCDebug(lcUpdate, "symlink: %s - not supported", fs->path.constData());
qCInfo(lcUpdate, "symlink: %s - not supported", fs->path.constData());
break;
default:
qCInfo(lcUpdate, "item: %s - item type %d not iterated", fs->path.constData(), fs->type);
return 0;
break;
}
rc = _csync_detect_update(ctx, std::move(fs));
@@ -475,7 +487,7 @@ static bool fill_tree_from_db(CSYNC *ctx, const char *uri)
* their correct etags again and we don't run into this case.
*/
if( rec._etag == "_invalid_") {
qCDebug(lcUpdate, "%s selective sync excluded", rec._path.constData());
qCInfo(lcUpdate, "%s selective sync excluded", rec._path.constData());
skipbase = rec._path;
skipbase += '/';
return;
@@ -497,7 +509,7 @@ static bool fill_tree_from_db(CSYNC *ctx, const char *uri)
* without a full remote discovery being triggered. */
CSYNC_EXCLUDE_TYPE excluded = csync_excluded_traversal(ctx, st->path, st->type);
if (excluded != CSYNC_NOT_EXCLUDED) {
qDebug(lcUpdate, "%s excluded (%d)", st->path.constData(), excluded);
qInfo(lcUpdate, "%s excluded from db read (%d)", st->path.constData(), excluded);
if (excluded == CSYNC_FILE_EXCLUDE_AND_REMOVE
|| excluded == CSYNC_FILE_SILENTLY_EXCLUDED) {
@@ -516,7 +528,7 @@ static bool fill_tree_from_db(CSYNC *ctx, const char *uri)
ctx->status_code = CSYNC_STATUS_STATEDB_LOAD_ERROR;
return false;
}
qDebug(lcUpdate, "%" PRId64 " entries read below path %s from db.", count, uri);
qInfo(lcUpdate, "%" PRId64 " entries read below path %s from db.", count, uri);
return true;
}
@@ -712,7 +724,7 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
}
csync_vio_closedir(ctx, dh);
qCDebug(lcUpdate, " <= Closing walk for %s with read_from_db %d", uri, read_from_db);
qCInfo(lcUpdate, " <= Closing walk for %s with read_from_db %d", uri, read_from_db);
return rc;

View File

@@ -181,7 +181,7 @@ std::unique_ptr<csync_file_stat_t> csync_vio_local_readdir(csync_vio_handle_t *d
}
} else if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_DEVICE
|| handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_OFFLINE
|| handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY) {
) {
file_stat->type = CSYNC_FTW_TYPE_SKIP;
} else if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
file_stat->type = CSYNC_FTW_TYPE_DIR;

View File

@@ -136,7 +136,7 @@ IF( APPLE )
if(SPARKLE_FOUND)
# Define this, we need to check in updater.cpp
add_definitions( -DHAVE_SPARKLE )
list(APPEND updater_SRCS updater/sparkleupdater_mac.mm)
list(APPEND updater_SRCS updater/sparkleupdater_mac.mm updater/sparkleupdater.h)
endif()
ENDIF()

View File

@@ -312,10 +312,10 @@ void AccountState::slotInvalidCredentials()
if (account()->credentials()->ready()) {
account()->credentials()->invalidateToken();
if (auto creds = qobject_cast<HttpCredentials *>(account()->credentials())) {
if (creds->refreshAccessToken())
return;
}
}
if (auto creds = qobject_cast<HttpCredentials *>(account()->credentials())) {
if (creds->refreshAccessToken())
return;
}
account()->credentials()->askFromUser();
}

View File

@@ -338,7 +338,9 @@ void Application::slotownCloudWizardDone(int res)
shouldSetAutoStart = shouldSetAutoStart
&& QCoreApplication::applicationDirPath().startsWith("/Applications/");
#endif
Utility::setLaunchOnStartup(_theme->appName(), _theme->appNameGUI(), shouldSetAutoStart);
if (shouldSetAutoStart) {
Utility::setLaunchOnStartup(_theme->appName(), _theme->appNameGUI(), true);
}
_gui->slotShowSettings();
}

View File

@@ -121,6 +121,10 @@ void Folder::checkLocalPath()
{
const QFileInfo fi(_definition.localPath);
_canonicalLocalPath = fi.canonicalFilePath();
#ifdef Q_OS_MAC
// Workaround QTBUG-55896 (Should be fixed in Qt 5.8)
_canonicalLocalPath = _canonicalLocalPath.normalized(QString::NormalizationForm_C);
#endif
if (_canonicalLocalPath.isEmpty()) {
qCWarning(lcFolder) << "Broken symlink:" << _definition.localPath;
_canonicalLocalPath = _definition.localPath;

View File

@@ -568,10 +568,12 @@ void FolderWizard::resizeEvent(QResizeEvent *event)
QWizard::resizeEvent(event);
// workaround for QTBUG-22819: when the error label word wrap, the minimum height is not adjusted
int hfw = currentPage()->heightForWidth(currentPage()->width());
if (currentPage()->height() < hfw) {
currentPage()->setMinimumSize(currentPage()->minimumSizeHint().width(), hfw);
setTitleFormat(titleFormat()); // And another workaround for QTBUG-3396
if (auto page = currentPage()) {
int hfw = page->heightForWidth(page->width());
if (page->height() < hfw) {
page->setMinimumSize(page->minimumSizeHint().width(), hfw);
setTitleFormat(titleFormat()); // And another workaround for QTBUG-3396
}
}
}

View File

@@ -25,6 +25,10 @@
#include "updater/updater.h"
#include "updater/ocupdater.h"
#ifdef Q_OS_MAC
// FIXME We should unify those, but Sparkle does everything behind the scene transparently
#include "updater/sparkleupdater.h"
#endif
#include "ignorelisteditor.h"
#include "config.h"
@@ -32,6 +36,7 @@
#include <QNetworkProxy>
#include <QDir>
#include <QScopedValueRollback>
#include <QMessageBox>
namespace OCC {
@@ -88,6 +93,18 @@ GeneralSettings::GeneralSettings(QWidget *parent)
// accountAdded means the wizard was finished and the wizard might change some options.
connect(AccountManager::instance(), &AccountManager::accountAdded, this, &GeneralSettings::loadMiscSettings);
// Only our standard brandings currently support beta channel
Theme *theme = Theme::instance();
if (theme->appName() != QLatin1String("ownCloud") && theme->appName() != QLatin1String("testpilotcloud") ) {
#ifdef Q_OS_MAC
// Because we don't have any statusString from the SparkleUpdater anyway we can hide the whole thing
_ui->updatesGroupBox->hide();
#else
_ui->updateChannelLabel->hide();
_ui->updateChannel->hide();
#endif
}
}
GeneralSettings::~GeneralSettings()
@@ -117,22 +134,79 @@ void GeneralSettings::loadMiscSettings()
void GeneralSettings::slotUpdateInfo()
{
// Note: the sparkle-updater is not an OCUpdater
OCUpdater *updater = qobject_cast<OCUpdater *>(Updater::instance());
if (ConfigFile().skipUpdateCheck()) {
updater = 0; // don't show update info if updates are disabled
if (ConfigFile().skipUpdateCheck() || !Updater::instance()) {
// updater disabled on compile
_ui->updatesGroupBox->setVisible(false);
return;
}
if (updater) {
connect(updater, &OCUpdater::downloadStateChanged, this, &GeneralSettings::slotUpdateInfo, Qt::UniqueConnection);
connect(_ui->restartButton, &QAbstractButton::clicked, updater, &OCUpdater::slotStartInstaller, Qt::UniqueConnection);
// Note: the sparkle-updater is not an OCUpdater
OCUpdater *ocupdater = qobject_cast<OCUpdater *>(Updater::instance());
if (ocupdater) {
connect(ocupdater, &OCUpdater::downloadStateChanged, this, &GeneralSettings::slotUpdateInfo, Qt::UniqueConnection);
connect(_ui->restartButton, &QAbstractButton::clicked, ocupdater, &OCUpdater::slotStartInstaller, Qt::UniqueConnection);
connect(_ui->restartButton, &QAbstractButton::clicked, qApp, &QApplication::quit, Qt::UniqueConnection);
_ui->updateStateLabel->setText(updater->statusString());
_ui->restartButton->setVisible(updater->downloadState() == OCUpdater::DownloadComplete);
} else {
// can't have those infos from sparkle currently
_ui->updatesGroupBox->setVisible(false);
_ui->updateStateLabel->setText(ocupdater->statusString());
_ui->restartButton->setVisible(ocupdater->downloadState() == OCUpdater::DownloadComplete);
}
#ifdef Q_OS_MAC
else if (SparkleUpdater *sparkleUpdater = qobject_cast<SparkleUpdater *>(Updater::instance())) {
_ui->updateStateLabel->setText(sparkleUpdater->statusString());
_ui->restartButton->setVisible(false);
}
#endif
// Channel selection
_ui->updateChannel->setCurrentIndex(ConfigFile().updateChannel() == "beta" ? 1 : 0);
connect(_ui->updateChannel, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &GeneralSettings::slotUpdateChannelChanged, Qt::UniqueConnection);
}
void GeneralSettings::slotUpdateChannelChanged(int index)
{
QString channel = index == 0 ? QStringLiteral("stable") : QStringLiteral("beta");
if (channel == ConfigFile().updateChannel())
return;
auto msgBox = new QMessageBox(
QMessageBox::Warning,
tr("Change update channel?"),
tr("The update channel determines which client updates will be offered "
"for installation. The \"stable\" channel contains only upgrades that "
"are considered reliable, while the versions in the \"beta\" channel "
"may contain newer features and bugfixes, but have not yet been tested "
"thoroughly."
"\n\n"
"Note that this selects only what pool upgrades are taken from, and that "
"there are no downgrades: So going back from the beta channel to "
"the stable channel usually cannot be done immediately and means waiting "
"for a stable version that is newer than the currently installed beta "
"version."),
QMessageBox::NoButton,
this);
msgBox->addButton(tr("Change update channel"), QMessageBox::AcceptRole);
msgBox->addButton(tr("Cancel"), QMessageBox::RejectRole);
connect(msgBox, &QMessageBox::finished, msgBox, [this, channel, msgBox](int result) {
msgBox->deleteLater();
if (result == QMessageBox::AcceptRole) {
ConfigFile().setUpdateChannel(channel);
if (OCUpdater *updater = qobject_cast<OCUpdater *>(Updater::instance())) {
updater->setUpdateUrl(Updater::updateUrl());
updater->checkForUpdate();
}
#ifdef Q_OS_MAC
else if (SparkleUpdater *updater = qobject_cast<SparkleUpdater *>(Updater::instance())) {
updater->setUpdateUrl(Updater::updateUrl());
updater->checkForUpdate();
}
#endif
} else {
_ui->updateChannel->setCurrentText(ConfigFile().updateChannel());
}
});
msgBox->open();
}
void GeneralSettings::saveMiscSettings()

View File

@@ -44,6 +44,7 @@ private slots:
void slotToggleLaunchOnStartup(bool);
void slotToggleOptionalDesktopNotifications(bool);
void slotUpdateInfo();
void slotUpdateChannelChanged(int index);
void slotIgnoreFilesEditor();
void loadMiscSettings();

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>785</width>
<height>523</height>
<height>533</height>
</rect>
</property>
<property name="windowTitle">
@@ -74,48 +74,88 @@
<property name="title">
<string>Updates</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="updateStateLabel">
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="restartButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&amp;Restart &amp;&amp; Update</string>
</property>
</widget>
</item>
<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>40</width>
<height>20</height>
</size>
</property>
</spacer>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="updateChannelLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&amp;Channel</string>
</property>
<property name="buddy">
<cstring>updateChannel</cstring>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="updateChannel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>stable</string>
</property>
</item>
<item>
<property name="text">
<string>beta</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="updateStateLabel">
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="restartButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&amp;Restart &amp;&amp; Update</string>
</property>
</widget>
</item>
<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>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
@@ -247,7 +287,10 @@
<tabstop>ignoredFilesButton</tabstop>
<tabstop>newFolderLimitCheckBox</tabstop>
<tabstop>newFolderLimitSpinBox</tabstop>
<tabstop>newExternalStorage</tabstop>
<tabstop>showInExplorerNavigationPaneCheckBox</tabstop>
<tabstop>crashreporterCheckBox</tabstop>
<tabstop>updateChannel</tabstop>
<tabstop>restartButton</tabstop>
</tabstops>
<resources/>

View File

@@ -38,6 +38,12 @@
namespace OCC {
/**
* If more issues are reported than this they will not show up
* to avoid performance issues around sorting this many issues.
*/
static const int maxIssueCount = 50000;
IssuesWidget::IssuesWidget(QWidget *parent)
: QWidget(parent)
, _ui(new Ui::IssuesWidget)
@@ -96,6 +102,14 @@ IssuesWidget::IssuesWidget(QWidget *parent)
#if defined(Q_OS_MAC)
_ui->_treeWidget->setMinimumWidth(400);
#endif
_reenableSorting.setInterval(5000);
connect(&_reenableSorting, &QTimer::timeout, this,
[this]() { _ui->_treeWidget->setSortingEnabled(true); });
_ui->_tooManyIssuesWarning->hide();
connect(this, &IssuesWidget::issueCountUpdated, this,
[this](int count) { _ui->_tooManyIssuesWarning->setVisible(count >= maxIssueCount); });
}
IssuesWidget::~IssuesWidget()
@@ -153,11 +167,17 @@ void IssuesWidget::addItem(QTreeWidgetItem *item)
if (!item)
return;
int insertLoc = 0;
int count = _ui->_treeWidget->topLevelItemCount();
if (count >= maxIssueCount)
return;
_ui->_treeWidget->setSortingEnabled(false);
_reenableSorting.start();
// Insert item specific errors behind the others
int insertLoc = 0;
if (!item->text(1).isEmpty()) {
for (int i = 0; i < _ui->_treeWidget->topLevelItemCount(); ++i) {
for (int i = 0; i < count; ++i) {
if (_ui->_treeWidget->topLevelItem(i)->text(1).isEmpty()) {
insertLoc = i + 1;
} else {
@@ -196,7 +216,7 @@ void IssuesWidget::slotProgressInfo(const QString &folder, const ProgressInfo &p
void IssuesWidget::slotItemCompleted(const QString &folder, const SyncFileItemPtr &item)
{
if (!item->hasErrorStatus())
if (!item->showInIssuesTab())
return;
QTreeWidgetItem *line = ProtocolWidget::createCompletedTreewidgetItem(folder, *item);
if (!line)

View File

@@ -18,6 +18,7 @@
#include <QDialog>
#include <QDateTime>
#include <QLocale>
#include <QTimer>
#include "progressdispatcher.h"
#include "owncloudgui.h"
@@ -84,6 +85,9 @@ private:
/// Wipes all insufficient remote storgage blacklist entries
void retryInsufficentRemoteStorageErrors(const QString &folderAlias);
/// Each insert disables sorting, this timer reenables it
QTimer _reenableSorting;
Ui::IssuesWidget *_ui;
};
}

View File

@@ -127,6 +127,13 @@
</column>
</widget>
</item>
<item>
<widget class="QLabel" name="_tooManyIssuesWarning">
<property name="text">
<string>There were too many issues. Not all will be visible here.</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>

View File

@@ -50,18 +50,13 @@ const char propertyAccountC[] = "oc_account";
ownCloudGui::ownCloudGui(Application *parent)
: QObject(parent)
, _tray(0)
,
#if defined(Q_OS_MAC)
_settingsDialog(new SettingsDialogMac(this))
,
, _settingsDialog(new SettingsDialogMac(this))
#else
_settingsDialog(new SettingsDialog(this))
,
, _settingsDialog(new SettingsDialog(this))
#endif
_logBrowser(0)
, _contextMenuVisibleOsx(false)
, _logBrowser(0)
, _recentActionsMenu(0)
, _qdbusmenuWorkaround(false)
, _app(parent)
{
_tray = new Systray();
@@ -117,7 +112,7 @@ void ownCloudGui::slotOpenSettingsDialog()
void ownCloudGui::slotTrayClicked(QSystemTrayIcon::ActivationReason reason)
{
if (_qdbusmenuWorkaround) {
if (_workaroundFakeDoubleClick) {
static QElapsedTimer last_click;
if (last_click.isValid() && last_click.elapsed() < 200) {
return;
@@ -381,17 +376,19 @@ void ownCloudGui::addAccountContextMenu(AccountStatePtr accountState, QMenu *men
void ownCloudGui::slotContextMenuAboutToShow()
{
// For some reason on OS X _contextMenu->isVisible returns always false
_contextMenuVisibleOsx = true;
_contextMenuVisibleManual = true;
// Update icon in sys tray, as it might change depending on the context menu state
slotComputeOverallSyncStatus();
if (!_workaroundNoAboutToShowUpdate) {
updateContextMenu();
}
}
void ownCloudGui::slotContextMenuAboutToHide()
{
// For some reason on OS X _contextMenu->isVisible returns always false
_contextMenuVisibleOsx = false;
_contextMenuVisibleManual = false;
// Update icon in sys tray, as it might change depending on the context menu state
slotComputeOverallSyncStatus();
@@ -399,11 +396,11 @@ void ownCloudGui::slotContextMenuAboutToHide()
bool ownCloudGui::contextMenuVisible() const
{
#ifdef Q_OS_MAC
return _contextMenuVisibleOsx;
#else
// On some platforms isVisible doesn't work and always returns false,
// elsewhere aboutToHide is unreliable.
if (_workaroundManualVisibility)
return _contextMenuVisibleManual;
return _contextMenu->isVisible();
#endif
}
static bool minimalTrayMenu()
@@ -426,12 +423,36 @@ static bool updateWhileVisible()
}
}
static QByteArray forceQDBusTrayWorkaround()
static QByteArray envForceQDBusTrayWorkaround()
{
static QByteArray var = qgetenv("OWNCLOUD_FORCE_QDBUS_TRAY_WORKAROUND");
return var;
}
static QByteArray envForceWorkaroundShowAndHideTray()
{
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_SHOW_HIDE");
return var;
}
static QByteArray envForceWorkaroundNoAboutToShowUpdate()
{
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_NO_ABOUT_TO_SHOW");
return var;
}
static QByteArray envForceWorkaroundFakeDoubleClick()
{
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_FAKE_DOUBLE_CLICK");
return var;
}
static QByteArray envForceWorkaroundManualVisibility()
{
static QByteArray var = qgetenv("OWNCLOUD_FORCE_TRAY_MANUAL_VISIBILITY");
return var;
}
void ownCloudGui::setupContextMenu()
{
if (_contextMenu) {
@@ -454,51 +475,65 @@ void ownCloudGui::setupContextMenu()
return;
}
// Enables workarounds for bugs introduced in Qt 5.5.0
// In particular QTBUG-47863 #3672 (tray menu fails to update and
// becomes unresponsive) and QTBUG-48068 #3722 (click signal is
// emitted several times)
// The Qt version check intentionally uses 5.0.0 (where platformMenu()
// was introduced) instead of 5.5.0 to avoid issues where the Qt
// version used to build is different from the one used at runtime.
// If we build with 5.6.1 or newer, we can skip this because the
// bugs should be fixed there.
#ifdef Q_OS_LINUX
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) && (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
if (qVersion() == QByteArray("5.5.0")) {
QObject *platformMenu = reinterpret_cast<QObject *>(_tray->contextMenu()->platformMenu());
if (platformMenu
&& platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
_qdbusmenuWorkaround = true;
qCWarning(lcApplication) << "Enabled QDBusPlatformMenu workaround";
}
}
#endif
#endif
auto applyEnvVariable = [](bool *sw, const QByteArray &value) {
if (value == "1")
*sw = true;
if (value == "0")
*sw = false;
};
if (forceQDBusTrayWorkaround() == "1") {
_qdbusmenuWorkaround = true;
} else if (forceQDBusTrayWorkaround() == "0") {
_qdbusmenuWorkaround = false;
// This is an old compound flag that people might still depend on
bool qdbusmenuWorkarounds = false;
applyEnvVariable(&qdbusmenuWorkarounds, envForceQDBusTrayWorkaround());
if (qdbusmenuWorkarounds) {
_workaroundFakeDoubleClick = true;
_workaroundNoAboutToShowUpdate = true;
_workaroundShowAndHideTray = true;
}
// When the qdbusmenuWorkaround is necessary, we can't do on-demand updates
// because the workaround is to hide and show the tray icon.
if (_qdbusmenuWorkaround) {
connect(&_workaroundBatchTrayUpdate, &QTimer::timeout, this, &ownCloudGui::updateContextMenu);
_workaroundBatchTrayUpdate.setInterval(30 * 1000);
_workaroundBatchTrayUpdate.setSingleShot(true);
} else {
// Update the context menu whenever we're about to show it
// to the user.
#ifdef Q_OS_MAC
// https://bugreports.qt.io/browse/QTBUG-54633
connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
#else
connect(_contextMenu.data(), &QMenu::aboutToShow, this, &ownCloudGui::updateContextMenu);
// https://bugreports.qt.io/browse/QTBUG-54633
_workaroundNoAboutToShowUpdate = true;
_workaroundManualVisibility = true;
#endif
#ifdef Q_OS_LINUX
// For KDE sessions if the platform plugin is missing,
// neither aboutToShow() updates nor the isVisible() call
// work. At least aboutToHide is reliable.
// https://github.com/owncloud/client/issues/6545
static QByteArray xdgCurrentDesktop = qgetenv("XDG_CURRENT_DESKTOP");
static QByteArray desktopSession = qgetenv("DESKTOP_SESSION");
bool isKde =
xdgCurrentDesktop.contains("KDE")
|| desktopSession.contains("plasma")
|| desktopSession.contains("kde");
QObject *platformMenu = reinterpret_cast<QObject *>(_tray->contextMenu()->platformMenu());
if (isKde && platformMenu && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
_workaroundManualVisibility = true;
_workaroundNoAboutToShowUpdate = true;
}
#endif
applyEnvVariable(&_workaroundNoAboutToShowUpdate, envForceWorkaroundNoAboutToShowUpdate());
applyEnvVariable(&_workaroundFakeDoubleClick, envForceWorkaroundFakeDoubleClick());
applyEnvVariable(&_workaroundShowAndHideTray, envForceWorkaroundShowAndHideTray());
applyEnvVariable(&_workaroundManualVisibility, envForceWorkaroundManualVisibility());
qCInfo(lcApplication) << "Tray menu workarounds:"
<< "noabouttoshow:" << _workaroundNoAboutToShowUpdate
<< "fakedoubleclick:" << _workaroundFakeDoubleClick
<< "showhide:" << _workaroundShowAndHideTray
<< "manualvisibility:" << _workaroundManualVisibility;
connect(&_delayedTrayUpdateTimer, &QTimer::timeout, this, &ownCloudGui::updateContextMenu);
_delayedTrayUpdateTimer.setInterval(2 * 1000);
_delayedTrayUpdateTimer.setSingleShot(true);
connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
// unfortunately aboutToHide is unreliable, it seems to work on OSX though
connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
// Populate the context menu now.
updateContextMenu();
@@ -510,13 +545,21 @@ void ownCloudGui::updateContextMenu()
return;
}
if (_qdbusmenuWorkaround) {
// If it's visible, we can't update live, and it won't be updated lazily: reschedule
if (contextMenuVisible() && !updateWhileVisible() && _workaroundNoAboutToShowUpdate) {
if (!_delayedTrayUpdateTimer.isActive()) {
_delayedTrayUpdateTimer.start();
}
return;
}
if (_workaroundShowAndHideTray) {
// To make tray menu updates work with these bugs (see setupContextMenu)
// we need to hide and show the tray icon. We don't want to do that
// while it's visible!
if (contextMenuVisible()) {
if (!_workaroundBatchTrayUpdate.isActive()) {
_workaroundBatchTrayUpdate.start();
if (!_delayedTrayUpdateTimer.isActive()) {
_delayedTrayUpdateTimer.start();
}
return;
}
@@ -631,35 +674,30 @@ void ownCloudGui::updateContextMenu()
}
_contextMenu->addAction(_actionQuit);
if (_qdbusmenuWorkaround) {
if (_workaroundShowAndHideTray) {
_tray->show();
}
}
void ownCloudGui::updateContextMenuNeeded()
{
// For the workaround case updating while visible is impossible. Instead
// occasionally update the menu when it's invisible.
if (_qdbusmenuWorkaround) {
if (!_workaroundBatchTrayUpdate.isActive()) {
_workaroundBatchTrayUpdate.start();
}
// if it's visible and we can update live: update now
if (contextMenuVisible() && updateWhileVisible()) {
// Note: don't update while visible on OSX
// https://bugreports.qt.io/browse/QTBUG-54845
updateContextMenu();
return;
}
#ifdef Q_OS_MAC
// https://bugreports.qt.io/browse/QTBUG-54845
// We cannot update on demand or while visible -> update when invisible.
if (!contextMenuVisible()) {
updateContextMenu();
// if we can't lazily update: update later
if (_workaroundNoAboutToShowUpdate) {
// Note: don't update immediately even in the invisible case
// as that can lead to extremely frequent menu updates
if (!_delayedTrayUpdateTimer.isActive()) {
_delayedTrayUpdateTimer.start();
}
return;
}
#else
if (updateWhileVisible() && contextMenuVisible())
updateContextMenu();
#endif
// If no update was done here, we might update it on-demand due to
// the aboutToShow() signal.
}
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg)

View File

@@ -119,14 +119,19 @@ private:
// tray's menu
QScopedPointer<QMenu> _contextMenu;
// Manually tracking whether the context menu is visible, but only works
// on OSX because aboutToHide is not reliable everywhere.
bool _contextMenuVisibleOsx;
// Manually tracking whether the context menu is visible via aboutToShow
// and aboutToHide. Unfortunately aboutToHide isn't reliable everywhere
// so this only gets used with _workaroundManualVisibility (when the tray's
// isVisible() is unreliable)
bool _contextMenuVisibleManual = false;
QMenu *_recentActionsMenu;
QVector<QMenu *> _accountMenus;
bool _qdbusmenuWorkaround;
QTimer _workaroundBatchTrayUpdate;
bool _workaroundShowAndHideTray = false;
bool _workaroundNoAboutToShowUpdate = false;
bool _workaroundFakeDoubleClick = false;
bool _workaroundManualVisibility = false;
QTimer _delayedTrayUpdateTimer;
QMap<QString, QPointer<ShareDialog>> _shareDialogs;
QAction *_actionLogin;

View File

@@ -195,7 +195,7 @@ QTreeWidgetItem *ProtocolWidget::createCompletedTreewidgetItem(const QString &fo
void ProtocolWidget::slotItemCompleted(const QString &folder, const SyncFileItemPtr &item)
{
if (item->hasErrorStatus())
if (!item->showInProtocolTab())
return;
QTreeWidgetItem *line = createCompletedTreewidgetItem(folder, *item);
if (line) {

View File

@@ -101,7 +101,7 @@ void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument &j
// https://github.com/owncloud/notifications/blob/master/docs/ocs-endpoint-v1.md#deleting-a-notification-for-a-user
ActivityLink al;
al._label = tr("Dismiss");
al._link = Utility::concatUrlPath(ai->account()->url(), notificationsPath + "/" + json.value("notification_id").toString()).toString();
al._link = Utility::concatUrlPath(ai->account()->url(), notificationsPath + "/" + QString::number(a._id)).toString();
al._verb = "DELETE";
al._isPrimary = false;
a._links.append(al);

View File

@@ -254,6 +254,9 @@ void SettingsDialog::accountAdded(AccountState *s)
connect(s->account().data(), &Account::accountChangedAvatar, this, &SettingsDialog::slotAccountAvatarChanged);
connect(s->account().data(), &Account::accountChangedDisplayName, this, &SettingsDialog::slotAccountDisplayNameChanged);
// Refresh immediatly when getting online
connect(s, &AccountState::isConnectedChanged, this, &SettingsDialog::slotRefreshActivityAccountStateSender);
slotRefreshActivity(s);
}
@@ -396,6 +399,11 @@ QAction *SettingsDialog::createColorAwareAction(const QString &iconPath, const Q
return createActionWithIcon(coloredIcon, text, iconPath);
}
void SettingsDialog::slotRefreshActivityAccountStateSender()
{
slotRefreshActivity(qobject_cast<AccountState*>(sender()));
}
void SettingsDialog::slotRefreshActivity(AccountState *accountState)
{
if (accountState) {

View File

@@ -59,6 +59,7 @@ public slots:
void showIssuesList(const QString &folderAlias);
void slotSwitchPage(QAction *action);
void slotRefreshActivity(AccountState *accountState);
void slotRefreshActivityAccountStateSender();
void slotAccountAvatarChanged();
void slotAccountDisplayNameChanged();

View File

@@ -21,6 +21,7 @@
#include "generalsettings.h"
#include "networksettings.h"
#include "accountsettings.h"
#include "accountstate.h"
#include "creds/abstractcredentials.h"
#include "configfile.h"
#include "progressdispatcher.h"
@@ -121,6 +122,7 @@ SettingsDialogMac::SettingsDialogMac(ownCloudGui *gui, QWidget *parent)
ConfigFile cfg;
cfg.restoreGeometry(this);
_activitySettings->setNotificationRefreshInterval(cfg.notificationRefreshInterval());
}
void SettingsDialogMac::closeEvent(QCloseEvent *event)
@@ -160,6 +162,9 @@ void SettingsDialogMac::accountAdded(AccountState *s)
connect(s->account().data(), &Account::accountChangedAvatar, this, &SettingsDialogMac::slotAccountAvatarChanged);
connect(s->account().data(), &Account::accountChangedDisplayName, this, &SettingsDialogMac::slotAccountDisplayNameChanged);
// Refresh immediatly when getting online
connect(s, &AccountState::isConnectedChanged, this, &SettingsDialogMac::slotRefreshActivityAccountStateSender);
slotRefreshActivity(s);
}
@@ -175,6 +180,11 @@ void SettingsDialogMac::accountRemoved(AccountState *s)
_activitySettings->slotRemoveAccount(s);
}
void SettingsDialogMac::slotRefreshActivityAccountStateSender()
{
slotRefreshActivity(qobject_cast<AccountState*>(sender()));
}
void SettingsDialogMac::slotRefreshActivity(AccountState *accountState)
{
if (accountState) {

View File

@@ -49,6 +49,7 @@ public slots:
void showActivityPage();
void showIssuesList(const QString &folderAlias);
void slotRefreshActivity(AccountState *accountState);
void slotRefreshActivityAccountStateSender();
private slots:
void accountAdded(AccountState *);

View File

@@ -58,7 +58,9 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
//Is this a file or folder?
QFileInfo fi(localPath);
_isFile = fi.isFile();
_ui->nameLineEdit->setText(tr("%1 link").arg(fi.fileName()));
// Note: the share name cannot be longer than 64 characters
_ui->nameLineEdit->setText(tr("Public link"));
// the following progress indicator widgets are added to layouts which makes them
// automatically deleted once the dialog dies.
@@ -221,11 +223,10 @@ void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shar
// Connect all shares signals to gui slots
connect(share.data(), &Share::serverError, this, &ShareLinkWidget::slotServerError);
connect(share.data(), &Share::shareDeleted, this, &ShareLinkWidget::slotDeleteShareFetched);
connect(share.data(), SIGNAL(expireDateSet()), SLOT(slotExpireSet()));
connect(share.data(), SIGNAL(publicUploadSet()), SLOT(slotPermissionsSet()));
connect(share.data(), SIGNAL(passwordSet()), SLOT(slotPasswordSet()));
connect(share.data(), SIGNAL(passwordSetError(int, QString)), SLOT(slotPasswordSetError(int, QString)));
connect(share.data(), &Share::permissionsSet, this, &ShareLinkWidget::slotPermissionsSet);
connect(linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireSet);
connect(linkShare.data(), &LinkShare::passwordSet, this, &ShareLinkWidget::slotPasswordSet);
connect(linkShare.data(), &LinkShare::passwordSetError, this, &ShareLinkWidget::slotPasswordSetError);
// Build the table row
auto row = table->rowCount();

View File

@@ -289,7 +289,7 @@ void ShareManager::slotLinkShareCreated(const QJsonDocument &reply)
void ShareManager::createShare(const QString &path,
const Share::ShareType shareType,
const QString shareWith,
const Share::Permissions permissions)
const Share::Permissions desiredPermissions)
{
auto job = new OcsShareJob(_account);
connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError);
@@ -305,17 +305,18 @@ void ShareManager::createShare(const QString &path,
// Limit the permissions we request for a share to the ones the item
// was shared with initially.
auto perm = permissions;
if (permissions == SharePermissionDefault) {
perm = existingPermissions;
} else if (existingPermissions != SharePermissionDefault) {
perm &= existingPermissions;
auto validPermissions = desiredPermissions;
if (validPermissions == SharePermissionDefault) {
validPermissions = existingPermissions;
}
if (existingPermissions != SharePermissionDefault) {
validPermissions &= existingPermissions;
}
OcsShareJob *job = new OcsShareJob(_account);
connect(job, &OcsShareJob::shareJobFinished, this, &ShareManager::slotShareCreated);
connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError);
job->createShare(path, shareType, shareWith, permissions);
job->createShare(path, shareType, shareWith, validPermissions);
});
job->getSharedWithMe();
}

View File

@@ -183,6 +183,10 @@ SocketApi::SocketApi(QObject *parent)
// Example for developer builds (with ad-hoc signing identity): "" "com.owncloud.desktopclient" ".socketApi"
// Example for official signed packages: "9B5WD74GWJ." "com.owncloud.desktopclient" ".socketApi"
socketPath = SOCKETAPI_TEAM_IDENTIFIER_PREFIX APPLICATION_REV_DOMAIN ".socketApi";
#ifdef Q_OS_MAC
// Tell Finder to use the Extension (checking it from System Preferences -> Extensions)
system("pluginkit -e use -i " APPLICATION_REV_DOMAIN ".FinderSyncExt &");
#endif
} else if (Utility::isLinux() || Utility::isBSD()) {
QString runtimeDir;
runtimeDir = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
@@ -220,6 +224,11 @@ SocketApi::~SocketApi()
// All remaining sockets will be destroyed with _localServer, their parent
ASSERT(_listeners.isEmpty() || _listeners.first().socket->parent() == &_localServer);
_listeners.clear();
#ifdef Q_OS_MAC
// Unload the extension (uncheck from System Preferences -> Extensions)
system("pluginkit -e ignore -i " APPLICATION_REV_DOMAIN ".FinderSyncExt &");
#endif
}
void SocketApi::slotNewConnection()

View File

@@ -204,6 +204,10 @@ void SslButton::slotUpdateMenu()
AccountPtr account = _accountState->account();
if (account->isHttp2Supported()) {
_menu->addAction("HTTP/2")->setEnabled(false);
}
if (account->url().scheme() == QLatin1String("https")) {
QString sslVersion = account->_sessionCipher.protocolString()
+ ", " + account->_sessionCipher.authenticationMethod()

View File

@@ -92,6 +92,11 @@ OCUpdater::OCUpdater(const QUrl &url)
{
}
void OCUpdater::setUpdateUrl(const QUrl &url)
{
_updateUrl = url;
}
bool OCUpdater::performUpdate()
{
ConfigFile cfg;
@@ -179,6 +184,81 @@ void OCUpdater::setDownloadState(DownloadState state)
}
}
#if defined(Q_OS_WIN)
// Following functions are taken from https://github.com/qt/qtbase/blob/5.8/src/corelib/io/qprocess_win.cpp
// to make use of this fix https://github.com/qt/qtbase/commit/bec2fc19fd18768b16925597871c77a61e716abd
// for QTBUG-53833: Without this we get an ugly powershell window on update. In 2.5/master we use Qt 5.10
// which obviously already has the fix.
static QString qt_create_commandline(const QString &program, const QStringList &arguments)
{
QString args;
if (!program.isEmpty()) {
QString programName = program;
if (!programName.startsWith(QLatin1Char('\"')) && !programName.endsWith(QLatin1Char('\"')) && programName.contains(QLatin1Char(' ')))
programName = QLatin1Char('\"') + programName + QLatin1Char('\"');
programName.replace(QLatin1Char('/'), QLatin1Char('\\'));
// add the prgram as the first arg ... it works better
args = programName + QLatin1Char(' ');
}
for (int i=0; i<arguments.size(); ++i) {
QString tmp = arguments.at(i);
// Quotes are escaped and their preceding backslashes are doubled.
tmp.replace(QRegExp(QLatin1String("(\\\\*)\"")), QLatin1String("\\1\\1\\\""));
if (tmp.isEmpty() || tmp.contains(QLatin1Char(' ')) || tmp.contains(QLatin1Char('\t'))) {
// The argument must not end with a \ since this would be interpreted
// as escaping the quote -- rather put the \ behind the quote: e.g.
// rather use "foo"\ than "foo\"
int i = tmp.length();
while (i > 0 && tmp.at(i - 1) == QLatin1Char('\\'))
--i;
tmp.insert(i, QLatin1Char('"'));
tmp.prepend(QLatin1Char('"'));
}
args += QLatin1Char(' ') + tmp;
}
return args;
}
bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDir = QString(), qint64 *pid = 0)
{
// static const DWORD errorElevationRequired = 740;
QString args = qt_create_commandline(program, arguments);
bool success = false;
PROCESS_INFORMATION pinfo;
DWORD dwCreationFlags = (GetConsoleWindow() ? 0 : CREATE_NO_WINDOW);
dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT;
STARTUPINFOW startupInfo = { sizeof( STARTUPINFO ), 0, 0, 0,
(ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT,
(ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
success = CreateProcess(0, (wchar_t*)args.utf16(),
0, 0, FALSE, dwCreationFlags, 0,
workingDir.isEmpty() ? 0 : (wchar_t*)workingDir.utf16(),
&startupInfo, &pinfo);
// if (success) {
CloseHandle(pinfo.hThread);
CloseHandle(pinfo.hProcess);
if (pid)
*pid = pinfo.dwProcessId;
// } else if (GetLastError() == errorElevationRequired) {
// success = startDetachedUacPrompt(program, arguments, workingDir, pid);
// }
return success;
}
#else
bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDir = QString(), qint64 *pid = 0)
{
return QProcess::startDetached(program, arguments, workingDir, pid);
}
#endif
void OCUpdater::slotStartInstaller()
{
ConfigFile cfg;
@@ -187,8 +267,30 @@ void OCUpdater::slotStartInstaller()
settings.setValue(autoUpdateAttemptedC, true);
settings.sync();
qCInfo(lcUpdater) << "Running updater" << updateFile;
QProcess::startDetached(updateFile, QStringList() << "/S"
<< "/launch");
if(updateFile.endsWith(".exe")) {
QProcess::startDetached(updateFile, QStringList() << "/S"
<< "/launch");
} else if(updateFile.endsWith(".msi")) {
// When MSIs are installed without gui they cannot launch applications
// as they lack the user context. That is why we need to run the client
// manually here. We wrap the msiexec and client invocation in a powershell
// script because owncloud.exe will be shut down for installation.
// | Out-Null forces powershell to wait for msiexec to finish.
auto preparePathForPowershell = [](QString path) {
path.replace("'", "''");
return QDir::toNativeSeparators(path);
};
QString msiLogFile = cfg.configPath() + "msi.log";
QString command = QString("&{msiexec /norestart /passive /i '%1' /L*V '%2'| Out-Null ; &'%3'}")
.arg(preparePathForPowershell(updateFile))
.arg(preparePathForPowershell(msiLogFile))
.arg(preparePathForPowershell(QCoreApplication::applicationFilePath()));
startDetached("powershell.exe", QStringList{"-Command", command});
}
}
void OCUpdater::checkForUpdate()
@@ -298,7 +400,7 @@ void NSISUpdater::versionInfoArrived(const UpdateInfo &info)
showDialog(info);
}
if (!url.isEmpty()) {
_targetFile = cfg.configPath() + url.mid(url.lastIndexOf('/'));
_targetFile = cfg.configPath() + url.mid(url.lastIndexOf('/')+1);
if (QFile(_targetFile).exists()) {
setDownloadState(DownloadComplete);
} else {

View File

@@ -99,6 +99,8 @@ public:
UpdateOnlyAvailableThroughSystem };
explicit OCUpdater(const QUrl &url);
void setUpdateUrl(const QUrl &url);
bool performUpdate();
void checkForUpdate() Q_DECL_OVERRIDE;

View File

@@ -23,15 +23,20 @@ namespace OCC {
class SparkleUpdater : public Updater
{
Q_OBJECT
public:
SparkleUpdater(const QString &appCastUrl);
SparkleUpdater(const QUrl &appCastUrl);
~SparkleUpdater();
void setUpdateUrl(const QUrl &url);
// unused in this updater
void checkForUpdate() Q_DECL_OVERRIDE;
void backgroundCheckForUpdate() Q_DECL_OVERRIDE;
bool handleStartup() Q_DECL_OVERRIDE { return false; }
QString statusString();
private:
class Private;
Private *d;

View File

@@ -73,7 +73,7 @@ class SparkleUpdater::Private
};
// Delete ~/Library//Preferences/com.owncloud.desktopclient.plist to re-test
SparkleUpdater::SparkleUpdater(const QString& appCastUrl)
SparkleUpdater::SparkleUpdater(const QUrl& appCastUrl)
: Updater()
{
d = new Private;
@@ -89,9 +89,7 @@ SparkleUpdater::SparkleUpdater(const QString& appCastUrl)
[d->updater resetUpdateCycle];
[d->updater retain];
NSURL* url = [NSURL URLWithString:
[NSString stringWithUTF8String: appCastUrl.toUtf8().data()]];
[d->updater setFeedURL: url];
setUpdateUrl(appCastUrl);
// Sparkle 1.8 required
NSString *userAgent = [NSString stringWithUTF8String: Utility::userAgentString().data()];
@@ -104,7 +102,14 @@ SparkleUpdater::~SparkleUpdater()
delete d;
}
void SparkleUpdater::setUpdateUrl(const QUrl &url)
{
NSURL* nsurl = [NSURL URLWithString:
[NSString stringWithUTF8String: url.toString().toUtf8().data()]];
[d->updater setFeedURL: nsurl];
}
// FIXME: Should be changed to not instanicate the SparkleUpdater at all in this case
bool autoUpdaterAllowed()
{
// See https://github.com/owncloud/client/issues/2931
@@ -133,4 +138,10 @@ void SparkleUpdater::backgroundCheckForUpdate()
}
}
QString SparkleUpdater::statusString()
{
// FIXME Show the real state depending on the callbacks
return QString();
}
} // namespace OCC

View File

@@ -22,6 +22,7 @@
#include "theme.h"
#include "common/utility.h"
#include "version.h"
#include "configfile.h"
#include "config.h"
@@ -39,6 +40,29 @@ Updater *Updater::instance()
return _instance;
}
QUrl Updater::updateUrl()
{
QUrl updateBaseUrl(QString::fromLocal8Bit(qgetenv("OCC_UPDATE_URL")));
if (updateBaseUrl.isEmpty()) {
updateBaseUrl = QUrl(QLatin1String(APPLICATION_UPDATE_URL));
}
if (!updateBaseUrl.isValid() || updateBaseUrl.host() == ".") {
return QUrl();
}
auto url = addQueryParams(updateBaseUrl);
#if defined(Q_OS_MAC) && defined(HAVE_SPARKLE)
url.addQueryItem(QLatin1String("sparkle"), QLatin1String("true"));
#endif
#if defined(Q_OS_WIN)
url.addQueryItem(QLatin1String("msi"), QLatin1String("true"));
#endif
return url;
}
QUrl Updater::addQueryParams(const QUrl &url)
{
QUrl paramUrl = url;
@@ -64,13 +88,10 @@ QUrl Updater::addQueryParams(const QUrl &url)
QString suffix = QString::fromLatin1(MIRALL_STRINGIFY(MIRALL_VERSION_SUFFIX));
paramUrl.addQueryItem(QLatin1String("versionsuffix"), suffix);
if (suffix.startsWith("nightly")
|| suffix.startsWith("alpha")
|| suffix.startsWith("rc")
|| suffix.startsWith("beta")) {
paramUrl.addQueryItem(QLatin1String("channel"), "beta");
// FIXME: Provide a checkbox in UI to enable regular versions to switch
// to beta channel
auto channel = ConfigFile().updateChannel();
if (channel != "stable") {
paramUrl.addQueryItem(QLatin1String("channel"), channel);
}
return paramUrl;
@@ -97,23 +118,18 @@ QString Updater::getSystemInfo()
// To test, cmake with -DAPPLICATION_UPDATE_URL="http://127.0.0.1:8080/test.rss"
Updater *Updater::create()
{
QUrl updateBaseUrl(QString::fromLocal8Bit(qgetenv("OCC_UPDATE_URL")));
if (updateBaseUrl.isEmpty()) {
updateBaseUrl = QUrl(QLatin1String(APPLICATION_UPDATE_URL));
}
if (!updateBaseUrl.isValid() || updateBaseUrl.host() == ".") {
auto url = updateUrl();
if (url.isEmpty()) {
qCWarning(lcUpdater) << "Not a valid updater URL, will not do update check";
return 0;
}
updateBaseUrl = addQueryParams(updateBaseUrl);
#if defined(Q_OS_MAC) && defined(HAVE_SPARKLE)
updateBaseUrl.addQueryItem(QLatin1String("sparkle"), QLatin1String("true"));
return new SparkleUpdater(updateBaseUrl.toString());
return new SparkleUpdater(url);
#elif defined(Q_OS_WIN32)
// the best we can do is notify about updates
return new NSISUpdater(updateBaseUrl);
return new NSISUpdater(url);
#else
return new PassiveUpdateNotifier(QUrl(updateBaseUrl));
return new PassiveUpdateNotifier(url);
#endif
}

View File

@@ -36,6 +36,7 @@ public:
};
static Updater *instance();
static QUrl updateUrl();
virtual void checkForUpdate() = 0;
virtual void backgroundCheckForUpdate() = 0;

View File

@@ -93,9 +93,8 @@ QNetworkReply *AccessManager::createRequest(QNetworkAccessManager::Operation op,
qInfo(lcAccessManager) << op << verb << newRequest.url().toString() << "has X-Request-ID" << requestId;
newRequest.setRawHeader("X-Request-ID", requestId);
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
// only enable HTTP2 with Qt 5.9 because Qt 5.8.0 has too many bugs
// (only use one connection if the server does not support HTTP2)
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 4)
// only enable HTTP2 with Qt 5.9.4 because old Qt have too many bugs (e.g. QTBUG-64359 is fixed in >= Qt 5.9.4)
if (newRequest.url().scheme() == "https") { // Not for "http": QTBUG-61397
newRequest.setAttribute(QNetworkRequest::HTTP2AllowedAttribute, true);
}

View File

@@ -218,7 +218,7 @@ public:
/** Detects a specific bug in older server versions */
bool rootEtagChangesNotOnlySubFolderEtags();
/** True when the server supports HTTP2 */
/** True when the server connection is using HTTP2 */
bool isHttp2Supported() { return _http2Supported; }
void setHttp2Supported(bool value) { _http2Supported = value; }

View File

@@ -18,6 +18,7 @@
#include "theme.h"
#include "common/utility.h"
#include "common/asserts.h"
#include "version.h"
#include "creds/abstractcredentials.h"
@@ -52,6 +53,7 @@ static const char crashReporterC[] = "crashReporter";
static const char optionalDesktopNoficationsC[] = "optionalDesktopNotifications";
static const char skipUpdateCheckC[] = "skipUpdateCheck";
static const char updateCheckIntervalC[] = "updateCheckInterval";
static const char updateChannelC[] = "updateChannel";
static const char geometryC[] = "geometry";
static const char timeoutC[] = "timeout";
static const char chunkSizeC[] = "chunkSize";
@@ -468,6 +470,28 @@ void ConfigFile::setSkipUpdateCheck(bool skip, const QString &connection)
settings.sync();
}
QString ConfigFile::updateChannel() const
{
QString defaultUpdateChannel = QStringLiteral("stable");
QString suffix = QString::fromLatin1(MIRALL_STRINGIFY(MIRALL_VERSION_SUFFIX));
if (suffix.startsWith("daily")
|| suffix.startsWith("nightly")
|| suffix.startsWith("alpha")
|| suffix.startsWith("rc")
|| suffix.startsWith("beta")) {
defaultUpdateChannel = QStringLiteral("beta");
}
QSettings settings(configFile(), QSettings::IniFormat);
return settings.value(QLatin1String(updateChannelC), defaultUpdateChannel).toString();
}
void ConfigFile::setUpdateChannel(const QString &channel)
{
QSettings settings(configFile(), QSettings::IniFormat);
settings.setValue(QLatin1String(updateChannelC), channel);
}
int ConfigFile::maxLogLines() const
{
QSettings settings(configFile(), QSettings::IniFormat);

View File

@@ -131,6 +131,9 @@ public:
bool skipUpdateCheck(const QString &connection = QString()) const;
void setSkipUpdateCheck(bool, const QString &);
QString updateChannel() const;
void setUpdateChannel(const QString &channel);
void saveGeometryHeader(QHeaderView *header);
void restoreGeometryHeader(QHeaderView *header);

View File

@@ -317,6 +317,7 @@ bool ConnectionValidator::setAndCheckServerVersion(const QString &version)
#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
// Record that the server supports HTTP/2
// Actual decision if we should use HTTP/2 is done in AccessManager::createRequest
if (auto job = qobject_cast<AbstractNetworkJob *>(sender())) {
if (auto reply = job->reply()) {
_account->setHttp2Supported(

View File

@@ -117,6 +117,7 @@ HttpCredentials::HttpCredentials(const QString &user, const QString &password, c
, _clientSslKey(key)
, _clientSslCertificate(certificate)
, _keychainMigration(false)
, _retryOnKeyChainError(false)
{
}
@@ -219,6 +220,21 @@ void HttpCredentials::deleteOldKeychainEntries()
void HttpCredentials::slotReadClientCertPEMJobDone(QKeychain::Job *incoming)
{
#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
Q_ASSERT(!incoming->insecureFallback()); // If insecureFallback is set, the next test would be pointless
if (_retryOnKeyChainError && (incoming->error() == QKeychain::NoBackendAvailable
|| incoming->error() == QKeychain::OtherError)) {
// Could be that the backend was not yet available. Wait some extra seconds.
// (Issues #4274 and #6522)
// (For kwallet, the error is OtherError instead of NoBackendAvailable, maybe a bug in QtKeychain)
qCInfo(lcHttpCredentials) << "Backend unavailable (yet?) Retrying in a few seconds." << incoming->errorString();
QTimer::singleShot(10000, this, &HttpCredentials::fetchFromKeychainHelper);
_retryOnKeyChainError = false;
return;
}
_retryOnKeyChainError = false;
#endif
// Store PEM in memory
ReadPasswordJob *readJob = static_cast<ReadPasswordJob *>(incoming);
if (readJob->error() == NoError && readJob->binaryData().length() > 0) {
@@ -363,11 +379,12 @@ bool HttpCredentials::refreshAccessToken()
QJsonParseError jsonParseError;
QJsonObject json = QJsonDocument::fromJson(jsonData, &jsonParseError).object();
QString accessToken = json["access_token"].toString();
if (reply->error() != QNetworkReply::NoError || jsonParseError.error != QJsonParseError::NoError || json.isEmpty()) {
// Network error maybe?
if (jsonParseError.error != QJsonParseError::NoError || json.isEmpty()) {
// Invalid or empty JSON: Network error maybe?
qCWarning(lcHttpCredentials) << "Error while refreshing the token" << reply->errorString() << jsonData << jsonParseError.errorString();
} else if (accessToken.isEmpty()) {
// The token is no longer valid.
// If the json was valid, but the reply did not contain an access token, the token
// is considered expired. (Usually the HTTP reply code is 400)
qCDebug(lcHttpCredentials) << "Expired refresh token. Logging out";
_refreshToken.clear();
} else {

View File

@@ -141,6 +141,7 @@ protected:
QSslKey _clientSslKey;
QSslCertificate _clientSslCertificate;
bool _keychainMigration;
bool _retryOnKeyChainError = true; // true if we haven't done yet any reading from keychain
};

View File

@@ -219,7 +219,7 @@ void Logger::setLogFlush(bool flush)
void Logger::setLogDebug(bool debug)
{
QLoggingCategory::setFilterRules(debug ? QStringLiteral("qt.*=true\n*.debug=true") : QString());
QLoggingCategory::setFilterRules(debug ? QStringLiteral("sync.*.debug=true\ngui.*.debug=true") : QString());
_logDebug = debug;
}

View File

@@ -629,7 +629,11 @@ bool PropfindJob::finished()
AvatarJob::AvatarJob(AccountPtr account, QObject *parent)
: AbstractNetworkJob(account, QString(), parent)
{
_avatarUrl = Utility::concatUrlPath(account->url(), QString("remote.php/dav/avatars/%1/128.png").arg(account->davUser()));
if (account->serverVersionInt() >= Account::makeServerVersion(10, 0, 0)) {
_avatarUrl = Utility::concatUrlPath(account->url(), QString("remote.php/dav/avatars/%1/128.png").arg(account->davUser()));
} else {
_avatarUrl = Utility::concatUrlPath(account->url(), QString("index.php/avatar/%1/128").arg(account->davUser()));
}
}
void AvatarJob::start()

View File

@@ -579,8 +579,7 @@ bool OwncloudPropagator::localFileNameClash(const QString &relFile)
re = false;
qCWarning(lcPropagator) << "No valid fileinfo";
} else {
// Need to normalize to composited form because of
// https://bugreports.qt-project.org/browse/QTBUG-39622
// Need to normalize to composited form because of QTBUG-39622/QTBUG-55896
const QString cName = fileInfo.canonicalFilePath().normalized(QString::NormalizationForm_C);
bool equal = (file == cName);
re = (!equal && !cName.endsWith(relFile, Qt::CaseSensitive));
@@ -821,10 +820,13 @@ void PropagatorCompositeJob::slotSubJobFinished(SyncFileItem::Status status)
ASSERT(i >= 0);
_runningJobs.remove(i);
// Any sub job error will cause the whole composite to fail. This is important
// for knowing whether to update the etag in PropagateDirectory, for example.
if (status == SyncFileItem::FatalError
|| status == SyncFileItem::NormalError
|| status == SyncFileItem::SoftError
|| status == SyncFileItem::DetailError) {
|| status == SyncFileItem::DetailError
|| status == SyncFileItem::BlacklistedError) {
_hasError = status;
}

View File

@@ -210,8 +210,9 @@ public:
virtual ~PropagatorCompositeJob()
{
qDeleteAll(_jobsToDo);
qDeleteAll(_runningJobs);
// Don't delete jobs in _jobsToDo and _runningJobs: they have parents
// that will be responsible for cleanup. Deleting them here would risk
// deleting something that has already been deleted by a shared parent.
}
void appendJob(PropagatorJob *job)

View File

@@ -553,6 +553,16 @@ void PropagateUploadFileCommon::commonErrorHandling(AbstractNetworkJob *job)
abortWithError(status, errorString);
}
void PropagateUploadFileCommon::adjustLastJobTimeout(AbstractNetworkJob *job, quint64 fileSize)
{
job->setTimeout(qBound(
job->timeoutMsec(),
// Calculate 3 minutes for each gigabyte of data
qint64((3 * 60 * 1000) * fileSize / 1e9),
// Maximum of 30 minutes
qint64(30 * 60 * 1000)));
}
void PropagateUploadFileCommon::slotJobDestroyed(QObject *job)
{
_jobs.erase(std::remove(_jobs.begin(), _jobs.end(), job), _jobs.end());

View File

@@ -281,6 +281,17 @@ protected:
*/
void commonErrorHandling(AbstractNetworkJob *job);
/**
* Increases the timeout for the final MOVE/PUT for large files.
*
* This is an unfortunate workaround since the drawback is not being able to
* detect real disconnects in a timely manner. Shall go away when the server
* response starts coming quicker, or there is some sort of async api.
*
* See #6527, enterprise#2480
*/
static void adjustLastJobTimeout(AbstractNetworkJob *job, quint64 fileSize);
// Bases headers that need to be sent with every chunk
QMap<QByteArray, QByteArray> headers();
};

View File

@@ -295,6 +295,7 @@ void PropagateUploadFileNG::startNextChunk()
connect(job, &MoveJob::finishedSignal, this, &PropagateUploadFileNG::slotMoveJobFinished);
connect(job, &QObject::destroyed, this, &PropagateUploadFileCommon::slotJobDestroyed);
propagator()->_activeJobList.append(this);
adjustLastJobTimeout(job, fileSize);
job->start();
return;
}

View File

@@ -130,6 +130,8 @@ void PropagateUploadFileV1::startNextChunk()
connect(job, &PUTFileJob::uploadProgress, this, &PropagateUploadFileV1::slotUploadProgress);
connect(job, &PUTFileJob::uploadProgress, device, &UploadDevice::slotJobUploadProgress);
connect(job, &QObject::destroyed, this, &PropagateUploadFileCommon::slotJobDestroyed);
if (isFinalChunk)
adjustLastJobTimeout(job, fileSize);
job->start();
propagator()->_activeJobList.append(this);
_currentChunk++;
@@ -301,6 +303,7 @@ void PropagateUploadFileV1::slotPutFinished()
qCWarning(lcPropagateUpload) << "Server does not support X-OC-MTime" << job->reply()->rawHeader("X-OC-MTime");
// Well, the mtime was not set
done(SyncFileItem::SoftError, "Server does not support X-OC-MTime");
return;
}
#ifdef WITH_TESTING

View File

@@ -66,7 +66,7 @@ bool PropagateLocalRemove::removeRecursively(const QString &path)
bool ok;
// The use of isSymLink here is okay:
// we never want to go into this branch for .lnk files
bool isDir = fi.isDir() && !fi.isSymLink();
bool isDir = fi.isDir() && !fi.isSymLink() && !FileSystem::isJunction(fi.absoluteFilePath());
if (isDir) {
ok = removeRecursively(path + QLatin1Char('/') + di.fileName()); // recursive
} else {

View File

@@ -82,10 +82,9 @@ public:
/** For files whose errors were blacklisted
*
* If an file is blacklisted due to an error it isn't even reattempted. These
* errors should appear in the issues tab, but not on the account settings and
* should not cause the sync run to fail.
* errors should appear in the issues tab but should be silent otherwise.
*
* A DetailError that doesn't cause sync failure.
* A SoftError caused by blacklisting.
*/
BlacklistedError
};
@@ -178,20 +177,33 @@ public:
/**
* True if the item had any kind of error.
*
* Used for deciding whether an item belongs to the protocol or the
* issues list on the activity page and for checking whether an
* item should be announced in the notification message.
*/
bool hasErrorStatus() const
{
return _status == SyncFileItem::SoftError
|| _status == SyncFileItem::NormalError
|| _status == SyncFileItem::FatalError
|| _status == SyncFileItem::Conflict
|| !_errorString.isEmpty();
}
/**
* Whether this item should appear on the issues tab.
*/
bool showInIssuesTab() const
{
return hasErrorStatus() || _status == SyncFileItem::Conflict;
}
/**
* Whether this item should appear on the protocol tab.
*/
bool showInProtocolTab() const
{
return !showInIssuesTab()
// Don't show conflicts that were resolved as "not a conflict after all"
&& !(_instruction == CSYNC_INSTRUCTION_CONFLICT && _status == SyncFileItem::Success);
}
// Variables useful for everybody
QString _file;
QString _renameTarget;

View File

@@ -127,7 +127,7 @@ QIcon Theme::themeIcon(const QString &name, bool sysTray, bool sysTrayMenuVisibl
}
QString key = name + "," + flavor;
QIcon &cached = _iconCache[key];
QIcon &cached = _iconCache[key]; // Take reference, this will also "set" the cache entry
if (cached.isNull()) {
if (QIcon::hasThemeIcon(name)) {
// use from theme

View File

@@ -172,6 +172,14 @@ private slots:
fakeFolder.syncEngine().journal()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList,
{"parentFolder/subFolderA/"});
fakeFolder.syncEngine().journal()->avoidReadFromDbOnNextSync(QByteArrayLiteral("parentFolder/subFolderA/"));
auto getEtag = [&](const QByteArray &file) {
SyncJournalFileRecord rec;
fakeFolder.syncJournal().getFileRecord(file, &rec);
return rec._etag;
};
QVERIFY(getEtag("parentFolder") == "_invalid_");
QVERIFY(getEtag("parentFolder/subFolderA") == "_invalid_");
QVERIFY(getEtag("parentFolder/subFolderA/subsubFolder") != "_invalid_");
// But touch local file before the next sync, such that the local folder
// can't be removed
@@ -586,6 +594,58 @@ private slots:
QVERIFY(localFileExists("A/.hidden"));
QVERIFY(fakeFolder.currentRemoteState().find("B/.hidden"));
}
void testNoLocalEncoding()
{
auto utf8Locale = QTextCodec::codecForLocale();
if (utf8Locale->mibEnum() != 106) {
QSKIP("Test only works for UTF8 locale");
}
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
QVERIFY(fakeFolder.syncOnce());
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
// Utf8 locale can sync both
fakeFolder.remoteModifier().insert("A/tößt");
fakeFolder.remoteModifier().insert("A/t𠜎t");
QVERIFY(fakeFolder.syncOnce());
QVERIFY(fakeFolder.currentLocalState().find("A/tößt"));
QVERIFY(fakeFolder.currentLocalState().find("A/t𠜎t"));
#if !defined(Q_OS_MAC) && !defined(Q_OS_WIN)
// Try again with a locale that can represent ö but not 𠜎 (4-byte utf8).
QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO-8859-15"));
QVERIFY(QTextCodec::codecForLocale()->mibEnum() == 111);
fakeFolder.remoteModifier().insert("B/tößt");
fakeFolder.remoteModifier().insert("B/t𠜎t");
QVERIFY(fakeFolder.syncOnce());
QVERIFY(fakeFolder.currentLocalState().find("B/tößt"));
QVERIFY(!fakeFolder.currentLocalState().find("B/t𠜎t"));
QVERIFY(!fakeFolder.currentLocalState().find("B/t?t"));
QVERIFY(!fakeFolder.currentLocalState().find("B/t??t"));
QVERIFY(!fakeFolder.currentLocalState().find("B/t???t"));
QVERIFY(!fakeFolder.currentLocalState().find("B/t????t"));
QVERIFY(fakeFolder.syncOnce());
QVERIFY(fakeFolder.currentRemoteState().find("B/tößt"));
QVERIFY(fakeFolder.currentRemoteState().find("B/t𠜎t"));
// Try again with plain ascii
QTextCodec::setCodecForLocale(QTextCodec::codecForName("ASCII"));
QVERIFY(QTextCodec::codecForLocale()->mibEnum() == 3);
fakeFolder.remoteModifier().insert("C/tößt");
QVERIFY(fakeFolder.syncOnce());
QVERIFY(!fakeFolder.currentLocalState().find("C/tößt"));
QVERIFY(!fakeFolder.currentLocalState().find("C/t??t"));
QVERIFY(!fakeFolder.currentLocalState().find("C/t????t"));
QVERIFY(fakeFolder.syncOnce());
QVERIFY(fakeFolder.currentRemoteState().find("C/tößt"));
QTextCodec::setCodecForLocale(utf8Locale);
#endif
}
};
QTEST_GUILESS_MAIN(TestSyncEngine)

View File

@@ -183,6 +183,121 @@ private slots:
QCOMPARE(record.numericFileId(), QByteArray("123456789"));
}
void testAvoidReadFromDbOnNextSync()
{
auto invalidEtag = QByteArray("_invalid_");
auto initialEtag = QByteArray("etag");
auto makeEntry = [&](const QByteArray &path, int type) {
SyncJournalFileRecord record;
record._path = path;
record._type = type;
record._etag = initialEtag;
_db.setFileRecord(record);
};
auto getEtag = [&](const QByteArray &path) {
SyncJournalFileRecord record;
_db.getFileRecord(path, &record);
return record._etag;
};
makeEntry("foodir", 2);
makeEntry("otherdir", 2);
makeEntry("foo%", 2); // wildcards don't apply
makeEntry("foodi_", 2); // wildcards don't apply
makeEntry("foodir/file", 0);
makeEntry("foodir/subdir", 2);
makeEntry("foodir/subdir/file", 0);
makeEntry("foodir/otherdir", 2);
makeEntry("fo", 2); // prefix, but does not match
makeEntry("foodir/sub", 2); // prefix, but does not match
makeEntry("foodir/subdir/subsubdir", 2);
makeEntry("foodir/subdir/subsubdir/file", 0);
makeEntry("foodir/subdir/otherdir", 2);
_db.avoidReadFromDbOnNextSync(QByteArray("foodir/subdir"));
// Direct effects of parent directories being set to _invalid_
QCOMPARE(getEtag("foodir"), invalidEtag);
QCOMPARE(getEtag("foodir/subdir"), invalidEtag);
QCOMPARE(getEtag("foodir/subdir/subsubdir"), initialEtag);
QCOMPARE(getEtag("foodir/file"), initialEtag);
QCOMPARE(getEtag("foodir/subdir/file"), initialEtag);
QCOMPARE(getEtag("foodir/subdir/subsubdir/file"), initialEtag);
QCOMPARE(getEtag("fo"), initialEtag);
QCOMPARE(getEtag("foo%"), initialEtag);
QCOMPARE(getEtag("foodi_"), initialEtag);
QCOMPARE(getEtag("otherdir"), initialEtag);
QCOMPARE(getEtag("foodir/otherdir"), initialEtag);
QCOMPARE(getEtag("foodir/sub"), initialEtag);
QCOMPARE(getEtag("foodir/subdir/otherdir"), initialEtag);
// Indirect effects: setFileRecord() calls filter etags
initialEtag = "etag2";
makeEntry("foodir", 2);
QCOMPARE(getEtag("foodir"), invalidEtag);
makeEntry("foodir/subdir", 2);
QCOMPARE(getEtag("foodir/subdir"), invalidEtag);
makeEntry("foodir/subdir/subsubdir", 2);
QCOMPARE(getEtag("foodir/subdir/subsubdir"), initialEtag);
makeEntry("fo", 2);
QCOMPARE(getEtag("fo"), initialEtag);
makeEntry("foodir/sub", 2);
QCOMPARE(getEtag("foodir/sub"), initialEtag);
}
void testRecursiveDelete()
{
auto makeEntry = [&](const QByteArray &path) {
SyncJournalFileRecord record;
record._path = path;
_db.setFileRecord(record);
};
QByteArrayList elements;
elements
<< "foo"
<< "foo/file"
<< "bar"
<< "moo"
<< "moo/file"
<< "foo%bar"
<< "foo bla bar/file"
<< "fo_"
<< "fo_/file";
for (auto elem : elements)
makeEntry(elem);
auto checkElements = [&]() {
bool ok = true;
for (auto elem : elements) {
SyncJournalFileRecord record;
_db.getFileRecord(elem, &record);
if (!record.isValid()) {
qWarning() << "Missing record: " << elem;
ok = false;
}
}
return ok;
};
_db.deleteFileRecord("moo", true);
elements.removeAll("moo");
elements.removeAll("moo/file");
QVERIFY(checkElements());
_db.deleteFileRecord("fo_", true);
elements.removeAll("fo_");
elements.removeAll("fo_/file");
QVERIFY(checkElements());
_db.deleteFileRecord("foo%bar", true);
elements.removeAll("foo%bar");
QVERIFY(checkElements());
}
private:
SyncJournalDb _db;
};

View File

@@ -576,6 +576,51 @@ private slots:
//QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
}
}
// https://github.com/owncloud/client/issues/6629#issuecomment-402450691
// When a file is moved and the server mtime was not in sync, the local mtime should be kept
void testMoveAndMTimeChange()
{
FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() };
int nPUT = 0;
int nDELETE = 0;
int nGET = 0;
int nMOVE = 0;
fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &req) {
if (op == QNetworkAccessManager::PutOperation)
++nPUT;
if (op == QNetworkAccessManager::DeleteOperation)
++nDELETE;
if (op == QNetworkAccessManager::GetOperation)
++nGET;
if (req.attribute(QNetworkRequest::CustomVerbAttribute) == "MOVE")
++nMOVE;
return nullptr;
});
// Changing the mtime on the server (without invalidating the etag)
fakeFolder.remoteModifier().find("A/a1")->lastModified = QDateTime::currentDateTimeUtc().addSecs(-50000);
fakeFolder.remoteModifier().find("A/a2")->lastModified = QDateTime::currentDateTimeUtc().addSecs(-40000);
// Move a few files
fakeFolder.remoteModifier().rename("A/a1", "A/a1_server_renamed");
fakeFolder.localModifier().rename("A/a2", "A/a2_local_renamed");
QVERIFY(fakeFolder.syncOnce());
QCOMPARE(nGET, 0);
QCOMPARE(nPUT, 0);
QCOMPARE(nMOVE, 1);
QCOMPARE(nDELETE, 0);
// Another sync should do nothing
QVERIFY(fakeFolder.syncOnce());
QCOMPARE(nGET, 0);
QCOMPARE(nPUT, 0);
QCOMPARE(nMOVE, 1);
QCOMPARE(nDELETE, 0);
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
}
};
QTEST_GUILESS_MAIN(TestSyncMove)

View File

@@ -373,7 +373,7 @@
<message>
<location filename="../src/gui/accountstate.cpp" line="132"/>
<source>Maintenance mode</source>
<translation type="unfinished"/>
<translation>Mode de manteniment</translation>
</message>
<message>
<location filename="../src/gui/accountstate.cpp" line="134"/>
@@ -1408,42 +1408,47 @@ Els elements que poden ser eliminats s&apos;eliminaran si impedeixen que una car
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Carpeta</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="73"/>
<source>Show warnings</source>
<translation type="unfinished"/>
<translation>Mostra avisos</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="83"/>
<source>Show ignored files</source>
<translation>Mostra arxius descartats</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Fitxer</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2502,7 +2507,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/servernotificationhandler.cpp" line="103"/>
<source>Dismiss</source>
<translation type="unfinished"/>
<translation>Ignora</translation>
</message>
</context>
<context>
@@ -2536,28 +2541,28 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Activitat</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Xarxa</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Compte</translation>
</message>
@@ -2617,12 +2622,12 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/sharedialog.cpp" line="211"/>
<source>Users and Groups</source>
<translation type="unfinished"/>
<translation>Usuaris i Grups</translation>
</message>
<message>
<location filename="../src/gui/sharedialog.cpp" line="218"/>
<source>Public Links</source>
<translation type="unfinished"/>
<translation>Enllaços públics</translation>
</message>
</context>
<context>
@@ -2645,7 +2650,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="35"/>
<source>Enter a name to create a new public link...</source>
<translation type="unfinished"/>
<translation>Escriu un nom per crear un enllaç públic...</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
@@ -2665,12 +2670,12 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="178"/>
<source>Link properties:</source>
<translation type="unfinished"/>
<translation>Propietats de l&apos;enllaç:</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="220"/>
<source>Show file listing</source>
<translation type="unfinished"/>
<translation>Motra el llistat de fitxers</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="200"/>
@@ -2680,102 +2685,98 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="20"/>
<source>Anyone with the link has access to the file/folder</source>
<translation type="unfinished"/>
<translation>Qualsevol podrà accedir a l&apos;arxiu o carpeta amb aquest link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Protegit amb contr&amp;asenya</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protegit amb contrasenya</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>El fitxer no es pot compartir perquè va ser compartit sense permisos de compartició.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Esborra</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation>Copiar al portadocuments</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Envia l&apos;enllaç per correu electrònic</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Cancel·lar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
<translation>Enllaç públic</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>La comp&amp;artició pública requereix una contrasenya</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Establiu la contrasenya</translation>
</message>
@@ -2810,7 +2811,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation>Copiar al portadocuments</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
@@ -2825,7 +2826,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="337"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>He compartit amb tu</translation>
</message>
</context>
<context>
@@ -2918,7 +2919,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/socketapi.cpp" line="557"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>He compartit amb tu</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="565"/>
@@ -3849,7 +3850,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
<source>Re-open Browser</source>
<translation type="unfinished"/>
<translation>Reobrir navegador</translation>
</message>
</context>
<context>
@@ -4176,7 +4177,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/guiutility.cpp" line="33"/>
<source>Could not open browser</source>
<translation type="unfinished"/>
<translation>No es pot obrir el navegador</translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="34"/>

View File

@@ -83,12 +83,12 @@
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
<source>Unknown error: network reply was deleted</source>
<translation type="unfinished"/>
<translation>Neznámá chyba: odpověď sítě byla smazána</translation>
</message>
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
<source>Server replied &quot;%1 %2&quot; to &quot;%3 %4&quot;</source>
<translation type="unfinished"/>
<translation>Odpověď serveru &quot;%1 %2&quot; do &quot;%3 %4&quot;</translation>
</message>
</context>
<context>
@@ -388,7 +388,7 @@
<message>
<location filename="../src/gui/accountstate.cpp" line="138"/>
<source>Asking Credentials</source>
<translation type="unfinished"/>
<translation>Požádat o pověření</translation>
</message>
<message>
<location filename="../src/gui/accountstate.cpp" line="140"/>
@@ -988,7 +988,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
<source>There are unresolved conflicts. Click for details.</source>
<translation type="unfinished"/>
<translation>Jsou zde nevyřešené konflikty. Klikněte pro detaily.</translation>
</message>
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
@@ -1396,7 +1396,7 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
<message>
<location filename="../src/gui/issueswidget.ui" line="20"/>
<source>List of issues</source>
<translation type="unfinished"/>
<translation>Seznam problémů</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="34"/>
@@ -1411,7 +1411,7 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Adresář</translation>
</message>
@@ -1426,27 +1426,32 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
<translation>Ukázat ignorované soubory</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopie</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Soubor</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Problém</translation>
</message>
@@ -2539,28 +2544,28 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Aktivita</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Hlavní</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Síť</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Účet</translation>
</message>
@@ -2686,99 +2691,95 @@ Nedoporučuje se jí používat.</translation>
<translation>Kdokoliv, kdo odkaz, může přistupovat k tomuto souboru/složce</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Ch&amp;ránit heslem</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Chráněno heslem</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Tento soubor nelze sdílet, protože byl nasdílen bez možnosti dalšího sdílení.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Smazat</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Otevřít odkaz v prohlížeči</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Poslat odkaz emailem</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Zrušit</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Veřejný odkaz</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Veřejné s&amp;dílení vyžaduje heslo</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Nastavte prosím heslo</translation>
</message>
@@ -3627,12 +3628,12 @@ Nedoporučuje se jí používat.</translation>
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
<source>Synchronization is paused</source>
<translation type="unfinished"/>
<translation>Synchronizace je pozastavena</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
<source>Error during synchronization</source>
<translation type="unfinished"/>
<translation>Chyba při synchronizaci</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="314"/>
@@ -3842,17 +3843,17 @@ Nedoporučuje se jí používat.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="36"/>
<source>Please switch to your browser to proceed.</source>
<translation type="unfinished"/>
<translation>Chcete-li pokračovat, přepněte prosím do svého prohlížeče.</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="46"/>
<source>An error occured while connecting. Please try again.</source>
<translation type="unfinished"/>
<translation>Při připojování došlo k chybě. Prosím zkuste to znovu.</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
<source>Re-open Browser</source>
<translation type="unfinished"/>
<translation>Znovu otevřít prohlížeč</translation>
</message>
</context>
<context>
@@ -4179,7 +4180,7 @@ Nedoporučuje se jí používat.</translation>
<message>
<location filename="../src/gui/guiutility.cpp" line="33"/>
<source>Could not open browser</source>
<translation type="unfinished"/>
<translation>Nemohu otevřít prohlížeč</translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="34"/>

View File

@@ -506,7 +506,7 @@
<message>
<location filename="../src/gui/activitywidget.cpp" line="358"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Sieh haben %n neue Benachrichtigungen von %1, %2 und anderen Konten erhalten.</translation>
<translation>Sie haben %n neue Benachrichtigungen von %1, %2 und anderen Konten erhalten.</translation>
</message>
<message>
<location filename="../src/gui/activitywidget.cpp" line="362"/>
@@ -995,7 +995,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Nach Änderungen suchen in &apos;%1&apos;</translation>
<translation>Suche nach Änderungen in &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
@@ -1103,7 +1103,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<message>
<location filename="../src/gui/folderwizard.cpp" line="550"/>
<source>Add Sync Connection</source>
<translation>Ordner-Synchronisation hinzufügen</translation>
<translation>Synchronisation hinzufügen</translation>
</message>
</context>
<context>
@@ -1144,7 +1144,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<message>
<location filename="../src/gui/folderwizard.cpp" line="223"/>
<source>Authentication failed accessing %1</source>
<translation>Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen</translation>
<translation>Die Authentifizierung ist beim Zugriff auf %1 fehlgeschlagen</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="225"/>
@@ -1233,7 +1233,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<message>
<location filename="../src/gui/generalsettings.ui" line="171"/>
<source>Ask for confirmation before synchronizing folders larger than</source>
<translation>Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze:</translation>
<translation>Bestätigung erfragen, bevor Ordner synchronisiert werden die größer sind als:</translation>
</message>
<message>
<location filename="../src/gui/generalsettings.ui" line="191"/>
@@ -1413,7 +1413,7 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Ordner</translation>
</message>
@@ -1428,27 +1428,32 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun
<translation>Ignorierte Dateien anzeigen</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Es gab zu viele Probleme. Nicht alle können hier dargestellt werden.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Liste der Fehler in die Zwischenablage kopieren.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Zeit</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Datei</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Fehler</translation>
</message>
@@ -2540,28 +2545,28 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Aktivität</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Allgemein</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Netzwerk</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Benutzerkonto</translation>
</message>
@@ -2687,99 +2692,95 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Jeder mit dem Link hat Zugriff auf die Datei/Ordner</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Passwort geschützt</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>passwortgeschützt</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Die Datei kann nicht geteilt werden, weil sie ohne erneute Teilungs-Berechtigung für Sie geteilt wurde.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation>%1 - Link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation>Das Teilen von Links wurde deaktiviert</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation>Öffentlichen Link zum Teilen erstellen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Link im Browser öffnen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Link in Zwischenablage kopieren</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Link in die Zwischenablage kopieren (direkter download)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Link als E-Mail verschicken</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation>Link per Email senden (direkter download)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation>Löschung des öffentlichen Links bestätigen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>&lt;p&gt;Möchte Sie wirklich den öffentlichen Link &lt;i&gt;%1 &lt;/i&gt;löschen?&lt;p&gt;Hinweis: Dies kann nicht rückgängig gemacht werden.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Öffentlicher Link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation>Öffentlichen Link löschen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Öffentliches Teilen erfordert ein P&amp;asswort</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Bitte wählen Sie ein Passwort:</translation>
</message>
@@ -2799,7 +2800,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.ui" line="108"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You can direct people to this shared file or folder &lt;a href=&quot;private link menu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;by giving them a private link&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Sie können Leute direkt zu dieser Freigabe leiten&lt;a href=&quot;private link menu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;, wenn Sie Ihnen einen privaten Link&lt;/span&gt;&lt;/a&gt;gibst.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Sie können Personen direkt zu dieser Freigabe leiten,&lt;a href=&quot;private link menu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt; wenn Sie Ihnen diesen privaten Link &lt;/span&gt;&lt;/a&gt; geben.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="186"/>
@@ -3246,7 +3247,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1290"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben</translation>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von übergeordneten Ordnern haben</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1297"/>
@@ -3326,12 +3327,12 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="450"/>
<source>File names ending with a period are not supported on this file system.</source>
<translation>Dateinamen enden mit einem Punkt, die in diesem Dateisystem nicht unterstützt wird.</translation>
<translation>Dateinamen die mit einem Punkt enden sind in diesem Dateisystem nicht unterstützt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="460"/>
<source>File names containing the character &apos;%1&apos; are not supported on this file system.</source>
<translation>Dateinamen beinhalten das Zeichen &apos;%1&apos; und diese werden in diesem Dateisystems nicht unterstützt.</translation>
<translation>Dateinamen beinhalten das Zeichen &apos;%1&apos; diese werden in diesem Dateisystem nicht unterstützt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="463"/>
@@ -3341,7 +3342,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="468"/>
<source>Filename contains trailing spaces.</source>
<translation>Dateiname endet mit Leerzeichen.</translation>
<translation>Der Dateiname endet mit Leerzeichen.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="471"/>
@@ -3371,7 +3372,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="707"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Ungültige Zeichenm bitte benennen Sie &quot;%1&quot; um</translation>
<translation>Ungültige Zeichen, bitte benennen Sie &quot;%1&quot; um</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="827"/>
@@ -3602,12 +3603,12 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="240"/>
<source>Disconnected from some accounts</source>
<translation>Verbindungen zu einigen Konnten getrennt</translation>
<translation>Die Verbindungen zu einigen Konnten wurde getrennt</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="251"/>
<source>Disconnected from accounts:</source>
<translation>Verbindungen zu Konnten getrennt:</translation>
<translation>Verbindungen zu Konnten wurde getrennt:</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="253"/>
@@ -3843,7 +3844,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="36"/>
<source>Please switch to your browser to proceed.</source>
<translation>Bitte wechseln Sie zum Fortfahren in deinen Browser.</translation>
<translation>Bitte wechseln Sie zum Fortfahren in den Browser.</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="46"/>

View File

@@ -1413,7 +1413,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Φάκελος</translation>
</message>
@@ -1428,27 +1428,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Αντιγραφή</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Ώρα</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Αρχείο</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2541,28 +2546,28 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Δραστηριότητα</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Γενικά</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Δίκτυο</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Λογαριασμός</translation>
</message>
@@ -2688,99 +2693,95 @@ It is not advisable to use it.</source>
<translation>Οποιοσδήποτε με τη σύνδεση έχει πρόσβαση στο αρχείο / φάκελο</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Π&amp;ροστασία με κωδικό</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Προστατευμένο με κωδικό πρόσβασης</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Το αρχείο δεν μπορεί να διαμοιραστεί γιατί διαμοιράστηκε χωρίς δικαιώματα διαμοιρασμού.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation>%1 σλυνδεσμος</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Διαγραφή</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Άνοιγμα συνδέσμου στον περιηγητή</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Αντιγραφή συνδέσμου στο πρόχειρο</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Αποστολή συνδέσμου με αλληλογραφία</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Ακύρωση</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Δημόσιος σύνδεσμος</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Ο δημόσιος &amp;διαμοιρασμός απαιτεί κωδικό πρόσβασης</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Παρακαλούμε ορίστε Κωδικό</translation>
</message>

View File

@@ -1434,7 +1434,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
@@ -1449,27 +1449,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"></translation>
</message>
@@ -2560,28 +2565,28 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation type="unfinished"></translation>
</message>
@@ -2707,99 +2712,95 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -283,7 +283,7 @@
<message>
<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>
<translation>Hay carpetas que no fueron sincronizadas porque son demasiado grandes o residen en almacenes externos:</translation>
<translation>Hay carpetas que no fueron sincronizadas porque son demasiado grandes o residen en almacenamiento externo:</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="834"/>
@@ -1244,7 +1244,7 @@ Si continua con la sincronización todos los archivos serán remplazados por su
<message>
<location filename="../src/gui/generalsettings.ui" line="215"/>
<source>Ask for confirmation before synchronizing external storages</source>
<translation>Preguntar si se desea sincronizar carpetas de almacenes externos</translation>
<translation>Preguntar si se desea sincronizar carpetas de almacenamiento externo</translation>
</message>
<message>
<location filename="../src/gui/generalsettings.ui" line="26"/>
@@ -1413,7 +1413,7 @@ Los elementos cuya eliminación está permitida serán eliminados si impiden que
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Carpeta</translation>
</message>
@@ -1428,27 +1428,32 @@ Los elementos cuya eliminación está permitida serán eliminados si impiden que
<translation>Mostrar archivos ignorados</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Hay demasiados problemas, No todos se visualizan aquí.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Copiar la lista de problemas al portapapeles.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Archivo</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Problema</translation>
</message>
@@ -2540,28 +2545,28 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Actividad</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
@@ -2687,99 +2692,95 @@ No se recomienda usarla.</translation>
<translation>Quienquiera que posea el vínculo tendrá acceso al archivo/carpeta</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Protegido por contr&amp;aseña </translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protegido con contraseña</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>El archivo no puede compartirse; ya que fue compartido sin permisos correspondientes.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation>%1 Enlace</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation>Se ha deshabilitado la compartición de enlaces</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation>Crear un enlace público compartido</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Eliminar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Abrir enlace en el explorador</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Copiar enlace al portapapeles</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Copiar enlace al portapapeles (descarga directa)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Enviar enlace por e-mail</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation>Enviar enlace por e-mail (descarga directa)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation>Confirmar eliminación de enlace de recurso compartido</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>&lt;p&gt;¿Realmente desea borrar el enlace público compartido &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Nota: Esta acción no se puede deshacer&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Enlace Publico</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation>Borrar el enlace compartido</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Compartir public&amp;amente requiere contraseña</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Por favor establece una contraseña</translation>
</message>
@@ -3462,7 +3463,7 @@ No se recomienda usarla.</translation>
<message>
<location filename="../src/libsync/theme.cpp" line="315"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versión %1. Para obtener más información, visita&lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
<translation>&lt;p&gt;Versión %1. Para obtener más información, visita &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/libsync/theme.cpp" line="320"/>
@@ -3643,7 +3644,7 @@ No se recomienda usarla.</translation>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
<source>Unpause all folders</source>
<translation>Despausar todas las carpetas</translation>
<translation>Reanudar todas las carpetas</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="365"/>
@@ -3653,12 +3654,12 @@ No se recomienda usarla.</translation>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="599"/>
<source>Unpause all synchronization</source>
<translation>Despausar todas las sincronizaciones</translation>
<translation>Reanudar toda la sincronización</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="601"/>
<source>Unpause synchronization</source>
<translation>Despausar la sincronización</translation>
<translation>Reanudar la sincronización</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="609"/>
@@ -3782,7 +3783,7 @@ No se recomienda usarla.</translation>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="327"/>
<source>Ask for confirmation before synchronizing e&amp;xternal storages</source>
<translation>Preguntar si se desea sincronizar carpetas de almacenes e&amp;xternos</translation>
<translation>Preguntar si se desea sincronizar carpetas de almacenamiento e&amp;xterno</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="351"/>

View File

@@ -60,12 +60,12 @@
<message>
<location filename="../src/gui/notificationwidget.ui" line="56"/>
<source>Lorem ipsum dolor sit amet</source>
<translation type="unfinished"/>
<translation>Lorem ipsum dolor sit amet</translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="69"/>
<source>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </source>
<translation type="unfinished"/>
<translation>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm</translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="89"/>
@@ -83,7 +83,7 @@
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
<source>Unknown error: network reply was deleted</source>
<translation type="unfinished"/>
<translation>Error desconocido: la respuesta de la red fue eliminada</translation>
</message>
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
@@ -1402,7 +1402,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Carpeta</translation>
</message>
@@ -1417,27 +1417,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Archivo</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2528,28 +2533,28 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Actividad</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
@@ -2675,99 +2680,95 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Borrar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Mandar enlace por e-mail</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation type="unfinished"/>
</message>

View File

@@ -1402,7 +1402,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Kaust</translation>
</message>
@@ -1417,27 +1417,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopeeri</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Aeg</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Fail</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2529,28 +2534,28 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Toimingud</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Üldine</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Võrk</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2643,7 +2648,7 @@ Selle kasutamine pole soovitatav.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
<source>&amp;Create new</source>
<translation type="unfinished"/>
<translation>&amp;Loo uus</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
@@ -2676,99 +2681,95 @@ Selle kasutamine pole soovitatav.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>P&amp;arooliga kaitstud</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Parooliga kaitstud</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Kustuta</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Saada link e-postiga</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Loobu</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
<translation>Avalik link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Avalik j&amp;agamine nõuab parooli</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Palun määra parool</translation>
</message>

View File

@@ -1404,7 +1404,7 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Karpeta</translation>
</message>
@@ -1419,27 +1419,32 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopiatu</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Noiz</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Fitxategia</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2531,28 +2536,28 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Jarduera</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Orokorra</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Sarea</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Kontua</translation>
</message>
@@ -2678,99 +2683,95 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Esteka duen edonork atzitu dezake fitxategi/karpeta</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Ezabatu</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Bidali lotura posta bidez</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Ezeztatu</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Mesedez Ezarri Pasahitza</translation>
</message>

File diff suppressed because it is too large Load Diff

View File

@@ -83,7 +83,7 @@
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
<source>Unknown error: network reply was deleted</source>
<translation type="unfinished"/>
<translation>Tuntematon virhe: verkkovastaus poistettiin</translation>
</message>
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
@@ -243,7 +243,7 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="656"/>
<source>Server %1 is currently in maintenance mode.</source>
<translation type="unfinished"/>
<translation>Palvelin %1 on juuri nyt huoltotilassa.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="658"/>
@@ -373,7 +373,7 @@
<message>
<location filename="../src/gui/accountstate.cpp" line="132"/>
<source>Maintenance mode</source>
<translation type="unfinished"/>
<translation>Huoltotila</translation>
</message>
<message>
<location filename="../src/gui/accountstate.cpp" line="134"/>
@@ -567,7 +567,7 @@
<message>
<location filename="../src/gui/application.cpp" line="168"/>
<source>Quit ownCloud</source>
<translation type="unfinished"/>
<translation>Lopeta ownCloud</translation>
</message>
</context>
<context>
@@ -747,13 +747,15 @@
<location filename="../src/gui/folder.cpp" line="888"/>
<source>A new folder larger than %1 MB has been added: %2.
</source>
<translation type="unfinished"/>
<translation>Uusi kansio, joka on suurempi kuin %1 Mt, on lisätty: %2.
</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="891"/>
<source>A folder from an external storage has been added.
</source>
<translation type="unfinished"/>
<translation>Kansio erillisestä tallennustilasta on lisätty.
</translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="892"/>
@@ -981,7 +983,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
<source>There are unresolved conflicts. Click for details.</source>
<translation type="unfinished"/>
<translation>Selvittämättömiä ristiriitoja. Napsauta saadaksesi lisätietoja.</translation>
</message>
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
@@ -1389,7 +1391,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<message>
<location filename="../src/gui/issueswidget.ui" line="20"/>
<source>List of issues</source>
<translation type="unfinished"/>
<translation>Lista ongelmista</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="34"/>
@@ -1400,48 +1402,53 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<location filename="../src/gui/issueswidget.ui" line="42"/>
<location filename="../src/gui/issueswidget.ui" line="61"/>
<source>&lt;no filter&gt;</source>
<translation type="unfinished"/>
<translation>&lt;no filter&gt;</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Kansio</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="73"/>
<source>Show warnings</source>
<translation type="unfinished"/>
<translation>Näytä varoitukset</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="83"/>
<source>Show ignored files</source>
<translation type="unfinished"/>
<translation>Näytä ohitetut tiedostot</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Liian monta virhettä. Kaikki eivät ole näkyvissä tässä.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
<translation>Kopioi ongelmalista leikepöydälle.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopioi</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Aika</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Tiedosto</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
<translation>Ongelma</translation>
</message>
</context>
<context>
@@ -1464,7 +1471,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<message>
<location filename="../src/gui/logbrowser.cpp" line="89"/>
<source>&amp;Capture debug messages</source>
<translation type="unfinished"/>
<translation>&amp;Kaappaa vianjäljitysviestit</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="101"/>
@@ -1681,7 +1688,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<message>
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
<source>Error returned from the server: &lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Palvelimelta palautettu virhe: &lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
@@ -1701,7 +1708,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<message>
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
<source>&lt;h1&gt;Login Error&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Kirjautumisvirhe&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
@@ -1873,7 +1880,7 @@ for additional privileges during the process.</source>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
<source>Login in your browser</source>
<translation type="unfinished"/>
<translation>Kirjaudu selaimeesi</translation>
</message>
</context>
<context>
@@ -1951,7 +1958,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>Palvelin ilmoitti seuraavan virheen:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2531,28 +2538,28 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Toimet</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Yleiset</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Verkko</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Tili</translation>
</message>
@@ -2640,12 +2647,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="35"/>
<source>Enter a name to create a new public link...</source>
<translation type="unfinished"/>
<translation>Anna nimi luodaksesi uuden julkisen linkin...</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
<source>&amp;Create new</source>
<translation type="unfinished"/>
<translation>&amp;Luo uusi</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
@@ -2660,7 +2667,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="178"/>
<source>Link properties:</source>
<translation type="unfinished"/>
<translation>Linkin ominaisuudet:</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="220"/>
@@ -2675,102 +2682,98 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="20"/>
<source>Anyone with the link has access to the file/folder</source>
<translation type="unfinished"/>
<translation>Kenellä tahansa linkin omaavalla on pääsy tiedostoon/kansioon</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>&amp;Suojaa salasanalla</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Salasanasuojattu</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
<translation>Linkkijaot on poistettu käytöstä</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
<translation>Luo julkinen linkkijako</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Poista</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Avaa linkki selaimessa</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Kopioi linkki leikepöydälle</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Lähetä linkki sähköpostitse</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Peruuta</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
<translation>Julkinen linkki</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
<translation>Poista linkkijako</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>&amp;Julkinen jakaminen vaatii salasanan</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Aseta salasana</translation>
</message>
@@ -2800,12 +2803,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation>Avaa linkki selaimessa</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopioi linkki leikepöydälle</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
@@ -2820,7 +2823,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="337"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>Jaoin jotain kanssasi</translation>
</message>
</context>
<context>
@@ -2913,22 +2916,22 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/socketapi.cpp" line="557"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>Jaoin jotain kanssasi</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="565"/>
<source>Share...</source>
<translation type="unfinished"/>
<translation>Jaa...</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="567"/>
<source>Copy private link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopioi yksityinen linkki leikepöydälle</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="568"/>
<source>Send private link by email...</source>
<translation type="unfinished"/>
<translation>Lähetä yksityinen linkki sähköpostitse...</translation>
</message>
</context>
<context>
@@ -3252,7 +3255,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1607"/>
<source>There is insufficient space available on the server for some uploads.</source>
<translation type="unfinished"/>
<translation>Palvelimella ei ole riittävästi tallennustilaa joidenkin lähetysten osalta.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="167"/>
@@ -3347,7 +3350,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="489"/>
<source>Unresolved conflict.</source>
<translation type="unfinished"/>
<translation>Selvittämätön ristiriita.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="500"/>
@@ -3619,17 +3622,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
<source>Synchronization is paused</source>
<translation type="unfinished"/>
<translation>Synkronointi on keskeytetty</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
<source>Error during synchronization</source>
<translation type="unfinished"/>
<translation>Virhe synkronoinnin aikana</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="314"/>
<source>No sync folders configured</source>
<translation type="unfinished"/>
<translation>Synkronointikansioita ei ole määritetty</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="360"/>
@@ -3834,17 +3837,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="36"/>
<source>Please switch to your browser to proceed.</source>
<translation type="unfinished"/>
<translation>Siirry selaimeen jatkaaksesi.</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="46"/>
<source>An error occured while connecting. Please try again.</source>
<translation type="unfinished"/>
<translation>Yhdistäessä tapahtui virhe. Yritä uudelleen.</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
<source>Re-open Browser</source>
<translation type="unfinished"/>
<translation>Avaa selain uudelleen</translation>
</message>
</context>
<context>
@@ -3863,7 +3866,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="86"/>
<source>Ser&amp;ver Address</source>
<translation type="unfinished"/>
<translation>&amp;Palvelinosoite</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudsetupnocredspage.ui" line="102"/>
@@ -4171,7 +4174,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/gui/guiutility.cpp" line="33"/>
<source>Could not open browser</source>
<translation type="unfinished"/>
<translation>Selainta ei voitu avata</translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="34"/>

View File

@@ -14,7 +14,7 @@
<message>
<location filename="../src/gui/folderwizardsourcepage.ui" line="44"/>
<source>&amp;Choose...</source>
<translation>&amp;Choisir</translation>
<translation>&amp;Choisir...</translation>
</message>
</context>
<context>
@@ -769,7 +769,7 @@
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 delete the files, they will be unavailable to you, unless you are the owner.</source>
<translation>Tous les fichiers contenus dans le dossier synchronisé &apos;%1&apos; ont é supprimés du serveur.
<translation>Tous les fichiers contenus dans le dossier synchronisé &apos;%1&apos; dossier ont é supprimés du serveur.
Ces suppressions seront synchronisées sur vos dossiers locaux synchronisés, rendant ces fichiers inaccessibles, à moins que vous n&apos;ayez le droit de les restaurer.
Si vous décidez de conserver ces fichiers, ils seront synchronisés à nouveau avec le serveur si vous en avez le droit.
Si vous décidez de supprimer ces fichiers, ils vous seront inaccessibles, sauf si vous en êtes le propriétaire.</translation>
@@ -1414,7 +1414,7 @@ L&apos;option &quot;Autoriser suppression&quot; permet de ne pas bloquer la supp
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Dossier</translation>
</message>
@@ -1429,27 +1429,32 @@ L&apos;option &quot;Autoriser suppression&quot; permet de ne pas bloquer la supp
<translation>Voir les fichiers ignorés</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>De trop nombreuses questions se posent. Toutes n&apos;apparaissent pas ici.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Copier la liste des anomalies dans le presse-papier.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Heure</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Fichier</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Incident</translation>
</message>
@@ -1730,8 +1735,8 @@ L&apos;option &quot;Autoriser suppression&quot; permet de ne pas bloquer la supp
<location filename="../src/gui/updater/ocupdater.cpp" line="104"/>
<source>A new update for %1 is about to be installed. The updater may ask
for additional privileges during the process.</source>
<translation>Une nouvelle mise à jour de %1 est sur le point d&apos;être installée.
L&apos;assistant peut demander des privilèges additionnels durant le processus.</translation>
<translation>Une mise à jour de %1 est sur le point d&apos;être installée.
L&apos;assistant de mise à jour peut vous demandez des autorisations supplémentaires afin de procéder à l&apos;installation.</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="143"/>
@@ -2542,28 +2547,28 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Activité</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Réseau</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Compte</translation>
</message>
@@ -2689,100 +2694,96 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Quiconque dispose du lien a accès aux fichiers/dossiers</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Protéger par mot de p&amp;asse</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protégé par mot de passe</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Le fichier ne peut pas être partagé car il a é partagé sans permission de repartage.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation>lien %1</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation>Les partages par lien ont é désactivés</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation>Créer une lien de partage public</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Ouvrir le lien dans le navigateur</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Copier le lien vers le presse-papier</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Copier le lien vers le presse-papier (téléchargement direct)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Envoyer le lien par email</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation>Envoyer le lien par courriel (téléchargement direct)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation>Confirmer la suppression du partage par lien</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>&lt;p&gt;Voulez-vous vraiment supprimer le partage par lien public&lt;i&gt;%1&lt;/i&gt;?
&lt;p&gt;Note: Cette action ne peut être annulée.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Anuler</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Lien public</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation>Supprimer le partage par lien</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Le p&amp;artage public nécessite un mot de passe</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Veuillez choisir un mot de passe</translation>
</message>

View File

@@ -1402,7 +1402,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Cartafol</translation>
</message>
@@ -1417,27 +1417,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Ficheiro</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2530,28 +2535,28 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Actividade</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Xeral</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2677,99 +2682,95 @@ Recomendámoslle que non o use.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Contr&amp;asinal de protección</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protexido con contrasinal</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Non é posíbel compartir o ficheiro, xa que foi compartido sen permisis para compartir.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Eliminar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Enviar a ligazón por correo</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>A comp&amp;artición pública precisa de contrasinal </translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Estabeleza o contrasinal</translation>
</message>

File diff suppressed because it is too large Load Diff

View File

@@ -83,12 +83,12 @@
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
<source>Unknown error: network reply was deleted</source>
<translation type="unfinished"/>
<translation>Errore sconosciuto: la risposta di rete è stata eliminata</translation>
</message>
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
<source>Server replied &quot;%1 %2&quot; to &quot;%3 %4&quot;</source>
<translation type="unfinished"/>
<translation>Il server ha risposto &quot;%1 %2&quot; a &quot;%3 %4&quot;</translation>
</message>
</context>
<context>
@@ -253,12 +253,12 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="667"/>
<source>Obtaining authorization from the browser. &lt;a href=&apos;%1&apos;&gt;Click here&lt;/a&gt; to re-open the browser.</source>
<translation type="unfinished"/>
<translation>Ottenimento dell&apos;autorizzazione dal browser. &lt;a href=&apos;%1&apos;&gt;Clicca qui&lt;/a&gt; per riaprirle nel browser.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="671"/>
<source>Connecting to %1...</source>
<translation type="unfinished"/>
<translation>Connessione con %1...</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="674"/>
@@ -388,7 +388,7 @@
<message>
<location filename="../src/gui/accountstate.cpp" line="138"/>
<source>Asking Credentials</source>
<translation type="unfinished"/>
<translation>Richiesta credenziali</translation>
</message>
<message>
<location filename="../src/gui/accountstate.cpp" line="140"/>
@@ -1409,7 +1409,7 @@ Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Cartella</translation>
</message>
@@ -1424,27 +1424,32 @@ Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se
<translation>Mostra i file ignorati</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Ci sono stati troppi errori. Non saranno visibili tutti qui.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Copia la lista dei problemi negli appunti.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copia</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Ora</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>File</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Problema</translation>
</message>
@@ -1691,22 +1696,22 @@ Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se
<message>
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
<source>There was an error accessing the &apos;token&apos; endpoint: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Si è verificato un errore accedendo al &apos;token&apos; endpoint: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
<source>Could not parse the JSON returned from the server: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Impossibile gestire la risposta JSON dal server: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
<source>The reply from the server did not contain all expected fields</source>
<translation type="unfinished"/>
<translation>La risposta del server non contiene tutti i campi attesi</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
<source>&lt;h1&gt;Login Error&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Errore di login&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
@@ -1956,7 +1961,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>Il server riporta il seguente errore:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2118,7 +2123,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
<source>The download would reduce free local disk space below the limit</source>
<translation type="unfinished"/>
<translation>Il download ridurrebbe lo spazio su disco al di sotto del limite</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
@@ -2305,7 +2310,7 @@ Non è consigliabile utilizzarlo.</translation>
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
<source>Upload of %1 exceeds the quota for the folder</source>
<translation type="unfinished"/>
<translation>L&apos;upload eccede di %1 la quota della cartella</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
@@ -2536,28 +2541,28 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Attività</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Generale</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Rete</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Account</translation>
</message>
@@ -2650,7 +2655,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
<source>&amp;Create new</source>
<translation type="unfinished"/>
<translation>&amp;Crea nuovo</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
@@ -2665,7 +2670,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="178"/>
<source>Link properties:</source>
<translation type="unfinished"/>
<translation>Proprietà di collegamento:</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="220"/>
@@ -2683,99 +2688,95 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Chiunque sia in possesso del collegamento ha accesso al file/cartella</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Proteggi con p&amp;assword</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protetta da password</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Il file non può essere condiviso poiché è stato condiviso senza il permesso di condivisione.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation>La condivisione tramite link è stata disabilitata</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation>Crea collegamento pubblico</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Elimina</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Apri collegamento nel browser</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Copia link negli appunti</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
<translation>Copia negli appunti (download diretto)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Invia collegamento tramite email</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
<translation>Invia link tramite email (download diretto)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Annulla</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Collegamento pubblico</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
<translation>Cancella link condiviso</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>La condivisione pubblic&amp;a richiede una password</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>imposta la password</translation>
</message>
@@ -3221,7 +3222,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="477"/>
<source>Folder hierarchy is too deep</source>
<translation type="unfinished"/>
<translation>La gerarchia della cartella è troppo profonda</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="493"/>
@@ -3237,7 +3238,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="812"/>
<source>Unable to open or create the local sync database. Make sure you have write access in the sync folder.</source>
<translation type="unfinished"/>
<translation>Non posso aprire o creare il database locale di sincronizzazione. Assicurarsi di avere il i permessi di scrittura nella cartella di sincronizzazione</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1290"/>
@@ -3252,12 +3253,12 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1600"/>
<source>Disk space is low: Downloads that would reduce free space below %1 were skipped.</source>
<translation type="unfinished"/>
<translation>Lo spazio su disco è scarso: I downloads che ridurranno lo spazio libero al di sotto di %1 verranno saltati.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1607"/>
<source>There is insufficient space available on the server for some uploads.</source>
<translation type="unfinished"/>
<translation>Non c&apos;è spazio disponibile sul server per effettuare caricamenti.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="167"/>
@@ -3347,12 +3348,12 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>The filename cannot be encoded on your file system.</source>
<translation type="unfinished"/>
<translation>Il nome del file non può essere codificato sul tuo file system.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="489"/>
<source>Unresolved conflict.</source>
<translation type="unfinished"/>
<translation>Conflitto irrisolto.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="500"/>
@@ -3839,7 +3840,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="36"/>
<source>Please switch to your browser to proceed.</source>
<translation type="unfinished"/>
<translation>Prego ritorna al tuo browser per procedere.</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="46"/>
@@ -3849,7 +3850,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.ui" line="56"/>
<source>Re-open Browser</source>
<translation type="unfinished"/>
<translation>Ri-apri browser</translation>
</message>
</context>
<context>
@@ -4181,7 +4182,7 @@ Non è consigliabile utilizzarlo.</translation>
<message>
<location filename="../src/gui/guiutility.cpp" line="34"/>
<source>There was an error when launching the browser to go to URL %1. Maybe no default browser is configured?</source>
<translation type="unfinished"/>
<translation>Si è verificato un errore all&apos;avvio del browser per accedere all&apos;URL% 1. Forse non è stato configurato nessun browser predefinito?</translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="55"/>

View File

@@ -83,12 +83,12 @@
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
<source>Unknown error: network reply was deleted</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
<source>Server replied &quot;%1 %2&quot; to &quot;%3 %4&quot;</source>
<translation type="unfinished"/>
<translation> &quot;%1 %2&quot; &quot;%3 %4&quot;</translation>
</message>
</context>
<context>
@@ -253,7 +253,7 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="667"/>
<source>Obtaining authorization from the browser. &lt;a href=&apos;%1&apos;&gt;Click here&lt;/a&gt; to re-open the browser.</source>
<translation type="unfinished"/>
<translation>&lt;a href=&apos;%1&apos;&gt;&lt;/a&gt; </translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="671"/>
@@ -1396,7 +1396,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/issueswidget.ui" line="20"/>
<source>List of issues</source>
<translation></translation>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="34"/>
@@ -1411,44 +1411,49 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="73"/>
<source>Show warnings</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="83"/>
<source>Show ignored files</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation></translation>
<translation></translation>
</message>
</context>
<context>
@@ -1688,7 +1693,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
<source>Error returned from the server: &lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>: &lt;em&gt;%1&lt;/em&gt; </translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
@@ -1703,17 +1708,17 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
<source>The reply from the server did not contain all expected fields</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
<source>&lt;h1&gt;Login Error&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt; </translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
<source>&lt;h1&gt;Wrong user&lt;/h1&gt;&lt;p&gt;You logged-in with user &lt;em&gt;%1&lt;/em&gt;, but must login with user &lt;em&gt;%2&lt;/em&gt;.&lt;br&gt;Please log out of %3 in another tab, then &lt;a href=&apos;%4&apos;&gt;click here&lt;/a&gt; and log in as user %2&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;&lt;/h1&gt;&lt;p&gt;&lt;em&gt;%1&lt;/em&gt;&lt;em&gt;%2&lt;/em&gt;&lt;br&gt; %3 &lt;a href=&apos;%4&apos;&gt;&lt;/a&gt; %2 &lt;/p&gt; </translation>
</message>
</context>
<context>
@@ -1880,7 +1885,7 @@ for additional privileges during the process.</source>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
<source>Login in your browser</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@@ -1957,7 +1962,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2537,28 +2542,28 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation></translation>
</message>
@@ -2681,102 +2686,98 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="20"/>
<source>Anyone with the link has access to the file/folder</source>
<translation>/</translation>
<translation>/</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation></translation>
</message>
@@ -2806,12 +2807,12 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
@@ -4177,12 +4178,12 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/guiutility.cpp" line="33"/>
<source>Could not open browser</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="34"/>
<source>There was an error when launching the browser to go to URL %1. Maybe no default browser is configured?</source>
<translation type="unfinished"/>
<translation>URL %1 </translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="55"/>

View File

@@ -253,7 +253,7 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="667"/>
<source>Obtaining authorization from the browser. &lt;a href=&apos;%1&apos;&gt;Click here&lt;/a&gt; to re-open the browser.</source>
<translation type="unfinished"/>
<translation>Hente autorisasjon fra nettleseren. &lt;a href=&apos;%1&apos;&gt;Klikk her &lt;/a&gt; for å åpne nettleseren på nytt.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="671"/>
@@ -388,7 +388,7 @@
<message>
<location filename="../src/gui/accountstate.cpp" line="138"/>
<source>Asking Credentials</source>
<translation type="unfinished"/>
<translation>Be om legitimasjon</translation>
</message>
<message>
<location filename="../src/gui/accountstate.cpp" line="140"/>
@@ -989,7 +989,7 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
<source>There are unresolved conflicts. Click for details.</source>
<translation type="unfinished"/>
<translation>Det er uløste konflikter. Klikk for detaljer.</translation>
</message>
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="878"/>
@@ -1397,7 +1397,8 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<message>
<location filename="../src/gui/issueswidget.ui" line="20"/>
<source>List of issues</source>
<translation type="unfinished"/>
<translation>Liste over problemer
</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="34"/>
@@ -1412,44 +1413,49 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Mappe</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="73"/>
<source>Show warnings</source>
<translation type="unfinished"/>
<translation>Vis advarsler</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="83"/>
<source>Show ignored files</source>
<translation type="unfinished"/>
<translation>Vis ignorerte filer</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Det var for mange problemer. Ikke alle vil være synlige her.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
<translation>Kopier problemlisten til utklippstavlen.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopier</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Tid</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Fil</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
<translation>Problem</translation>
</message>
</context>
<context>
@@ -1472,7 +1478,7 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<message>
<location filename="../src/gui/logbrowser.cpp" line="89"/>
<source>&amp;Capture debug messages</source>
<translation type="unfinished"/>
<translation>Fang feilsøkingsmeldinger</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="101"/>
@@ -1689,32 +1695,32 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<message>
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
<source>Error returned from the server: &lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Feil returnert fra serveren: &lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
<source>There was an error accessing the &apos;token&apos; endpoint: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Det oppsto en feil med tilgang til &quot;token&quot; endepunktet: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
<source>Could not parse the JSON returned from the server: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Kunne ikke prosessere JSON returnert fra serveren:&lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
<source>The reply from the server did not contain all expected fields</source>
<translation type="unfinished"/>
<translation>Svaret fra serveren inneholder ikke alle forventede felt</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
<source>&lt;h1&gt;Login Error&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Innloggingsfeil&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
<source>&lt;h1&gt;Wrong user&lt;/h1&gt;&lt;p&gt;You logged-in with user &lt;em&gt;%1&lt;/em&gt;, but must login with user &lt;em&gt;%2&lt;/em&gt;.&lt;br&gt;Please log out of %3 in another tab, then &lt;a href=&apos;%4&apos;&gt;click here&lt;/a&gt; and log in as user %2&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Feil bruker&lt;/h1&gt;&lt;p&gt;Du logget inn med bruker &lt;em&gt;%1&lt;/em&gt;, men må logge inn med bruker &lt;em&gt;%2&lt;/em&gt;.&lt;br&gt;Logg ut av %3 i en annen tab, &lt;a href=&apos;%4&apos;&gt;klikk deretter her&lt;/a&gt; og logg inn som bruker %2&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -1728,8 +1734,8 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<location filename="../src/gui/updater/ocupdater.cpp" line="104"/>
<source>A new update for %1 is about to be installed. The updater may ask
for additional privileges during the process.</source>
<translation>En ny oppdatering for %1 er i ferd med å bli installert. Oppdateringen
kan be om flere rettigheter under behandlingen.</translation>
<translation>En ny oppdatering for %1 vil bli installert. Oppdateringen
kan be om flere rettigheter underveis.</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="143"/>
@@ -1774,7 +1780,7 @@ kan be om flere rettigheter under behandlingen.</translation>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="178"/>
<source>Update Check</source>
<translation>Oppdateringssjek</translation>
<translation>Oppdateringssjekk</translation>
</message>
</context>
<context>
@@ -1882,7 +1888,7 @@ kan be om flere rettigheter under behandlingen.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
<source>Login in your browser</source>
<translation type="unfinished"/>
<translation>Logg inn i nettleseren din</translation>
</message>
</context>
<context>
@@ -1960,7 +1966,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>Serveren rapporterte følgende feil:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2122,7 +2128,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
<source>The download would reduce free local disk space below the limit</source>
<translation type="unfinished"/>
<translation>Nedlastingen ville ha redusert ledig lokal diskplass under grensen</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
@@ -2309,7 +2315,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<location filename="../src/libsync/propagateupload.cpp" line="186"/>
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
<source>Upload of %1 exceeds the quota for the folder</source>
<translation type="unfinished"/>
<translation>Opplasting av %1 overstiger kvoten for mappen</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
@@ -2540,28 +2546,28 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Aktivitet</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Generelt</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Nettverk</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2649,12 +2655,12 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="35"/>
<source>Enter a name to create a new public link...</source>
<translation type="unfinished"/>
<translation>Skriv inn et navn for å opprette en ny offentlig lenke...</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
<source>&amp;Create new</source>
<translation type="unfinished"/>
<translation>&amp; Lag ny</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
@@ -2669,7 +2675,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="178"/>
<source>Link properties:</source>
<translation type="unfinished"/>
<translation>Link egenskaper:</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="220"/>
@@ -2687,99 +2693,95 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Alle med linken har tilgang til filen/mappen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>P&amp;assordbeskyttelse</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Passordbeskyttet</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Filen kan ikke deles fordi den ble delt uten adgang til å dele.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
<translation>Lenker har blitt deaktivert</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
<translation>Opprett offentlig kobling deling</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Slett</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
<source>Open link in browser</source>
<translation>Åpne lenke i nettleser</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Kopier link til utklippstavlen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Kopier link til utklippstavlen (direkte nedlasting)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Send link i e-post</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
<translation>Send link i e-post (direkte nedlasting)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
<source>Confirm Link Share Deletion</source>
<translation>Bekreft Sletting av Link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>&lt;p&gt;Ønsker du virkelig å slette delingen av den offentlige lenken&lt;i&gt;%1&lt;/i&gt;? &lt;/p&gt; &lt;p&gt;Merk: Denne handlingen kan ikke omgjøres.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Offentlig lenke</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
<translation>Slett link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Offentlig d&amp;eling krever et passord</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Sett passord</translation>
</message>
@@ -2799,22 +2801,22 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.ui" line="108"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You can direct people to this shared file or folder &lt;a href=&quot;private link menu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;by giving them a private link&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Du kan lede folk til denne delte filen eller mappen &lt;a href=&quot;private link menu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt; ved å gi dem en privat lenke&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="186"/>
<source>The item is not shared with any users or groups</source>
<translation type="unfinished"/>
<translation>Elementet deles ikke med noen brukere eller grupper</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation>Åpne lenke i nettleser</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopier URL til utklippstavlen</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
@@ -2829,7 +2831,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="337"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>Jeg delte noe med deg</translation>
</message>
</context>
<context>
@@ -2922,22 +2924,22 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/socketapi.cpp" line="557"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>Jeg delte noe med deg</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="565"/>
<source>Share...</source>
<translation type="unfinished"/>
<translation>Del...</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="567"/>
<source>Copy private link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopier privat URL til utklippstavlen</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="568"/>
<source>Send private link by email...</source>
<translation type="unfinished"/>
<translation>Send privat link i e-post</translation>
</message>
</context>
<context>
@@ -3215,7 +3217,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="264"/>
<source>%1 (skipped due to earlier error, trying again in %2)</source>
<translation type="unfinished"/>
<translation>%1 (hoppet over grunn av tidligere feil, prøver igjen om %2)</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="474"/>
@@ -3225,12 +3227,12 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="477"/>
<source>Folder hierarchy is too deep</source>
<translation type="unfinished"/>
<translation>Mapphierarkiet er for dypt</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="493"/>
<source>Conflict: Server version downloaded, local copy renamed and not uploaded.</source>
<translation type="unfinished"/>
<translation>Konflikt: Serverversjon lastet ned, lokal kopi har byttet navn og er ikke lastet opp.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="777"/>
@@ -3241,7 +3243,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="812"/>
<source>Unable to open or create the local sync database. Make sure you have write access in the sync folder.</source>
<translation type="unfinished"/>
<translation>Kan ikke åpne eller opprette den lokale synkroniseringsdatabasen. Kontroller at du har skrivetilgang i synkroniseringsmappen.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1290"/>
@@ -3256,12 +3258,12 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1600"/>
<source>Disk space is low: Downloads that would reduce free space below %1 were skipped.</source>
<translation type="unfinished"/>
<translation>Diskplass er lav: Nedlastinger som ville redusere ledig plass under% 1 ble hoppet over.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="1607"/>
<source>There is insufficient space available on the server for some uploads.</source>
<translation type="unfinished"/>
<translation>Det er ikke nok ledig plass serveren for noen av opplastingene.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="167"/>
@@ -3351,7 +3353,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>The filename cannot be encoded on your file system.</source>
<translation type="unfinished"/>
<translation>Filnavnet kan ikke kodes filsystemet ditt.</translation>
</message>
<message>
<location filename="../src/libsync/syncengine.cpp" line="489"/>
@@ -3602,7 +3604,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="240"/>
<source>Disconnected from some accounts</source>
<translation type="unfinished"/>
<translation>Frakoblet noen kontoer</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="251"/>
@@ -3628,17 +3630,17 @@ Det er ikke tilrådelig å bruke den.</translation>
<location filename="../src/gui/owncloudgui.cpp" line="273"/>
<location filename="../src/gui/owncloudgui.cpp" line="304"/>
<source>Synchronization is paused</source>
<translation type="unfinished"/>
<translation>Synkronisering er satt pause</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="306"/>
<source>Error during synchronization</source>
<translation type="unfinished"/>
<translation>Feil under synkronisering</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="314"/>
<source>No sync folders configured</source>
<translation type="unfinished"/>
<translation>Ingen synkronisering-mapper konfigurert.</translation>
</message>
<message>
<location filename="../src/gui/owncloudgui.cpp" line="360"/>

View File

@@ -83,12 +83,12 @@
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="247"/>
<source>Unknown error: network reply was deleted</source>
<translation type="unfinished"/>
<translation>Onbekende fout: antwoord van het netwerk is verwijderd</translation>
</message>
<message>
<location filename="../src/libsync/abstractnetworkjob.cpp" line="390"/>
<source>Server replied &quot;%1 %2&quot; to &quot;%3 %4&quot;</source>
<translation type="unfinished"/>
<translation>Server antwoordde &quot;%1 %2&quot; naar &quot;%3 %4&quot;</translation>
</message>
</context>
<context>
@@ -183,7 +183,7 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="316"/>
<source>Remove folder sync connection</source>
<translation>Verwijderen map sync verbinding</translation>
<translation>Verwijder map-synchronisatie verbinding</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="387"/>
@@ -198,12 +198,12 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Bevestig verwijderen Map Sync verbinding</translation>
<translation>Bevestig verwijderen map-synchronisatie verbinding</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="445"/>
<source>Remove Folder Sync Connection</source>
<translation>Verwijderen Map Sync verbinding</translation>
<translation>Verwijder map-synchronisatie verbinding</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="527"/>
@@ -243,7 +243,7 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="656"/>
<source>Server %1 is currently in maintenance mode.</source>
<translation type="unfinished"/>
<translation>Server %1 is momenteel in onderhoudsmodus.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="658"/>
@@ -253,12 +253,12 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="667"/>
<source>Obtaining authorization from the browser. &lt;a href=&apos;%1&apos;&gt;Click here&lt;/a&gt; to re-open the browser.</source>
<translation type="unfinished"/>
<translation>Probeert autorisatie te krijgen van de browser. 1 Klik hier 1 om de browser opnieuw te openen.</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="671"/>
<source>Connecting to %1...</source>
<translation type="unfinished"/>
<translation>Verbinden met %1...</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="674"/>
@@ -373,7 +373,7 @@
<message>
<location filename="../src/gui/accountstate.cpp" line="132"/>
<source>Maintenance mode</source>
<translation type="unfinished"/>
<translation>Onderhoudsmodus</translation>
</message>
<message>
<location filename="../src/gui/accountstate.cpp" line="134"/>
@@ -921,17 +921,17 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v
<message>
<location filename="../src/gui/folderman.cpp" line="1344"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere!</translation>
<translation>Lokale map %1 bevat al een map die wordt gebruikt voor een map-synchronisatie verbinding. Kies een andere!</translation>
</message>
<message>
<location filename="../src/gui/folderman.cpp" line="1354"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere!</translation>
<translation>Lokale map %1 zit al in een map die wordt gebruikt voor een map-synchronisatie verbinding. Kies een andere!</translation>
</message>
<message>
<location filename="../src/gui/folderman.cpp" line="1362"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 is een symbolische link. De doellink zit al in een map die in een mapsync verbinding wordt gebruikt. Kies een andere!</translation>
<translation>Lokale map %1 is een symbolische link. De doellink zit al in een map die in een map-synchronisatie verbinding wordt gebruikt. Kies een andere!</translation>
</message>
</context>
<context>
@@ -939,7 +939,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="46"/>
<source>Add Folder Sync Connection</source>
<translation>Toevoegen mapsync verbinding</translation>
<translation>Voeg map synchronisatie verbinding toe</translation>
</message>
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="249"/>
@@ -990,7 +990,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="209"/>
<source>There are unresolved conflicts. Click for details.</source>
<translation type="unfinished"/>
<translation>Er zijn onopgeloste conflicten. Klik voor details.</translation>
</message>
<message>
<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>
<location filename="../src/gui/folderstatusmodel.cpp" line="884"/>
<source>Reconciling changes</source>
<translation type="unfinished"/>
<translation>Wijzigingen doorvoeren</translation>
</message>
<message>
<location filename="../src/gui/folderstatusmodel.cpp" line="919"/>
@@ -1098,7 +1098,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere v
<message>
<location filename="../src/gui/folderwizard.cpp" line="548"/>
<source>Add Folder Sync Connection</source>
<translation>Toevoegen mapsync verbinding</translation>
<translation>Voeg map-synchronisatie verbinding toe</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="550"/>
@@ -1402,7 +1402,7 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<message>
<location filename="../src/gui/issueswidget.ui" line="20"/>
<source>List of issues</source>
<translation type="unfinished"/>
<translation>Lijst met problemen</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="34"/>
@@ -1413,48 +1413,53 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<location filename="../src/gui/issueswidget.ui" line="42"/>
<location filename="../src/gui/issueswidget.ui" line="61"/>
<source>&lt;no filter&gt;</source>
<translation type="unfinished"/>
<translation>&lt;no filter&gt;</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Map</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="73"/>
<source>Show warnings</source>
<translation type="unfinished"/>
<translation>Tonen waarschuwingen</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="83"/>
<source>Show ignored files</source>
<translation type="unfinished"/>
<translation>Tonen genegeerde bestanden</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Er zijn teveel problemen. Niet alles zal worden vertoond.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
<translation>Kopieer de probleemlijst naar het klembord.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopiëren</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Tijd</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Bestand</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
<translation>Probleem</translation>
</message>
</context>
<context>
@@ -1477,7 +1482,7 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<message>
<location filename="../src/gui/logbrowser.cpp" line="89"/>
<source>&amp;Capture debug messages</source>
<translation type="unfinished"/>
<translation>&amp;Capture berichten debuggen</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="101"/>
@@ -1694,32 +1699,32 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<message>
<location filename="../src/gui/creds/oauth.cpp" line="112"/>
<source>Error returned from the server: &lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Fout gemeld door de server: &lt;em&gt;%1&lt;/em&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="115"/>
<source>There was an error accessing the &apos;token&apos; endpoint: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Er heeft zich een fout voorgedaan bij het verkrijgen van de &apos;token&apos; eindpunt: 1 2 %1 2</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="118"/>
<source>Could not parse the JSON returned from the server: &lt;br&gt;&lt;em&gt;%1&lt;/em&gt;</source>
<translation type="unfinished"/>
<translation>Kon de JSON dat teruggekomen is van de server niet ontleden: 1 2 %1 2</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="121"/>
<source>The reply from the server did not contain all expected fields</source>
<translation type="unfinished"/>
<translation>Het antwoord van de server bevat niet alle verwachte velden</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="125"/>
<source>&lt;h1&gt;Login Error&lt;/h1&gt;&lt;p&gt;%1&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Inlog fout&lt;p&gt;%1&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/creds/oauth.cpp" line="131"/>
<source>&lt;h1&gt;Wrong user&lt;/h1&gt;&lt;p&gt;You logged-in with user &lt;em&gt;%1&lt;/em&gt;, but must login with user &lt;em&gt;%2&lt;/em&gt;.&lt;br&gt;Please log out of %3 in another tab, then &lt;a href=&apos;%4&apos;&gt;click here&lt;/a&gt; and log in as user %2&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>1 Verkeerde gebruiker 1 2 U bent ingelogd met user 3 %1 3, maar dient ingelogd te zijn met user 4 %2 4. 5 Log %3 alstublieft uit in een andere tabblad, vervolgens 6 klikt u hier 6 en log-in als user %2 2</translation>
</message>
</context>
<context>
@@ -1887,7 +1892,7 @@ vragen om extra autorisaties tijdens installatie.</translation>
<message>
<location filename="../src/gui/wizard/owncloudoauthcredspage.cpp" line="44"/>
<source>Login in your browser</source>
<translation type="unfinished"/>
<translation>Login in uw browser</translation>
</message>
</context>
<context>
@@ -1965,7 +1970,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>De server rapporteerde de volgende fout:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2127,7 +2132,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="459"/>
<source>The download would reduce free local disk space below the limit</source>
<translation type="unfinished"/>
<translation>De download zal de vrije lokale schijfruimte reduceren tot onder het limiet</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="463"/>
@@ -2314,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="549"/>
<source>Upload of %1 exceeds the quota for the folder</source>
<translation type="unfinished"/>
<translation>Upload van %1 overtreft de quota van de folder</translation>
</message>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="622"/>
@@ -2545,28 +2550,28 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Activiteit</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Algemeen</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Netwerk</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Account</translation>
</message>
@@ -2654,12 +2659,12 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="35"/>
<source>Enter a name to create a new public link...</source>
<translation type="unfinished"/>
<translation>Voer een naam in om een nieuwe publieke link aan te maken</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="42"/>
<source>&amp;Create new</source>
<translation type="unfinished"/>
<translation>&amp;Create nieuw</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="105"/>
@@ -2674,7 +2679,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="178"/>
<source>Link properties:</source>
<translation type="unfinished"/>
<translation>Link eigenschappen:</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="220"/>
@@ -2692,99 +2697,95 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Iedereen met de link heeft toegang tot het bestand of de map</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>&amp;Wachtwoord beveiligd</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Wachtwoord beveiligd</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Het bestand kan niet worden gedeeld, omdat het werd gedeeld zonder verder delen toestemming.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
<translation>Link delen zijn uitgeschakeld</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
<translation>Maak een verdeelbare publieke link aan</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Verwijderen</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
<source>Open link in browser</source>
<translation>Openen link in browser</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Kopiëren link naar klembord</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Kopieer de link naar het klembord (directe download)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Versturen links via e-mail</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
<translation>Verzend link met email (directe download)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
<source>Confirm Link Share Deletion</source>
<translation>Bevestig Gedeelde Link Verwijdering</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>1 Wilt u echt de verdeelbare publieke link verwijderen 2 %1 2 ? 1 3 Let op: deze actie kan niet ongedaan gemaakt worden. 3</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Annuleren</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Openbare Link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
<translation>Verwijder verdeelbare link</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Openbaar de&amp;len vereist een wachtwoord</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Stel uw wachtwoord in</translation>
</message>
@@ -2814,12 +2815,12 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation>Openen link in browser</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopiëren link naar klembord</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
@@ -2834,7 +2835,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="337"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>Ik deelde iets met u</translation>
</message>
</context>
<context>
@@ -2927,17 +2928,17 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/socketapi.cpp" line="557"/>
<source>I shared something with you</source>
<translation type="unfinished"/>
<translation>Ik deelde iets met u</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="565"/>
<source>Share...</source>
<translation type="unfinished"/>
<translation>Delen...</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="567"/>
<source>Copy private link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopiëren privé-link naar klembord</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="568"/>
@@ -4185,7 +4186,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/guiutility.cpp" line="33"/>
<source>Could not open browser</source>
<translation type="unfinished"/>
<translation>Kon het browser niet openen</translation>
</message>
<message>
<location filename="../src/gui/guiutility.cpp" line="34"/>

View File

@@ -198,7 +198,7 @@
<message>
<location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Usuń folder połączenia synchronizacji</translation>
<translation>Potwierdź usunięcie połączenia folderów synchronizacji</translation>
</message>
<message>
<location filename="../src/gui/accountsettings.cpp" line="445"/>
@@ -1394,7 +1394,7 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn
<message>
<location filename="../src/gui/issueswidget.ui" line="20"/>
<source>List of issues</source>
<translation type="unfinished"/>
<translation>Lista zdarzeń</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="34"/>
@@ -1409,44 +1409,49 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Folder</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="73"/>
<source>Show warnings</source>
<translation type="unfinished"/>
<translation>Pokaż ostrzeżenia</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="83"/>
<source>Show ignored files</source>
<translation type="unfinished"/>
<translation>Pokaż ignorowane pliki</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Wystąpiło bardzo wiele zdarzeń. Nie wszystkie będą tu widoczne</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
<translation>Skopiuj listę zdarzeń do schowka</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Czas</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Plik</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
<translation>Zdarzenie</translation>
</message>
</context>
<context>
@@ -1957,7 +1962,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>Serwer zgłosił następujący błąd:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2537,28 +2542,28 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Aktywność</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Ogólne</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Sieć</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2684,99 +2689,95 @@ Niezalecane jest jego użycie.</translation>
<translation>Każdy posiadający link ma dostęp do pliku/katalogu.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Zabezpieczone hasłem</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Usuń</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
<source>Open link in browser</source>
<translation>Otwórz link w przeglądarce</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Skopuj link to schowka</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Skopiuj link do schowa (pobieranie bezpośrednie)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Wyślij link mailem</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
<translation>Wyślij link e-mailem (pobieranie bezpośrednie)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
<translation>Link publiczny</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Proszę podać hasło</translation>
</message>
@@ -2806,12 +2807,12 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation>Otwórz link w przeglądarce</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
<translation>Skopuj link to schowka</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
@@ -2929,12 +2930,12 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/gui/socketapi.cpp" line="567"/>
<source>Copy private link to clipboard</source>
<translation type="unfinished"/>
<translation>Kopiuj link prywatny do schowka</translation>
</message>
<message>
<location filename="../src/gui/socketapi.cpp" line="568"/>
<source>Send private link by email...</source>
<translation type="unfinished"/>
<translation>Wyślij link prywatny przez e-mail</translation>
</message>
</context>
<context>

View File

@@ -1413,7 +1413,7 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Pasta</translation>
</message>
@@ -1428,27 +1428,32 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a
<translation>Mostrar ficheiros ignorados</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Copiar a lista de situações para a área de transferência</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Ficheiro</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Situação</translation>
</message>
@@ -1961,7 +1966,7 @@ Não é aconselhada a sua utilização.</translation>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>The server reported the following error:</source>
<translation type="unfinished"/>
<translation>O servidor retornou o seguinte erro:</translation>
</message>
<message>
<location filename="../src/gui/owncloudsetupwizard.cpp" line="452"/>
@@ -2541,28 +2546,28 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Atividade</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2688,99 +2693,95 @@ Não é aconselhada a sua utilização.</translation>
<translation>Qualquer pessoa com a hiperligação terá acesso ao ficheiro/pasta</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Protegida por senha</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protegido com Senha</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>O ficheiro não pode ser partilhado porque foi partilhado sem permissão de partilha.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Eliminar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation>Abrir ligação no navegador</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Enviar hiperligação por e-mail</translation>
<translation>Enviar hiperligação por correio eletrónico</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Hiperligação Pública</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>A pa&amp;rtilha pública requer uma palavra-passe:</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Por favor, Definir Senha</translation>
</message>
@@ -2810,7 +2811,7 @@ Não é aconselhada a sua utilização.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="235"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
<translation>Abrir ligação no navegador</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="237"/>
@@ -2820,7 +2821,7 @@ Não é aconselhada a sua utilização.</translation>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="239"/>
<source>Send link by email</source>
<translation>Enviar hiperligação por e-mail</translation>
<translation>Enviar hiperligação por correio eletrónico</translation>
</message>
<message>
<location filename="../src/gui/shareusergroupwidget.cpp" line="249"/>
@@ -2938,7 +2939,7 @@ Não é aconselhada a sua utilização.</translation>
<message>
<location filename="../src/gui/socketapi.cpp" line="568"/>
<source>Send private link by email...</source>
<translation type="unfinished"/>
<translation>Enviar hiperligação privada por correio eletrónico...</translation>
</message>
</context>
<context>

View File

@@ -1412,7 +1412,7 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Pasta</translation>
</message>
@@ -1427,27 +1427,32 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um
<translation>Mostrar arquivos ignorados</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Havia muitos problemas. Nem todos serão visíveis aqui.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Copie a lista de problemas para a área de transferência.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Horário</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Arquivo</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Problemas</translation>
</message>
@@ -2538,28 +2543,28 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Atividade</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2685,99 +2690,95 @@ It is not advisable to use it.</source>
<translation>Qualquer pessoa com o link tem acesso ao arquivo/pasta</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>S&amp;enha de proteção</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Protegido por Senha</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>O arquivo não pode ser partilhado, pois foi compartilhado sem permissão de compartilhamento.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation>%1 linque</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation>Os compartilhamentos de linque foram desativados</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation>Criar linque de compartilhamento público</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Excluir</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Abrir linque no navegador</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Copiar o linque para a área de transferência</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Copiar o linque para a área de transferência (download direto)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Enviar linque por e-mail</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation>Enviar linque por e-mail (download direto)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation>Confirmar o Link de Eliminação de Compartilhamento</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>&lt;p&gt;Você realmente deseja excluir o compartilhamento de links públicos &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Nota: Esta ação não pode ser desfeita.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Linque público</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation>Excluir linque de compartilhamento</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Comp&amp;artilhamento público requer uma senha</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Por favor, Definir senha</translation>
</message>

View File

@@ -1410,7 +1410,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Папка</translation>
</message>
@@ -1425,27 +1425,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Показать игнорируемые файлы</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation>Было слишком много проблем. Не все будут видны здесь.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation>Скопировать список проблем в буфер обмена.</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Время</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Файл</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation>Проблема</translation>
</message>
@@ -2538,28 +2543,28 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>События</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Основные</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Уч.запись</translation>
</message>
@@ -2685,99 +2690,95 @@ It is not advisable to use it.</source>
<translation>Каждый, у кого есть эта ссылка, имеет доступ к файлу/каталогу</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Защитить паролем</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Защищено Паролем</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Невозможно предоставить общий доступ к файлу: нет разрешения на предоставление общего доступа.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation>Ссылка на %1</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation>Доступ по ссылкам был отключён</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation>Создать ссылку общего доступа</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation>Открыть ссылку в браузере</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation>Копировать ссылку в буфер обмена</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation>Скопировать ссылку в буфер обмена (прямое скачивание)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Отправить ссылку по email</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation>Отправить ссылку по почте (прямое скачивание)</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation>Подтвердите удаление доступа по ссылке</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation>&lt;p&gt;Вы действтиельно хотите удалить доступ по общей ссылке &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Внимание: это действие будет невозможно отменить.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation>Общедоступная ссылка</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation>Удалить доступ по ссылке</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Публичные ссылки требуют пароля</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Пожалуйста, установите пароль</translation>
</message>

View File

@@ -1402,7 +1402,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="50"/>
<location filename="../src/gui/issueswidget.cpp" line="77"/>
<location filename="../src/gui/issueswidget.cpp" line="83"/>
<source>Folder</source>
<translation>Priečinok</translation>
</message>
@@ -1417,27 +1417,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="148"/>
<location filename="../src/gui/issueswidget.ui" line="133"/>
<source>There were too many issues. Not all will be visible here.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="155"/>
<source>Copy the issues list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/issueswidget.ui" line="151"/>
<location filename="../src/gui/issueswidget.ui" line="158"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="75"/>
<location filename="../src/gui/issueswidget.cpp" line="81"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="76"/>
<location filename="../src/gui/issueswidget.cpp" line="82"/>
<source>File</source>
<translation>Súbor</translation>
</message>
<message>
<location filename="../src/gui/issueswidget.cpp" line="78"/>
<location filename="../src/gui/issueswidget.cpp" line="84"/>
<source>Issue</source>
<translation type="unfinished"/>
</message>
@@ -2530,28 +2535,28 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="93"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="94"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="97"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="98"/>
<source>Activity</source>
<translation>Aktivita</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="111"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="112"/>
<source>General</source>
<translation>Všeobecné</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="115"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="116"/>
<source>Network</source>
<translation>Sieť</translation>
</message>
<message>
<location filename="../src/gui/settingsdialogmac.cpp" line="152"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="211"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="154"/>
<location filename="../src/gui/settingsdialogmac.cpp" line="221"/>
<source>Account</source>
<translation>Účet</translation>
</message>
@@ -2677,99 +2682,95 @@ Nie je vhodné ju používať.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="115"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="299"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="117"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="300"/>
<source>P&amp;assword protect</source>
<translation>Ch&amp;rániť heslom</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="413"/>
<source>Password Protected</source>
<translation>Chránené heslom</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="94"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="96"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Tento súbor nemožno zdieľať, lebo bol vyzdieľaný bez možnosti ďalšieho zdieľania.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="61"/>
<source>%1 link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="91"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="93"/>
<source>Link shares have been disabled</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="105"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="107"/>
<source>Create public link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="525"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="168"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<source>Delete</source>
<translation>Zmazať</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="161"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<source>Open link in browser</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="162"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="163"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<source>Copy link to clipboard (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="164"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="166"/>
<source>Send link by email</source>
<translation>Odoslať odkaz emailom</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="165"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="167"/>
<source>Send link by email (direct download)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="518"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<source>Confirm Link Share Deletion</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="519"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="520"/>
<source>&lt;p&gt;Do you really want to delete the public link share &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;Note: This action cannot be undone.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="526"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="527"/>
<source>Cancel</source>
<translation>Zrušiť</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="542"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="63"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="543"/>
<source>Public link</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="252"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="253"/>
<source>Delete link share</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="457"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="458"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Verejné z&amp;dieľanie vyžaduje heslo</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.cpp" line="475"/>
<location filename="../src/gui/sharelinkwidget.cpp" line="476"/>
<source>Please Set Password</source>
<translation>Prosím nastavte si heslo</translation>
</message>

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