VLCMultiSelectionMenuView.m 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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 35.
  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:@"no-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. _lockButton.clipsToBounds = YES;
  53. _lockButton.layer.cornerRadius = buttonWidth / 2;
  54. [self addSubview:_lockButton];
  55. _shuffleButton = [UIButton buttonWithType:UIButtonTypeCustom];
  56. [_shuffleButton setImage:[UIImage imageNamed:@"shuffle"] forState:UIControlStateNormal];
  57. _shuffleButton.frame = CGRectMake(spacer, spacer * 3 + buttonHeight * 3, buttonWidth, buttonHeight);
  58. [_shuffleButton addTarget:self action:@selector(shuffleAction:) forControlEvents:UIControlEventTouchUpInside];
  59. _shuffleButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  60. _shuffleButton.clipsToBounds = YES;
  61. _shuffleButton.layer.cornerRadius = buttonWidth / 2;
  62. [self addSubview:_shuffleButton];
  63. }
  64. return self;
  65. }
  66. - (CGSize)proposedDisplaySize
  67. {
  68. _equalizerButton.hidden = !_showsEqualizer;
  69. _chapterSelectorButton.hidden = !_mediaHasChapters;
  70. CGFloat height;
  71. CGRect workFrame;
  72. if (_showsEqualizer) {
  73. if (_mediaHasChapters) {
  74. height = 6. * spacer + 5. * buttonHeight;
  75. workFrame = _equalizerButton.frame;
  76. workFrame.origin.y = spacer;
  77. _equalizerButton.frame = workFrame;
  78. _equalizerButton.hidden = NO;
  79. workFrame = _chapterSelectorButton.frame;
  80. workFrame.origin.y = spacer * 2. + buttonHeight;
  81. _chapterSelectorButton.frame = workFrame;
  82. _chapterSelectorButton.hidden = NO;
  83. workFrame = _repeatButton.frame;
  84. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  85. _repeatButton.frame = workFrame;
  86. workFrame = _lockButton.frame;
  87. workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
  88. _lockButton.frame = workFrame;
  89. workFrame = _shuffleButton.frame;
  90. workFrame.origin.y = spacer * 5. + buttonHeight * 4.;
  91. _shuffleButton.frame = workFrame;
  92. } else {
  93. height = 5. * spacer + 4. * buttonHeight;
  94. workFrame = _equalizerButton.frame;
  95. workFrame.origin.y = spacer;
  96. _equalizerButton.frame = workFrame;
  97. _equalizerButton.hidden = NO;
  98. _chapterSelectorButton.hidden = YES;
  99. workFrame = _repeatButton.frame;
  100. workFrame.origin.y = spacer * 2. + buttonHeight;
  101. _repeatButton.frame = workFrame;
  102. workFrame = _lockButton.frame;
  103. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  104. _lockButton.frame = workFrame;
  105. workFrame = _shuffleButton.frame;
  106. workFrame.origin.y = spacer * 4. + buttonHeight * 3;
  107. _shuffleButton.frame = workFrame;
  108. }
  109. } else {
  110. if (_mediaHasChapters) {
  111. height = 5. * spacer + 4. * buttonHeight;
  112. _equalizerButton.hidden = YES;
  113. workFrame = _chapterSelectorButton.frame;
  114. workFrame.origin.y = spacer;
  115. _chapterSelectorButton.frame = workFrame;
  116. _chapterSelectorButton.hidden = NO;
  117. workFrame = _repeatButton.frame;
  118. workFrame.origin.y = spacer * 2. + buttonHeight;
  119. _repeatButton.frame = workFrame;
  120. workFrame = _lockButton.frame;
  121. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  122. _lockButton.frame = workFrame;
  123. workFrame = _shuffleButton.frame;
  124. workFrame.origin.y = spacer * 4. + buttonHeight * 3;
  125. _shuffleButton.frame = workFrame;
  126. } else {
  127. height = 4. * spacer + 3. * buttonHeight;
  128. _equalizerButton.hidden = YES;
  129. _chapterSelectorButton.hidden = YES;
  130. workFrame = _repeatButton.frame;
  131. workFrame.origin.y = spacer;
  132. _repeatButton.frame = workFrame;
  133. workFrame = _lockButton.frame;
  134. workFrame.origin.y = spacer * 2. + buttonHeight;
  135. _lockButton.frame = workFrame;
  136. workFrame = _shuffleButton.frame;
  137. workFrame.origin.y = spacer * 3. + buttonHeight * 2;
  138. _shuffleButton.frame = workFrame;
  139. }
  140. }
  141. return CGSizeMake(spacer + buttonWidth + spacer, height);
  142. }
  143. - (void)setRepeatMode:(VLCRepeatMode)repeatMode
  144. {
  145. _repeatMode = repeatMode;
  146. switch (repeatMode) {
  147. case VLCRepeatCurrentItem:
  148. [_repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
  149. break;
  150. case VLCRepeatAllItems:
  151. [_repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
  152. break;
  153. case VLCDoNotRepeat:
  154. default:
  155. [_repeatButton setImage:[UIImage imageNamed:@"no-repeat"] forState:UIControlStateNormal];
  156. break;
  157. }
  158. }
  159. - (void)setDisplayLock:(BOOL)displayLock
  160. {
  161. if (displayLock)
  162. [_lockButton setBackgroundColor:[UIColor VLCOrangeTintColor]];
  163. else
  164. [_lockButton setBackgroundColor:[UIColor clearColor]];
  165. }
  166. - (void)setShuffleMode:(BOOL)shuffleMode
  167. {
  168. if (shuffleMode)
  169. [_shuffleButton setBackgroundColor:[UIColor VLCOrangeTintColor]];
  170. else
  171. [_shuffleButton setBackgroundColor:[UIColor clearColor]];
  172. }
  173. - (void)equalizerAction:(id)sender
  174. {
  175. [self.delegate toggleEqualizer];
  176. [self.delegate hideMenu];
  177. }
  178. - (void)chapterSelectorAction:(id)sender
  179. {
  180. [self.delegate toggleChapterAndTitleSelector];
  181. [self.delegate hideMenu];
  182. }
  183. - (void)repeatAction:(id)sender
  184. {
  185. [self.delegate toggleRepeatMode];
  186. }
  187. - (void)lockAction:(id)sender
  188. {
  189. [self.delegate toggleUILock];
  190. }
  191. - (void)shuffleAction:(id)sender
  192. {
  193. [self.delegate toggleShuffleMode];
  194. }
  195. @end