UIBarButtonItem+Theme.m 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*****************************************************************************
  2. * UIBarButtonItem+Theme.m
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2013 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Authors: Felix Paul Kühne <fkuehne # videolan.org>
  9. * Romain Goyet <romain.goyet # applidium.com>
  10. * Fabio Ritrovato <sephiroth87 # videolan.org>
  11. *
  12. * Refer to the COPYING file of the official project for license.
  13. *****************************************************************************/
  14. #import "UIBarButtonItem+Theme.h"
  15. @implementation UIBarButtonItem (Theme)
  16. + (UIBarButtonItem *)themedDoneButtonWithTarget:(id)target andSelector:(SEL)selector
  17. {
  18. UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"BUTTON_DONE", @"")
  19. style:UIBarButtonItemStyleBordered
  20. target:target
  21. action:selector];
  22. if (SYSTEM_RUNS_IOS7_OR_LATER)
  23. doneButton.tintColor = [UIColor whiteColor];
  24. else {
  25. [doneButton setBackgroundImage:[UIImage imageNamed:@"doneButton"]
  26. forState:UIControlStateNormal
  27. barMetrics:UIBarMetricsDefault];
  28. [doneButton setBackgroundImage:[UIImage imageNamed:@"doneButtonHighlight"]
  29. forState:UIControlStateHighlighted
  30. barMetrics:UIBarMetricsDefault];
  31. [doneButton setTitleTextAttributes:@{UITextAttributeTextShadowColor : [UIColor whiteColor], UITextAttributeTextColor : [UIColor blackColor]}
  32. forState:UIControlStateNormal];
  33. }
  34. return doneButton;
  35. }
  36. + (UIBarButtonItem *)themedBackButtonWithTarget:(id)target andSelector:(SEL)selector
  37. {
  38. UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"BUTTON_BACK", @"")
  39. style:UIBarButtonItemStyleBordered
  40. target:target
  41. action:selector];
  42. if (SYSTEM_RUNS_IOS7_OR_LATER)
  43. backButton.tintColor = [UIColor whiteColor];
  44. else {
  45. [backButton setBackgroundImage:[[UIImage imageNamed:@"backButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 6)]
  46. forState:UIControlStateNormal
  47. barMetrics:UIBarMetricsDefault];
  48. [backButton setBackgroundImage:[[UIImage imageNamed:@"backButtonHighlight"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 6)]
  49. forState:UIControlStateHighlighted
  50. barMetrics:UIBarMetricsDefault];
  51. }
  52. [backButton setTitleTextAttributes:@{UITextAttributeTextShadowColor : [UIColor colorWithWhite:0. alpha:.37], UITextAttributeTextColor : [UIColor whiteColor]} forState:UIControlStateNormal];
  53. [backButton setTitlePositionAdjustment:UIOffsetMake(3, 0) forBarMetrics:UIBarMetricsDefault];
  54. return backButton;
  55. }
  56. + (UIBarButtonItem *)themedRevealMenuButtonWithTarget:(id)target andSelector:(SEL)selector
  57. {
  58. /* After day 354 of the year, the usual VLC cone is replaced by another cone
  59. * wearing a Father Xmas hat.
  60. * Note: this icon doesn't represent an endorsement of The Coca-Cola Company
  61. * and should not be confused with the idea of religious statements or propagation there off
  62. */
  63. NSCalendar *gregorian =
  64. [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
  65. NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:[NSDate date]];
  66. UIImage *icon;
  67. if (dayOfYear >= 354)
  68. icon = [UIImage imageNamed:@"vlc-xmas"];
  69. else
  70. icon = [UIImage imageNamed:@"menuCone"];
  71. UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:icon style:UIBarButtonItemStyleBordered target:target action:selector];
  72. if (SYSTEM_RUNS_IOS7_OR_LATER)
  73. menuButton.tintColor = [UIColor whiteColor];
  74. else {
  75. [menuButton setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
  76. [menuButton setBackgroundImage:[UIImage imageNamed:@"buttonHighlight"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
  77. }
  78. menuButton.accessibilityLabel = NSLocalizedString(@"OPEN_VLC_MENU", @"");
  79. menuButton.isAccessibilityElement = YES;
  80. return menuButton;
  81. }
  82. + (UIBarButtonItem *)themedDarkToolbarButtonWithTitle:(NSString*)title target:(id)target andSelector:(SEL)selector
  83. {
  84. UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:title style:UIBarButtonItemStyleBordered target:target action:selector];
  85. if (SYSTEM_RUNS_IOS7_OR_LATER)
  86. button.tintColor = [UIColor whiteColor];
  87. else {
  88. [button setBackgroundImage:[[UIImage imageNamed:@"darkButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
  89. [button setBackgroundImage:[[UIImage imageNamed:@"darkButtonHighlight"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
  90. }
  91. return button;
  92. }
  93. @end