Commit graph

88 commits

Author SHA1 Message Date
Jocelyn Turcotte
69aa39f1f6 Don's use SyncFileStatus for Folder::createGuiLog
SyncFileStatus' purpose is to track overlay icon status.
Instead of putting comments and default: clauses in switch
on both sides about unused enums, use different enums.

This also remove STATUS_NEW which is the equivalent of
STATUS_SYNC in all shell extension implementations, and
remove STATUS_UPDATED and STATUS_STAT_ERROR which have
the same semantic as STATUS_UPTODATE and STATUS__ERROR.
2016-03-28 14:29:47 +02:00
Jocelyn Turcotte
ea5e6d367b Connect the SocketApi directly to the SyncFileStatusTracker
Don't go through the Folder->ProgressDispatcher->SocketApi route and
keep the path logic in SyncFileStatusTracker.
2016-03-28 14:29:47 +02:00
Jocelyn Turcotte
da7b9916e5 Move the SocketApi business logic to a libsync SyncFileStatusTracker class
This will allow testing this code and avoid going through too many
layers to get notified and a file status changed.
2016-03-28 14:29:47 +02:00
Jocelyn Turcotte
6e16e34799 Remove SocketApi::dbFileRecord_capi in favor of JournalDB::getFileRecord 2016-03-28 14:29:47 +02:00
Jocelyn Turcotte
c090a511fd Remove OwnCloud6 specific sharing code
If users encounter this situation, the share icon will simply not show.
This simplifies the transition to move this code in libsync.
2016-03-28 14:29:47 +02:00
Christian Kamm
7bd4f95b8c SqlQuery: Write NULL when intended #4548
In SQLite bindings are not cleared by sqlite3_reset() calls, so
skipping a sqlite3_bind call to create a NULL value doesn't work,
instead the previous value will be written.

To fix this, I clear all bindings in SqlQuery::reset and make sure
to explicitly bind NULL when desired in SqlQuery::bind.

To make sure there's no confusion about SqlQuery::reset and
sqlite3_reset, I rename our method to reset_and_clear_bindings().
2016-03-15 14:38:31 +01:00
Roeland Jago Douma
99b3b752e3 Add theming options control sharing operations
Fixes #4325
2016-02-22 13:53:45 +01:00
Daniel Molkentin
dd76d72d61 Merge remote-tracking branch 'origin/2.1' 2016-01-26 14:09:38 +01:00
Christian Kamm
3b60f6e238 Sharing: Fix resharing items with limited permissions #4357 #4358 2016-01-21 14:21:25 +01:00
Jocelyn Turcotte
62df938465 Rename SyncFileStatus::STATUS_SYNC to STATUS_UPTODATE
Also use STATUS_UPDATED instead to match SyncFileItem::Success in the SocketAPI.
2016-01-05 15:41:15 +01:00
Olivier Goffart
970cdcfdbb SocketAPI: SHARE: Fix the paths when creating the share dialog
The socket api uses native folder separator. We need to use QDir::cleanPath
for anything else so we only work with '/' everywhere else in the code

This fixes the sharing dialog on window.

Issue #4311
2016-01-04 12:06:09 +01:00
Christian Kamm
f65a29df5d SocketAPI: Ensure messages are consistent #3944
Before we blindly broadcasted the result of a sync action. That was
often different from what a subsequent FILE_STATUS query would report.
2015-12-10 10:43:17 +01:00
Roeland Jago Douma
fcdab1e804 [Sharing] Also add sync status to SHARE_STATUS command 2015-11-25 09:40:21 +01:00
Roeland Jago Douma
9f15ba3972 [Sharing] Make sure the file is actually synced to the server
Before we attemt any sharing make sure the file is synced to the server.
2015-11-25 09:22:20 +01:00
Christian Kamm
25c177ca3b SyncJournalFileRecord: Remove unused mode field 2015-11-11 09:42:31 +01:00
Olivier Goffart
05dd9554f9 SocketApi: Fix returning ignore for the root item all the time 2015-10-27 16:06:38 +01:00
Olivier Goffart
39289a3164 SocketAPI: don't trim the command #3297 2015-10-26 10:15:50 +01:00
Roeland Jago Douma
028dc8d6c3 Add SHARE_STATUS socketAPI command
This command allows to retrieve the share status of a file. In other
words if it can be shared.
2015-10-14 12:36:32 +02:00
Christian Kamm
51a2e6c580 Exclusion: Fix confusion with relative and absolute paths 2015-10-13 12:53:38 +02:00
Klaas Freitag
419d18c128 FileSystem: Reuse the FileInfo object that is created in the caller.
With that, a lot of stats can be avoided, ie. in SocketAPI
2015-10-09 13:02:02 +02:00
Klaas Freitag
74a7755ad9 SocketAPI: String concat optimization as learned on QtWS. 2015-10-08 18:26:30 +02:00
Phil Davis
b8ccbbc72a GUI comment and message typos for master 2015-10-05 10:06:19 +05:45
Christian Kamm
7d1886684e FolderWatcher: Use csync exclude code #3805
Introduce a global ExcludedFiles instance to avoid loading the global
exclude lists several times.

One could still add per-folder exclude lists by checking these after
the global ones.
2015-10-02 15:56:39 +02:00
Klaas Freitag
cf7726353a Always use the webdav path from the Account object.
The Account object has the themed webdav path if it is branded.
2015-09-10 15:39:37 +02:00
Klaas Freitag
16d6418d10 Use a themable WebDAV path all over.
This is needed for enterprise#481
2015-09-10 13:04:26 +02:00
Olivier Goffart
3238d61ef6 SocketApi: fix small leak (found with valgrind) #3369 2015-08-13 10:42:54 +02:00
Christian Kamm
5bd631e8e7 Rename jobCompleted -> itemCompleted.
Because that's what's going on. A job can 'complete an item' or 'finish'.
Note that several jobs could complete the same item: a new directory
will complete on the PropagateRemoteMkdir and the PropagateDirectory
jobs.
2015-08-11 15:19:09 +02:00
Christian Kamm
fe42c1a818 Activity: Skip PropagateDirectory jobs #3580
Previously, PropagateDirectory jobs didn't emit the completed() signal.
Now that they do, we need to make sure to not add extra lines to the
protocol widget for them.

To accomplish that, the jobCompleted() signal now also contains the job
that completed the item.
2015-08-11 15:19:09 +02:00
Christian Kamm
85f5424a13 SocketAPI: Show excluded hidden files as ignored #2086 2015-08-10 13:41:19 +02:00
Jocelyn Turcotte
26d137cac6 SocketApi: Remove an unneeded emit syncItemDiscovered
The signal is emitted in this case if the instruction is NONE
but in the only ultimately connected slot to this signal,
SocketApi::slotSyncItemDiscovered, we return early according
to the same condition.

The emission of the same signal at the end of treewalkFile remains
and take care of the normal cases.
2015-07-31 21:59:58 +02:00
Roeland Jago Douma
6f498aea3b Do not open the share dialog if the user tries to share the root folder 2015-07-24 10:10:41 +02:00
Jocelyn Turcotte
9797782682 shell_i: Build the extension with the '-' identity by default
This allows developers to build and run the extension by default.
Official packages bundles will be re-signed after the build, we

The SocketApi prefix can be set at configure time through cmake and
should match the key that will be used to sign the whole .app bundle
(including the embedded FindexSync .appex bundle).
2015-06-22 13:55:19 +02:00
Jocelyn Turcotte
85938ab1f1 shell_i: Remove the ICON_PATH socket API message #2340
It was only used on OS X and couldn't be used by the FinderSync
extension since that one runs in a sandbox. So use the same system
to load images in the legacy extension by shipping them in the
extension bundle instead of the owncloud.app bundle.

This is also given that the legacy extension needs padded icons
while the FinderSync one needs unpadded icons.
2015-06-17 17:15:50 +02:00
Jocelyn Turcotte
bfcfdeec64 shell_i: Use an NSConnection instead of a local socket #2340
This prepares the switch to the official FinderSync API on Yosemite
which requires the extension to run in a sandbox. This complicates
the usage of a local socket to communicate with a non-sandboxed GUI
client. An NSConnection is easier to use in this case, which we can
use as long as the server name (i.e. Mach port registered name) is
prefixed with the code signing Team Identifier.

A placeholder server implementation is also added to the client's
SocketApi which basically reproduces the interface of a QLocalSocket.
Most of the references to individual sockets we're only using
QIODevice methods so the type was simply reduced. A typedef to
replace the QLocalServer was the only other part needed.
2015-06-15 15:28:17 +02:00
Olivier Goffart
bea8896012 Merge remote-tracking branch 'origin/master' into new-ui 2015-06-14 10:39:30 +02:00
Olivier Goffart
2296f6a4a5 Fix Qt4 build
QSharedPointer::create with arguments is new in Qt5
2015-06-12 08:13:08 +02:00
Olivier Goffart
139b28b471 Merge branch 'master' into new-ui
Conflicts:
	src/gui/folder.cpp
        src/gui/folder.h
	src/gui/folderman.cpp
2015-06-10 15:57:55 +02:00
Olivier Goffart
16786eed54 Merge pull request #3281 from owncloud/confirm
Confirm feature (sync engine part only)
2015-06-10 13:39:52 +02:00
Olivier Goffart
67f7892958 SocketAPI: Do not leak open DB or query
We could leak it in case of errors. Or when the folder is removed.
Make use of QSharedPointer to avoid leaks
2015-06-08 15:49:37 +02:00
Olivier Goffart
10d9e53159 Confirm feature: Use selective sync in the database 2015-05-26 12:34:07 +02:00
Olivier Goffart
de9770f52a FolderMan: fix some signal-slot broken connection
In many cases the alias was changed to a Folder pointer
2015-05-12 15:50:38 +02:00
Christian Burger
79f7ea0965 refactoring as requested in pull request 2015-05-05 16:34:01 +01:00
Christian Burger
018cc54a94 Windows Explorer: fix issues when syncing whole drive.
When the local sync target is just a drive letter (e.g. "X:\"), neither
the display of the sync status via file icon overlay, nor the creation of a
share link works. In the latter case no pop-up comes up and no server
request is done.

QDir::cleanPath() usually removes trailing slashes, but not if the path to
be cleaned is just "X:\". In that case the trailing slash is kept. This
commit accounts for that exception.
2015-05-04 10:29:25 +01:00
Jocelyn Turcotte
12d7484b85 Pass SyncFileItems by pointer instead of by value
Use a QSharedPointer to keep the same ownership and
continue passing the SyncFileItems as a const& when
ownership isn't taken. This allows sharing the same
allocations between the jobs and the result vectors.

This saves about 20MB of memory (off 120MB) once all
jobs are created.
2015-04-18 14:26:40 +02:00
Roeland Jago Douma
5a83636f81 Only show share dialog if we are connected. 2015-04-08 09:53:57 +02:00
Jocelyn Turcotte
c2fd7d6ebd Clean up remains of SOCKETAPI_TCP 2015-04-01 15:03:42 +02:00
Jocelyn Turcotte
4a893c5267 Fix a crash on shutdown in ~SocketApi #3057
Deleting the QLocalSocket while iterating the QList with qDeleteAll
would trigger onLostConnection, which would modify the list mid-air
and leave dangling pointers in it.
2015-04-01 15:03:42 +02:00
Jocelyn Turcotte
5264a8c7f6 shell_integration: Fix disappearing context menus on Windows #2898
Since each new connection to the socket API would trigger a broadcast
of REGISTER_PATH to all existing connections, opening the context menu
would trigger a SHChangeNotify call of the root directory through
the overlay icon extension, which is currently also connected to the
socket API, waiting for changes.

Fix the issue by sending the initial REGISTER_PATH automatic response
only to the connecting socket.
2015-03-13 20:53:59 +01:00
Klaas Freitag
8cc5ff0e70 ShareDialog: Consider if resharing is not allowed on a share.
If a file or directory is shared without resharing permission, the
share dialog displays an error. This is not the optimal solution, but
best for now, as we do not have the permissions available for the file
manager plugin.

This fixes #2923
2015-03-11 14:12:08 +01:00
Klaas Freitag
9086f09fe2 SocketAPI: If filename has a trailing slash, remove it.
The SyncJournal stores the the names of directories without trailing slash.
2015-03-11 14:11:18 +01:00