Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJocelyn Turcotte <jturcotte@woboq.com>2015-06-15 15:57:33 +0300
committerJocelyn Turcotte <jturcotte@woboq.com>2015-06-15 16:28:21 +0300
commit02f6dbba46a44aed3fc9550090646f13c1bf59ae (patch)
tree4e99ae7ab980fd74af52687d597861c8b21933ee /shell_integration/MacOSX
parentbfcfdeec64978189d7dec057de9465732e464500 (diff)
shell_i: Add a FinderSync-based implementation #2340
This uses the new official API to show overlay icons and add our custom context menu entry instead of hooking directly into the Finder process and intercept drawind routines. A dummy desktopclient target is also in the project to allow debugging directly in Xcode while the official client can be started from the command line. Otherwise Xcode won't allow attaching to the debugee. Dummy icon files have been added while we get proper icon produced. We can't use the old icons since what we use for the legacy shell integration is already padded according to where the badge should appear on the full icon.
Diffstat (limited to 'shell_integration/MacOSX')
-rw-r--r--shell_integration/MacOSX/CMakeLists.txt20
-rw-r--r--shell_integration/MacOSX/OwnCloud.xcworkspace/contents.xcworkspacedata3
-rw-r--r--shell_integration/MacOSX/OwnCloud.xcworkspace/xcshareddata/OwnCloud.xccheckout10
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.h28
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.m161
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSyncExt.entitlements12
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/Info.plist43
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/project.pbxproj534
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/xcshareddata/xcschemes/FinderSyncExt.xcscheme105
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/Info.plist30
-rw-r--r--shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/main.m16
11 files changed, 954 insertions, 8 deletions
diff --git a/shell_integration/MacOSX/CMakeLists.txt b/shell_integration/MacOSX/CMakeLists.txt
index d5730b1aa..b18bf080a 100644
--- a/shell_integration/MacOSX/CMakeLists.txt
+++ b/shell_integration/MacOSX/CMakeLists.txt
@@ -1,11 +1,25 @@
if(APPLE)
-add_custom_target( mac_overlayplugin ALL
- xcodebuild -workspace ${CMAKE_SOURCE_DIR}/shell_integration/MacOSX/OwnCloud.xcworkspace
+add_custom_target( legacy_mac_overlayplugin ALL
+ xcodebuild -workspace ${CMAKE_SOURCE_DIR}/shell_integration/MacOSX/OwnCloud.xcworkspace
-scheme SyncStateFinder.osax SYMROOT=${CMAKE_CURRENT_BINARY_DIR} archive
- COMMENT building Mac Overlay icons)
+ COMMENT building Legacy Mac Overlay icons)
+
+# The bundle identifier and application group need to have compatible values with the client
+# to be able to open a Mach port across the extension's sandbox boundary.
+# Pass the info through the xcodebuild command line and make sure that the project uses
+# those user-defined settings to build the plist.
+add_custom_target( mac_overlayplugin ALL
+ xcodebuild -project ${CMAKE_SOURCE_DIR}/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj
+ -target FinderSyncExt -configuration Release SYMROOT=${CMAKE_CURRENT_BINARY_DIR}
+ OC_APPLICATION_NAME=${APPLICATION_NAME}
+ OC_APPLICATION_REV_DOMAIN=${APPLICATION_REV_DOMAIN}
+ COMMENT building Mac Overlay icons)
INSTALL( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Release/SyncStateFinder.osax/Contents
DESTINATION ${CMAKE_INSTALL_PREFIX}/Library/ScriptingAdditions/SyncStateFinder.osax/ )
+INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Release/FinderSyncExt.appex
+ DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Plugins
+ USE_SOURCE_PERMISSIONS)
endif(APPLE)
diff --git a/shell_integration/MacOSX/OwnCloud.xcworkspace/contents.xcworkspacedata b/shell_integration/MacOSX/OwnCloud.xcworkspace/contents.xcworkspacedata
index a21afc399..26fba3447 100644
--- a/shell_integration/MacOSX/OwnCloud.xcworkspace/contents.xcworkspacedata
+++ b/shell_integration/MacOSX/OwnCloud.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,9 @@
<Workspace
version = "1.0">
<FileRef
+ location = "group:OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj">
+ </FileRef>
+ <FileRef
location = "group:OwnCloudFinder/OwnCloudFinder.xcodeproj">
</FileRef>
<FileRef
diff --git a/shell_integration/MacOSX/OwnCloud.xcworkspace/xcshareddata/OwnCloud.xccheckout b/shell_integration/MacOSX/OwnCloud.xcworkspace/xcshareddata/OwnCloud.xccheckout
index 8320a7f7b..9512111fd 100644
--- a/shell_integration/MacOSX/OwnCloud.xcworkspace/xcshareddata/OwnCloud.xccheckout
+++ b/shell_integration/MacOSX/OwnCloud.xcworkspace/xcshareddata/OwnCloud.xccheckout
@@ -10,29 +10,29 @@
<string>OwnCloud</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
- <key>09EE94AA-F410-4594-AB26-5A0220DEAEC7</key>
+ <key>D67321A19EF879CA55BF889202BA8C23AC9AA2B5</key>
<string>ssh://github.com/owncloud/client.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>shell_integration/MacOSX/OwnCloud.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
- <key>09EE94AA-F410-4594-AB26-5A0220DEAEC7</key>
+ <key>D67321A19EF879CA55BF889202BA8C23AC9AA2B5</key>
<string>../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>ssh://github.com/owncloud/client.git</string>
<key>IDESourceControlProjectVersion</key>
- <integer>110</integer>
+ <integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
- <string>09EE94AA-F410-4594-AB26-5A0220DEAEC7</string>
+ <string>D67321A19EF879CA55BF889202BA8C23AC9AA2B5</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
- <string>09EE94AA-F410-4594-AB26-5A0220DEAEC7</string>
+ <string>D67321A19EF879CA55BF889202BA8C23AC9AA2B5</string>
<key>IDESourceControlWCCName</key>
<string>client</string>
</dict>
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.h b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.h
new file mode 100644
index 000000000..749f84931
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) by Jocelyn Turcotte <jturcotte@woboq.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+
+#import <Cocoa/Cocoa.h>
+#import <FinderSync/FinderSync.h>
+#import "SyncClientProxy.h"
+
+@interface FinderSync : FIFinderSync <SyncClientProxyDelegate>
+{
+ SyncClientProxy *_syncClientProxy;
+ NSMutableSet *_registeredDirectories;
+ NSMutableSet *_requestedUrls;
+ NSString *_shareMenuTitle;
+}
+
+@end
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.m b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.m
new file mode 100644
index 000000000..8c0c2c0a8
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSync.m
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) by Jocelyn Turcotte <jturcotte@woboq.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+
+#import "FinderSync.h"
+
+
+@implementation FinderSync
+
+- (instancetype)init
+{
+ self = [super init];
+
+ FIFinderSyncController *syncController = [FIFinderSyncController defaultController];
+ NSBundle *extBundle = [NSBundle bundleForClass:[self class]];
+ // This was added to the bundle's Info.plist to get it from the build system
+ NSString *teamIdentifierPrefix = [extBundle objectForInfoDictionaryKey:@"TeamIdentifierPrefix"];
+
+ [syncController setBadgeImage:[extBundle imageForResource:@"ok.icns"] label:nil forBadgeIdentifier:@"OK"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"sync.icns"] label:nil forBadgeIdentifier:@"SYNC"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"sync.icns"] label:nil forBadgeIdentifier:@"NEW"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"warning.icns"] label:nil forBadgeIdentifier:@"IGNORE"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"error.icns"] label:nil forBadgeIdentifier:@"ERROR"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"ok_swm.icns"] label:nil forBadgeIdentifier:@"OK+SWM"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"sync_swm.icns"] label:nil forBadgeIdentifier:@"SYNC+SWM"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"sync_swm.icns"] label:nil forBadgeIdentifier:@"NEW+SWM"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"warning_swm.icns"] label:nil forBadgeIdentifier:@"IGNORE+SWM"];
+ [syncController setBadgeImage:[extBundle imageForResource:@"error_swm.icns"] label:nil forBadgeIdentifier:@"ERROR+SWM"];
+
+ // The Mach post name needs to be prefixed with the code signing Team ID
+ // https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW24
+ NSString *serverName = [[teamIdentifierPrefix stringByAppendingString:[extBundle bundleIdentifier]]
+ stringByReplacingOccurrencesOfString:@".FinderSyncExt" withString:@".socketApi"];
+
+ _syncClientProxy = [[SyncClientProxy alloc] initWithDelegate:self serverName:serverName];
+ _registeredDirectories = [[NSMutableSet alloc] init];
+ _requestedUrls = [[NSMutableSet alloc] init];
+ _shareMenuTitle = nil;
+
+ [_syncClientProxy start];
+ return self;
+}
+
+#pragma mark - Primary Finder Sync protocol methods
+
+- (void)endObservingDirectoryAtURL:(NSURL *)url
+{
+ // The user is no longer seeing the container's contents.
+ // At this point we know that the status of any file as a direct child of url.filePathURL
+ // won't be displayed. Filter our _requestedUrls to get rid of them.
+ NSString *observedDirectoryPath = [url.filePathURL path];
+ [_requestedUrls filterUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
+ NSURL *requestedUrl = (NSURL *)evaluatedObject;
+ NSString *parentDir = [[requestedUrl path] stringByDeletingLastPathComponent];
+ return [parentDir isEqualToString:observedDirectoryPath];
+ }]];
+}
+
+- (void)requestBadgeIdentifierForURL:(NSURL *)url
+{
+ [_requestedUrls addObject:url.filePathURL];
+
+ BOOL isDir;
+ if ([[NSFileManager defaultManager] fileExistsAtPath:[url path] isDirectory: &isDir] == NO) {
+ NSLog(@"ERROR: Could not determine file type of %@", [url path]);
+ isDir = NO;
+ }
+
+ NSString* normalizedPath = [[url path] decomposedStringWithCanonicalMapping];
+ [_syncClientProxy askForIcon:normalizedPath isDirectory:isDir];
+}
+
+#pragma mark - Menu and toolbar item support
+
+- (NSMenu *)menuForMenuKind:(FIMenuKind)whichMenu
+{
+ if (_shareMenuTitle) {
+ NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
+ [menu addItemWithTitle:_shareMenuTitle action:@selector(shareMenuAction:) keyEquivalent:@"title"];
+
+ return menu;
+ }
+ return nil;
+}
+
+- (IBAction)shareMenuAction:(id)sender
+{
+ NSArray* items = [[FIFinderSyncController defaultController] selectedItemURLs];
+
+ [items enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) {
+ NSString* normalizedPath = [[obj path] decomposedStringWithCanonicalMapping];
+ [_syncClientProxy askOnSocket:normalizedPath query:@"SHARE"];
+ }];
+}
+
+#pragma mark - SyncClientProxyDelegate implementation
+
+- (void)setResultForPath:(NSString*)path result:(NSString*)result
+{
+ NSString *normalizedPath = [path decomposedStringWithCanonicalMapping];
+ [[FIFinderSyncController defaultController] setBadgeIdentifier:result forURL:[NSURL fileURLWithPath:normalizedPath]];
+}
+
+- (void)reFetchFileNameCacheForPath:(NSString*)path
+{
+ // This shouldn't be necessary, and will be a problem when we
+ // filter values of _requestedUrls even though Finder might still
+ // have an old status in its cache (and therefore won't re-request it)
+ // but will do OK until we get the socket API to re-push the status of everything needed.
+ [_requestedUrls enumerateObjectsUsingBlock: ^(id url, BOOL *stop) {
+ if ([[url path] hasPrefix:path])
+ [self requestBadgeIdentifierForURL: url];
+ }];
+}
+
+- (void)registerPath:(NSString*)path
+{
+ assert(_registeredDirectories);
+ [_registeredDirectories addObject:[NSURL fileURLWithPath:path]];
+ [FIFinderSyncController defaultController].directoryURLs = _registeredDirectories;
+}
+
+- (void)unregisterPath:(NSString*)path
+{
+ [_registeredDirectories removeObject:[NSURL fileURLWithPath:path]];
+ [FIFinderSyncController defaultController].directoryURLs = _registeredDirectories;
+}
+
+- (void)setShareMenuTitle:(NSString*)title
+{
+ _shareMenuTitle = title;
+}
+
+- (void)loadIconResourcePath:(NSString*)path
+{
+#pragma unused(path)
+}
+
+- (void)connectionDidDie
+{
+ _shareMenuTitle = nil;
+
+ // This will tell Finder that this extension isn't attached to any directory
+ // until we can reconnect to the sync client.
+ [_registeredDirectories removeAllObjects];
+ [FIFinderSyncController defaultController].directoryURLs = nil;
+}
+
+@end
+
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSyncExt.entitlements b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSyncExt.entitlements
new file mode 100644
index 000000000..20605791a
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/FinderSyncExt.entitlements
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.app-sandbox</key>
+ <true/>
+ <key>com.apple.security.application-groups</key>
+ <array>
+ <string>$(TeamIdentifierPrefix)$(OC_APPLICATION_REV_DOMAIN)</string>
+ </array>
+</dict>
+</plist>
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/Info.plist b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/Info.plist
new file mode 100644
index 000000000..36fe63e7c
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/FinderSyncExt/Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>TeamIdentifierPrefix</key>
+ <string>$(TeamIdentifierPrefix)</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleDisplayName</key>
+ <string>$(OC_APPLICATION_NAME) Extensions</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(OC_APPLICATION_REV_DOMAIN).$(PRODUCT_NAME:rfc1034identifier)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>XPC!</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
+ <key>LSUIElement</key>
+ <true/>
+ <key>NSExtension</key>
+ <dict>
+ <key>NSExtensionAttributes</key>
+ <dict/>
+ <key>NSExtensionPointIdentifier</key>
+ <string>com.apple.FinderSync</string>
+ <key>NSExtensionPrincipalClass</key>
+ <string>FinderSync</string>
+ </dict>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/project.pbxproj b/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..61aead9a2
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/project.pbxproj
@@ -0,0 +1,534 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ C2B573BA1B1CD91E00303B36 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B573B91B1CD91E00303B36 /* main.m */; };
+ C2B573D21B1CD94B00303B36 /* main.m in Resources */ = {isa = PBXBuildFile; fileRef = C2B573B91B1CD91E00303B36 /* main.m */; };
+ C2B573DE1B1CD9CE00303B36 /* FinderSync.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B573DD1B1CD9CE00303B36 /* FinderSync.m */; };
+ C2B573E21B1CD9CE00303B36 /* FinderSyncExt.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = C2B573D71B1CD9CE00303B36 /* FinderSyncExt.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ C2B573E91B1DA1FB00303B36 /* SyncClientProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B573E81B1DA1FB00303B36 /* SyncClientProxy.m */; };
+ C2B573F21B1DAD6400303B36 /* error_swm.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573EA1B1DAD6400303B36 /* error_swm.iconset */; };
+ C2B573F31B1DAD6400303B36 /* error.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573EB1B1DAD6400303B36 /* error.iconset */; };
+ C2B573F41B1DAD6400303B36 /* ok_swm.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573EC1B1DAD6400303B36 /* ok_swm.iconset */; };
+ C2B573F51B1DAD6400303B36 /* ok.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573ED1B1DAD6400303B36 /* ok.iconset */; };
+ C2B573F61B1DAD6400303B36 /* sync_swm.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573EE1B1DAD6400303B36 /* sync_swm.iconset */; };
+ C2B573F71B1DAD6400303B36 /* sync.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573EF1B1DAD6400303B36 /* sync.iconset */; };
+ C2B573F81B1DAD6400303B36 /* warning_swm.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573F01B1DAD6400303B36 /* warning_swm.iconset */; };
+ C2B573F91B1DAD6400303B36 /* warning.iconset in Resources */ = {isa = PBXBuildFile; fileRef = C2B573F11B1DAD6400303B36 /* warning.iconset */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ C2B573DF1B1CD9CE00303B36 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C2B573951B1CD88000303B36 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = C2B573D61B1CD9CE00303B36;
+ remoteInfo = FinderSyncExt;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ C2B573E11B1CD9CE00303B36 /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ C2B573E21B1CD9CE00303B36 /* FinderSyncExt.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ C2B573B11B1CD91E00303B36 /* desktopclient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = desktopclient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ C2B573B51B1CD91E00303B36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ C2B573B91B1CD91E00303B36 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ C2B573D71B1CD9CE00303B36 /* FinderSyncExt.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FinderSyncExt.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ C2B573DA1B1CD9CE00303B36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ C2B573DB1B1CD9CE00303B36 /* FinderSyncExt.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = FinderSyncExt.entitlements; sourceTree = "<group>"; };
+ C2B573DC1B1CD9CE00303B36 /* FinderSync.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FinderSync.h; sourceTree = "<group>"; };
+ C2B573DD1B1CD9CE00303B36 /* FinderSync.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FinderSync.m; sourceTree = "<group>"; };
+ C2B573E71B1DA1FB00303B36 /* SyncClientProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SyncClientProxy.h; sourceTree = "<group>"; };
+ C2B573E81B1DA1FB00303B36 /* SyncClientProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SyncClientProxy.m; sourceTree = "<group>"; };
+ C2B573EA1B1DAD6400303B36 /* error_swm.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = error_swm.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/error_swm.iconset; sourceTree = "<absolute>"; };
+ C2B573EB1B1DAD6400303B36 /* error.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = error.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/error.iconset; sourceTree = "<absolute>"; };
+ C2B573EC1B1DAD6400303B36 /* ok_swm.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = ok_swm.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/ok_swm.iconset; sourceTree = "<absolute>"; };
+ C2B573ED1B1DAD6400303B36 /* ok.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = ok.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/ok.iconset; sourceTree = "<absolute>"; };
+ C2B573EE1B1DAD6400303B36 /* sync_swm.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = sync_swm.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/sync_swm.iconset; sourceTree = "<absolute>"; };
+ C2B573EF1B1DAD6400303B36 /* sync.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = sync.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/sync.iconset; sourceTree = "<absolute>"; };
+ C2B573F01B1DAD6400303B36 /* warning_swm.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = warning_swm.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/warning_swm.iconset; sourceTree = "<absolute>"; };
+ C2B573F11B1DAD6400303B36 /* warning.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = warning.iconset; path = /Users/joce/dev/client/shell_integration/MacOSX/OwnCloudFinder/FinderSyncExt/../../../icons/nopadding/warning.iconset; sourceTree = "<absolute>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ C2B573AE1B1CD91E00303B36 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ C2B573D41B1CD9CE00303B36 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ C2B573941B1CD88000303B36 = {
+ isa = PBXGroup;
+ children = (
+ C2B573E61B1DA1FB00303B36 /* common */,
+ C2B573B31B1CD91E00303B36 /* desktopclient */,
+ C2B573D81B1CD9CE00303B36 /* FinderSyncExt */,
+ C2B573B21B1CD91E00303B36 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ C2B573B21B1CD91E00303B36 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ C2B573B11B1CD91E00303B36 /* desktopclient.app */,
+ C2B573D71B1CD9CE00303B36 /* FinderSyncExt.appex */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ C2B573B31B1CD91E00303B36 /* desktopclient */ = {
+ isa = PBXGroup;
+ children = (
+ C2B573B41B1CD91E00303B36 /* Supporting Files */,
+ );
+ path = desktopclient;
+ sourceTree = "<group>";
+ };
+ C2B573B41B1CD91E00303B36 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ C2B573B51B1CD91E00303B36 /* Info.plist */,
+ C2B573B91B1CD91E00303B36 /* main.m */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ C2B573D81B1CD9CE00303B36 /* FinderSyncExt */ = {
+ isa = PBXGroup;
+ children = (
+ C2B573DC1B1CD9CE00303B36 /* FinderSync.h */,
+ C2B573DD1B1CD9CE00303B36 /* FinderSync.m */,
+ C2B573D91B1CD9CE00303B36 /* Supporting Files */,
+ );
+ path = FinderSyncExt;
+ sourceTree = "<group>";
+ };
+ C2B573D91B1CD9CE00303B36 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ C2B573EA1B1DAD6400303B36 /* error_swm.iconset */,
+ C2B573EB1B1DAD6400303B36 /* error.iconset */,
+ C2B573EC1B1DAD6400303B36 /* ok_swm.iconset */,
+ C2B573ED1B1DAD6400303B36 /* ok.iconset */,
+ C2B573EE1B1DAD6400303B36 /* sync_swm.iconset */,
+ C2B573EF1B1DAD6400303B36 /* sync.iconset */,
+ C2B573F01B1DAD6400303B36 /* warning_swm.iconset */,
+ C2B573F11B1DAD6400303B36 /* warning.iconset */,
+ C2B573DA1B1CD9CE00303B36 /* Info.plist */,
+ C2B573DB1B1CD9CE00303B36 /* FinderSyncExt.entitlements */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ C2B573E61B1DA1FB00303B36 /* common */ = {
+ isa = PBXGroup;
+ children = (
+ C2B573E71B1DA1FB00303B36 /* SyncClientProxy.h */,
+ C2B573E81B1DA1FB00303B36 /* SyncClientProxy.m */,
+ );
+ name = common;
+ path = ../common;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ C2B573B01B1CD91E00303B36 /* desktopclient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C2B573CC1B1CD91E00303B36 /* Build configuration list for PBXNativeTarget "desktopclient" */;
+ buildPhases = (
+ C2B573AD1B1CD91E00303B36 /* Sources */,
+ C2B573AE1B1CD91E00303B36 /* Frameworks */,
+ C2B573AF1B1CD91E00303B36 /* Resources */,
+ C2B573E11B1CD9CE00303B36 /* Embed App Extensions */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ C2B573E01B1CD9CE00303B36 /* PBXTargetDependency */,
+ );
+ name = desktopclient;
+ productName = desktopclient;
+ productReference = C2B573B11B1CD91E00303B36 /* desktopclient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ C2B573D61B1CD9CE00303B36 /* FinderSyncExt */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C2B573E31B1CD9CE00303B36 /* Build configuration list for PBXNativeTarget "FinderSyncExt" */;
+ buildPhases = (
+ C2B573D31B1CD9CE00303B36 /* Sources */,
+ C2B573D41B1CD9CE00303B36 /* Frameworks */,
+ C2B573D51B1CD9CE00303B36 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = FinderSyncExt;
+ productName = FinderSyncExt;
+ productReference = C2B573D71B1CD9CE00303B36 /* FinderSyncExt.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ C2B573951B1CD88000303B36 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0630;
+ TargetAttributes = {
+ C2B573B01B1CD91E00303B36 = {
+ CreatedOnToolsVersion = 6.3.1;
+ DevelopmentTeam = 9B5WD74GWJ;
+ };
+ C2B573D61B1CD9CE00303B36 = {
+ CreatedOnToolsVersion = 6.3.1;
+ DevelopmentTeam = 9B5WD74GWJ;
+ SystemCapabilities = {
+ com.apple.ApplicationGroups.Mac = {
+ enabled = 1;
+ };
+ };
+ };
+ };
+ };
+ buildConfigurationList = C2B573981B1CD88000303B36 /* Build configuration list for PBXProject "OwnCloudFinderSync" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = C2B573941B1CD88000303B36;
+ productRefGroup = C2B573B21B1CD91E00303B36 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ C2B573B01B1CD91E00303B36 /* desktopclient */,
+ C2B573D61B1CD9CE00303B36 /* FinderSyncExt */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ C2B573AF1B1CD91E00303B36 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C2B573D21B1CD94B00303B36 /* main.m in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ C2B573D51B1CD9CE00303B36 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C2B573F91B1DAD6400303B36 /* warning.iconset in Resources */,
+ C2B573F31B1DAD6400303B36 /* error.iconset in Resources */,
+ C2B573F81B1DAD6400303B36 /* warning_swm.iconset in Resources */,
+ C2B573F21B1DAD6400303B36 /* error_swm.iconset in Resources */,
+ C2B573F71B1DAD6400303B36 /* sync.iconset in Resources */,
+ C2B573F41B1DAD6400303B36 /* ok_swm.iconset in Resources */,
+ C2B573F51B1DAD6400303B36 /* ok.iconset in Resources */,
+ C2B573F61B1DAD6400303B36 /* sync_swm.iconset in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ C2B573AD1B1CD91E00303B36 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C2B573BA1B1CD91E00303B36 /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ C2B573D31B1CD9CE00303B36 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C2B573E91B1DA1FB00303B36 /* SyncClientProxy.m in Sources */,
+ C2B573DE1B1CD9CE00303B36 /* FinderSync.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ C2B573E01B1CD9CE00303B36 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = C2B573D61B1CD9CE00303B36 /* FinderSyncExt */;
+ targetProxy = C2B573DF1B1CD9CE00303B36 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ C2B573991B1CD88000303B36 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ };
+ name = Debug;
+ };
+ C2B5739A1B1CD88000303B36 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ };
+ name = Release;
+ };
+ C2B573CD1B1CD91E00303B36 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Developer ID Application";
+ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
+ COMBINE_HIDPI_IMAGES = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INFOPLIST_FILE = desktopclient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SDKROOT = macosx;
+ };
+ name = Debug;
+ };
+ C2B573CE1B1CD91E00303B36 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Developer ID Application";
+ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
+ COMBINE_HIDPI_IMAGES = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INFOPLIST_FILE = desktopclient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SDKROOT = macosx;
+ };
+ name = Release;
+ };
+ C2B573E41B1CD9CE00303B36 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements;
+ CODE_SIGN_IDENTITY = "Developer ID Application";
+ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
+ COMBINE_HIDPI_IMAGES = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INFOPLIST_FILE = FinderSyncExt/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ OC_APPLICATION_NAME = ownCloud;
+ OC_APPLICATION_REV_DOMAIN = com.owncloud.desktopclient;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SDKROOT = macosx;
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ C2B573E51B1CD9CE00303B36 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_ENTITLEMENTS = FinderSyncExt/FinderSyncExt.entitlements;
+ CODE_SIGN_IDENTITY = "Developer ID Application";
+ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
+ COMBINE_HIDPI_IMAGES = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INFOPLIST_FILE = FinderSyncExt/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OC_APPLICATION_NAME = ownCloud;
+ OC_APPLICATION_REV_DOMAIN = com.owncloud.desktopclient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SDKROOT = macosx;
+ SKIP_INSTALL = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ C2B573981B1CD88000303B36 /* Build configuration list for PBXProject "OwnCloudFinderSync" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C2B573991B1CD88000303B36 /* Debug */,
+ C2B5739A1B1CD88000303B36 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C2B573CC1B1CD91E00303B36 /* Build configuration list for PBXNativeTarget "desktopclient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C2B573CD1B1CD91E00303B36 /* Debug */,
+ C2B573CE1B1CD91E00303B36 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C2B573E31B1CD9CE00303B36 /* Build configuration list for PBXNativeTarget "FinderSyncExt" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C2B573E41B1CD9CE00303B36 /* Debug */,
+ C2B573E51B1CD9CE00303B36 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = C2B573951B1CD88000303B36 /* Project object */;
+}
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/xcshareddata/xcschemes/FinderSyncExt.xcscheme b/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/xcshareddata/xcschemes/FinderSyncExt.xcscheme
new file mode 100644
index 000000000..785a0da3a
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/OwnCloudFinderSync.xcodeproj/xcshareddata/xcschemes/FinderSyncExt.xcscheme
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0630"
+ wasCreatedForAppExtension = "YES"
+ version = "2.0">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "C2B573D61B1CD9CE00303B36"
+ BuildableName = "FinderSyncExt.appex"
+ BlueprintName = "FinderSyncExt"
+ ReferencedContainer = "container:OwnCloudFinderSync.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "C2B573B01B1CD91E00303B36"
+ BuildableName = "desktopclient.app"
+ BlueprintName = "desktopclient"
+ ReferencedContainer = "container:OwnCloudFinderSync.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ buildConfiguration = "Debug">
+ <Testables>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "C2B573D61B1CD9CE00303B36"
+ BuildableName = "FinderSyncExt.appex"
+ BlueprintName = "FinderSyncExt"
+ ReferencedContainer = "container:OwnCloudFinderSync.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ </TestAction>
+ <LaunchAction
+ selectedDebuggerIdentifier = ""
+ selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ buildConfiguration = "Debug"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ allowLocationSimulation = "YES"
+ launchAutomaticallySubstyle = "2">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "C2B573B01B1CD91E00303B36"
+ BuildableName = "desktopclient.app"
+ BlueprintName = "desktopclient"
+ ReferencedContainer = "container:OwnCloudFinderSync.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ buildConfiguration = "Release"
+ debugDocumentVersioning = "YES"
+ launchAutomaticallySubstyle = "2">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "C2B573B01B1CD91E00303B36"
+ BuildableName = "desktopclient.app"
+ BlueprintName = "desktopclient"
+ ReferencedContainer = "container:OwnCloudFinderSync.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/Info.plist b/shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/Info.plist
new file mode 100644
index 000000000..bbaa296f4
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.owncloud.$(PRODUCT_NAME:rfc1034identifier)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/main.m b/shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/main.m
new file mode 100644
index 000000000..6f580d288
--- /dev/null
+++ b/shell_integration/MacOSX/OwnCloudFinderSync/desktopclient/main.m
@@ -0,0 +1,16 @@
+//
+// main.m
+// desktopclient
+//
+// Created by Jocelyn Turcotte on 01/06/15.
+//
+//
+
+// This is fake application bundle with the same bundle ID as the real desktop client.
+// Xcode needs a wrapping application to allow the extension to be debugged.
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, const char * argv[]) {
+ return NSApplicationMain(argc, argv);
+}