VLCMultiSelectionMenuView.m 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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. _shuffleButton = [UIButton buttonWithType:UIButtonTypeCustom];
  48. [_shuffleButton setTitle:@"S" forState:UIControlStateNormal];
  49. _shuffleButton.frame = CGRectMake(spacer, 4. * spacer + buttonHeight * 3., buttonWidth, buttonHeight);
  50. [_shuffleButton addTarget:self action:@selector(shuffleAction:) forControlEvents:UIControlEventTouchUpInside];
  51. [self addSubview:_shuffleButton];
  52. _lockButton = [UIButton buttonWithType:UIButtonTypeCustom];
  53. [_lockButton setImage:[UIImage imageNamed:@"lock"] forState:UIControlStateNormal];
  54. _lockButton.frame = CGRectMake(spacer, 5. * spacer + buttonHeight * 4., buttonWidth, buttonHeight);
  55. [_lockButton addTarget:self action:@selector(lockAction:) forControlEvents:UIControlEventTouchUpInside];
  56. _lockButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  57. [self addSubview:_lockButton];
  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 = _shuffleButton.frame;
  82. workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
  83. _shuffleButton.frame = workFrame;
  84. workFrame = _lockButton.frame;
  85. workFrame.origin.y = spacer * 5. + buttonHeight * 4.;
  86. _lockButton.frame = workFrame;
  87. } else {
  88. height = 4. * spacer + 3. * 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 = _shuffleButton.frame;
  98. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  99. _shuffleButton.frame = workFrame;
  100. workFrame = _lockButton.frame;
  101. workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
  102. _lockButton.frame = workFrame;
  103. }
  104. } else {
  105. if (_mediaHasChapters) {
  106. height = 4. * spacer + 3. * 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 = _shuffleButton.frame;
  116. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  117. _shuffleButton.frame = workFrame;
  118. workFrame = _lockButton.frame;
  119. workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
  120. _lockButton.frame = workFrame;
  121. } else {
  122. height = 3. * spacer + 2. * buttonHeight;
  123. _equalizerButton.hidden = YES;
  124. _chapterSelectorButton.hidden = YES;
  125. workFrame = _repeatButton.frame;
  126. workFrame.origin.y = spacer;
  127. _repeatButton.frame = workFrame;
  128. workFrame = _shuffleButton.frame;
  129. workFrame.origin.y = spacer * 2. + buttonHeight;
  130. _shuffleButton.frame = workFrame;
  131. workFrame = _lockButton.frame;
  132. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  133. _lockButton.frame = workFrame;
  134. }
  135. }
  136. return CGSizeMake(spacer + buttonWidth + spacer, height);
  137. }
  138. - (void)setDisplayRepeatOne:(BOOL)displayRepeatOne
  139. {
  140. if (displayRepeatOne)
  141. [_repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
  142. else
  143. [_repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
  144. }
  145. - (void)setDisplayLock:(BOOL)displayLock
  146. {
  147. if (displayLock)
  148. [_lockButton setBackgroundColor:[UIColor VLCOrangeTintColor]];
  149. else
  150. [_lockButton setBackgroundColor:[UIColor clearColor]];
  151. }
  152. - (void)setDisplayShuffle:(BOOL)displayShuffle
  153. {
  154. // FIXME: fix icon state
  155. if (displayShuffle)
  156. [_shuffleButton setBackgroundColor:[UIColor VLCOrangeTintColor]];
  157. else
  158. [_shuffleButton setBackgroundColor:[UIColor clearColor]];
  159. }
  160. - (void)equalizerAction:(id)sender
  161. {
  162. [self.delegate toggleEqualizer];
  163. [self.delegate hideMenu];
  164. }
  165. - (void)chapterSelectorAction:(id)sender
  166. {
  167. [self.delegate toggleChapterAndTitleSelector];
  168. [self.delegate hideMenu];
  169. }
  170. - (void)repeatAction:(id)sender
  171. {
  172. [self.delegate toggleRepeatMode];
  173. }
  174. - (void)shuffleAction:(id)sender
  175. {
  176. [self.delegate toggleShuffleMode];
  177. }
  178. - (void)lockAction:(id)sender
  179. {
  180. [self.delegate toggleUILock];
  181. }
  182. @end