dialogs.style 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794
  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/layers/layers.style"; // boxRoundShadow
  9. using "ui/widgets/widgets.style";
  10. DialogRow {
  11. height: pixels;
  12. padding: margins;
  13. photoSize: pixels;
  14. nameLeft: pixels;
  15. nameTop: pixels;
  16. textLeft: pixels;
  17. textTop: pixels;
  18. topicsSkip: pixels;
  19. topicsSkipBig: pixels;
  20. topicsHeight: pixels;
  21. unreadMarkDiameter: pixels;
  22. tagTop: pixels;
  23. }
  24. ThreeStateIcon {
  25. icon: icon;
  26. over: icon;
  27. active: icon;
  28. }
  29. VerifiedBadge {
  30. color: color;
  31. height: pixels;
  32. }
  33. ForumTopicIcon {
  34. size: pixels;
  35. font: font;
  36. textTop: pixels;
  37. }
  38. DialogsMiniIcon {
  39. icon: ThreeStateIcon;
  40. skipText: pixels;
  41. skipMedia: pixels;
  42. }
  43. defaultForumTopicIcon: ForumTopicIcon {
  44. size: 21px;
  45. font: font(bold 11px);
  46. textTop: 2px;
  47. }
  48. normalForumTopicIcon: ForumTopicIcon {
  49. size: 19px;
  50. font: font(bold 10px);
  51. textTop: 2px;
  52. }
  53. largeForumTopicIcon: ForumTopicIcon {
  54. size: 26px;
  55. font: font(bold 13px);
  56. textTop: 3px;
  57. }
  58. infoForumTopicIcon: ForumTopicIcon {
  59. size: 32px;
  60. font: font(bold 15px);
  61. textTop: 4px;
  62. }
  63. dialogsUnreadFont: font(12px bold);
  64. dialogsUnreadHeight: 19px;
  65. dialogsUnreadPadding: 5px;
  66. dialogsRipple: RippleAnimation(defaultRippleAnimation) {
  67. color: dialogsRippleBg;
  68. }
  69. dialogsTextFont: normalFont;
  70. dialogsTextStyle: defaultTextStyle;
  71. dialogsDateFont: font(13px);
  72. dialogsDateSkip: 5px;
  73. dialogsRowHeight: 62px;
  74. dialogsFilterPadding: point(7px, 7px);
  75. dialogsFilterSkip: 4px;
  76. defaultDialogRow: DialogRow {
  77. height: dialogsRowHeight;
  78. padding: margins(10px, 8px, 10px, 8px);
  79. photoSize: 46px;
  80. nameLeft: 68px;
  81. nameTop: 10px;
  82. textLeft: 68px;
  83. textTop: 34px;
  84. }
  85. taggedDialogRow: DialogRow(defaultDialogRow) {
  86. height: 72px;
  87. textTop: 30px;
  88. tagTop: 52px;
  89. }
  90. forumDialogRow: DialogRow(defaultDialogRow) {
  91. height: 80px;
  92. textTop: 32px;
  93. topicsSkip: 8px;
  94. topicsSkipBig: 14px;
  95. topicsHeight: 21px;
  96. }
  97. taggedForumDialogRow: DialogRow(forumDialogRow) {
  98. height: 96px;
  99. tagTop: 77px;
  100. }
  101. dialogRowFilterTagSkip: 4px;
  102. dialogRowFilterTagStyle: TextStyle(defaultTextStyle) {
  103. font: font(10px);
  104. }
  105. dialogRowOpenBotTextStyle: semiboldTextStyle;
  106. dialogRowOpenBotHeight: 20px;
  107. dialogRowOpenBotRight: 10px;
  108. dialogRowOpenBotTop: 32px;
  109. dialogRowOpenBotRecentTop: 28px;
  110. forumDialogJumpArrow: icon{{ "dialogs/dialogs_topic_arrow", dialogsTextFg }};
  111. forumDialogJumpArrowOver: icon{{ "dialogs/dialogs_topic_arrow", dialogsTextFgOver }};
  112. forumDialogJumpArrowSkip: 8px;
  113. forumDialogJumpArrowPosition: point(3px, 3px);
  114. forumDialogJumpPadding: margins(8px, 3px, 8px, 3px);
  115. forumDialogJumpRadius: 11px;
  116. dialogsOnlineBadgeStroke: 2px;
  117. dialogsOnlineBadgeSize: 10px;
  118. dialogsOnlineBadgeSkip: point(0px, 2px);
  119. dialogsOnlineBadgeDuration: 150;
  120. dialogsCallBadgeSize: 16px;
  121. dialogsCallBadgeSkip: point(-3px, -3px);
  122. dialogsSubscriptionBadgeSize: 16px;
  123. dialogsSubscriptionBadgeSkip: point(-4px, -4px);
  124. dialogsTTLBadgeSize: 20px;
  125. dialogsTTLBadgeInnerMargins: margins(2px, 2px, 2px, 2px);
  126. // Relative to a photo place, not a whole userpic place.
  127. dialogsTTLBadgeSkip: point(1px, 1px);
  128. dialogsSpeakingStrokeNumerator: 16px;
  129. dialogsSpeakingDenominator: 8.;
  130. dialogsImportantBarHeight: 37px;
  131. dialogsWidthDuration: universalDuration;
  132. dialogsTextWidthMin: 150px;
  133. dialogsTextPalette: TextPalette(defaultTextPalette) {
  134. linkFg: dialogsTextFgService;
  135. monoFg: dialogsTextFg;
  136. spoilerFg: dialogsTextFg;
  137. }
  138. dialogsTextPaletteOver: TextPalette(defaultTextPalette) {
  139. linkFg: dialogsTextFgServiceOver;
  140. monoFg: dialogsTextFgOver;
  141. spoilerFg: dialogsTextFgOver;
  142. }
  143. dialogsTextPaletteActive: TextPalette(defaultTextPalette) {
  144. linkFg: dialogsTextFgServiceActive;
  145. monoFg: dialogsTextFgActive;
  146. spoilerFg: dialogsTextFgActive;
  147. }
  148. dialogsTextPaletteDraft: TextPalette(defaultTextPalette) {
  149. linkFg: dialogsDraftFg;
  150. monoFg: dialogsTextFg;
  151. spoilerFg: dialogsTextFg;
  152. }
  153. dialogsTextPaletteDraftOver: TextPalette(defaultTextPalette) {
  154. linkFg: dialogsDraftFgOver;
  155. monoFg: dialogsTextFgOver;
  156. spoilerFg: dialogsTextFgOver;
  157. }
  158. dialogsTextPaletteDraftActive: TextPalette(defaultTextPalette) {
  159. linkFg: dialogsDraftFgActive;
  160. monoFg: dialogsTextFgActive;
  161. spoilerFg: dialogsTextFgActive;
  162. }
  163. dialogsTextPaletteTaken: TextPalette(defaultTextPalette) {
  164. linkFg: boxTextFgGood;
  165. monoFg: dialogsTextFg;
  166. spoilerFg: dialogsTextFg;
  167. }
  168. dialogsTextPaletteTakenOver: TextPalette(defaultTextPalette) {
  169. linkFg: boxTextFgGood;
  170. monoFg: dialogsTextFgOver;
  171. spoilerFg: dialogsTextFgOver;
  172. }
  173. dialogsTextPaletteTakenActive: TextPalette(defaultTextPalette) {
  174. linkFg: dialogsDraftFgActive;
  175. monoFg: dialogsTextFgActive;
  176. spoilerFg: dialogsTextFgActive;
  177. }
  178. dialogsTextPaletteArchive: TextPalette(defaultTextPalette) {
  179. linkFg: dialogsArchiveFg;
  180. monoFg: dialogsArchiveFg;
  181. spoilerFg: dialogsArchiveFg;
  182. }
  183. dialogsTextPaletteArchiveOver: TextPalette(defaultTextPalette) {
  184. linkFg: dialogsArchiveFgOver;
  185. monoFg: dialogsArchiveFgOver;
  186. spoilerFg: dialogsArchiveFgOver;
  187. }
  188. dialogsTextPaletteArchiveActive: TextPalette(defaultTextPalette) {
  189. linkFg: dialogsTextFgActive;
  190. monoFg: dialogsTextFgActive;
  191. spoilerFg: dialogsTextFgActive;
  192. }
  193. dialogsTextPaletteInTopic: TextPalette(defaultTextPalette) {
  194. linkFg: dialogsNameFg;
  195. monoFg: dialogsTextFg;
  196. spoilerFg: dialogsTextFg;
  197. }
  198. dialogsTextPaletteInTopicOver: TextPalette(defaultTextPalette) {
  199. linkFg: dialogsNameFgOver;
  200. monoFg: dialogsTextFgOver;
  201. spoilerFg: dialogsTextFgOver;
  202. }
  203. dialogsTextPaletteInTopicActive: TextPalette(defaultTextPalette) {
  204. linkFg: dialogsNameFgActive;
  205. monoFg: dialogsTextFgActive;
  206. spoilerFg: dialogsTextFgActive;
  207. }
  208. dialogsEmptyHeight: 160px;
  209. dialogsEmptySkip: 2px;
  210. dialogsEmptyLabel: FlatLabel(defaultFlatLabel) {
  211. minWidth: 32px;
  212. align: align(top);
  213. textFg: windowSubTextFg;
  214. }
  215. dialogsMenuToggle: IconButton {
  216. width: 40px;
  217. height: 40px;
  218. icon: icon {{ "dialogs/dialogs_menu", dialogsMenuIconFg }};
  219. iconOver: icon {{ "dialogs/dialogs_menu", dialogsMenuIconFgOver }};
  220. iconPosition: point(-1px, -1px);
  221. rippleAreaPosition: point(0px, 0px);
  222. rippleAreaSize: 40px;
  223. ripple: defaultRippleAnimationBgOver;
  224. }
  225. dialogsMenuToggleUnread: icon {
  226. { "dialogs/dialogs_menu_unread", dialogsMenuIconFg },
  227. { "dialogs/dialogs_menu_unread_dot", dialogsUnreadBg },
  228. };
  229. dialogsMenuToggleUnreadMuted: icon {
  230. { "dialogs/dialogs_menu_unread", dialogsMenuIconFg },
  231. { "dialogs/dialogs_menu_unread_dot", dialogsMenuIconFg },
  232. };
  233. dialogsLock: IconButton {
  234. width: 36px;
  235. height: 38px;
  236. icon: icon {{ "dialogs/dialogs_lock_off", dialogsMenuIconFg }};
  237. iconOver: icon {{ "dialogs/dialogs_lock_off", dialogsMenuIconFgOver }};
  238. iconPosition: point(-1px, -1px);
  239. ripple: emptyRippleAnimation;
  240. }
  241. dialogsUnlockIcon: icon {{ "dialogs/dialogs_lock_on", dialogsMenuIconFg }};
  242. dialogsUnlockIconOver: icon {{ "dialogs/dialogs_lock_on", dialogsMenuIconFgOver }};
  243. dialogsCalendar: IconButton {
  244. width: 32px;
  245. height: 35px;
  246. icon: icon {{ "dialogs/dialogs_calendar", dialogsMenuIconFg }};
  247. iconOver: icon {{ "dialogs/dialogs_calendar", dialogsMenuIconFgOver }};
  248. iconPosition: point(1px, 6px);
  249. }
  250. dialogsSearchFrom: IconButton(dialogsCalendar) {
  251. width: 29px;
  252. icon: icon {{ "dialogs/dialogs_search_from", dialogsMenuIconFg }};
  253. iconOver: icon {{ "dialogs/dialogs_search_from", dialogsMenuIconFgOver }};
  254. }
  255. dialogsSearchForNarrowFilters: IconButton(dialogsMenuToggle) {
  256. icon: icon {{ "top_bar_search", menuIconFg }};
  257. iconOver: icon {{ "top_bar_search", menuIconFgOver }};
  258. iconPosition: point(4px, 4px);
  259. }
  260. dialogsFilter: InputField(defaultInputField) {
  261. textBg: filterInputInactiveBg;
  262. textBgActive: filterInputActiveBg;
  263. textMargins: margins(12px, 8px, 30px, 5px);
  264. placeholderFg: placeholderFg;
  265. placeholderFgActive: placeholderFgActive;
  266. placeholderFgError: placeholderFgActive;
  267. placeholderMargins: margins(5px, 0px, 2px, 0px);
  268. placeholderScale: 0.;
  269. placeholderShift: -50px;
  270. placeholderFont: normalFont;
  271. borderFg: filterInputInactiveBg;
  272. borderFgActive: windowBgRipple;
  273. borderFgError: activeLineFgError;
  274. border: 3px;
  275. borderActive: 2px;
  276. borderRadius: 18px;
  277. borderDenominator: 2;
  278. style: defaultTextStyle;
  279. heightMin: 35px;
  280. }
  281. dialogsCancelSearchInPeer: IconButton(dialogsMenuToggle) {
  282. icon: icon {{ "dialogs/dialogs_cancel_search", dialogsMenuIconFg }};
  283. iconOver: icon {{ "dialogs/dialogs_cancel_search", dialogsMenuIconFgOver }};
  284. iconPosition: point(11px, 11px);
  285. rippleAreaPosition: point(3px, 3px);
  286. rippleAreaSize: 34px;
  287. }
  288. dialogsCancelSearch: CrossButton {
  289. width: 35px;
  290. height: 35px;
  291. cross: CrossAnimation {
  292. size: 35px;
  293. skip: 12px;
  294. stroke: 1.5;
  295. minScale: 0.3;
  296. }
  297. crossFg: dialogsMenuIconFg;
  298. crossFgOver: dialogsMenuIconFgOver;
  299. crossPosition: point(0px, 0px);
  300. duration: 150;
  301. loadingPeriod: 1000;
  302. ripple: emptyRippleAnimation;
  303. }
  304. dialogCalendar: IconButton(dialogsMenuToggle) {
  305. icon: icon {{ "dialogs/dialogs_calendar", lightButtonFg }};
  306. iconOver: icon {{ "dialogs/dialogs_calendar", lightButtonFgOver }};
  307. iconPosition: point(8px, 9px);
  308. rippleAreaPosition: point(3px, 3px);
  309. rippleAreaSize: 34px;
  310. }
  311. dialogSearchFrom: IconButton(dialogCalendar) {
  312. icon: icon {{ "dialogs/dialogs_search_from", lightButtonFg }};
  313. iconOver: icon {{ "dialogs/dialogs_search_from", lightButtonFgOver }};
  314. iconPosition: point(9px, 8px);
  315. }
  316. dialogsChatTypeSkip: 3px;
  317. dialogsChatIcon: ThreeStateIcon {
  318. icon: icon {{ "dialogs/dialogs_chat", dialogsChatIconFg, point(1px, 4px) }};
  319. over: icon {{ "dialogs/dialogs_chat", dialogsChatIconFgOver, point(1px, 4px) }};
  320. active: icon {{ "dialogs/dialogs_chat", dialogsChatIconFgActive, point(1px, 4px) }};
  321. }
  322. dialogsChannelIcon: ThreeStateIcon {
  323. icon: icon {{ "dialogs/dialogs_channel", dialogsChatIconFg, point(3px, 4px) }};
  324. over: icon {{ "dialogs/dialogs_channel", dialogsChatIconFgOver, point(3px, 4px) }};
  325. active: icon {{ "dialogs/dialogs_channel", dialogsChatIconFgActive, point(3px, 4px) }};
  326. }
  327. dialogsBotIcon: ThreeStateIcon {
  328. icon: icon {{ "dialogs/dialogs_bot", dialogsChatIconFg, point(1px, 3px) }};
  329. over: icon {{ "dialogs/dialogs_bot", dialogsChatIconFgOver, point(1px, 3px) }};
  330. active: icon {{ "dialogs/dialogs_bot", dialogsChatIconFgActive, point(1px, 3px) }};
  331. }
  332. dialogsForumIcon: ThreeStateIcon {
  333. icon: icon {{ "dialogs/dialogs_forum", dialogsChatIconFg, point(1px, 4px) }};
  334. over: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgOver, point(1px, 4px) }};
  335. active: icon {{ "dialogs/dialogs_forum", dialogsChatIconFgActive, point(1px, 4px) }};
  336. }
  337. dialogsArchiveUserpic: icon {{ "archive_userpic", historyPeerUserpicFg }};
  338. dialogsRepliesUserpic: icon {{ "replies_userpic", historyPeerUserpicFg }};
  339. dialogsInaccessibleUserpic: icon {{ "dialogs/inaccessible_userpic", historyPeerUserpicFg }};
  340. dialogsHiddenAuthorUserpic: icon {{ "dialogs/avatar_hidden", premiumButtonFg }};
  341. dialogsMyNotesUserpic: icon {{ "dialogs/avatar_notes", historyPeerUserpicFg }};
  342. dialogsSendStateSkip: 20px;
  343. dialogsSendingIcon: ThreeStateIcon {
  344. icon: icon {{ "dialogs/dialogs_sending", dialogsSendingIconFg, point(8px, 4px) }};
  345. over: icon {{ "dialogs/dialogs_sending", dialogsSendingIconFgOver, point(8px, 4px) }};
  346. active: icon {{ "dialogs/dialogs_sending", dialogsSendingIconFgActive, point(8px, 4px) }};
  347. }
  348. dialogsSentIcon: ThreeStateIcon {
  349. icon: icon {{ "dialogs/dialogs_sent", dialogsSentIconFg, point(10px, 4px) }};
  350. over: icon {{ "dialogs/dialogs_sent", dialogsSentIconFgOver, point(10px, 4px) }};
  351. active: icon {{ "dialogs/dialogs_sent", dialogsSentIconFgActive, point(10px, 4px) }};
  352. }
  353. dialogsReceivedIcon: ThreeStateIcon {
  354. icon: icon {{ "dialogs/dialogs_received", dialogsSentIconFg, point(5px, 4px) }};
  355. over: icon {{ "dialogs/dialogs_received", dialogsSentIconFgOver, point(5px, 4px) }};
  356. active: icon {{ "dialogs/dialogs_received", dialogsSentIconFgActive, point(5px, 4px) }};
  357. }
  358. dialogsPinnedIcon: ThreeStateIcon {
  359. icon: icon {{ "dialogs/dialogs_pinned", dialogsUnreadBgMuted }};
  360. over: icon {{ "dialogs/dialogs_pinned", dialogsUnreadBgMutedOver }};
  361. active: icon {{ "dialogs/dialogs_pinned", dialogsUnreadBgMutedActive }};
  362. }
  363. dialogsLockIcon: ThreeStateIcon {
  364. icon: icon {{ "emoji/premium_lock", dialogsUnreadBgMuted, point(4px, 0px) }};
  365. over: icon {{ "emoji/premium_lock", dialogsUnreadBgMutedOver, point(4px, 0px) }};
  366. active: icon {{ "emoji/premium_lock", dialogsUnreadBgMutedActive, point(4px, 0px) }};
  367. }
  368. dialogsVerifiedColors: VerifiedBadge {
  369. height: 20px;
  370. color: dialogsVerifiedIconBg;
  371. }
  372. dialogsVerifiedColorsOver: VerifiedBadge(dialogsVerifiedColors) {
  373. color: dialogsVerifiedIconBgOver;
  374. }
  375. dialogsVerifiedColorsActive: VerifiedBadge(dialogsVerifiedColors) {
  376. color: dialogsVerifiedIconBgActive;
  377. }
  378. dialogsVerifiedIcon: icon {
  379. { "dialogs/dialogs_verified_star", dialogsVerifiedIconBg },
  380. { "dialogs/dialogs_verified_check", dialogsVerifiedIconFg },
  381. };
  382. dialogsVerifiedIconOver: icon {
  383. { "dialogs/dialogs_verified_star", dialogsVerifiedIconBgOver },
  384. { "dialogs/dialogs_verified_check", dialogsVerifiedIconFgOver },
  385. };
  386. dialogsVerifiedIconActive: icon {
  387. { "dialogs/dialogs_verified_star", dialogsVerifiedIconBgActive },
  388. { "dialogs/dialogs_verified_check", dialogsVerifiedIconFgActive },
  389. };
  390. dialogsPremiumIcon: ThreeStateIcon {
  391. icon: icon {{ "dialogs/dialogs_premium", dialogsVerifiedIconBg }};
  392. over: icon {{ "dialogs/dialogs_premium", dialogsVerifiedIconBgOver }};
  393. active: icon {{ "dialogs/dialogs_premium", dialogsVerifiedIconBgActive }};
  394. }
  395. historySendingIcon: icon {{ "dialogs/dialogs_sending", historySendingOutIconFg, point(5px, 5px) }};
  396. historySendingInvertedIcon: icon {{ "dialogs/dialogs_sending", historySendingInvertedIconFg, point(5px, 5px) }};
  397. historyViewsSendingIcon: icon {{ "dialogs/dialogs_sending", historySendingInIconFg, point(3px, 0px) }};
  398. historyViewsSendingInvertedIcon: icon {{ "dialogs/dialogs_sending", historySendingInvertedIconFg, point(3px, 0px) }};
  399. dialogsUpdateButton: FlatButton {
  400. color: activeButtonFg;
  401. overColor: activeButtonFgOver;
  402. bgColor: activeButtonBg;
  403. overBgColor: activeButtonBgOver;
  404. width: -34px;
  405. height: 46px;
  406. textTop: 14px;
  407. font: semiboldFont;
  408. overFont: semiboldFont;
  409. ripple: RippleAnimation(defaultRippleAnimation) {
  410. color: activeButtonBgRipple;
  411. }
  412. }
  413. dialogsInstallUpdate: icon {{ "install_update", activeButtonFg }};
  414. dialogsInstallUpdateOver: icon {{ "install_update", activeButtonFgOver }};
  415. dialogsInstallUpdateIconSkip: 7px;
  416. dialogsInstallUpdateIconSize: 20px;
  417. dialogsInstallUpdateIconInnerMargin: 5px;
  418. dialogsInstallUpdateIconSide1: 5px;
  419. dialogsInstallUpdateIconSide2: 3px;
  420. dialogsLoadMoreButton: FlatButton(dialogsUpdateButton) {
  421. color: lightButtonFg;
  422. overColor: lightButtonFg;
  423. bgColor: lightButtonBg;
  424. overBgColor: lightButtonBgOver;
  425. ripple: RippleAnimation(defaultRippleAnimation) {
  426. color: lightButtonBgRipple;
  427. }
  428. height: 36px;
  429. textTop: 9px;
  430. font: semiboldFont;
  431. overFont: semiboldFont;
  432. }
  433. dialogsLoadMore: icon {{ "install_update-flip_vertical", lightButtonFg }};
  434. dialogsLoadMoreLoading: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
  435. color: lightButtonFg;
  436. thickness: 3px;
  437. size: size(12px, 12px);
  438. }
  439. dialogsSearchInHeight: 38px;
  440. dialogsSearchInPhotoSize: 26px;
  441. dialogsSearchInPhotoPadding: 12px;
  442. dialogsSearchInSkip: 10px;
  443. dialogsSearchInNameTop: 9px;
  444. dialogsSearchInDownTop: 15px;
  445. dialogsSearchInDown: icon {{ "intro_country_dropdown", windowBoldFg }};
  446. dialogsSearchInDownSkip: 4px;
  447. dialogsSearchInMenu: PopupMenu(defaultPopupMenu) {
  448. shadow: boxRoundShadow;
  449. animation: PanelAnimation(defaultPanelAnimation) {
  450. shadow: boxRoundShadow;
  451. }
  452. scrollPadding: margins(0px, 0px, 0px, 0px);
  453. radius: 8px;
  454. menu: menuWithIcons;
  455. }
  456. dialogsSearchInCheck: icon {{ "player/player_check", mediaPlayerActiveFg }};
  457. dialogsSearchInCheckSkip: 8px;
  458. dialogsSearchFromStyle: defaultTextStyle;
  459. dialogsSearchFromPalette: TextPalette(defaultTextPalette) {
  460. linkFg: dialogsNameFg;
  461. }
  462. dialogsScamPadding: margins(2px, 0px, 2px, 0px);
  463. dialogsScamFont: font(9px semibold);
  464. dialogsScamSkip: 4px;
  465. dialogsScamRadius: 2px;
  466. dialogsMiniPreviewTop: 1px;
  467. dialogsMiniPreview: 16px;
  468. dialogsMiniPreviewRadius: 2px;
  469. dialogsMiniPreviewSkip: 2px;
  470. dialogsMiniPreviewRight: 3px;
  471. dialogsMiniPlay: icon{{ "dialogs/dialogs_mini_play", videoPlayIconFg }};
  472. dialogsMiniForward: DialogsMiniIcon {
  473. icon: ThreeStateIcon {
  474. icon: icon {{ "mini_forward", dialogsTextFg, point(0px, 1px) }};
  475. over: icon {{ "mini_forward", dialogsTextFgOver, point(0px, 1px) }};
  476. active: icon {{ "mini_forward", dialogsTextFgActive, point(0px, 1px) }};
  477. }
  478. skipText: 1px;
  479. skipMedia: 2px;
  480. }
  481. dialogsMiniReplyIcon: icon {{ "mini_forward-flip_horizontal", attentionButtonFg, point(0px, 2px) }};
  482. dialogsMiniReplyStory: DialogsMiniIcon {
  483. icon: ThreeStateIcon {
  484. icon: icon {{ "mini_reply_story", dialogsTextFg, point(0px, 1px) }};
  485. over: icon {{ "mini_reply_story", dialogsTextFgOver, point(0px, 1px) }};
  486. active: icon {{ "mini_reply_story", dialogsTextFgActive, point(0px, 1px) }};
  487. }
  488. skipText: 4px;
  489. skipMedia: 5px;
  490. }
  491. dialogsUnreadMention: ThreeStateIcon {
  492. icon: icon{{ "dialogs/dialogs_mention", dialogsUnreadFg }};
  493. over: icon{{ "dialogs/dialogs_mention", dialogsUnreadFgOver }};
  494. active: icon{{ "dialogs/dialogs_mention", dialogsUnreadFgActive }};
  495. }
  496. dialogsUnreadReaction: ThreeStateIcon {
  497. icon: icon{{ "dialogs/dialogs_reaction", dialogsUnreadFg }};
  498. over: icon{{ "dialogs/dialogs_reaction", dialogsUnreadFgOver }};
  499. active: icon{{ "dialogs/dialogs_reaction", dialogsUnreadFgActive }};
  500. }
  501. downloadBarHeight: 46px;
  502. downloadArrow: icon{{ "fast_to_original", menuIconFg }};
  503. downloadArrowOver: icon{{ "fast_to_original", menuIconFgOver }};
  504. downloadArrowRight: 10px;
  505. downloadTitleLeft: 57px;
  506. downloadTitleTop: 4px;
  507. downloadInfoStyle: TextStyle(defaultTextStyle) {
  508. font: font(12px);
  509. }
  510. downloadInfoLeft: 57px;
  511. downloadInfoTop: 23px;
  512. downloadLoadingLeft: 15px;
  513. downloadLoadingSize: 24px;
  514. downloadLoadingLine: 2px;
  515. downloadIconDocument: icon {{ "dialogs/dialogs_downloads", windowFgActive }};
  516. downloadIconSize: 16px;
  517. downloadIconSizeDone: 20px;
  518. forumTopicRow: DialogRow(defaultDialogRow) {
  519. height: 54px;
  520. padding: margins(8px, 7px, 10px, 7px);
  521. photoSize: 20px;
  522. nameLeft: 39px;
  523. nameTop: 7px;
  524. textLeft: 39px;
  525. textTop: 29px;
  526. unreadMarkDiameter: 8px;
  527. }
  528. forumTopicIconPosition: point(2px, 0px);
  529. editTopicTitleMargin: margins(70px, 2px, 22px, 18px);
  530. editTopicIconPosition: point(24px, 19px);
  531. editTopicMaxHeight: 408px;
  532. chooseTopicListItem: PeerListItem(defaultPeerListItem) {
  533. height: 44px;
  534. photoSize: 20px;
  535. photoPosition: point(16px, 12px);
  536. namePosition: point(55px, 11px);
  537. nameStyle: TextStyle(defaultTextStyle) {
  538. font: font(14px semibold);
  539. }
  540. }
  541. chooseTopicList: PeerList(defaultPeerList) {
  542. item: chooseTopicListItem;
  543. }
  544. DialogsStories {
  545. left: pixels;
  546. height: pixels;
  547. photo: pixels;
  548. photoLeft: pixels;
  549. photoTop: pixels;
  550. shift: pixels;
  551. lineTwice: pixels;
  552. lineReadTwice: pixels;
  553. nameLeft: pixels;
  554. nameRight: pixels;
  555. nameTop: pixels;
  556. nameStyle: TextStyle;
  557. }
  558. DialogsStoriesList {
  559. small: DialogsStories;
  560. full: DialogsStories;
  561. bg: color;
  562. readOpacity: double;
  563. fullClickable: int;
  564. }
  565. dialogsStories: DialogsStories {
  566. left: 4px;
  567. height: 35px;
  568. photo: 21px;
  569. photoTop: 4px;
  570. photoLeft: 4px;
  571. shift: 16px;
  572. lineTwice: 3px;
  573. lineReadTwice: 0px;
  574. nameLeft: 11px;
  575. nameRight: 10px;
  576. nameTop: 3px;
  577. nameStyle: semiboldTextStyle;
  578. }
  579. dialogsStoriesFull: DialogsStories {
  580. left: 4px;
  581. height: 77px;
  582. photo: 42px;
  583. photoLeft: 10px;
  584. photoTop: 9px;
  585. lineTwice: 4px;
  586. lineReadTwice: 2px;
  587. nameLeft: 0px;
  588. nameRight: 0px;
  589. nameTop: 56px;
  590. nameStyle: TextStyle(defaultTextStyle) {
  591. font: font(11px);
  592. }
  593. }
  594. topPeers: DialogsStories(dialogsStoriesFull) {
  595. photo: 46px;
  596. photoLeft: 10px;
  597. photoTop: 8px;
  598. nameLeft: 6px;
  599. }
  600. topPeersRadius: 4px;
  601. topPeersMargin: margins(3px, 3px, 3px, 4px);
  602. recentPeersEmptySize: 100px;
  603. recentPeersEmptyMargin: margins(10px, 10px, 10px, 10px);
  604. recentPeersEmptySkip: 10px;
  605. recentPeersEmptyHeightMin: 220px;
  606. recentPeersItem: PeerListItem(defaultPeerListItem) {
  607. height: 56px;
  608. photoSize: 42px;
  609. photoPosition: point(10px, 7px);
  610. namePosition: point(64px, 9px);
  611. statusPosition: point(64px, 30px);
  612. button: OutlineButton(defaultPeerListButton) {
  613. textBg: contactsBg;
  614. textBgOver: contactsBgOver;
  615. ripple: defaultRippleAnimation;
  616. }
  617. statusFg: contactsStatusFg;
  618. statusFgOver: contactsStatusFgOver;
  619. statusFgActive: contactsStatusFgOnline;
  620. }
  621. recentPeersList: PeerList(defaultPeerList) {
  622. padding: margins(0px, 4px, 0px, 4px);
  623. item: recentPeersItem;
  624. }
  625. recentPeersItemActive: PeerListItem(recentPeersItem) {
  626. nameFg: dialogsNameFgActive;
  627. nameFgChecked: dialogsNameFgActive;
  628. button: OutlineButton(defaultPeerListButton) {
  629. textBg: dialogsBgActive;
  630. textBgOver: dialogsBgActive;
  631. ripple: RippleAnimation(defaultRippleAnimation) {
  632. color: dialogsRippleBgActive;
  633. }
  634. }
  635. statusFg: dialogsTextFgActive;
  636. statusFgOver: dialogsTextFgActive;
  637. statusFgActive: dialogsTextFgActive;
  638. }
  639. recentPeersSpecialName: PeerListItem(recentPeersItem) {
  640. namePosition: point(64px, 19px);
  641. }
  642. dialogsTabsScroll: ScrollArea(defaultScrollArea) {
  643. barHidden: true;
  644. }
  645. dialogsSearchTabs: SettingsSlider(defaultSettingsSlider) {
  646. padding: 8px;
  647. height: 33px;
  648. barTop: 30px;
  649. barSkip: 0px;
  650. barStroke: 6px;
  651. barRadius: 2px;
  652. barFg: transparent;
  653. barSnapToLabel: true;
  654. strictSkip: 18px;
  655. labelTop: 7px;
  656. labelStyle: semiboldTextStyle;
  657. labelFg: windowSubTextFg;
  658. labelFgActive: lightButtonFg;
  659. rippleBottomSkip: 1px;
  660. rippleBg: windowBgOver;
  661. rippleBgActive: lightButtonBgOver;
  662. ripple: defaultRippleAnimation;
  663. }
  664. chatsFiltersTabs: SettingsSlider(dialogsSearchTabs) {
  665. rippleBottomSkip: 0px;
  666. }
  667. dialogsStoriesList: DialogsStoriesList {
  668. small: dialogsStories;
  669. full: dialogsStoriesFull;
  670. bg: dialogsBg;
  671. readOpacity: 0.6;
  672. fullClickable: 0;
  673. }
  674. dialogsStoriesListInfo: DialogsStoriesList(dialogsStoriesList) {
  675. bg: transparent;
  676. fullClickable: 1;
  677. }
  678. dialogsStoriesListMine: DialogsStoriesList(dialogsStoriesListInfo) {
  679. readOpacity: 1.;
  680. }
  681. dialogsStoriesTooltip: ImportantTooltip(defaultImportantTooltip) {
  682. padding: margins(0px, 0px, 0px, 0px);
  683. }
  684. dialogsStoriesTooltipLabel: defaultImportantTooltipLabel;
  685. dialogsStoriesTooltipMaxWidth: 200px;
  686. dialogsStoriesTooltipHide: IconButton(defaultIconButton) {
  687. width: 34px;
  688. height: 20px;
  689. iconPosition: point(-1px, -1px);
  690. icon: icon {{ "calls/video_tooltip", importantTooltipFg }};
  691. iconOver: icon {{ "calls/video_tooltip", importantTooltipFg }};
  692. ripple: emptyRippleAnimation;
  693. }
  694. searchedBarHeight: 28px;
  695. searchedBarFont: normalFont;
  696. searchedBarPosition: point(14px, 5px);
  697. searchedBarLabel: FlatLabel(defaultFlatLabel) {
  698. textFg: searchedBarFg;
  699. margin: margins(14px, 5px, 14px, 5px);
  700. }
  701. searchedBarLink: LinkButton(defaultLinkButton) {
  702. color: searchedBarFg;
  703. overColor: searchedBarFg;
  704. padding: margins(14px, 5px, 14px, 5px);
  705. }
  706. dialogsSearchTagSkip: point(8px, 4px);
  707. dialogsSearchTagBottom: 10px;
  708. dialogsSearchTagLocked: icon{{ "dialogs/mini_tag_lock", lightButtonFgOver }};
  709. dialogsSearchTagPromo: defaultTextStyle;
  710. dialogsSearchTagArrow: icon{{ "dialogs/mini_arrow", windowSubTextFg }};
  711. dialogsSearchTagArrowPadding: margins(-6px, 3px, 0px, 0px);
  712. dialogsSearchTagPromoLeft: 6px;
  713. dialogsSearchTagPromoRight: 1px;
  714. dialogsSearchTagPromoSkip: 6px;
  715. dialogsPopularAppsPadding: margins(10px, 8px, 10px, 12px);
  716. dialogsPopularAppsAbout: FlatLabel(boxDividerLabel) {
  717. minWidth: 128px;
  718. }
  719. dialogsQuickActionSize: 20px;
  720. dialogsQuickActionRippleSize: 80px;