VLCMultiSelectionMenuView.m 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. //
  2. // VLCMultiSelectionMenuView.m
  3. // VLC for iOS
  4. //
  5. // Created by Felix Paul Kühne on 09/03/15.
  6. // Copyright (c) 2015 VideoLAN. All rights reserved.
  7. //
  8. #import "VLCMultiSelectionMenuView.h"
  9. #define buttonWidth 32.
  10. #define buttonHeight 35.
  11. #define spacer 8.
  12. @interface VLCMultiSelectionMenuView ()
  13. {
  14. UIButton *_equalizerButton;
  15. UIButton *_chapterSelectorButton;
  16. UIButton *_repeatButton;
  17. UIButton *_lockButton;
  18. UIButton *_shuffleButton;
  19. BOOL _showsEQ;
  20. }
  21. @end
  22. @implementation VLCMultiSelectionMenuView
  23. - (instancetype)init
  24. {
  25. self = [super initWithFrame:CGRectMake(0., 0., buttonWidth, buttonHeight)];
  26. if (self) {
  27. _equalizerButton = [UIButton buttonWithType:UIButtonTypeCustom];
  28. [_equalizerButton setImage:[UIImage imageNamed:@"equalizerIcon"] forState:UIControlStateNormal];
  29. _equalizerButton.titleLabel.textColor = [UIColor whiteColor];
  30. _equalizerButton.frame = CGRectMake(spacer, spacer, buttonWidth, buttonHeight);
  31. [_equalizerButton addTarget:self action:@selector(equalizerAction:) forControlEvents:UIControlEventTouchUpInside];
  32. _equalizerButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  33. [self addSubview:_equalizerButton];
  34. _chapterSelectorButton = [UIButton buttonWithType:UIButtonTypeCustom];
  35. [_chapterSelectorButton setImage:[UIImage imageNamed:@"chaptersIcon"] forState:UIControlStateNormal];
  36. _chapterSelectorButton.titleLabel.textColor = [UIColor whiteColor];
  37. _chapterSelectorButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
  38. [_chapterSelectorButton addTarget:self action:@selector(chapterSelectorAction:) forControlEvents:UIControlEventTouchUpInside];
  39. _chapterSelectorButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  40. [self addSubview:_chapterSelectorButton];
  41. _repeatButton = [UIButton buttonWithType:UIButtonTypeCustom];
  42. [_repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
  43. _repeatButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
  44. [_repeatButton addTarget:self action:@selector(repeatAction:) forControlEvents:UIControlEventTouchUpInside];
  45. _repeatButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  46. [self addSubview:_repeatButton];
  47. _lockButton = [UIButton buttonWithType:UIButtonTypeCustom];
  48. [_lockButton setImage:[UIImage imageNamed:@"lock"] forState:UIControlStateNormal];
  49. _lockButton.frame = CGRectMake(spacer, 4. * spacer + buttonHeight * 3., buttonWidth, buttonHeight);
  50. [_lockButton addTarget:self action:@selector(lockAction:) forControlEvents:UIControlEventTouchUpInside];
  51. _lockButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  52. [self addSubview:_lockButton];
  53. _shuffleButton = [UIButton buttonWithType:UIButtonTypeCustom];
  54. [_shuffleButton setImage:[UIImage imageNamed:@"shuffle"] forState:UIControlStateNormal];
  55. _shuffleButton.frame = CGRectMake(spacer, spacer * 3 + buttonHeight * 3, buttonWidth, buttonHeight);
  56. [_shuffleButton addTarget:self action:@selector(shuffleAction:) forControlEvents:UIControlEventTouchUpInside];
  57. _shuffleButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  58. [self addSubview:_shuffleButton];
  59. }
  60. return self;
  61. }
  62. - (CGSize)proposedDisplaySize
  63. {
  64. _equalizerButton.hidden = !_showsEqualizer;
  65. _chapterSelectorButton.hidden = !_mediaHasChapters;
  66. CGFloat height;
  67. CGRect workFrame;
  68. if (_showsEqualizer) {
  69. if (_mediaHasChapters) {
  70. height = 7. * spacer + 6. * buttonHeight;
  71. workFrame = _equalizerButton.frame;
  72. workFrame.origin.y = spacer;
  73. _equalizerButton.frame = workFrame;
  74. _equalizerButton.hidden = NO;
  75. workFrame = _chapterSelectorButton.frame;
  76. workFrame.origin.y = spacer * 2. + buttonHeight;
  77. _chapterSelectorButton.frame = workFrame;
  78. _chapterSelectorButton.hidden = NO;
  79. workFrame = _repeatButton.frame;
  80. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  81. _repeatButton.frame = workFrame;
  82. workFrame = _lockButton.frame;
  83. workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
  84. _lockButton.frame = workFrame;
  85. workFrame = _shuffleButton.frame;
  86. workFrame.origin.y = spacer * 5. + buttonHeight * 4.;
  87. _shuffleButton.frame = workFrame;
  88. } else {
  89. height = 5. * spacer + 4. * buttonHeight;
  90. workFrame = _equalizerButton.frame;
  91. workFrame.origin.y = spacer;
  92. _equalizerButton.frame = workFrame;
  93. _equalizerButton.hidden = NO;
  94. _chapterSelectorButton.hidden = YES;
  95. workFrame = _repeatButton.frame;
  96. workFrame.origin.y = spacer * 2. + buttonHeight;
  97. _repeatButton.frame = workFrame;
  98. workFrame = _lockButton.frame;
  99. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  100. _lockButton.frame = workFrame;
  101. workFrame = _shuffleButton.frame;
  102. workFrame.origin.y = spacer * 4. + buttonHeight * 3;
  103. _shuffleButton.frame = workFrame;
  104. }
  105. } else {
  106. if (_mediaHasChapters) {
  107. height = 5. * spacer + 4. * buttonHeight;
  108. _equalizerButton.hidden = YES;
  109. workFrame = _chapterSelectorButton.frame;
  110. workFrame.origin.y = spacer;
  111. _chapterSelectorButton.frame = workFrame;
  112. _chapterSelectorButton.hidden = NO;
  113. workFrame = _repeatButton.frame;
  114. workFrame.origin.y = spacer * 2. + buttonHeight;
  115. _repeatButton.frame = workFrame;
  116. workFrame = _lockButton.frame;
  117. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  118. _lockButton.frame = workFrame;
  119. workFrame = _shuffleButton.frame;
  120. workFrame.origin.y = spacer * 4. + buttonHeight * 3;
  121. _shuffleButton.frame = workFrame;
  122. } else {
  123. height = 4. * spacer + 3. * buttonHeight;
  124. _equalizerButton.hidden = YES;
  125. _chapterSelectorButton.hidden = YES;
  126. workFrame = _repeatButton.frame;
  127. workFrame.origin.y = spacer;
  128. _repeatButton.frame = workFrame;
  129. workFrame = _lockButton.frame;
  130. workFrame.origin.y = spacer * 2. + buttonHeight;
  131. _lockButton.frame = workFrame;
  132. workFrame = _shuffleButton.frame;
  133. workFrame.origin.y = spacer * 3. + buttonHeight * 2;
  134. _shuffleButton.frame = workFrame;
  135. }
  136. }
  137. return CGSizeMake(spacer + buttonWidth + spacer, height);
  138. }
  139. - (void)setRepeatMode:(VLCRepeatMode)repeatMode
  140. {
  141. _repeatMode = repeatMode;
  142. switch (repeatMode) {
  143. case VLCRepeatCurrentItem:
  144. [_repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
  145. break;
  146. case VLCRepeatAllItems:
  147. [_repeatButton setImage:[UIImage imageNamed:@"repeatList"] forState:UIControlStateNormal];
  148. break;
  149. case VLCDoNotRepeat:
  150. default:
  151. [_repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
  152. break;
  153. }
  154. }
  155. - (void)setDisplayLock:(BOOL)displayLock
  156. {
  157. if (displayLock)
  158. [_lockButton setBackgroundColor:[UIColor VLCOrangeTintColor]];
  159. else
  160. [_lockButton setBackgroundColor:[UIColor clearColor]];
  161. }
  162. - (void)setShuffleMode:(BOOL)shuffleMode
  163. {
  164. if (shuffleMode)
  165. [_shuffleButton setBackgroundColor:[UIColor VLCOrangeTintColor]];
  166. else
  167. [_shuffleButton setBackgroundColor:[UIColor clearColor]];
  168. }
  169. - (void)equalizerAction:(id)sender
  170. {
  171. [self.delegate toggleEqualizer];
  172. [self.delegate hideMenu];
  173. }
  174. - (void)chapterSelectorAction:(id)sender
  175. {
  176. [self.delegate toggleChapterAndTitleSelector];
  177. [self.delegate hideMenu];
  178. }
  179. - (void)repeatAction:(id)sender
  180. {
  181. [self.delegate toggleRepeatMode];
  182. }
  183. - (void)lockAction:(id)sender
  184. {
  185. [self.delegate toggleUILock];
  186. }
  187. - (void)shuffleAction:(id)sender
  188. {
  189. [self.delegate toggleShuffleMode];
  190. }
  191. @end