//
//  KBPermissionViewController.m
//  CustomKeyboard
//
//  Created by Mac on 2025/10/27.
//

#import "KBPermissionViewController.h"

@interface KBPermissionViewController ()
@property (nonatomic, strong) UILabel *titleLabel;    // 标题
@property (nonatomic, strong) UILabel *tipsLabel;     // 步骤提示
@property (nonatomic, strong) UIView *cardView;       // 中部卡片
@property (nonatomic, strong) UIButton *openButton;   // 去设置
@property (nonatomic, strong) UILabel *helpLabel;     // 底部帮助
@end

@implementation KBPermissionViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithWhite:0.96 alpha:1.0];

    // 懒加载控件 + 添加到视图
    [self.view addSubview:self.backButton];
    [self.view addSubview:self.titleLabel];
    [self.view addSubview:self.tipsLabel];
    [self.view addSubview:self.cardView];
    [self.view addSubview:self.openButton];
    [self.view addSubview:self.helpLabel];

    // Masonry 约束
    [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view).offset(16);
            make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(8);
     
        make.width.mas_equalTo(60);
        make.height.mas_equalTo(32);
    }];

    [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(48);
     
        make.left.equalTo(self.view).offset(24);
        make.right.equalTo(self.view).offset(-24);
        make.height.mas_equalTo(28);
    }];

    [self.tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.titleLabel.mas_bottom).offset(8);
        make.left.equalTo(self.view).offset(24);
        make.right.equalTo(self.view).offset(-24);
    }];

    [self.cardView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.tipsLabel.mas_bottom).offset(28);
        make.left.equalTo(self.view).offset(32);
        make.right.equalTo(self.view).offset(-32);
        make.height.mas_equalTo(260);
    }];

    [self.openButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.cardView.mas_bottom).offset(32);
        make.left.equalTo(self.view).offset(32);
        make.right.equalTo(self.view).offset(-32);
        make.height.mas_equalTo(48);
    }];

    [self.helpLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.openButton.mas_bottom).offset(12);
        make.left.equalTo(self.view).offset(24);
        make.right.equalTo(self.view).offset(-24);
    }];
}

#pragma mark - Actions

- (void)onBack {
    // 支持两种展示方式：
    // 1) 作为子控制器嵌入（无 presentingViewController）→ 交由回调让父 VC 处理（通常 pop）
    // 2) 作为模态弹出 → 按原策略先 pop 再 dismiss
    UIViewController *presenter = self.presentingViewController;
    if (!presenter) {
        if (self.backHandler) self.backHandler();
        return;
    }

    UINavigationController *nav = nil;
    if ([presenter isKindOfClass:UINavigationController.class]) {
        nav = (UINavigationController *)presenter;
    } else if (presenter.navigationController) {
        nav = presenter.navigationController;
    }

    if (nav) {
        [nav popViewControllerAnimated:NO];
        [nav dismissViewControllerAnimated:YES completion:^{ if (self.backHandler) self.backHandler(); }];
    } else {
        [self dismissViewControllerAnimated:YES completion:^{ if (self.backHandler) self.backHandler(); }];
    }
}

- (void)openSettings {
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    UIApplication *app = [UIApplication sharedApplication];
    if ([app canOpenURL:url]) {
        if (@available(iOS 10.0, *)) {
            [app openURL:url options:@{} completionHandler:nil];
        } else {
            [app openURL:url];
        }
    }
}

#pragma mark - Lazy Subviews

- (UIButton *)backButton {
    if (!_backButton) {
        _backButton = [UIButton buttonWithType:UIButtonTypeSystem];
        [_backButton setTitle:KBLocalized(@"common_back") forState:UIControlStateNormal];
        _backButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
        [_backButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal];
        [_backButton addTarget:self action:@selector(onBack) forControlEvents:UIControlEventTouchUpInside];
    }
    return _backButton;
}

- (UILabel *)titleLabel {
    if (!_titleLabel) {
        _titleLabel = [UILabel new];
        _titleLabel.text = KBLocalized(@"perm_title_enable");
        _titleLabel.font = [UIFont systemFontOfSize:22 weight:UIFontWeightSemibold];
        _titleLabel.textColor = [UIColor blackColor];
        _titleLabel.textAlignment = NSTextAlignmentCenter;
    }
    return _titleLabel;
}

- (UILabel *)tipsLabel {
    if (!_tipsLabel) {
        _tipsLabel = [UILabel new];
        _tipsLabel.text = KBLocalized(@"perm_steps");
        _tipsLabel.font = [UIFont systemFontOfSize:14];
        _tipsLabel.textColor = [UIColor darkGrayColor];
        _tipsLabel.textAlignment = NSTextAlignmentCenter;
    }
    return _tipsLabel;
}

- (UIView *)cardView {
    if (!_cardView) {
        _cardView = [UIView new];
        _cardView.backgroundColor = [UIColor whiteColor];
        _cardView.layer.cornerRadius = 16;
        _cardView.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.1].CGColor;
        _cardView.layer.shadowOpacity = 1;
        _cardView.layer.shadowRadius = 12;
    }
    return _cardView;
}

- (UIButton *)openButton {
    if (!_openButton) {
        _openButton = [UIButton buttonWithType:UIButtonTypeSystem];
        [_openButton setTitle:KBLocalized(@"perm_open_settings") forState:UIControlStateNormal];
        _openButton.titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightSemibold];
        [_openButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        _openButton.backgroundColor = [UIColor colorWithRed:0.22 green:0.49 blue:0.96 alpha:1.0];
        _openButton.layer.cornerRadius = 8;
        [_openButton addTarget:self action:@selector(openSettings) forControlEvents:UIControlEventTouchUpInside];
    }
    return _openButton;
}

- (UILabel *)helpLabel {
    if (!_helpLabel) {
        _helpLabel = [UILabel new];
        _helpLabel.text = KBLocalized(@"perm_help");
        _helpLabel.font = [UIFont systemFontOfSize:12];
        _helpLabel.textColor = [UIColor grayColor];
        _helpLabel.textAlignment = NSTextAlignmentCenter;
        _helpLabel.numberOfLines = 2;
    }
    return _helpLabel;
}

@end
