You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
409 lines
12 KiB
409 lines
12 KiB
// |
|
// TFReaderSettingHelper.m |
|
// TFReader |
|
// |
|
// Created by 谢腾飞 on 2020/12/2. |
|
// Copyright © 2020 xtfei_2011@126.com. All rights reserved. |
|
// |
|
|
|
#import "TFReaderSettingHelper.h" |
|
#import "AppDelegate.h" |
|
|
|
#define PUB_DEFAULT_READ_SPEED 10 |
|
|
|
#define PUB_MIN_READ_SPEED 5 |
|
|
|
#define PUB_MAX_READ_SPEED 60 |
|
|
|
@implementation TFReaderSettingHelper |
|
|
|
implementation_singleton(TFReaderSettingHelper) |
|
|
|
#pragma mark - Screen |
|
// 开启屏幕常亮 |
|
- (void)openScreenKeep |
|
{ |
|
[UIApplication sharedApplication].idleTimerDisabled = YES; |
|
} |
|
|
|
// 关闭屏幕常亮 |
|
- (void)closeScreenKeep |
|
{ |
|
[UIApplication sharedApplication].idleTimerDisabled = NO; |
|
} |
|
|
|
#pragma mark - Status |
|
- (void)hiddenStatusBar |
|
{ |
|
[UIApplication sharedApplication].statusBarHidden = YES; |
|
} |
|
|
|
- (void)showStatusBar |
|
{ |
|
[UIApplication sharedApplication].statusBarHidden = NO; |
|
} |
|
|
|
#pragma mark - Font |
|
|
|
- (void)setReaderFontSize:(CGFloat)fontSize |
|
{ |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:fontSize] forKey:TF_READER_FONT]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
if (self.readerFontChanged) { |
|
self.readerFontChanged(); |
|
} |
|
} |
|
|
|
- (CGFloat)getReaderFontSize |
|
{ |
|
CGFloat textFontSize = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_FONT] floatValue]; |
|
|
|
if (!textFontSize || textFontSize <= [self getReaderMinFontSize]) { |
|
return [self getReaderMinFontSize]; |
|
} |
|
|
|
if (textFontSize >= [self getReaderMaxFontSize]) { |
|
return [self getReaderMaxFontSize]; |
|
} |
|
|
|
return textFontSize; |
|
} |
|
|
|
- (CGFloat)getReaderMinFontSize |
|
{ |
|
return kFontSize15; |
|
} |
|
|
|
- (CGFloat)getReaderMaxFontSize |
|
{ |
|
return kFontSize30; |
|
} |
|
|
|
// 设置行间距 |
|
- (void)setReaderLinesSpacing:(CGFloat)linesSpacing |
|
{ |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:linesSpacing] forKey:TF_READER_LINESPACING]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
if (self.readerLinesSpacingChanged) { |
|
self.readerLinesSpacingChanged(); |
|
} |
|
} |
|
|
|
// 获取行间距 |
|
- (CGFloat)getReaderLinesSpacing |
|
{ |
|
CGFloat t_linesSpacing = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_LINESPACING] floatValue]; |
|
if (t_linesSpacing == 0) { |
|
[self setReaderLinesSpacing:line_spacing_medium]; |
|
return line_spacing_medium; |
|
} |
|
return t_linesSpacing; |
|
} |
|
|
|
- (TFReaderLineSpacingState)getReaderLineSpacingState |
|
{ |
|
CGFloat t_lineSpacing = [self getReaderLinesSpacing]; |
|
if (t_lineSpacing == line_spacing_small) { |
|
return TFReaderLineSpacingStateSmall; |
|
} else if (t_lineSpacing == line_spacing_medium) { |
|
return TFReaderLineSpacingStateMedium; |
|
} else { |
|
return TFReaderLineSpacingStateBig; |
|
} |
|
} |
|
|
|
#pragma mark - Frame |
|
|
|
- (CGSize)getReaderViewSize |
|
{ |
|
return [self getReaderViewFrame].size; |
|
} |
|
|
|
- (CGRect)getReaderViewFrame |
|
{ |
|
|
|
AppDelegate *appDelegate = (AppDelegate *)kRCodeSync([[UIApplication sharedApplication] delegate]); |
|
if (!appDelegate.checkSettingModel.ad_status_setting.chapter_read_bottom) { |
|
return CGRectMake(kMargin, |
|
2 * kMargin + PUB_NAVBAR_OFFSET + 10, |
|
SCREEN_WIDTH - 2 * kMargin, |
|
SCREEN_HEIGHT - 2 * kMargin - PUB_NAVBAR_OFFSET - PUB_TABBAR_OFFSET - 2 * kHalfMargin - kMargin); |
|
} |
|
return CGRectMake(kMargin, |
|
2 * kMargin + PUB_NAVBAR_OFFSET + 10, |
|
SCREEN_WIDTH - 2 * kMargin, |
|
SCREEN_HEIGHT - 2 * kMargin - PUB_NAVBAR_OFFSET - 2 * kHalfMargin - kMargin - PUB_TABBAR_HEIGHT - (is_iPhoneX?-kMargin:0)); |
|
} |
|
|
|
- (CGFloat)getReaderViewBottom |
|
{ |
|
return [self getReaderViewFrame].origin.y + [self getReaderViewFrame].size.height; |
|
} |
|
|
|
#pragma mark - Color |
|
|
|
// 设置背景色 |
|
- (void)setReaderBackgroundColor:(TFReaderBackColorMode)colorMode |
|
{ |
|
if ([self getNightModeState] == TFReaderPatternModeNight) { |
|
return; |
|
} |
|
|
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:colorMode] forKey:@"xtfei_back_color"]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
if ([self getNightModeState] == TFReaderPatternModeDaytime) { |
|
if (self.readerBackgroundViewChanged) { |
|
self.readerBackgroundViewChanged(); |
|
} |
|
} |
|
} |
|
|
|
// 获取背景色枚举值 |
|
- (TFReaderBackColorMode)getReaderBackgroundColorMode |
|
{ |
|
if ([self getNightModeState] == TFReaderPatternModeNight) { |
|
return TFReaderBackColorBlack; |
|
} |
|
return [[[NSUserDefaults standardUserDefaults] objectForKey:@"xtfei_back_color"] integerValue]; |
|
} |
|
|
|
// 获取背景色 |
|
- (UIColor *)getReaderBackgroundColor |
|
{ |
|
return [UIColor colorWithPatternImage:[UIImage imageNamed:[[self getReaderBackgroundColorModeArray] objectAtIndex:[self getReaderBackgroundColorMode]]]]; |
|
} |
|
|
|
|
|
- (NSArray *)getReaderBackgroundColorModeArray |
|
{ |
|
return @[@"read_page_bg_yellow.png", @"read_page_bg_green.png", @"read_page_bg_blue.png", @"read_page_bg_pink.png", @"read_page_bg_white.png", @"read_page_bg_gray.png", @"read_page_bg_black.png"]; |
|
} |
|
|
|
// 获取字体颜色 |
|
- (UIColor *)getReaderTextColor |
|
{ |
|
switch ([self getReaderBackgroundColorMode]) { |
|
case TFReaderBackColorYellow: |
|
return kColorRGBA(92, 66, 45, 1); |
|
case TFReaderBackColorGreen: |
|
return kColorRGBA(69, 81, 72, 1); |
|
break; |
|
case TFReaderBackColorBlue: |
|
return kColorRGBA(50, 63, 74, 1); |
|
break; |
|
case TFReaderBackColorPink: |
|
return kColorRGBA(144, 38, 61, 1); |
|
break; |
|
case TFReaderBackColorWhite: |
|
return kBlackColor; |
|
break; |
|
case TFReaderBackColorGray: |
|
return kColorRGBA(159, 161, 163, 1); |
|
break; |
|
case TFReaderBackColorBlack: |
|
return kColorRGBA(127, 127, 127, 1); |
|
break; |
|
|
|
default: |
|
break; |
|
} |
|
} |
|
|
|
// 获取标题字体颜色 |
|
- (UIColor *)getReaderTitleTextColor |
|
{ |
|
CGFloat alpha = 0.5; |
|
switch ([self getReaderBackgroundColorMode]) { |
|
case TFReaderBackColorYellow: |
|
return kColorRGBA(92, 66, 45, alpha); |
|
case TFReaderBackColorGreen: |
|
return kColorRGBA(69, 81, 72, alpha); |
|
break; |
|
case TFReaderBackColorBlue: |
|
return kColorRGBA(50, 63, 74, alpha); |
|
break; |
|
case TFReaderBackColorPink: |
|
return kColorRGBA(144, 38, 61, alpha); |
|
break; |
|
case TFReaderBackColorWhite: |
|
return kColorRGBA(33, 34, 35, alpha); |
|
break; |
|
case TFReaderBackColorGray: |
|
return kColorRGBA(159, 161, 163, alpha); |
|
break; |
|
case TFReaderBackColorBlack: |
|
return kColorRGBA(127, 127, 127, alpha); |
|
break; |
|
|
|
default: |
|
break; |
|
} |
|
} |
|
|
|
// 获取夜间模式状态 |
|
- (TFReaderPatternMode)getNightModeState |
|
{ |
|
NSInteger nightModeState = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_NIGHT_MODE] integerValue]; |
|
if (nightModeState == 0) { |
|
return TFReaderPatternModeDaytime; |
|
} |
|
|
|
return TFReaderPatternModeNight; |
|
} |
|
|
|
// 设置夜间模式状态 |
|
- (void)setNightModeState:(TFReaderPatternMode)state |
|
{ |
|
if (state == TFReaderPatternModeDaytime) { |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:0] forKey:TF_READER_NIGHT_MODE]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
} else { |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:1] forKey:TF_READER_NIGHT_MODE]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
} |
|
|
|
if (self.readerBackgroundViewChanged) { |
|
self.readerBackgroundViewChanged(); |
|
} |
|
} |
|
|
|
#pragma mark - Brightness |
|
// 获取屏幕亮度 |
|
- (CGFloat)getBrightness |
|
{ |
|
CGFloat brightness = [UIScreen mainScreen].brightness; |
|
return brightness; |
|
} |
|
|
|
// 设定屏幕亮度 |
|
- (void)setBrightness:(CGFloat)brightness |
|
{ |
|
[[UIScreen mainScreen] setBrightness:brightness]; |
|
if (self.readerBrightnessChanged) { |
|
self.readerBrightnessChanged(); |
|
} |
|
} |
|
|
|
#pragma mark - TransitionStyle |
|
// 设置翻页类型 |
|
- (void)setTransitionStyle:(TFReaderTransitionStyle)transitionStyle |
|
{ |
|
NSUInteger t_tStyle = 0; |
|
switch (transitionStyle) { |
|
case TFReaderTransitionStylePageCurl: |
|
t_tStyle = 0; |
|
break; |
|
case TFReaderTransitionStyleScroll: |
|
t_tStyle = 1; |
|
break; |
|
case TFReaderTransitionStyleCover: |
|
t_tStyle = 2; |
|
break; |
|
case TFReaderTransitionStyleNone: |
|
t_tStyle = 3; |
|
break; |
|
|
|
default: |
|
break; |
|
} |
|
|
|
|
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:t_tStyle] forKey:TF_READER_TRANSITION_STYLE]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
|
|
if (self.readerTransitionStyleChanged) { |
|
self.readerTransitionStyleChanged(transitionStyle); |
|
} |
|
} |
|
|
|
// 获取翻页类型 |
|
- (TFReaderTransitionStyle)getTransitionStyle |
|
{ |
|
NSUInteger t_transitionStyle = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_TRANSITION_STYLE] unsignedIntegerValue]; |
|
|
|
switch (t_transitionStyle) { |
|
case 0: |
|
return TFReaderTransitionStylePageCurl; |
|
break; |
|
case 1: |
|
return TFReaderTransitionStyleScroll; |
|
break; |
|
case 2: |
|
return TFReaderTransitionStyleCover; |
|
break; |
|
case 3: |
|
return TFReaderTransitionStyleNone; |
|
break; |
|
|
|
default: |
|
break; |
|
} |
|
|
|
return t_transitionStyle; |
|
} |
|
|
|
#pragma mark - RecordLocation |
|
// 获取记录章节 |
|
- (NSInteger)getMemoryChapterIndexWithBook_id:(NSUInteger)book_id |
|
{ |
|
NSUInteger t_chapterIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@_%@",TF_READER_CHAPTER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]] integerValue]; |
|
return t_chapterIndex; |
|
} |
|
|
|
// 获取记录页数 |
|
- (NSInteger)getMemoryPagerIndexWithBook_id:(NSUInteger)book_id |
|
{ |
|
NSUInteger t_pagerIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@_%@",TF_READER_PAGER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]] unsignedIntegerValue]; |
|
return t_pagerIndex; |
|
} |
|
|
|
// 记录章节 页数 |
|
- (void)setLocationMemoryOfChapterIndex:(NSInteger)chapterIndex pagerIndex:(NSInteger)pagerIndex book_id:(NSUInteger)book_id |
|
{ |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:chapterIndex] forKey:[NSString stringWithFormat:@"%@_%@",TF_READER_CHAPTER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]]; |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInteger:pagerIndex] forKey:[NSString stringWithFormat:@"%@_%@",TF_READER_PAGER_INDEX, [TFUtilsHelper formatStringWithInteger:book_id]]]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
} |
|
|
|
/* |
|
设置阅读速度 |
|
*/ |
|
// 设置阅读速度 |
|
- (void)setReadSpeed:(NSUInteger)animationDuration |
|
{ |
|
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:animationDuration] forKey:TF_READER_READ_SPEED]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
|
|
if (self.readerAutoReadSpeedChanged) { |
|
self.readerAutoReadSpeedChanged(animationDuration); |
|
} |
|
} |
|
|
|
// 获取阅读速度 |
|
- (NSUInteger)getReadSpeed |
|
{ |
|
NSInteger t_readSpeed = [[[NSUserDefaults standardUserDefaults] objectForKey:TF_READER_READ_SPEED] unsignedIntegerValue]; |
|
|
|
if (t_readSpeed == 0) { |
|
return PUB_DEFAULT_READ_SPEED; |
|
} |
|
|
|
if (t_readSpeed < PUB_MIN_READ_SPEED) { |
|
return PUB_MIN_READ_SPEED; |
|
} |
|
|
|
if (t_readSpeed > kFontSize30) { |
|
return PUB_MAX_READ_SPEED; |
|
} |
|
|
|
return t_readSpeed; |
|
} |
|
|
|
- (void)setAutoReaderState:(TFReaderAutoReadState)state |
|
{ |
|
self.state = state; |
|
if (self.readerAutoReaderStateChanged) { |
|
self.readerAutoReaderStateChanged(state); |
|
} |
|
} |
|
@end
|
|
|