VapMergeInfoView.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. // Tencent is pleased to support the open source community by making vap available.
  2. //
  3. // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
  4. //
  5. // Licensed under the MIT License (the "License"); you may not use this file except in
  6. // compliance with the License. You may obtain a copy of the License at
  7. //
  8. // http://opensource.org/licenses/MIT
  9. //
  10. // Unless required by applicable law or agreed to in writing, software distributed under the License is
  11. // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
  12. // either express or implied. See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. #import "VapMergeInfoView.h"
  15. @interface VapMergeInfoView () {
  16. NSTextField *_tagHintLabel;
  17. NSTextField *_typeLabel;
  18. NSTextField *_fitTypeHintLabel;
  19. NSTextField *_widthHintLabel;
  20. NSTextField *_heightHintLabel;
  21. NSTextField *_maskHintLabel;
  22. NSTextField *_colorHintLabel;
  23. NSTextField *_fontHintLabel;
  24. NSButton *_closeButton;
  25. NSInteger _index;
  26. }
  27. @end
  28. @implementation VapMergeInfoView
  29. - (void)setIndex:(NSInteger)index {
  30. _index = index;
  31. _tagHintLabel.stringValue = [NSString stringWithFormat:@"%@. 占位符:",@(index)];
  32. [_tagHintLabel sizeToFit];
  33. }
  34. - (instancetype)initWithFrame:(NSRect)frameRect {
  35. if (self = [super initWithFrame:frameRect]) {
  36. [self setupUIComponents];
  37. [self updateComponentsFrame];
  38. }
  39. return self;
  40. }
  41. - (void)setupUIComponents {
  42. _tagHintLabel = [NSTextField new];
  43. _tagHintLabel.drawsBackground = NO;
  44. _tagHintLabel.stringValue = @"1. 占位符:";
  45. [_tagHintLabel setBezeled:NO];
  46. [_tagHintLabel setEditable:NO];
  47. [_tagHintLabel sizeToFit];
  48. [self addSubview:_tagHintLabel];
  49. _tagLabel = [NSTextField new];
  50. _tagLabel.placeholderString = [NSString stringWithFormat: @"例:[%@]", @"userAvatar"];
  51. [self addSubview:_tagLabel];
  52. _typeLabel = [NSTextField new];
  53. _typeLabel.drawsBackground = NO;
  54. _typeLabel.stringValue = @"资源类型:";
  55. [_typeLabel setBezeled:NO];
  56. [_typeLabel setEditable:NO];
  57. [_typeLabel sizeToFit];
  58. [self addSubview:_typeLabel];
  59. _resTypePopButton = [NSPopUpButton new];
  60. [_resTypePopButton addItemsWithTitles:@[@"网络图片",@"文字"]];
  61. [self addSubview:_resTypePopButton];
  62. [[NSNotificationCenter defaultCenter] addObserver:self
  63. selector:@selector(didResTypePopButtonSelect:)
  64. name:NSMenuDidSendActionNotification
  65. object:[_resTypePopButton menu]];
  66. _fitTypeHintLabel = [NSTextField new];
  67. _fitTypeHintLabel.drawsBackground = NO;
  68. _fitTypeHintLabel.stringValue = @"适配类型:";
  69. [_fitTypeHintLabel setBezeled:NO];
  70. [_fitTypeHintLabel setEditable:NO];
  71. [_fitTypeHintLabel sizeToFit];
  72. [self addSubview:_fitTypeHintLabel];
  73. _fitTypePopButton = [NSPopUpButton new];
  74. [_fitTypePopButton addItemsWithTitles:@[@"铺满",@"等比适配"]];
  75. [self addSubview:_fitTypePopButton];
  76. [[NSNotificationCenter defaultCenter] addObserver:self
  77. selector:@selector(didFitTypePopButtonSelect:)
  78. name:NSMenuDidSendActionNotification
  79. object:[_fitTypePopButton menu]];
  80. _widthHintLabel = [NSTextField new];
  81. _widthHintLabel.drawsBackground = NO;
  82. _widthHintLabel.stringValue = @"宽度:";
  83. [_widthHintLabel setBezeled:NO];
  84. [_widthHintLabel setEditable:NO];
  85. [_widthHintLabel sizeToFit];
  86. [self addSubview:_widthHintLabel];
  87. _widthLabel = [NSTextField new];
  88. [self addSubview:_widthLabel];
  89. _heightHintLabel = [NSTextField new];
  90. _heightHintLabel.drawsBackground = NO;
  91. _heightHintLabel.stringValue = @"高度:";
  92. [_heightHintLabel setBezeled:NO];
  93. [_heightHintLabel setEditable:NO];
  94. [_heightHintLabel sizeToFit];
  95. [self addSubview:_heightHintLabel];
  96. _heightLabel = [NSTextField new];
  97. [self addSubview:_heightLabel];
  98. _maskHintLabel = [NSTextField new];
  99. _maskHintLabel.drawsBackground = NO;
  100. _maskHintLabel.stringValue = @"上传对应的遮罩:";
  101. [_maskHintLabel setBezeled:NO];
  102. [_maskHintLabel setEditable:NO];
  103. [_maskHintLabel sizeToFit];
  104. [self addSubview:_maskHintLabel];
  105. _maskUploadButotn = [NSButton new];
  106. [_maskUploadButotn setFrame:NSMakeRect(0, 0, 100, 15)];
  107. [_maskUploadButotn setBezelStyle:NSBezelStyleRounded];
  108. [_maskUploadButotn setTitle:@"上传遮罩"];
  109. [_maskUploadButotn setTarget:self];
  110. [_maskUploadButotn setAction:@selector(onUploadMaskButtonClicked:)];
  111. [self addSubview:_maskUploadButotn];
  112. _colorHintLabel = [NSTextField new];
  113. _colorHintLabel.drawsBackground = NO;
  114. _colorHintLabel.stringValue = @"颜色:";
  115. [_colorHintLabel setBezeled:NO];
  116. [_colorHintLabel setEditable:NO];
  117. [_colorHintLabel sizeToFit];
  118. [self addSubview:_colorHintLabel];
  119. _colorLabel = [NSTextField new];
  120. _colorLabel.placeholderString = @"例:#000000";
  121. [_colorLabel sizeToFit];
  122. [self addSubview:_colorLabel];
  123. _fontHintLabel = [NSTextField new];
  124. _fontHintLabel.drawsBackground = NO;
  125. _fontHintLabel.stringValue = @"字体:";
  126. [_fontHintLabel setBezeled:NO];
  127. [_fontHintLabel setEditable:NO];
  128. [_fontHintLabel sizeToFit];
  129. [self addSubview:_fontHintLabel];
  130. _fontStyleButton = [NSPopUpButton new];
  131. [_fontStyleButton addItemsWithTitles:@[@"粗体",@"正常"]];
  132. [self addSubview:_fontStyleButton];
  133. [[NSNotificationCenter defaultCenter] addObserver:self
  134. selector:@selector(didFontPopButtonSelect:)
  135. name:NSMenuDidSendActionNotification
  136. object:[_fontStyleButton menu]];
  137. [self setTextTypeViewsHidden:YES];
  138. _closeButton = [NSButton new];
  139. [_closeButton setImage:[NSImage imageNamed:@"close"]];
  140. [_closeButton setTarget:self];
  141. [_closeButton setAction:@selector(onCloseButtonClick:)];
  142. _closeButton.bordered = NO;
  143. [self addSubview:_closeButton];
  144. }
  145. - (void)updateComponentsFrame {
  146. _tagHintLabel.frame = NSMakeRect(0, CGRectGetHeight(self.frame)-CGRectGetHeight(_tagHintLabel.frame)-5, CGRectGetWidth(_tagHintLabel.frame), CGRectGetHeight(_tagHintLabel.frame));
  147. CGFloat height = 20;
  148. _tagLabel.frame = NSMakeRect(CGRectGetMaxX(_tagHintLabel.frame)+10, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-height/2.0, 100, height);
  149. _typeLabel.frame = NSMakeRect(CGRectGetMaxX(_tagLabel.frame)+10, CGRectGetHeight(self.frame)-CGRectGetHeight(_typeLabel.frame)-5, CGRectGetWidth(_typeLabel.frame), CGRectGetHeight(_typeLabel.frame));
  150. height = 50;
  151. _resTypePopButton.frame = NSMakeRect(CGRectGetMaxX(_typeLabel.frame)+5, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-height/2.0, 100, height);
  152. _fitTypeHintLabel.frame = NSMakeRect(CGRectGetMaxX(_resTypePopButton.frame)+10, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-CGRectGetHeight(_fitTypeHintLabel.frame)/2.0, CGRectGetWidth(_fitTypeHintLabel.frame), CGRectGetHeight(_fitTypeHintLabel.frame));
  153. height = 50;
  154. _fitTypePopButton.frame = NSMakeRect(CGRectGetMaxX(_fitTypeHintLabel.frame)+5, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-height/2.0, 100, height);
  155. height = 20;
  156. _widthHintLabel.frame = NSMakeRect(CGRectGetMaxX(_fitTypePopButton.frame)+10, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-CGRectGetHeight(_widthHintLabel.frame)/2.0, CGRectGetWidth(_widthHintLabel.frame), CGRectGetHeight(_widthHintLabel.frame));
  157. _widthLabel.frame = NSMakeRect(CGRectGetMaxX(_widthHintLabel.frame)+2, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-height/2.0, 50, height);
  158. _heightHintLabel.frame = NSMakeRect(CGRectGetMaxX(_widthLabel.frame), CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-CGRectGetHeight(_heightHintLabel.frame)/2.0, CGRectGetWidth(_heightHintLabel.frame), CGRectGetHeight(_heightHintLabel.frame));
  159. _heightLabel.frame = NSMakeRect(CGRectGetMaxX(_heightHintLabel.frame)+2, CGRectGetMaxY(_tagHintLabel.frame)-CGRectGetHeight(_tagHintLabel.frame)/2.0-height/2.0, 50, height);
  160. _maskHintLabel.frame = NSMakeRect(0, CGRectGetMinY(_tagHintLabel.frame)-10-CGRectGetHeight(_maskHintLabel.frame), CGRectGetWidth(_maskHintLabel.frame), CGRectGetHeight(_maskHintLabel.frame));
  161. _maskUploadButotn.frame = NSMakeRect(CGRectGetMaxX(_maskHintLabel.frame), CGRectGetMaxY(_maskHintLabel.frame)-CGRectGetHeight(_maskHintLabel.frame)/2.0-CGRectGetHeight(_maskUploadButotn.frame)/2.0, _maskUploadButotn.frame.size.width, _maskHintLabel.frame.size.height);
  162. _colorHintLabel.frame = NSMakeRect(CGRectGetMaxX(_maskUploadButotn.frame), CGRectGetMaxY(_maskHintLabel.frame)-CGRectGetHeight(_maskHintLabel.frame)/2.0-CGRectGetHeight(_colorHintLabel.frame)/2.0, _colorHintLabel.frame.size.width, _colorHintLabel.frame.size.height);
  163. _colorLabel.frame = NSMakeRect(CGRectGetMaxX(_colorHintLabel.frame), CGRectGetMaxY(_maskHintLabel.frame)-CGRectGetHeight(_maskHintLabel.frame)/2.0-CGRectGetHeight(_colorLabel.frame)/2.0, _colorLabel.frame.size.width, _colorLabel.frame.size.height);
  164. _fontHintLabel.frame = NSMakeRect(CGRectGetMaxX(_colorLabel.frame)+10, CGRectGetMaxY(_maskHintLabel.frame)-CGRectGetHeight(_maskHintLabel.frame)/2.0-CGRectGetHeight(_fontHintLabel.frame)/2.0, _fontHintLabel.frame.size.width, _fontHintLabel.frame.size.height);
  165. height = 50;
  166. _fontStyleButton.frame = NSMakeRect(CGRectGetMaxX(_fontHintLabel.frame)+5, CGRectGetMaxY(_fontHintLabel.frame)-CGRectGetHeight(_fontHintLabel.frame)/2.0-height/2.0, 100, height);
  167. height = 15;
  168. _closeButton.frame = NSMakeRect(CGRectGetMaxX(_heightLabel.frame)+30, CGRectGetHeight(self.frame)/2.0-height/2.0, height, height);
  169. }
  170. - (void)setTextTypeViewsHidden:(BOOL)hidden {
  171. _colorLabel.hidden = hidden;
  172. _colorHintLabel.hidden = hidden;
  173. _fontHintLabel.hidden = hidden;
  174. _fontStyleButton.hidden = hidden;
  175. if (hidden) {
  176. _tagLabel.nextKeyView = _widthLabel;
  177. _widthLabel.nextKeyView = _heightLabel;
  178. _heightLabel.nextKeyView = _tagLabel;
  179. } else {
  180. _tagLabel.nextKeyView = _widthLabel;
  181. _widthLabel.nextKeyView = _heightLabel;
  182. _heightLabel.nextKeyView = _colorLabel;
  183. _colorLabel.nextKeyView = _tagLabel;
  184. }
  185. }
  186. - (void)resizeSubviewsWithOldSize:(NSSize)oldSize {
  187. [super resizeSubviewsWithOldSize:oldSize];
  188. [self updateComponentsFrame];
  189. }
  190. - (void)didResTypePopButtonSelect:(id)sender {
  191. [self setTextTypeViewsHidden:[_resTypePopButton.selectedItem.title isEqualToString:@"网络图片"]];
  192. }
  193. - (void)didFitTypePopButtonSelect:(id)sender {
  194. NSLog(@"didFitTypePopButtonSelect");
  195. }
  196. - (void)didFontPopButtonSelect:(id)sender {
  197. NSLog(@"didFontPopButtonSelect");
  198. }
  199. - (void)onUploadMaskButtonClicked:(id)sender {
  200. NSOpenPanel *openPanel = [NSOpenPanel new];
  201. openPanel.allowsMultipleSelection = YES;
  202. openPanel.canChooseDirectories = NO;
  203. openPanel.canChooseFiles = YES;
  204. NSModalResponse res = [openPanel runModal];
  205. if (res == NSModalResponseOK) {
  206. self.maskPath = [self.fileHelper saveUploadedMasks:openPanel.URLs identifier:[NSString stringWithFormat:@"%p",self]];
  207. self.maskUploadButotn.title = [NSString stringWithFormat:@"%@个文件",@(openPanel.URLs.count)];
  208. } else {
  209. self.maskPath = nil;
  210. self.maskUploadButotn.title = @"上传文件";
  211. }
  212. }
  213. - (void)onCloseButtonClick:(id)sender {
  214. if ([self.delegate respondsToSelector:@selector(didClickAtCloseButton:)]) {
  215. [self.delegate didClickAtCloseButton:self];
  216. }
  217. }
  218. @end