app store: support sandboxing

- remove unnecessary entitlements
- save recorded calls and incoming files in the app folder.

Change-Id: Id2852f7cac65a1d75c76ed907a697dd0e1f5d069
Reviewed-by: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
diff --git a/src/AudioPrefsVC.mm b/src/AudioPrefsVC.mm
index 543d63c..901846a 100644
--- a/src/AudioPrefsVC.mm
+++ b/src/AudioPrefsVC.mm
@@ -33,15 +33,23 @@
 @property (assign) IBOutlet NSPopUpButton *inputDeviceList;
 @property (assign) IBOutlet NSButton *alwaysRecordingButton;
 @property (assign) IBOutlet NSButton *muteDTMFButton;
+@property (assign) IBOutlet NSTextField *recordingHeaderTitle;
+@property (assign) IBOutlet NSTextField *recordingpathLabel;
+@property (assign) IBOutlet NSLayoutConstraint* audioMarginTopConstraint;
+@property (assign) IBOutlet NSLayoutConstraint* audioMarginBottomConstraint;
+
+
+
 
 @end
 
 @implementation AudioPrefsVC
-@synthesize recordingsPathControl;
+@synthesize recordingsPathControl, recordingHeaderTitle, recordingpathLabel;
 @synthesize outputDeviceList;
 @synthesize inputDeviceList;
 @synthesize alwaysRecordingButton;
 @synthesize muteDTMFButton;
+@synthesize audioMarginTopConstraint, audioMarginBottomConstraint;
 
 - (void)loadView
 {
@@ -62,6 +70,16 @@
             Audio::Settings::instance().areDTMFMuted()?NSOnState:NSOffState];
     NSArray* pathComponentArray = [self pathComponentArrayWithCurrentUrl:Media::RecordingModel::instance().recordPath().toNSString()];
     [recordingsPathControl setPathComponentCells:pathComponentArray];
+
+    if (appSandboxed()) {
+        [alwaysRecordingButton setHidden:YES];
+        [recordingsPathControl setEnabled:NO];
+        [recordingsPathControl setHidden: YES];
+        [recordingHeaderTitle setHidden: YES];
+        [recordingpathLabel setHidden: YES];
+        audioMarginTopConstraint.constant = 10.0f;
+        audioMarginBottomConstraint.constant = 67.0f;
+    }
 }
 
 - (IBAction)toggleMuteDTMF:(NSButton *)sender
@@ -171,10 +189,7 @@
 }
 
 - (BOOL) panel:(id)sender shouldEnableURL:(NSURL*)url {
-    if(!appSandboxed()) {
-        return YES;
-    }
-    return isUrlAccessibleFromSandbox(url);
+    return YES;
 }
 
 #pragma mark - NSMenuDelegate methods
diff --git a/src/GeneralPrefsVC.mm b/src/GeneralPrefsVC.mm
index 7435098..38574bd 100644
--- a/src/GeneralPrefsVC.mm
+++ b/src/GeneralPrefsVC.mm
@@ -56,6 +56,7 @@
     __unsafe_unretained IBOutlet NSTextField* profileNameField;
     __unsafe_unretained IBOutlet NSImageView* addProfilePhotoImage;
     __unsafe_unretained IBOutlet NSButton *downloadFolder;
+    __unsafe_unretained IBOutlet NSTextField *downloadFolderLabel;
 }
 @end
 
@@ -115,6 +116,12 @@
             [photoView setBordered:NO];
         }
     }
+    if (appSandboxed()) {
+        [downloadFolder setHidden:YES];
+        [downloadFolder setEnabled:NO];
+        [downloadFolderLabel setHidden: YES];
+        return;
+    }
     if (dataTransferModel) {
         downloadFolder.title = [@(dataTransferModel->downloadDirectory.c_str()) lastPathComponent];
     }
@@ -276,10 +283,7 @@
 #pragma mark - NSOpenSavePanelDelegate delegate methods
 
 - (BOOL) panel:(id)sender shouldEnableURL:(NSURL*)url {
-    if(!appSandboxed()) {
-        return YES;
-    }
-    return isUrlAccessibleFromSandbox(url);
+    return YES;
 }
 
 @end
diff --git a/src/RingWindowController.mm b/src/RingWindowController.mm
index 64e59a4..9107eba 100644
--- a/src/RingWindowController.mm
+++ b/src/RingWindowController.mm
@@ -40,6 +40,7 @@
 #import <api/contactmodel.h>
 #import <api/contact.h>
 #import <api/datatransfermodel.h>
+#import <media/recordingmodel.h>
 
 // Ring
 #import "AppDelegate.h"
@@ -53,6 +54,7 @@
 #import "views/NSColor+RingTheme.h"
 #import "views/BackgroundView.h"
 #import "ChooseAccountVC.h"
+#import "utils.h"
 
 @interface RingWindowController () <MigrateRingAccountsDelegate, NSToolbarDelegate>
 
@@ -124,16 +126,17 @@
     NSToolbar *toolbar = self.window.toolbar;
     toolbar.delegate = self;
     [toolbar insertItemWithItemIdentifier:kChangeAccountToolBarItemIdentifier atIndex:1];
-    // set download folder (default - 'Downloads')
+    // set download folder (default - 'Documents')
     NSString* path = [[NSUserDefaults standardUserDefaults] stringForKey:Preferences::DownloadFolder];
     if (!path || path.length == 0) {
-        NSURL *downloadsURL = [[NSFileManager defaultManager]
-                               URLForDirectory:NSDownloadsDirectory
-                               inDomain:NSUserDomainMask appropriateForURL:nil
-                               create:YES error:nil];
-        path = [[downloadsURL path] stringByAppendingString:@"/"];
+        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+        path = [[paths objectAtIndex:0] stringByAppendingString:@"/"];
     }
     lrc_->getDataTransferModel().downloadDirectory = std::string([path UTF8String]);
+    if(appSandboxed()) {
+        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+        Media::RecordingModel::instance().setRecordPath(QString::fromNSString([paths objectAtIndex:0]));
+    }
 }
 
 - (void) connect