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