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

//
// 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