VLCMultiSelectionMenuView.m 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. BOOL _showsEQ;
  19. }
  20. @end
  21. @implementation VLCMultiSelectionMenuView
  22. - (instancetype)init
  23. {
  24. self = [super initWithFrame:CGRectMake(0., 0., buttonWidth, buttonHeight)];
  25. if (self) {
  26. _equalizerButton = [UIButton buttonWithType:UIButtonTypeCustom];
  27. [_equalizerButton setTitle:@"E" forState:UIControlStateNormal];
  28. _equalizerButton.titleLabel.textColor = [UIColor whiteColor];
  29. _equalizerButton.frame = CGRectMake(spacer, spacer, buttonWidth, buttonHeight);
  30. [_equalizerButton addTarget:self action:@selector(equalizerAction:) forControlEvents:UIControlEventTouchUpInside];
  31. _equalizerButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  32. [self addSubview:_equalizerButton];
  33. _chapterSelectorButton = [UIButton buttonWithType:UIButtonTypeCustom];
  34. [_chapterSelectorButton setTitle:@"C" forState:UIControlStateNormal];
  35. _chapterSelectorButton.titleLabel.textColor = [UIColor whiteColor];
  36. _chapterSelectorButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
  37. [_chapterSelectorButton addTarget:self action:@selector(chapterSelectorAction:) forControlEvents:UIControlEventTouchUpInside];
  38. _chapterSelectorButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  39. [self addSubview:_chapterSelectorButton];
  40. _repeatButton = [UIButton buttonWithType:UIButtonTypeCustom];
  41. [_repeatButton setImage:[UIImage imageNamed:@"repeat.png"] forState:UIControlStateNormal];
  42. _repeatButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
  43. [_repeatButton addTarget:self action:@selector(repeatAction:) forControlEvents:UIControlEventTouchUpInside];
  44. _repeatButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  45. [self addSubview:_repeatButton];
  46. _lockButton = [UIButton buttonWithType:UIButtonTypeCustom];
  47. [_lockButton setImage:[UIImage imageNamed:@"lock.png"] forState:UIControlStateNormal];
  48. _lockButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer + buttonHeight + spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
  49. [_lockButton addTarget:self action:@selector(lockAction:) forControlEvents:UIControlEventTouchUpInside];
  50. _lockButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
  51. [self addSubview:_lockButton];
  52. }
  53. return self;
  54. }
  55. - (CGSize)proposedDisplaySize
  56. {
  57. _equalizerButton.hidden = !_showsEqualizer;
  58. _chapterSelectorButton.hidden = !_mediaHasChapters;
  59. CGFloat height;
  60. CGRect workFrame;
  61. if (_showsEqualizer) {
  62. if (_mediaHasChapters) {
  63. height = 5. * spacer + 4. * buttonHeight;
  64. workFrame = _equalizerButton.frame;
  65. workFrame.origin.y = spacer;
  66. _equalizerButton.frame = workFrame;
  67. _equalizerButton.hidden = NO;
  68. workFrame = _chapterSelectorButton.frame;
  69. workFrame.origin.y = spacer * 2. + buttonHeight;
  70. _chapterSelectorButton.frame = workFrame;
  71. _chapterSelectorButton.hidden = NO;
  72. workFrame = _repeatButton.frame;
  73. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  74. _repeatButton.frame = workFrame;
  75. workFrame = _lockButton.frame;
  76. workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
  77. _lockButton.frame = workFrame;
  78. } else {
  79. height = 4. * spacer + 3. * buttonHeight;
  80. workFrame = _equalizerButton.frame;
  81. workFrame.origin.y = spacer;
  82. _equalizerButton.frame = workFrame;
  83. _equalizerButton.hidden = NO;
  84. _chapterSelectorButton.hidden = YES;
  85. workFrame = _repeatButton.frame;
  86. workFrame.origin.y = spacer * 2. + buttonHeight;
  87. _repeatButton.frame = workFrame;
  88. workFrame = _lockButton.frame;
  89. workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
  90. _lockButton.frame = workFrame;
  91. }
  92. } else {
  93. if (_mediaHasChapters) {
  94. height = 4. * spacer + 3. * buttonHeight;
  95. _equalizerButton.hidden = YES;
  96. workFrame = _chapterSelectorButton.frame;
  97. workFrame.origin.y = spacer;
  98. _chapterSelectorButton.frame = workFrame;
  99. _chapterSelectorButton.hidden = NO;
  100. workFrame = _repeatButton.frame;
  101. workFrame.origin.y = spacer * 2. + buttonHeight;
  102. _repeatButton.frame = workFrame;
  103. workFrame = _lockButton.frame;
  104. workFrame.origin.y = spacer * 3. + buttonHeight * 2;
  105. _lockButton.frame = workFrame;
  106. } else {
  107. height = 3. * spacer + 2. * buttonHeight;
  108. _equalizerButton.hidden = YES;
  109. _chapterSelectorButton.hidden = YES;
  110. workFrame = _repeatButton.frame;
  111. workFrame.origin.y = spacer;
  112. _repeatButton.frame = workFrame;
  113. workFrame = _lockButton.frame;
  114. workFrame.origin.y = spacer * 2. + buttonHeight;
  115. _lockButton.frame = workFrame;
  116. }
  117. }
  118. return CGSizeMake(spacer + buttonWidth + spacer, height);
  119. }
  120. - (void)setDisplayRepeatOne:(BOOL)displayRepeatOne
  121. {
  122. if (displayRepeatOne)
  123. [_repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
  124. else
  125. [_repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
  126. }
  127. - (void)equalizerAction:(id)sender
  128. {
  129. [self.delegate toggleEqualizer];
  130. [self.delegate hideMenu];
  131. }
  132. - (void)chapterSelectorAction:(id)sender
  133. {
  134. [self.delegate toggleChapterAndTitleSelector];
  135. [self.delegate hideMenu];
  136. }
  137. - (void)repeatAction:(id)sender
  138. {
  139. [self.delegate toggleRepeatMode];
  140. }
  141. - (void)lockAction:(id)sender
  142. {
  143. [self.delegate toggleUILock];
  144. }
  145. @end