// // CLRatingCellView.m // Clocker // // Created by Abhishek Banthia on 12/11/15. // // #import "CLRatingCellView.h" #import "iRate.h" #import #import "PanelController.h" @implementation CLRatingCellView NSString *const CLNotReallyButtonTitle = @"Not Really"; NSString *const CLFeedbackString = @"Mind giving feedback?"; NSString *const CLNoThanksTitle = @"No, thanks"; NSString *const CLYesWithQuestionMark = @"Yes?"; NSString *const CLYesWithExclamation = @"Yes!"; - (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; // Drawing code here. } - (IBAction)actionOnNegativeFeedback:(id)sender { NSButton *leftButton = (NSButton *)sender; if ([leftButton.title isEqualToString:CLNotReallyButtonTitle]) { [self setAnimatedStringValue:CLFeedbackString andTextField:self.leftField withLeftButtonTitle:CLNoThanksTitle andRightButtonTitle:CLYesWithQuestionMark]; } else { //Make the row disappear and call remind later PanelController *panelRef = [PanelController getPanelControllerInstance]; panelRef.showReviewCell = NO; [panelRef updateDefaultPreferences]; [panelRef closePanel]; [[iRate sharedInstance] remindLater]; } } - (IBAction)actionOnPositiveFeedback:(id)sender { NSButton *rightButton = (NSButton *)sender; if ([rightButton.title isEqualToString:CLYesWithExclamation]) { [self setAnimatedStringValue:@"Mind rating us?" andTextField:self.leftField withLeftButtonTitle:CLNoThanksTitle andRightButtonTitle:@"Yes"]; } else if ([rightButton.title isEqualToString:CLYesWithQuestionMark]) { [self updateMainTableView]; self.feedbackWindow = [CLAppFeedbackWindowController sharedWindow]; [self.feedbackWindow showWindow:nil]; [NSApp activateIgnoringOtherApps:YES]; } else { [[iRate sharedInstance] rate]; [self updateMainTableView]; } } - (void)updateMainTableView { PanelController *panelRef = [PanelController getPanelControllerInstance]; panelRef.showReviewCell = NO; [panelRef updateDefaultPreferences]; } - (void) setAnimatedStringValue:(NSString *)aString andTextField:(NSTextField *)textfield withLeftButtonTitle:(NSString *)leftTitle andRightButtonTitle:(NSString *)rightTitle { if ([textfield.stringValue isEqual: aString]) { return; } [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) { context.duration = 1.0; context.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut]; (self.imageView.animator).alphaValue = 0.0; (self.leftButton.animator).alphaValue = 0.0; (self.rightButton.animator).alphaValue = 0.0; (textfield.animator).alphaValue = 0.0; } completionHandler:^{ textfield.stringValue = aString; [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) { context.duration = 1.0; context.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseIn]; (self.imageView.animator).alphaValue = 1.0; (textfield.animator).alphaValue = 1.0; (self.leftButton.animator).alphaValue = 1.0; (self.rightButton.animator).alphaValue = 1.0; if ([self.leftButton.title isEqualToString:@"Not Really"]) { (self.leftButton.animator).title = CLNoThanksTitle; } if ([self.rightButton.title isEqualToString:CLYesWithExclamation]) { (self.rightButton.animator).title = @"Yes, sure"; } (self.leftButton.animator).title = leftTitle; (self.rightButton.animator).title = rightTitle; } completionHandler: ^{ }]; }]; } @end