VLCMultiSelectionMenuView.m 8.2 KB

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