//
//  KMPurchaseCompareDMGWindowController.m
//  Cisdem PDFMaster
//
//  Created by 王帅 on 2018/5/8.
//

#import "KMPurchaseCompareDMGWindowController.h"
#import <PDF_Reader_Pro-Swift.h>

//#import "HyperLinkButton.h"

#import "KMVerificationWindowController.h"
//#import "KMPurchaseCompareWindowController.h"
#import "VerificationManager.h"
//#import "GAIManager.h"
//#import "NSImage_SKExtensions.h"
//#import "KMButton.h"
//#import "KMBox.h"
//#import "SKInspectPublicTool.h"
//#import "FMTrackEventManager.h"
//#import "NSFont+Custom.h"
//#import "KMToolbarItemPopViewController.h"
//#import "KMRecommondManager.h"

static NSString *const KMPurchaseCompareDMGHeaderCellIdentifier = @"KMPurchaseCompareDMGHeaderCell";
static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCompareDMGCell";

#pragma mark - KMPurchaseCompareDMGHeaderCell

@interface KMPurchaseCompareDMGHeaderCell : NSTableCellView

@property (nonatomic,assign) IBOutlet NSView *contentView;

@end

@implementation KMPurchaseCompareDMGHeaderCell

- (void)dealloc {
    [NSDistributedNotificationCenter.defaultCenter removeObserver:self];
}

- (void)awakeFromNib {
    [super awakeFromNib];
    
    self.contentView.wantsLayer = YES;

    [self updateViewColor];

    [NSDistributedNotificationCenter.defaultCenter addObserver:self selector:@selector(themeChanged:) name:@"AppleInterfaceThemeChangedNotification" object: nil];
}

- (void)themeChanged:(NSNotification *)notification {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self updateViewColor];
    });
}

- (void)updateViewColor {
    NSColor *textColor = [NSColor colorWithDeviceRed:51.0/255.0 green:51.0/255.0 blue:51.0/255.0 alpha:1.0];
    NSColor *viewColor = [NSColor colorWithDeviceRed:55.0/255.0 green:57.0/255.0 blue:59.0/255.0 alpha:0.06];
    
    if (@available(macOS 10.14, *)) {
        NSAppearanceName appearanceName = [[NSApp effectiveAppearance] bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]];
        if ([appearanceName isEqualToString:NSAppearanceNameDarkAqua]) {
            textColor = [NSColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.87];
            viewColor = [NSColor colorWithRed:52.0/255.0 green:53.0/255.0 blue:56.0/255.0 alpha:1.0];
        }
    }
    
    self.contentView.layer.backgroundColor = viewColor.CGColor;
    self.textField.textColor = textColor;
    self.textField.font = [NSFont boldSystemFontOfSize:14.0];
}

@end

#pragma mark - KMPurchaseCompareDMGCell

@interface KMPurchaseCompareDMGCell : NSTableCellView

@property (nonatomic,assign) IBOutlet NSTextField *value1Label;
@property (nonatomic,assign) IBOutlet NSTextField *value2Label;
@property (nonatomic,assign) IBOutlet NSImageView *value1ImageView;
@property (nonatomic,assign) IBOutlet NSImageView *value2ImageView;

@property (nonatomic,assign) IBOutlet NSBox *lineBox;

@end

@implementation KMPurchaseCompareDMGCell

- (void)dealloc {
    [NSDistributedNotificationCenter.defaultCenter removeObserver:self];
}

- (void)awakeFromNib {
    [super awakeFromNib];
    [self updateViewColor];
    [NSDistributedNotificationCenter.defaultCenter addObserver:self selector:@selector(themeChanged:) name:@"AppleInterfaceThemeChangedNotification" object: nil];
}

- (void)themeChanged:(NSNotification *)notification {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self updateViewColor];
    });
}

- (void)updateViewColor {
    NSColor *textColor = [NSColor colorWithRed:102.0/255.0 green:102.0/255.0 blue:102.0/255.0 alpha:0.85];
    NSColor *lineColor = [NSColor colorWithRed:204.0/255.0 green:204.0/255.0 blue:204.0/255.0 alpha:0.4];
    
    if (@available(macOS 10.14, *)) {
        NSAppearanceName appearanceName = [[NSApp effectiveAppearance] bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]];
        if ([appearanceName isEqualToString:NSAppearanceNameDarkAqua]) {
            textColor = [NSColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.6];
            lineColor = [NSColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:0.4];
        }
    }
    self.value1Label.textColor = self.value2Label.textColor =  textColor;
    self.lineBox.fillColor = lineColor;
    self.textField.textColor = textColor;
}

@end

#pragma mark - KMPurchaseCompareDMGWindowController

@interface KMPurchaseCompareDMGWindowController ()

@property (nonatomic, assign) IBOutlet NSTextField *titleLabel;
@property (assign) IBOutlet HyperLinkButton *enterLicenseButton;

@property (assign) IBOutlet NSView *freeContendView;

@property (assign) IBOutlet NSView *freeVersionBGView;
@property (assign) IBOutlet NSTextField *freeVersionLbl;
@property (assign) IBOutlet NSView *freeVersionLineView;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl1;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl2;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl3;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl4;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl5;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl6;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl7;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl8;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl9;

@property (assign) IBOutlet NSView *parmanentVerBGView;
@property (assign) IBOutlet NSTextField *parmanentVerLbl;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl1;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl2;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl3;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl4;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl5;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl6;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl7;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl8;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl9;
@property (assign) IBOutlet KMButton *parmanentVerInfoBtn2;
@property (assign) IBOutlet NSImageView *parmanentVerinfoimg2;
@property (assign) IBOutlet NSView *parmanentInfoView;

@property (assign) IBOutlet NSImageView *discountTipImage;

@property (assign) IBOutlet NSTextField *oneTimeTipLbl;

@property (assign) IBOutlet NSBox *freeTrialBox;
@property (assign) IBOutlet KMButton *freeTrialButton;

@property (assign) IBOutlet NSBox *buyNowBox;
@property (assign) IBOutlet KMButton *buyNowButton;

@property (assign) IBOutlet NSView *aiContendView;
@property (assign) IBOutlet NSView *aiSepLineView;
@property (assign) IBOutlet NSTextField *aiTitleLabel;
@property (assign) IBOutlet NSTextField *aiInfoLbl1;
@property (assign) IBOutlet NSTextField *aiInfoLbl2;
@property (assign) IBOutlet NSTextField *aiInfoLbl3;
@property (assign) IBOutlet NSTextField *aiInfoLbl4;
@property (assign) IBOutlet NSTextField *aiPurchaseLabel;
@property (assign) IBOutlet KMButton *aiPurchaseButton;

@property (nonatomic, assign) NSModalSession modalSession;
@property (nonatomic, retain) NSArray *dataSource;
@property (nonatomic, retain) NSPopover *popOver;

@end

@implementation KMPurchaseCompareDMGWindowController

#pragma mark Init Methods

- (id)init {
    if (self = [super initWithWindowNibName:@"KMPurchaseCompareDMGWindowController"]) {

    }
    return self;
}

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [NSDistributedNotificationCenter.defaultCenter removeObserver:self];
    
}

- (void)windowDidLoad {
    [super windowDidLoad];
    
    self.window.movableByWindowBackground = YES;
    self.window.backgroundColor = [NSColor whiteColor];
    
    __block typeof(self) blockSelf = self;
    
    [self.freeVersionInfoLbl2 setEnabled:YES];
    
    self.freeVersionLineView.wantsLayer = YES;
    
    self.freeVersionLbl.stringValue = NSLocalizedString(@"Free Version", nil);
    self.parmanentVerLbl.stringValue = NSLocalizedString(@"Permanent License", nil);
    
    self.freeVersionInfoLbl1.stringValue =  self.parmanentVerInfoLbl1.stringValue = NSLocalizedString(@"View PDFs", nil);
    self.freeVersionInfoLbl2.stringValue = NSLocalizedString(@"Annotate PDFs (basic)", nil);
    self.parmanentVerInfoLbl2.stringValue = NSLocalizedString(@"Annotate PDFs (advanced)", nil);
    self.freeVersionInfoLbl3.stringValue = self.parmanentVerInfoLbl3.stringValue = NSLocalizedString(@"Unlimited file conversion", nil);
    self.freeVersionInfoLbl4.stringValue = self.parmanentVerInfoLbl4.stringValue = NSLocalizedString(@"Edit PDF text and images", nil);
    self.freeVersionInfoLbl5.stringValue = self.parmanentVerInfoLbl5.stringValue = NSLocalizedString(@"Digital signature", nil);
    self.freeVersionInfoLbl6.stringValue = self.parmanentVerInfoLbl6.stringValue = NSLocalizedString(@"Organize pages", nil);
    self.freeVersionInfoLbl7.stringValue = self.parmanentVerInfoLbl7.stringValue = NSLocalizedString(@"Batch process", nil);
    self.freeVersionInfoLbl8.stringValue = self.parmanentVerInfoLbl8.stringValue = NSLocalizedString(@"OCR PDFs", nil);
    self.freeVersionInfoLbl9.stringValue = self.parmanentVerInfoLbl9.stringValue = NSLocalizedString(@"Ad-free", nil);

//    self.parmanentVerinfoimg2.toolTip = NSLocalizedString(@"Support insert links and custom stamps", nil);
    self.parmanentVerInfoBtn2.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            KMToolbarItemPopViewController *popViewController = [[KMToolbarItemPopViewController alloc] init];
            self.popOver = [[NSPopover alloc] init];
            self.popOver.contentViewController = popViewController;
            self.popOver.animates = NO;
            self.popOver.behavior = NSPopoverBehaviorSemitransient;
            
            self.popOver.contentSize = popViewController.view.frame.size;
            [popViewController updateWithHelpTipWithHelpTip:NSLocalizedString(@"Support insert links and custom stamps", nil)];
            [self.popOver showRelativeToRect:self.parmanentVerInfoBtn2.frame ofView:self.parmanentInfoView preferredEdge:NSRectEdgeMaxY];
//            self.parmanentVerinfoimg2.image = [NSImage imageNamed:@"ic_Tooltip_hover"];
        } else {
            [self.popOver close];
//            self.parmanentVerinfoimg2.image = [NSImage imageNamed:@"ic_Tooltip"];
        }
    };
    
    
    
    self.oneTimeTipLbl.stringValue = NSLocalizedString(@"one-time purchase", nil);
    self.enterLicenseButton.title = NSLocalizedString(@"Enter License", nil);
    [self.enterLicenseButton setTitleColor:[KMAppearance KMColor_Layout_W0]];
    self.enterLicenseButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            [blockSelf.enterLicenseButton setTitleColor:[KMAppearance KMColor_Layout_W70]];
        } else {
            [blockSelf.enterLicenseButton setTitleColor:[KMAppearance KMColor_Layout_W0]];
        }
    };
    
    self.titleLabel.font = [NSFont SFMediumFontWithSize:20];
    self.freeVersionLbl.font = [NSFont UbuntuBoldFontWithSize:24];
    self.parmanentVerLbl.font = [NSFont UbuntuBoldFontWithSize:24];
    self.freeVersionInfoLbl1.font =  self.parmanentVerInfoLbl1.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl2.font = [NSFont SFProTextRegularFont:14.];
    self.parmanentVerInfoLbl2.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl3.font = self.parmanentVerInfoLbl3.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl4.font = self.parmanentVerInfoLbl4.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl5.font = self.parmanentVerInfoLbl5.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl6.font = self.parmanentVerInfoLbl6.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl7.font = self.parmanentVerInfoLbl7.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl8.font = self.parmanentVerInfoLbl8.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl9.font = self.parmanentVerInfoLbl9.font = [NSFont SFProTextRegularFont:14.];
    self.buyNowButton.font = [NSFont UbuntuMediumFontWithSize:16];
    self.freeTrialButton.font = [NSFont UbuntuMediumFontWithSize:16];
    
    
    self.freeContendView.wantsLayer = YES;
    self.freeContendView.layer.cornerRadius = 12;
    self.freeContendView.layer.masksToBounds = YES;
    
    self.parmanentVerBGView.wantsLayer = YES;
    self.parmanentVerBGView.layer.cornerRadius = 12;
    self.parmanentVerBGView.layer.masksToBounds = YES;
    
    self.buyNowBox.wantsLayer = YES;
    self.buyNowBox.fillColor = [NSColor colorWithRed:255/255. green:94/255. blue:44/255. alpha:1.];
    self.buyNowBox.cornerRadius = CGRectGetHeight(self.buyNowBox.frame)/2.;
    self.buyNowBox.layer.masksToBounds = YES;
    
    self.buyNowButton.wantsLayer = YES;
    self.buyNowButton.layer.cornerRadius = 1.0;
    self.buyNowButton.title = NSLocalizedString(@"Buy Now", nil);
    self.buyNowButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            blockSelf.buyNowButton.layer.backgroundColor = [[NSColor blackColor] colorWithAlphaComponent:0.15].CGColor;
        } else {
            blockSelf.buyNowButton.layer.backgroundColor = [NSColor clearColor].CGColor;
        }
    };
    
    self.freeTrialBox.cornerRadius = CGRectGetHeight(self.freeTrialBox.frame)/2.;
    self.freeTrialBox.borderWidth = 1.;
    
    self.freeTrialButton.target = self;
    self.freeTrialButton.action = @selector(buttonItemClicked_License:);
    self.freeTrialButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if ([KMAppearance isDarkMode]) {
            if (mouseEntered) {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:179/255. green:159/255. blue:1 alpha:0.2];
            } else {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:179/255. green:159/255. blue:1 alpha:0.07];
            }
        } else {
            if (mouseEntered) {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:85/255. green:40/255. blue:1 alpha:0.15];
            } else {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:85/255. green:40/255. blue:1 alpha:0.07];
            }
        }
    };
    self.discountTipImage.hidden = YES;
    
    self.aiSepLineView.wantsLayer = YES;
    self.aiInfoLbl1.font = self.aiInfoLbl2.font = self.aiInfoLbl3.font = self.aiInfoLbl4.font = [NSFont SFProTextRegularFont:14];
    self.aiPurchaseLabel.font = [NSFont UbuntuMediumFontWithSize:16];
    
    self.aiTitleLabel.stringValue = NSLocalizedString(@"AI Tools", nil);
    self.aiInfoLbl1.stringValue = NSLocalizedString(@"AI Summarize", nil);
    self.aiInfoLbl2.stringValue = NSLocalizedString(@"AI Rewrite", nil);
    self.aiInfoLbl3.stringValue = NSLocalizedString(@"AI Proofread", nil);
    self.aiInfoLbl4.stringValue = NSLocalizedString(@"AI Translate", nil);
    self.aiPurchaseLabel.stringValue = NSLocalizedString(@"Buy Now", nil);
    self.aiPurchaseButton.wantsLayer = YES;
    self.aiPurchaseButton.layer.cornerRadius = CGRectGetHeight(self.aiPurchaseButton.frame)/2.;
    self.aiPurchaseButton.layer.masksToBounds = YES;
    self.aiPurchaseButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            self.aiPurchaseButton.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.2].CGColor;
        } else {
            self.aiPurchaseButton.layer.backgroundColor = [NSColor clearColor].CGColor;
        }
    };
    
    [self updateViewColor];
    
    [self updatePurchaseInformation];
    
    [NSDistributedNotificationCenter.defaultCenter addObserver:self selector:@selector(themeChanged:) name:@"AppleInterfaceThemeChangedNotification" object: nil];
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recommondInfoUpdateNoti:) name:@"KMRecommondInfoUpdateNoti" object:nil];
}

#pragma mark - Private Methods
- (void)updateViewColor {
    
    if ([KMAppearance isDarkMode]) {
        self.freeContendView.layer.backgroundColor = [[NSColor blackColor] colorWithAlphaComponent:0.3].CGColor;
        self.freeVersionLineView.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.1].CGColor;
        self.aiSepLineView.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.1].CGColor;
        self.freeVersionLbl.textColor = [[NSColor whiteColor] colorWithAlphaComponent:0.5];
        self.freeTrialBox.fillColor = [NSColor colorWithRed:179/255. green:159/255. blue:1 alpha:0.07];
        self.freeTrialBox.borderColor = [NSColor colorWithRed:207/255. green:146/255. blue:1 alpha:1];
        
        self.freeVersionInfoLbl1.textColor = 
        self.freeVersionInfoLbl2.textColor =
        self.freeVersionInfoLbl3.textColor =
        self.freeVersionInfoLbl4.textColor =
        self.freeVersionInfoLbl5.textColor =
        self.freeVersionInfoLbl6.textColor =
        self.freeVersionInfoLbl7.textColor =
        self.freeVersionInfoLbl8.textColor = 
        self.freeVersionInfoLbl9.textColor = [NSColor whiteColor];
        
        self.parmanentVerInfoLbl1.textColor = 
        self.parmanentVerInfoLbl2.textColor =
        self.parmanentVerInfoLbl3.textColor =
        self.parmanentVerInfoLbl4.textColor =
        self.parmanentVerInfoLbl5.textColor =
        self.parmanentVerInfoLbl6.textColor =
        self.parmanentVerInfoLbl7.textColor = 
        self.parmanentVerInfoLbl8.textColor =
        self.parmanentVerInfoLbl9.textColor = [NSColor whiteColor];
        
        self.aiInfoLbl1.textColor = self.aiInfoLbl2.textColor = self.aiInfoLbl3.textColor = self.aiInfoLbl4.textColor = [NSColor whiteColor];
        self.aiPurchaseLabel.textColor = [NSColor whiteColor];
        
        self.aiTitleLabel.textColor = [NSColor colorWithRed:239/255. green:235/255. blue:255/255. alpha:1];
    } else {
        self.freeContendView.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.7].CGColor;
        self.freeVersionLineView.layer.backgroundColor = [NSColor colorWithRed:0 green:33/255. blue:67/255. alpha:0.1].CGColor;
        self.aiSepLineView.layer.backgroundColor = [NSColor colorWithRed:0 green:33/255. blue:67/255. alpha:0.1].CGColor;
        self.freeVersionLbl.textColor = [NSColor colorWithRed:129/255. green:125/255. blue:178/255. alpha:1.];

        self.freeTrialBox.fillColor = [NSColor colorWithRed:85/255. green:40/255. blue:1 alpha:0.07];
        self.freeTrialBox.borderColor = [NSColor colorWithRed:160/255. green:40/255. blue:1 alpha:1];
        
        self.freeVersionInfoLbl1.textColor = 
        self.freeVersionInfoLbl2.textColor =
        self.freeVersionInfoLbl3.textColor =
        self.freeVersionInfoLbl4.textColor =
        self.freeVersionInfoLbl5.textColor =
        self.freeVersionInfoLbl6.textColor =
        self.freeVersionInfoLbl7.textColor =
        self.freeVersionInfoLbl8.textColor =
        self.freeVersionInfoLbl9.textColor = [NSColor colorWithRed:20/255.0 green:0/255.0 blue:102/255.0 alpha:1];
        
        self.parmanentVerInfoLbl1.textColor = 
        self.parmanentVerInfoLbl2.textColor =
        self.parmanentVerInfoLbl3.textColor =
        self.parmanentVerInfoLbl4.textColor =
        self.parmanentVerInfoLbl5.textColor =
        self.parmanentVerInfoLbl6.textColor =
        self.parmanentVerInfoLbl7.textColor =
        self.parmanentVerInfoLbl8.textColor = 
        self.parmanentVerInfoLbl9.textColor = [NSColor whiteColor];
        
        self.aiInfoLbl1.textColor = self.aiInfoLbl2.textColor = self.aiInfoLbl3.textColor = self.aiInfoLbl4.textColor = [NSColor colorWithRed:20/255. green:0 blue:102/255. alpha:1];
        self.aiPurchaseLabel.textColor = [NSColor whiteColor];
        self.aiTitleLabel.textColor = [NSColor colorWithRed:20/255. green:0 blue:102/255. alpha:1];
    }
    
    self.parmanentVerLbl.textColor = [NSColor colorWithRed:255/255. green:94/255. blue:44/255. alpha:1.];
    self.oneTimeTipLbl.textColor = [NSColor colorWithRed:255/255. green:231/255. blue:106/255. alpha:1.];
    
    if ([KMAppearance isDarkMode]) {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:178/255. green:165/255. blue:1 alpha:1]];
    } else {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:160/255. green:40/255. blue:1 alpha:1]];
    }
}

- (void)updatePurchaseInformation {
    self.freeTrialBox.hidden = NO;
    self.titleLabel.stringValue = NSLocalizedString(@"Upgrade to Pro Version", nil);
    self.titleLabel.textColor = [NSColor whiteColor];
    
    [self.freeTrialButton setTitle:NSLocalizedString(@"7-day Free Trial", nil)];

    if (ActivityStatusVerification == [VerificationManager manager].status) {
        self.freeTrialBox.hidden = YES;
    } else if (ActivityStatusNone == [VerificationManager manager].status) {
        
    } else if (ActivityStatusTrialExpire == [VerificationManager manager].status) {
        self.freeTrialBox.hidden = YES;
        if ([VerificationManager manager].secondTrialEnabled) {
            self.freeTrialBox.hidden = NO;
        }
    } else {
        self.freeTrialBox.hidden = YES;
    }
    if ([KMAppearance isDarkMode]) {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:178/255. green:165/255. blue:1 alpha:1]];
    } else {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:160/255. green:40/255. blue:1 alpha:1]];
    }
    [self.buyNowButton setTitleColor:[NSColor whiteColor]];
    
    if (KMAdvertisementManager.manager.info.discountContent.content.count > 0) {
        KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.discountContent.content.firstObject;
        if ([KMAdvertisementManager checkAdvertisementValid:info]) {
            self.discountTipImage.hidden = NO;
            
            NSURL *url = [NSURL URLWithString:[KMAdvertisementModelTransition transitionImagePathWithImage:info.image highlight:NO]];
            self.discountTipImage.image = [KMAdvertisementImage imageWithURLWithUrl:url completion:^(NSImage * _Nonnull image) {
                self.discountTipImage.image = image;
            }];
        } else {
            self.discountTipImage.hidden = YES;
        }
    }
}

#pragma mark - Window Method
- (void)showWindow:(id)sender {
    [super showWindow:nil];
    
    [self.window center];
    [self.window orderFront:nil];
    
    [self updatePurchaseInformation];
}

- (BOOL)windowShouldClose:(id)sender {
    [self endModal:sender];
    return YES;
}

- (void)close {
    [super close];
    [self endModal:nil];
}

- (void)updateTitle:(NSString *)title andColor:(NSColor *)titleColor {
    self.titleLabel.stringValue = title ?:@"";
    self.titleLabel.textColor = titleColor ?:[NSColor labelColor];
    
}

#pragma mark - IBAction
- (IBAction)startModal:(id)sender {
    
    [NSApp stopModal];
    
    NSInteger modalCode;
    self.modalSession = [NSApp beginModalSessionForWindow:self.window];
    do {
        modalCode = [NSApp runModalSession:self.modalSession];
    } while (modalCode == NSRunContinuesResponse);
}

- (IBAction)endModal:(id)sender {
    if (self.modalSession) {
        [NSApp stopModal];
        [NSApp endModalSession:self.modalSession];
        [self.window orderOut:self];
        
        self.modalSession = nil;
    }
}

- (void)showWindowRestore:(id)sender {
    [self showWindow:sender];
}

- (IBAction)enterLicenseAction:(id)sender {
//    if (ActivityStatusNone == [VerificationManager manager].status) {
//        [self close];
//        KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeActivate];
//        vc.callback = ^{
//            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
//        };
//        [vc showWindow:nil];
//    } else if (ActivityStatusTrialExpire == [VerificationManager manager].status) {
//        if ([VerificationManager manager].secondTrialEnabled) {
//            [[FMTrackEventManager manager] trackEvent:@"Tbr" withProperties:@{@"Tbr_Btn":@"Btn_Tbr_SecondTrial"}];
//            [[VerificationManager manager] trialForDays:7
//                                                  email:[VerificationManager manager].email
//                                                   name:[VerificationManager manager].accountName
//                                            complention:^(ActivityStatus status, NSDictionary *info, NSError *error) {
//                if (error ||
//                    status != ActivityStatusTrial) {
//                    NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Activation Error", nil)
//                                                     defaultButton:NSLocalizedString(@"Try Again", nil)
//                                                   alternateButton:nil
//                                                       otherButton:nil
//                                         informativeTextWithFormat:NSLocalizedString(@"Failed to sign up for the free trial. Please make sure your internet connection is available and try again later.", nil), nil];
//                    [alert runModal];
//                } else {
//                    KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeRepeatTrialSuccess];
//                    [vc showWindow:nil];
//                }
//            }];
//            [self close];
//        } else {
//            [self close];
//            KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeActivate];
//            vc.callback = ^{
//                [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
//            };
//            [vc showWindow:nil];
//        }
//    } else {
        [self close];
        KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeActivate];
        vc.callback = ^{
            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
        };
        [vc showWindow:nil];
//    }

}

- (IBAction)buttonItemClicked_Buy:(id)sender {
#if VERSION_DMG
    NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
    NSArray* languages = [defs objectForKey:@"AppleLanguages"];
    NSString* preferredLang = [languages objectAtIndex:0];
    
    NSString *tStrUrl = @"https://www.cisdem.com/pdfmaster-mac/buy.html";
    if ([preferredLang hasPrefix:@"de"]) {
        tStrUrl = @"https://www.cisdem.com/de/pdfmaster-mac/buy.html";
    } else if ([preferredLang hasPrefix:@"fr"]) {
        tStrUrl = @"https://www.cisdem.com/fr/pdfmaster-mac/buy.html";
    } else if ([preferredLang hasPrefix:@"it"]) {
        tStrUrl = @"https://www.cisdem.com/it/pdfmaster-mac/buy.html";
    } else if ([preferredLang hasPrefix:@"es"]) {
        tStrUrl = @"https://www.cisdem.com/es/pdfmaster-mac/buy.html";
    } else if ([preferredLang hasPrefix:@"pt"]) {
        tStrUrl = @"https://www.cisdem.com/pt/pdfmaster-mac/buy.html";
    } else if ([preferredLang hasPrefix:@"ja"]) {
        tStrUrl = @"https://www.cisdem.com/jp/pdfmaster-mac/buy.html";
    }
    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:tStrUrl]];
    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_UpgradeBuyNow"}];
#endif
    
}

- (IBAction)buttonItemClicked_CloseWindow:(id)sender {
    [self close];
}

- (void)buttonItemClicked_License:(id)sender {
//    if (ActivityStatusNone == [VerificationManager manager].status) {
//        [self close];
//
//        KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeTrial];
//        [vc showWindow:nil];
//    } else if (ActivityStatusTrialExpire == [VerificationManager manager].status) {
        if ([VerificationManager manager].secondTrialEnabled) {
            [[FMTrackEventManager defaultManager] trackEventWithEvent:@"Tbr" withProperties:@{@"Tbr_Btn":@"Btn_Tbr_SecondTrial"}];
            [[VerificationManager manager] trialForDays:7
                                                  email:[VerificationManager manager].email
                                                   name:[VerificationManager manager].accountName
                                            complention:^(ActivityStatus status, NSDictionary *info, NSError *error) {
                if (error ||
                    status != ActivityStatusTrial) {
                    NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Activation Error", nil)
                                                     defaultButton:NSLocalizedString(@"Try Again", nil)
                                                   alternateButton:nil
                                                       otherButton:nil
                                         informativeTextWithFormat:NSLocalizedString(@"Failed to sign up for the free trial. Please make sure your internet connection is available and try again later.", nil), nil];
                    [alert runModal];
                } else {
                    KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeRepeatTrialSuccess];
                    [vc showWindow:nil];
                }
            }];
            [self close];
        } else {
            [self close];
            KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeTrial];
            vc.callback = ^{
                [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
            };
            [vc showWindow:nil];
        }
//    } else {
//        [self close];
//        KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeActivate];
//        vc.callback = ^{
//            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
//        };
//        [vc showWindow:nil];
//    }
}

- (IBAction)aiPurchaseButtonClick:(NSButton *)sender {
    NSURL *url = [NSURL URLWithString:kAIStoreServerLink];
    [[NSWorkspace sharedWorkspace] openURL:url];
    
    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_BuyAITools"}];
}

#pragma mark - Noti
- (void)themeChanged:(NSNotification *)notification {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self updateViewColor];
    });
}

- (void)recommondInfoUpdateNoti:(NSNotification *)noti {
    dispatch_async(dispatch_get_main_queue(), ^{
        if (KMAdvertisementManager.manager.info.discountContent.content.count > 0) {
            KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.discountContent.content.firstObject;
            if ([KMAdvertisementManager checkAdvertisementValid:info]) {
                self.discountTipImage.hidden = NO;
                self.discountTipImage.image = info.image;
            } else {
                self.discountTipImage.hidden = YES;
            }
        }
    });
}

@end