media_player.style 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. using "ui/basic.style";
  8. using "ui/widgets/widgets.style";
  9. using "overview/overview.style";
  10. MediaPlayerButton {
  11. playPosition: point;
  12. playOuter: size;
  13. pausePosition: point;
  14. pauseOuter: size;
  15. pauseStroke: pixels;
  16. cancelPosition: point;
  17. cancelOuter: size;
  18. cancelStroke: pixels;
  19. rippleAreaPosition: point;
  20. rippleAreaSize: pixels;
  21. ripple: RippleAnimation;
  22. duration: int;
  23. }
  24. MediaSpeedMenu {
  25. dropdown: DropdownMenu;
  26. qualityMenu: Menu;
  27. activeCheck: icon;
  28. activeCheckSkip: pixels;
  29. sliderStyle: TextStyle;
  30. sliderPadding: margins;
  31. sliderWidth: pixels;
  32. slider: MediaSlider;
  33. slow: icon;
  34. slowActive: icon;
  35. normal: icon;
  36. normalActive: icon;
  37. medium: icon;
  38. mediumActive: icon;
  39. fast: icon;
  40. fastActive: icon;
  41. veryFast: icon;
  42. veryFastActive: icon;
  43. superFast: icon;
  44. superFastActive: icon;
  45. }
  46. MediaSpeedButton {
  47. size: size;
  48. padding: margins;
  49. font: font;
  50. fg: color;
  51. overFg: color;
  52. activeFg: color;
  53. icon: icon;
  54. ripple: RippleAnimation;
  55. rippleActiveColor: color;
  56. rippleRadius: pixels;
  57. menu: MediaSpeedMenu;
  58. menuAlign: align;
  59. }
  60. mediaPlayerButton: MediaPlayerButton {
  61. playPosition: point(2px, 0px);
  62. playOuter: size(17px, 15px);
  63. pausePosition: point(1px, 1px);
  64. pauseOuter: size(15px, 15px);
  65. pauseStroke: 5px;
  66. cancelPosition: point(1px, 1px);
  67. cancelOuter: size(15px, 15px);
  68. cancelStroke: 3px;
  69. rippleAreaPosition: point(0px, 5px);
  70. rippleAreaSize: 25px;
  71. ripple: RippleAnimation(defaultRippleAnimation) {
  72. color: lightButtonBgOver;
  73. }
  74. duration: 200;
  75. }
  76. mediaPlayerWideWidth: 460px;
  77. mediaPlayerHeight: 35px;
  78. mediaPlayerPadding: 8px;
  79. mediaPlayerNameTop: 22px;
  80. mediaPlayerPlayLeft: 9px;
  81. mediaPlayerPlaySkip: 1px;
  82. mediaPlayerPlayTop: 0px;
  83. mediaPlayerCloseRight: 0px;
  84. mediaPlayerName: FlatLabel(defaultFlatLabel) {
  85. maxHeight: 20px;
  86. }
  87. mediaPlayerTime: LabelSimple(defaultLabelSimple) {
  88. textFg: windowSubTextFg;
  89. }
  90. mediaPlayerRepeatButton: IconButton {
  91. width: 30px;
  92. height: 30px;
  93. icon: icon {
  94. { "player/player_repeat", mediaPlayerActiveFg }
  95. };
  96. iconPosition: point(2px, 5px);
  97. rippleAreaPosition: point(2px, 6px);
  98. rippleAreaSize: 24px;
  99. ripple: RippleAnimation(defaultRippleAnimation) {
  100. color: lightButtonBgOver;
  101. }
  102. }
  103. mediaPlayerRepeatDisabledIcon: icon {
  104. { "player/player_repeat", menuIconFg }
  105. };
  106. mediaPlayerRepeatDisabledIconOver: icon {
  107. { "player/player_repeat", menuIconFgOver }
  108. };
  109. mediaPlayerRepeatOneIcon: icon {
  110. { "player/player_repeat_single", mediaPlayerActiveFg }
  111. };
  112. mediaPlayerReverseIcon: icon {
  113. { "player/player_order", mediaPlayerActiveFg }
  114. };
  115. mediaPlayerReverseDisabledIcon: icon {
  116. { "player/player_order", menuIconFg }
  117. };
  118. mediaPlayerReverseDisabledIconOver: icon {
  119. { "player/player_order", menuIconFgOver }
  120. };
  121. mediaPlayerShuffleIcon: icon {
  122. { "player/player_shuffle", mediaPlayerActiveFg }
  123. };
  124. mediaPlayerOrderButton: IconButton(mediaPlayerRepeatButton) {
  125. iconPosition: point(2px, 6px);
  126. rippleAreaPosition: point(2px, 6px);
  127. }
  128. mediaPlayerRepeatDisabledRippleBg: windowBgOver;
  129. mediaPlayerPlayButton: IconButton(mediaPlayerRepeatButton) {
  130. width: 24px;
  131. icon: icon{
  132. { "player/player_play", mediaPlayerActiveFg }
  133. };
  134. iconPosition: point(0px, 5px);
  135. rippleAreaPosition: point(0px, 5px);
  136. rippleAreaSize: 24px;
  137. }
  138. mediaPlayerPauseIcon: icon{
  139. { "player/player_pause", mediaPlayerActiveFg }
  140. };
  141. mediaPlayerCancelIcon: icon{
  142. { "player/panel_close", mediaPlayerActiveFg }
  143. };
  144. mediaPlayerMenu: DropdownMenu(defaultDropdownMenu) {
  145. wrap: InnerDropdown(defaultInnerDropdown) {
  146. scrollPadding: margins(0px, 4px, 0px, 4px);
  147. padding: margins(10px, 2px, 10px, 10px);
  148. }
  149. }
  150. mediaPlayerMenuCheck: icon {{ "player/player_check", mediaPlayerActiveFg }};
  151. mediaPlayerSpeedMenuInner: Menu(menuWithIcons) {
  152. separator: MenuSeparator(defaultMenuSeparator) {
  153. padding: margins(0px, 4px, 0px, 4px);
  154. width: 6px;
  155. }
  156. itemPadding: margins(54px, 7px, 54px, 9px);
  157. itemFgDisabled: mediaPlayerActiveFg;
  158. }
  159. mediaPlayerSpeedMenu: MediaSpeedMenu {
  160. dropdown: DropdownMenu(mediaPlayerMenu) {
  161. menu: mediaPlayerSpeedMenuInner;
  162. }
  163. qualityMenu: Menu(mediaPlayerSpeedMenuInner) {
  164. itemPadding: margins(17px, 7px, 54px, 9px);
  165. }
  166. activeCheck: mediaPlayerMenuCheck;
  167. activeCheckSkip: 8px;
  168. sliderStyle: TextStyle(defaultTextStyle) {
  169. font: font(12px semibold);
  170. }
  171. sliderPadding: margins(50px, 8px, 12px, 8px);
  172. sliderWidth: 122px;
  173. slider: MediaSlider(defaultContinuousSlider) {
  174. activeFg: mediaPlayerActiveFg;
  175. inactiveFg: windowBgOver;
  176. activeFgOver: mediaPlayerActiveFg;
  177. inactiveFgOver: windowBgOver;
  178. activeFgDisabled: windowBgOver;
  179. receivedTillFg: windowBgOver;
  180. width: 6px;
  181. seekSize: size(6px, 6px);
  182. }
  183. slow: playerSpeedSlow;
  184. slowActive: playerSpeedSlowActive;
  185. normal: playerSpeedNormal;
  186. normalActive: playerSpeedNormalActive;
  187. medium: playerSpeedMedium;
  188. mediumActive: playerSpeedMediumActive;
  189. fast: playerSpeedFast;
  190. fastActive: playerSpeedFastActive;
  191. veryFast: playerSpeedVeryFast;
  192. veryFastActive: playerSpeedVeryFastActive;
  193. superFast: playerSpeedSuperFast;
  194. superFastActive: playerSpeedSuperFastActive;
  195. }
  196. mediaPlayerSpeedButton: MediaSpeedButton {
  197. size: size(30px, 30px);
  198. padding: margins(0px, 6px, 0px, 0px);
  199. font: font(11px bold);
  200. fg: menuIconFg;
  201. overFg: menuIconFgOver;
  202. activeFg: mediaPlayerActiveFg;
  203. icon: icon{{ "player/player_speed", menuIconFg }};
  204. ripple: RippleAnimation(defaultRippleAnimation) {
  205. color: windowBgOver;
  206. }
  207. rippleActiveColor: lightButtonBgOver;
  208. rippleRadius: 4px;
  209. menu: mediaPlayerSpeedMenu;
  210. menuAlign: align(topright);
  211. }
  212. mediaPlayerVolumeIcon0: icon {
  213. { "player/player_mini_off", mediaPlayerActiveFg },
  214. };
  215. mediaPlayerVolumeIcon1: icon {
  216. { "player/player_mini_half", mediaPlayerActiveFg },
  217. };
  218. mediaPlayerVolumeToggle: IconButton(mediaPlayerRepeatButton) {
  219. width: 34px;
  220. icon: icon {
  221. { "player/player_mini_full", mediaPlayerActiveFg },
  222. };
  223. iconPosition: point(5px, 6px);
  224. rippleAreaPosition: point(5px, 6px);
  225. }
  226. mediaPlayerVolumeMargin: 10px;
  227. mediaPlayerVolumeSize: size(27px, 100px);
  228. mediaPlayerControlsFade: icon {{ "fade_horizontal", mediaPlayerBg }};
  229. mediaPlayerNextButton: IconButton(mediaPlayerPlayButton) {
  230. icon: icon {
  231. { "player/player_forward", mediaPlayerActiveFg },
  232. };
  233. }
  234. mediaPlayerNextDisabledIcon: icon {
  235. { "player/player_forward", mediaPlayerInactiveFg },
  236. };
  237. mediaPlayerPreviousButton: IconButton(mediaPlayerNextButton) {
  238. icon: icon {
  239. { "player/player_backward", mediaPlayerActiveFg },
  240. };
  241. }
  242. mediaPlayerPreviousDisabledIcon: icon {
  243. { "player/player_backward", mediaPlayerInactiveFg },
  244. };
  245. touchBarIconPlayerClose: icon {{ "player/panel_close", windowFg }};
  246. touchBarIconPlayerPlay: icon {{ "media_play", windowFg }};
  247. touchBarIconPlayerPause: icon {{ "media_pause", windowFg }};
  248. touchBarIconPlayerNext: icon {{ "player/player_forward", windowFg }};
  249. touchBarIconPlayerPrevious: icon {{ "player/player_backward", windowFg }};
  250. mediaPlayerClose: IconButton(mediaPlayerRepeatButton) {
  251. width: 39px;
  252. icon: icon {{ "player/panel_close", menuIconFg }};
  253. iconOver: icon {{ "player/panel_close", menuIconFgOver }};
  254. iconPosition: point(4px, 6px);
  255. rippleAreaPosition: point(4px, 6px);
  256. ripple: RippleAnimation(defaultRippleAnimation) {
  257. color: windowBgOver;
  258. }
  259. }
  260. mediaPlayerPlayback: FilledSlider {
  261. fullWidth: 6px;
  262. lineWidth: 2px;
  263. activeFg: mediaPlayerActiveFg;
  264. inactiveFg: mediaPlayerInactiveFg;
  265. disabledFg: mediaPlayerDisabledFg;
  266. duration: 150;
  267. }
  268. mediaPlayerPanelMarginLeft: 10px;
  269. mediaPlayerPanelMarginBottom: 10px;
  270. mediaPlayerPanelWidth: 344px;
  271. mediaPlayerPanelNextButton: IconButton(mediaPlayerRepeatButton) {
  272. width: 37px;
  273. icon: icon {{ "player/player_forward", mediaPlayerActiveFg, point(6px, 4px) }};
  274. }
  275. mediaPlayerPanelPlaybackPadding: 8px;
  276. mediaPlayerPanelPlayback: defaultContinuousSlider;
  277. mediaPlayerPanelVolumeWidth: 64px;
  278. mediaPlayerScroll: ScrollArea(defaultSolidScroll) {
  279. deltat: 10px;
  280. deltab: 10px;
  281. }
  282. mediaPlayerListHeightMax: 280px;
  283. mediaPlayerListMarginBottom: 10px;
  284. mediaPlayerFileLayout: OverviewFileLayout(overviewFileLayout) {
  285. maxWidth: 344px;
  286. songIconBg: mediaPlayerActiveFg;
  287. songOverBg: mediaPlayerActiveFg;
  288. }
  289. mediaPlayerFloatSize: 128px;
  290. mediaPlayerFloatMargin: 12px;
  291. mediaPlayerMenuPosition: point(-2px, -1px);
  292. mediaPlayerOrderMenu: Menu(defaultMenu) {
  293. itemIconPosition: point(13px, 8px);
  294. itemPadding: margins(49px, 9px, 17px, 11px);
  295. itemStyle: boxTextStyle;
  296. }
  297. mediaPlayerOrderMenuActive: Menu(mediaPlayerOrderMenu) {
  298. itemFg: windowActiveTextFg;
  299. itemFgOver: windowActiveTextFg;
  300. }
  301. mediaPlayerOrderIconReverse: icon{{ "player/player_order", windowFg }};
  302. mediaPlayerOrderIconReverseActive: icon{{ "player/player_order", windowActiveTextFg }};
  303. mediaPlayerOrderIconShuffle: icon{{ "player/player_shuffle", windowFg }};
  304. mediaPlayerOrderIconShuffleActive: icon{{ "player/player_shuffle", windowActiveTextFg }};