//
//  JDStatusBarStyle.m
//  JDStatusBarNotificationExample
//
//  Created by Markus on 04.12.13.
//  Copyright (c) 2013 Markus. All rights reserved.
//

#import "JDStatusBarStyle.h"

NSString *const JDStatusBarStyleError   = @"JDStatusBarStyleError";
NSString *const JDStatusBarStyleWarning = @"JDStatusBarStyleWarning";
NSString *const JDStatusBarStyleSuccess = @"JDStatusBarStyleSuccess";
NSString *const JDStatusBarStyleMatrix  = @"JDStatusBarStyleMatrix";
NSString *const JDStatusBarStyleDefault = @"JDStatusBarStyleDefault";
NSString *const JDStatusBarStyleDark    = @"JDStatusBarStyleDark";

@implementation JDStatusBarStyle

- (instancetype)copyWithZone:(NSZone*)zone;
{
  JDStatusBarStyle *style = [[[self class] allocWithZone:zone] init];
  style.barColor = self.barColor;
  style.textColor = self.textColor;
  style.textShadow = self.textShadow;
  style.font = self.font;
  style.textVerticalPositionAdjustment = self.textVerticalPositionAdjustment;
  style.animationType = self.animationType;
  style.progressBarColor = self.progressBarColor;
  style.progressBarHeight = self.progressBarHeight;
  style.progressBarPosition = self.progressBarPosition;
  return style;
}

+ (NSArray*)allDefaultStyleIdentifier;
{
  return @[JDStatusBarStyleError, JDStatusBarStyleWarning,
           JDStatusBarStyleSuccess, JDStatusBarStyleMatrix,
           JDStatusBarStyleDark];
}

+ (JDStatusBarStyle*)defaultStyleWithName:(NSString*)styleName;
{
  // setup default style
  JDStatusBarStyle *style = [[JDStatusBarStyle alloc] init];
  style.barColor = [UIColor whiteColor];
  style.progressBarColor = [UIColor greenColor];
  style.progressBarHeight = 1.0;
  style.progressBarPosition = JDStatusBarProgressBarPositionBottom;
  style.textColor = [UIColor grayColor];
  style.font = [UIFont systemFontOfSize:12.0];
  style.animationType = JDStatusBarAnimationTypeMove;

  // JDStatusBarStyleDefault
  if ([styleName isEqualToString:JDStatusBarStyleDefault]) {
    return style;
  }

  // JDStatusBarStyleError
  else if ([styleName isEqualToString:JDStatusBarStyleError]) {
    style.barColor = [UIColor colorWithRed:0.588 green:0.118 blue:0.000 alpha:1.000];
    style.textColor = [UIColor whiteColor];
    style.progressBarColor = [UIColor redColor];
    style.progressBarHeight = 2.0;
    return style;
  }

  // JDStatusBarStyleWarning
  else if ([styleName isEqualToString:JDStatusBarStyleWarning]) {
    style.barColor = [UIColor colorWithRed:0.900 green:0.734 blue:0.034 alpha:1.000];
    style.textColor = [UIColor darkGrayColor];
    style.progressBarColor = style.textColor;
    return style;
  }

  // JDStatusBarStyleSuccess
  else if ([styleName isEqualToString:JDStatusBarStyleSuccess]) {
    style.barColor = [UIColor colorWithRed:0.588 green:0.797 blue:0.000 alpha:1.000];
    style.textColor = [UIColor whiteColor];
    style.progressBarColor = [UIColor colorWithRed:0.106 green:0.594 blue:0.319 alpha:1.000];
    style.progressBarHeight = 1.0+1.0/[[UIScreen mainScreen] scale];
    return style;
  }

  // JDStatusBarStyleDark
  else if ([styleName isEqualToString:JDStatusBarStyleDark]) {
    style.barColor = [UIColor colorWithRed:0.050 green:0.078 blue:0.120 alpha:1.000];
    style.textColor = [UIColor colorWithWhite:0.95 alpha:1.0];
    style.progressBarHeight = 1.0+1.0/[[UIScreen mainScreen] scale];
    return style;
  }

  // JDStatusBarStyleMatrix
  else if ([styleName isEqualToString:JDStatusBarStyleMatrix]) {
    style.barColor = [UIColor blackColor];
    style.textColor = [UIColor greenColor];
    style.font = [UIFont fontWithName:@"Courier-Bold" size:14.0];
    style.progressBarColor = [UIColor greenColor];
    style.progressBarHeight = 2.0;
    return style;
  }

  return nil;
}

@end
