提交
This commit is contained in:
169
TUIKit/TUIMultimediaPlugin/Common/TUIMultimediaConfig.m
Normal file
169
TUIKit/TUIMultimediaPlugin/Common/TUIMultimediaConfig.m
Normal file
@@ -0,0 +1,169 @@
|
||||
// Copyright (c) 2024 Tencent. All rights reserved.
|
||||
// Created by eddardliu on 2024/10/21.
|
||||
|
||||
#import <TUICore/UIColor+TUIHexColor.h>
|
||||
#import <TUICore/TUIThemeManager.h>
|
||||
|
||||
#import "TUIMultimediaConfig.h"
|
||||
#import "TUIMultimediaPlugin/TUIMultimediaCommon.h"
|
||||
|
||||
#define DEFAULT_CONFIG_FILE @"config/default_config"
|
||||
|
||||
@interface TUIMultimediaConfig() {
|
||||
NSDictionary * _jsonDicFromFile;
|
||||
NSDictionary * _jsonDicFromSetting;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation TUIMultimediaConfig
|
||||
|
||||
+ (instancetype)sharedInstance {
|
||||
static TUIMultimediaConfig *sharedInstance = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[self alloc] init];
|
||||
});
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
- (instancetype)init{
|
||||
self = [super init];
|
||||
NSData *jsonData = [NSData dataWithContentsOfFile:[TUIMultimediaCommon.bundle pathForResource:DEFAULT_CONFIG_FILE ofType:@"json"]];
|
||||
NSError *err = nil;
|
||||
_jsonDicFromFile = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
|
||||
if (err || ![_jsonDicFromFile isKindOfClass:[NSDictionary class]]) {
|
||||
NSLog(@"[TUIMultimedia] Json parse failed: %@", err);
|
||||
_jsonDicFromFile = nil;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setConfig:(NSString*)jsonString {
|
||||
_jsonDicFromFile = nil;
|
||||
if (jsonString == nil) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSError *err = nil;
|
||||
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
if (jsonData) {
|
||||
_jsonDicFromFile = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
|
||||
if (err || ![_jsonDicFromFile isKindOfClass:[NSDictionary class]]) {
|
||||
NSLog(@"[TUIMultimediaConfig setConfig] Json parse failed: %@", err);
|
||||
_jsonDicFromFile = nil;
|
||||
}
|
||||
} else {
|
||||
NSLog(@"Error converting string to data");
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)isSupportRecordBeauty {
|
||||
return [self getBoolFromDic:@"support_record_beauty" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportRecordAspect {
|
||||
return [self getBoolFromDic:@"support_record_aspect" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportRecordTorch {
|
||||
return [self getBoolFromDic:@"support_record_torch" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportRecordScrollFilter {
|
||||
return [self getBoolFromDic:@"support_record_scroll_filter" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportVideoEditGraffiti {
|
||||
return [self getBoolFromDic:@"support_video_edit_graffiti" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportVideoEditPaster {
|
||||
return [self getBoolFromDic:@"support_video_edit_paster" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportVideoEditSubtitle {
|
||||
return [self getBoolFromDic:@"support_video_edit_subtitle" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportVideoEditBGM {
|
||||
return [self getBoolFromDic:@"support_video_edit_bgm" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportPictureEditMosaic {
|
||||
return [self getBoolFromDic:@"support_picture_edit_mosaic" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportPictureEditGraffiti {
|
||||
return [self getBoolFromDic:@"support_picture_edit_graffiti" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportPictureEditPaster {
|
||||
return [self getBoolFromDic:@"support_picture_edit_paster" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportPictureEditSubtitle {
|
||||
return [self getBoolFromDic:@"support_picture_edit_subtitle" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (BOOL)isSupportPictureEditCrop {
|
||||
return [self getBoolFromDic:@"support_picture_edit_crop" defaultValue:YES];
|
||||
}
|
||||
|
||||
- (UIColor *)getThemeColor {
|
||||
return TIMCommonDynamicColor(@"primary_theme_color", @"#147AFF");
|
||||
}
|
||||
|
||||
- (int)getVideoQuality {
|
||||
return [self getIntFromDic:@"video_quality" defaultValue:2];
|
||||
}
|
||||
|
||||
- (int)getMaxRecordDurationMs {
|
||||
return [self getIntFromDic:@"max_record_duration_ms" defaultValue:15000];
|
||||
}
|
||||
|
||||
- (int)getMinRecordDurationMs {
|
||||
return [self getIntFromDic:@"min_record_duration_ms" defaultValue:2000];
|
||||
}
|
||||
|
||||
- (NSString *)getPicturePasterConfigFilePath {
|
||||
return [self getStringFromDic:@"picture_paster_config_file_path" defaultValue:@"config/picture_paster_data"];
|
||||
}
|
||||
|
||||
- (NSString *)getBGMConfigFilePath {
|
||||
return [self getStringFromDic:@"bgm_config_file_path" defaultValue:@"config/bgm_data"];
|
||||
}
|
||||
|
||||
-(BOOL) getBoolFromDic:(NSString*) dicKey defaultValue:(BOOL) defaultValue{
|
||||
if (_jsonDicFromSetting != nil) {
|
||||
return [_jsonDicFromSetting[dicKey] caseInsensitiveCompare:@"true"] == NSOrderedSame;
|
||||
}
|
||||
|
||||
if (_jsonDicFromFile != nil) {
|
||||
return [_jsonDicFromFile[dicKey] caseInsensitiveCompare:@"true"] == NSOrderedSame;
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
-(int) getIntFromDic:(NSString*) dicKey defaultValue:(int) defaultValue{
|
||||
if (_jsonDicFromSetting != nil) {
|
||||
return [(NSNumber *)_jsonDicFromFile[dicKey] intValue];
|
||||
}
|
||||
|
||||
if (_jsonDicFromFile != nil) {
|
||||
return [(NSNumber *)_jsonDicFromFile[dicKey] intValue];
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
-(NSString*) getStringFromDic:(NSString*) dicKey defaultValue:(NSString*) defaultValue{
|
||||
if (_jsonDicFromSetting != nil) {
|
||||
return _jsonDicFromSetting[dicKey];
|
||||
}
|
||||
|
||||
if (_jsonDicFromFile != nil) {
|
||||
return _jsonDicFromFile[dicKey];
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user