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.
 

302 lines
12 KiB

//
// WXYZ_BookReaderTopBar.m
// TFReader
//
// Created by Andrew on 2018/6/12.
// Copyright © 2018年 Andrew. All rights reserved.
//
#import "WXYZ_BookReaderTopBar.h"
#import "TFReaderSettingHelper.h"
#import "TFReaderBookManager.h"
#import "TFShareManager.h"
#if TF_Download_Mode
#import "TFNovelDownloadMenuView.h"
#import "TFReaderBookManager.h"
#endif
#if TF_Enable_Ai
#import "WXYZ_BookAiPlayPageViewController.h"
#import "TFAudioPlayViewController.h"
#import "WXYZ_AudioSettingHelper.h"
#endif
#import "TFReadRecordManager.h"
#import "WXYZ_MoreView.h"
#import "WXYZ_GiftView.h"
#import "AppDelegate.h"
@interface WXYZ_BookReaderTopBar ()
@property (nonatomic, assign) BOOL navBarShowing;
@property (nonatomic, strong) NSMutableArray<UIButton *> *buttonMenuArr;
@property (nonatomic, strong) UIButton *radioButton;
@end
@implementation WXYZ_BookReaderTopBar
{
TFReaderSettingHelper *functionalManager;
UIButton *moreButton;
}
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self initialize];
[self createSubViews];
}
return self;
}
- (void)initialize
{
self.backgroundColor = [UIColor whiteColor];
functionalManager = [TFReaderSettingHelper sharedManager];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hiddenNavBar) name:NSNotification_Hidden_ToolNav object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSwitch) name:Notification_Switch_Language object:nil];
}
- (void)languageSwitch {
for (UIView *obj in self.subviews) {
[obj removeFromSuperview];
}
[self createSubViews];
}
- (void)createSubViews
{
UIImageView *bottomLine = [[UIImageView alloc] initWithFrame:CGRectMake(0, PUB_NAVBAR_HEIGHT, self.width, 10)];
bottomLine.userInteractionEnabled = YES;
bottomLine.image = [UIImage imageNamed:@"navbar_bottom_line"];
[self addSubview:bottomLine];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0f, PUB_NAVBAR_HEIGHT - 64.0f, 64.0f, 64.0f);
button.backgroundColor = [UIColor clearColor];
button.adjustsImageWhenHighlighted = NO;
[button.titleLabel setFont:kMainFont];
[button setTitleColor:kBlackColor forState:UIControlStateNormal];
[button setImage:[[UIImage imageNamed:@"public_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[button setImageEdgeInsets:UIEdgeInsetsMake(30, 14, 10, 26)];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button setTintColor:kBlackColor];
[button addTarget:self action:@selector(popViewController) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:button];
UIView *menuView = [[UIView alloc] init];
menuView.backgroundColor = [UIColor clearColor];
[self addSubview:menuView];
moreButton = [UIButton buttonWithType:UIButtonTypeCustom];
moreButton.backgroundColor = [UIColor clearColor];
moreButton.tintColor = kBlackColor;
[moreButton.titleLabel setFont:kMainFont];
[moreButton setImage:[[UIImage imageNamed:@"book_more"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[moreButton setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[moreButton addTarget:self action:@selector(moreEvent) forControlEvents:UIControlEventTouchUpInside];
moreButton.imageEdgeInsets = UIEdgeInsetsMake(-10, -10, -10, -10);
[menuView addSubview:moreButton];
moreButton.hidden = NO;
#if TF_Download_Mode
UIButton *downloadButton = [UIButton buttonWithType:UIButtonTypeCustom];
downloadButton.hidden = NO;
downloadButton.adjustsImageWhenHighlighted = NO;
downloadButton.tintColor = kBlackColor;
[downloadButton setImage:[[UIImage imageNamed:@"public_download"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[downloadButton setImageEdgeInsets:UIEdgeInsetsMake(11, 11, 11, 11)];
[downloadButton addTarget:self action:@selector(downloadButtonClick) forControlEvents:UIControlEventTouchUpInside];
[menuView addSubview:downloadButton];
downloadButton.hidden = NO;
#endif
//#if TF_Enable_Ai
UIButton *radioButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.radioButton = radioButton;
radioButton.hidden = NO;
radioButton.adjustsImageWhenHighlighted = NO;
radioButton.tintColor = kBlackColor;
[radioButton setImage:[[UIImage imageNamed:@"audio_book"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[radioButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];
[radioButton addTarget:self action:@selector(radioButtonClick) forControlEvents:UIControlEventTouchUpInside];
[menuView addSubview:radioButton];
radioButton.hidden = NO;
//#endif
#if TF_Enable_Gift
UIButton *giftButton = [UIButton buttonWithType:UIButtonTypeCustom];
giftButton.hidden = NO;
giftButton.adjustsImageWhenHighlighted = NO;
giftButton.tintColor = kBlackColor;
[giftButton setImage:[[UIImage imageNamed:@"book_gift"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[giftButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];
[giftButton addTarget:self action:@selector(giftButtonClick) forControlEvents:UIControlEventTouchUpInside];
[menuView addSubview:giftButton];
#endif
NSMutableArray *buttonMenuArr = [NSMutableArray arrayWithObjects:
#if TF_Download_Mode
downloadButton,
#endif
moreButton,
nil];
self.buttonMenuArr = buttonMenuArr;
#if TF_Enable_Ai
if ([TFUtilsHelper getAiReadSwitchState]) {
[buttonMenuArr insertObject:radioButton atIndex:0];
} else {
radioButton.hidden = YES;
}
#endif
#if TF_Enable_Gift
AppDelegate *app = (AppDelegate *)kRCodeSync([UIApplication sharedApplication].delegate);
TFCheckSettingModel *model = app.checkSettingModel;
if (TF_Enable_Gift && (model.system_setting.novel_reward_switch == 1 || model.system_setting.monthly_ticket_switch == 1)) {
[buttonMenuArr insertObject:giftButton atIndex:0];
giftButton.hidden = NO;
} else {
giftButton.hidden = YES;
}
#endif
[menuView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.mas_right).with.offset(- kHalfMargin);
make.bottom.mas_equalTo(self.mas_bottom);
make.width.mas_equalTo(40 * buttonMenuArr.count + (buttonMenuArr.count - 1) * kHalfMargin);
make.height.mas_equalTo(40);
}];
[buttonMenuArr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:10 leadSpacing:0 tailSpacing:0];
[buttonMenuArr mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(0);
make.height.mas_equalTo(40);
make.width.mas_equalTo(40);
}];
}
// 隐藏导航条
- (void)hiddenNavBarCompletion:(void(^)(void))completion
{
if (!_navBarShowing && functionalManager.state != TFReaderAutoReadStatePause && functionalManager.state != TFReaderAutoReadStateStop) {
return;
}
[functionalManager hiddenStatusBar];
[UIView animateWithDuration:kAnimatedDurationFast animations:^{
self.frame = CGRectMake(0, - PUB_NAVBAR_HEIGHT, SCREEN_WIDTH, PUB_NAVBAR_HEIGHT);
} completion:^(BOOL finished) {
if (completion) {
self.navBarShowing = NO;
!completion ?: completion();
}
}];
}
- (void)hiddenNavBar
{
[self hiddenNavBarCompletion:nil];
}
// 显示导航条
- (void)showNavBarCompletion:(void(^)(void))completion
{
if (_navBarShowing) {
return;
}
[functionalManager showStatusBar];
[TFViewHelper setStateBarDefaultStyle];
[UIView animateWithDuration:kAnimatedDurationFast animations:^{
self.frame = CGRectMake(0, 0, SCREEN_WIDTH, PUB_NAVBAR_HEIGHT);
} completion:^(BOOL finished) {
if (completion) {
self.navBarShowing = YES;
!completion ?: completion();
}
}];
}
#if TF_Download_Mode
- (void)downloadButtonClick
{
TFNovelDownloadMenuView *downloadBar = [[TFNovelDownloadMenuView alloc] init];
downloadBar.book_id = [TFUtilsHelper formatStringWithInteger:[TFReaderBookManager sharedManager].book_id];
downloadBar.chapter_id = [TFUtilsHelper formatStringWithInteger:[TFReaderBookManager sharedManager].chapter_id];
[kMainWindow addSubview:downloadBar];
[downloadBar showDownloadPayView];
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_Hidden_Bottom_ToolNav object:nil];
}
#endif
#if TF_Enable_Ai
- (void)radioButtonClick
{
if ([TFNetworkManager networkingStatus] == NO) {
[TFPromptManager showPromptViewWithStatus:TFPromptStatusError promptTitle:TFLocalizedString(@"听书功能仅支持在线使用")];
return;
}
TFProductionModel *bookModel = [TFReaderBookManager sharedManager].bookModel;
TFProductionChapterModel *bookChapterModel = [[TFProductionChapterModel alloc] init];
for (TFProductionChapterModel *t_model in bookModel.chapter_list) {
if (t_model.chapter_id == [TFReaderBookManager sharedManager].chapter_id) {
bookChapterModel = t_model;
break;
}
}
WXYZ_BookAiPlayPageViewController *vc = [WXYZ_BookAiPlayPageViewController sharedManager];
[vc loadDataWithBookModel:bookModel chapterModel:bookChapterModel];
if ([[WXYZ_AudioSettingHelper sharedManager] isPlayPageShowingWithProductionType:TFProductionTypeAi]) {
[vc popViewController];
} else if (![[WXYZ_AudioSettingHelper sharedManager] isPlayPageShowingWithProductionType:TFProductionTypeAi] && [[WXYZ_AudioSettingHelper sharedManager] isPlayPageShowingWithProductionType:TFProductionTypeAudio]) {
[[TFAudioPlayViewController sharedManager] popViewController];
UINavigationController *nav = [TFViewHelper getCurrentNavigationController];
if ([nav.viewControllers.lastObject isKindOfClass:TFAudioDetailViewController.class]) {
TFNavigationController *t_nav = [[TFNavigationController alloc] initWithRootViewController:vc];
[[TFViewHelper getCurrentViewController] presentViewController:t_nav animated:YES completion:nil];
} else {
[[TFAudioPlayViewController sharedManager] popViewController];
}
} else if ([[WXYZ_AudioSettingHelper sharedManager] isPlayPageShowingWithProductionType:TFProductionTypeAi] && [[WXYZ_AudioSettingHelper sharedManager] isPlayPageShowingWithProductionType:TFProductionTypeAudio]) {
[[TFAudioPlayViewController sharedManager] popViewController];
[[TFAudioPlayViewController sharedManager] popViewController];
} else {
TFNavigationController *nav = [[TFNavigationController alloc] initWithRootViewController:vc];
nav.view.tag = 2345;
[[TFViewHelper getWindowRootController] presentViewController:nav animated:YES completion:nil];
}
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_Hidden_Bottom_ToolNav object:nil];
}
#endif
- (void)giftButtonClick {
WXYZ_GiftView *mainView = [[WXYZ_GiftView alloc] initWithFrame:CGRectZero bookModel:[TFReaderBookManager sharedManager].bookModel];
[mainView show];
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_Hidden_Bottom_ToolNav object:nil];
}
// 返回
- (void)popViewController
{
[[NSNotificationCenter defaultCenter] postNotificationName:NSNotification_Reader_Back object:nil];
}
- (void)moreEvent {
WXYZ_MoreView *mainView = [[WXYZ_MoreView alloc] init];
[mainView show];
}
@end