UIBarButtonItem+Theme.m 4.1 KB

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