diff --git a/ownCloudAppFramework/Branding/Branding.h b/ownCloudAppFramework/Branding/Branding.h index 74ed76bdd..85a7e7f6f 100644 --- a/ownCloudAppFramework/Branding/Branding.h +++ b/ownCloudAppFramework/Branding/Branding.h @@ -61,6 +61,8 @@ typedef NSString* BrandingImageName NS_TYPED_EXTENSIBLE_ENUM; - (nullable id)computedValueForClassSettingsKey:(OCClassSettingsKey)classSettingsKey; - (nullable NSURL *)urlForClassSettingsKey:(OCClassSettingsKey)settingsKey; +- (void)registerUserDefaultsDefaults; + @end extern OCClassSettingsIdentifier OCClassSettingsIdentifierBranding; @@ -68,6 +70,7 @@ extern OCClassSettingsIdentifier OCClassSettingsIdentifierBranding; extern BrandingKey BrandingKeyAppName; extern BrandingKey BrandingKeyOrganizationName; extern BrandingKey BrandingKeyDisabledImportMethods; +extern BrandingKey BrandingKeyUserDefaultsDefaultValues; extern BrandingFileImportMethod BrandingFileImportMethodOpenWith; extern BrandingFileImportMethod BrandingFileImportMethodShareExtension; diff --git a/ownCloudAppFramework/Branding/Branding.m b/ownCloudAppFramework/Branding/Branding.m index 0c53195ec..b62acbf8d 100644 --- a/ownCloudAppFramework/Branding/Branding.m +++ b/ownCloudAppFramework/Branding/Branding.m @@ -207,6 +207,16 @@ - (instancetype)init return (self); } +- (void)registerUserDefaultsDefaults +{ + // Register user defaults + NSDictionary *userDefaultsDefaults; + if ((userDefaultsDefaults = self.userDefaultsDefaultValues) != nil) + { + [OCAppIdentity.sharedAppIdentity.userDefaults registerDefaults:userDefaultsDefaults]; + } +} + - (void)registerLegacyKeyPath:(BrandingLegacyKeyPath)keyPath forClassSettingsKey:(OCClassSettingsKey)classSettingsKey; { NSMutableDictionary *mutableLegacyKeyPathsByClassSettingsKeys = nil; @@ -231,6 +241,11 @@ - (NSString *)organizationName return ([self computedValueForClassSettingsKey:BrandingKeyOrganizationName]); } +- (NSDictionary *)userDefaultsDefaultValues +{ + return ([self computedValueForClassSettingsKey:BrandingKeyUserDefaultsDefaultValues]); +} + - (NSArray *)disabledImportMethods { return ([self computedValueForClassSettingsKey:BrandingKeyDisabledImportMethods]); @@ -349,6 +364,14 @@ + (OCClassSettingsMetadataCollection)classSettingsMetadata BrandingFileImportMethodShareExtension : @"Disallow import through the Share Extension", BrandingFileImportMethodFileProvider : @"Disallow import through the File Provider (Files.app)" } + }, + + // User Defaults + BrandingKeyUserDefaultsDefaultValues : @{ + OCClassSettingsMetadataKeyType : OCClassSettingsMetadataTypeDictionary, + OCClassSettingsMetadataKeyDescription : @"Default values for user defaults. Allows overriding default settings.", + OCClassSettingsMetadataKeyStatus : OCClassSettingsKeyStatusAdvanced, + OCClassSettingsMetadataKeyCategory : @"Branding" } }); } @@ -357,9 +380,10 @@ + (OCClassSettingsMetadataCollection)classSettingsMetadata OCClassSettingsIdentifier OCClassSettingsIdentifierBranding = @"branding"; -OCClassSettingsKey BrandingKeyAppName = @"app-name"; -OCClassSettingsKey BrandingKeyOrganizationName = @"organization-name"; // Legacy Branding Key: organizationName -OCClassSettingsKey BrandingKeyDisabledImportMethods = @"disabled-import-methods"; +BrandingKey BrandingKeyAppName = @"app-name"; +BrandingKey BrandingKeyOrganizationName = @"organization-name"; // Legacy Branding Key: organizationName +BrandingKey BrandingKeyDisabledImportMethods = @"disabled-import-methods"; +BrandingKey BrandingKeyUserDefaultsDefaultValues = @"user-defaults-default-values"; BrandingFileImportMethod BrandingFileImportMethodOpenWith = @"open-with"; BrandingFileImportMethod BrandingFileImportMethodShareExtension = @"share-extension"; diff --git a/ownCloudAppFramework/Branding/BrandingClassSettingsSource.m b/ownCloudAppFramework/Branding/BrandingClassSettingsSource.m index 0c51ccac2..eae88b71c 100644 --- a/ownCloudAppFramework/Branding/BrandingClassSettingsSource.m +++ b/ownCloudAppFramework/Branding/BrandingClassSettingsSource.m @@ -24,6 +24,7 @@ @implementation BrandingClassSettingsSource + (void)load { [OCClassSettings.sharedSettings insertSource:[BrandingClassSettingsSource new] before:OCClassSettingsSourceIdentifierManaged after:nil]; + [Branding.sharedBranding registerUserDefaultsDefaults]; } - (OCClassSettingsSourceIdentifier)settingsSourceIdentifier