//
//  Copyright © 2015 dahua. All rights reserved.
//

#import <LCBaseModule/DHBaseTableViewController.h>
#import <LCBaseModule/DHPubDefine.h>
#import <LCBaseModule/DHModuleConfig.h>
#import <LCBaseModule/DHContainerVC.h>
#import <LCBaseModule/UIColor+LeChange.h>
#import <LCBaseModule/LCBaseModule-Swift.h>
#import <LCBaseModule/LCBaseModule.h>
#import <LCBaseModule/UIApplication+LeChange.h>
#import "DHNavBarPresenter.h"
#import <Masonry/Masonry.h>

@interface DHBaseTableViewController ()<IDHContentVC>

@property (strong, nonatomic)DHNavBarPresenter *navBarPresenter;

@end

@implementation DHBaseTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor dhcolor_c7];
    self.tableView.separatorColor = [UIColor dhcolor_c8];
    self.extendedLayoutIncludesOpaqueBars = NO;
    self.edgesForExtendedLayout = UIRectEdgeBottom | UIRectEdgeLeft | UIRectEdgeRight;
    [self.navBarPresenter viewDidLoad];
    UIImageView * bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"common_listbg"]];
    [self.view addSubview:bgImageView];
    [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(self.view);
    }];
}

- (void)onLeftNaviItemClick:(UIButton *)button {
    [self.navigationController popViewControllerAnimated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - 懒加载

- (DHNavBarPresenter *)navBarPresenter{
    if (_navBarPresenter == nil) {
        _navBarPresenter = [DHNavBarPresenter new];
        _navBarPresenter.viewController = self;
    }
    return _navBarPresenter;
}



#pragma mark - View lifecycle
- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSString* cName = [NSString stringWithFormat:@"%@", [self class], nil];
    NSLog(@"viewDidAppear------%@------", cName);
    
    [self.navBarPresenter viewDidAppear];
}

- (void) viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    
    NSString *cName = [NSString stringWithFormat:@"%@", [self class], nil];
    NSLog(@"viewDidDisappear------%@------", cName);
    
    if ([UIApplication lc_isAppLandscape]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    } else {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
}

#pragma mark - presentViewController
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
    [[UIApplication sharedApplication].delegate.window dh_popViewDismiss];
    viewControllerToPresent.modalPresentationStyle = UIModalPresentationFullScreen;
    [super presentViewController:viewControllerToPresent animated:flag completion:completion];
}

#pragma mark - Rotate
- (BOOL)shouldAutorotate {
    return YES;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}


#pragma mark - IDHContentVC


- (UINavigationBar *)navBar {
    return self.navBarPresenter.customNavigationBar;
}

#pragma mark - 导航栏相关
//为了兼容旧的代码的写法
- (UINavigationItem *)navigationItem {
    if ([self.parentViewController isKindOfClass:[DHContainerVC class]]) {
        return self.navBarPresenter.customNavigationItem;
    }
    return super.navigationItem;
}

- (UINavigationItem *)superNavigationItem {
    return super.navigationItem;
}

- (void)setTitle:(NSString *)title {
    [super setTitle:title];
    self.navBarPresenter.customNavigationItem.title = title;
}

- (void)setNavigationBarHidden:(BOOL)navigationBarHidden {
    self.navBarPresenter.navigationBarHidden = navigationBarHidden;
}

- (void)setNavigationBarHidden:(BOOL)navigationBarHidden animated:(BOOL)animated {
    [self.navBarPresenter setNavigationBarHidden:navigationBarHidden animated:animated];
}

- (BOOL)navigationBarHidden {
    return self.navBarPresenter.navigationBarHidden;
}

- (void)setIsBarShadowHidden:(BOOL)isBarShadowHidden {
    self.navBarPresenter.isBarShadowHidden = isBarShadowHidden;
}

- (BOOL)isBarShadowHidden {
    return self.navBarPresenter.isBarShadowHidden;
}

@end