Added ability to start video recording in group calls.

This commit is contained in:
23rd 2021-09-07 14:33:20 +03:00 committed by John Preston
parent 19611d5b26
commit cd59ba6629
16 changed files with 593 additions and 95 deletions

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="212px" height="80px" viewBox="0 0 212 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>record_td_audio</title>
<g id="record_td_audio" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M43.7701975,66.2857143 C47.6576358,66.2857143 51.3477972,65.4403128 54.6671733,63.9231737 C63.7325049,59.7798145 70.032316,50.6262682 70.032316,40 C70.032316,25.4828009 58.2743651,13.7142857 43.7701975,13.7142857 C29.26603,13.7142857 17.508079,25.4828009 17.508079,40 C17.508079,54.5171992 29.26603,66.2857143 43.7701975,66.2857143 Z" id="Oval" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M125.220826,25.5238095 C126.482058,25.5238095 127.504488,26.5471587 127.504488,27.8095238 L127.504488,52.952381 C127.504488,54.2147459 126.482058,55.2380952 125.220826,55.2380952 C123.959594,55.2380952 122.937163,54.2147459 122.937163,52.952381 L122.937163,27.8095238 C122.937163,26.5471587 123.959594,25.5238095 125.220826,25.5238095 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M97.8168761,26.6666667 C99.0781079,26.6666667 100.100539,27.6900158 100.100539,28.952381 L100.100539,51.8095238 C100.100539,53.0718888 99.0781079,54.0952381 97.8168761,54.0952381 C96.5556444,54.0952381 95.5332136,53.0718888 95.5332136,51.8095238 L95.5332136,28.952381 C95.5332136,27.6900158 96.5556444,26.6666667 97.8168761,26.6666667 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M170.894075,26.6666667 C172.155307,26.6666667 173.177738,27.6900158 173.177738,28.952381 L173.177738,51.8095238 C173.177738,53.0718888 172.155307,54.0952381 170.894075,54.0952381 C169.632844,54.0952381 168.610413,53.0718888 168.610413,51.8095238 L168.610413,28.952381 C168.610413,27.6900158 169.632844,26.6666667 170.894075,26.6666667 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M106.951526,28.952381 C108.212758,28.952381 109.235189,29.9757301 109.235189,31.2380952 L109.235189,49.5238095 C109.235189,50.7861745 108.212758,51.8095238 106.951526,51.8095238 C105.690294,51.8095238 104.667864,50.7861745 104.667864,49.5238095 L104.667864,31.2380952 C104.667864,29.9757301 105.690294,28.952381 106.951526,28.952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M180.028725,28.952381 C181.289957,28.952381 182.312388,29.9757301 182.312388,31.2380952 L182.312388,49.5238095 C182.312388,50.7861745 181.289957,51.8095238 180.028725,51.8095238 C178.767494,51.8095238 177.745063,50.7861745 177.745063,49.5238095 L177.745063,31.2380952 C177.745063,29.9757301 178.767494,28.952381 180.028725,28.952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M134.355476,28.952381 C135.616708,28.952381 136.639138,29.9757301 136.639138,31.2380952 L136.639138,49.5238095 C136.639138,50.7861745 135.616708,51.8095238 134.355476,51.8095238 C133.094244,51.8095238 132.071813,50.7861745 132.071813,49.5238095 L132.071813,31.2380952 C132.071813,29.9757301 133.094244,28.952381 134.355476,28.952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M152.624776,30.0952381 C153.886007,30.0952381 154.908438,31.1185872 154.908438,32.3809524 L154.908438,48.3809524 C154.908438,49.6433173 153.886007,50.6666667 152.624776,50.6666667 C151.363544,50.6666667 150.341113,49.6433173 150.341113,48.3809524 L150.341113,32.3809524 C150.341113,31.1185872 151.363544,30.0952381 152.624776,30.0952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M88.6822262,32.3809524 C89.943458,32.3809524 90.9658887,33.4043015 90.9658887,34.6666667 L90.9658887,46.0952381 C90.9658887,47.357603 89.943458,48.3809524 88.6822262,48.3809524 C87.4209944,48.3809524 86.3985637,47.357603 86.3985637,46.0952381 L86.3985637,34.6666667 C86.3985637,33.4043015 87.4209944,32.3809524 88.6822262,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M161.759425,32.3809524 C163.020657,32.3809524 164.043088,33.4043015 164.043088,34.6666667 L164.043088,46.0952381 C164.043088,47.357603 163.020657,48.3809524 161.759425,48.3809524 C160.498194,48.3809524 159.475763,47.357603 159.475763,46.0952381 L159.475763,34.6666667 C159.475763,33.4043015 160.498194,32.3809524 161.759425,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M116.086176,32.3809524 C117.347408,32.3809524 118.369838,33.4043015 118.369838,34.6666667 L118.369838,46.0952381 C118.369838,47.357603 117.347408,48.3809524 116.086176,48.3809524 C114.824944,48.3809524 113.802513,47.357603 113.802513,46.0952381 L113.802513,34.6666667 C113.802513,33.4043015 114.824944,32.3809524 116.086176,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M189.163375,32.3809524 C190.424607,32.3809524 191.447038,33.4043015 191.447038,34.6666667 L191.447038,46.0952381 C191.447038,47.357603 190.424607,48.3809524 189.163375,48.3809524 C187.902143,48.3809524 186.879713,47.357603 186.879713,46.0952381 L186.879713,34.6666667 C186.879713,33.4043015 187.902143,32.3809524 189.163375,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M143.490126,32.3809524 C144.751357,32.3809524 145.773788,33.4043015 145.773788,34.6666667 L145.773788,46.0952381 C145.773788,47.357603 144.751357,48.3809524 143.490126,48.3809524 C142.228894,48.3809524 141.206463,47.357603 141.206463,46.0952381 L141.206463,34.6666667 C141.206463,33.4043015 142.228894,32.3809524 143.490126,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
<path d="M43.6031289,49.3105246 L43.937266,49.3105246 C44.5887999,49.3105246 45.116973,49.8391722 45.116973,50.4912914 L45.116973,52.9144712 C45.116973,53.5665909 44.5887999,54.0952381 43.937266,54.0952381 L43.6031289,54.0952381 C42.9515951,54.0952381 42.423422,53.5665909 42.423422,52.9144712 L42.423422,50.4912914 C42.423422,49.8391722 42.9515951,49.3105246 43.6031289,49.3105246 Z" id="Rectangle" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M43.8481579,28.952381 C46.5276427,28.952381 48.6997943,31.1264842 48.6997943,33.8083764 L48.6997943,41.4774827 C48.6997943,44.1593749 46.5276427,46.3334781 43.8481579,46.3334781 C41.1686732,46.3334781 38.9965216,44.1593749 38.9965216,41.4774827 L38.9965216,33.8083764 C38.9965216,31.1264842 41.1686732,28.952381 43.8481579,28.952381 Z" id="Rectangle" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M35.016158,40.687141 C35.6155766,40.687141 36.1015014,41.1735025 36.1015014,41.7734594 C36.1015014,45.5539211 39.5589126,48.7799303 43.7701975,48.7799303 C48.0292505,48.7799303 51.4388937,45.7047695 51.4388937,41.9709718 C51.4388937,41.3710149 51.9248182,40.8846533 52.524237,40.8846533 C53.1236558,40.8846533 53.6095803,41.3710149 53.6095803,41.9709718 C53.6095803,46.9580564 49.1805897,50.9525672 43.7701975,50.9525672 C38.3927905,50.9525672 33.9308146,46.7892282 33.9308146,41.7734594 C33.9308146,41.1735025 34.4167394,40.687141 35.016158,40.687141 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="120px" height="77px" viewBox="0 0 120 77" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>record_td_landscape</title>
<g id="record_td_landscape" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M9.16666667,5.26258992 L88.0555555,5.26258992 C88.6692052,5.26258992 89.1666667,5.75844141 89.1666667,6.37010522 L89.1666667,70.6298949 C89.1666667,71.2415585 88.6692052,71.7374101 88.0555555,71.7374101 L9.16666667,71.7374101 C7.3257175,71.7374101 5.83333332,70.2498556 5.83333332,68.4148643 L5.83333332,8.58513578 C5.83333332,6.75014437 7.3257175,5.26258992 9.16666667,5.26258992 Z" id="Rectangle" fill="#0A9AD8" fill-rule="nonzero"></path>
<path d="M74.175461,39.4799628 C74.175461,39.4869105 74.817287,41.6527331 75.1547623,43.9104391 C75.473963,46.0458881 75.4898313,48.2806063 75.4898313,48.2674632 C75.5304818,49.6193866 75.5846828,51.4580021 72.725589,54.3511176 C72.7526893,54.3375982 72.5494363,54.5539059 71.0182628,55.8787906 C73.3353483,60.8403487 73.9857583,67.0758169 73.4166495,71.7669903 L21.8987622,71.7669903 C21.3161033,66.9541439 22.0207141,60.7457142 24.2971489,55.8652715 C24.2835987,55.8517521 22.8472767,54.5944637 22.8608269,54.6079829 C21.3296535,53.1208674 19.8120303,51.160579 19.8120303,49.0380595 C19.8120303,49.0317313 19.6476379,47.7958611 19.8540957,45.3139483 C20.0605534,42.8320357 21.6277581,37.9387704 21.7226095,37.5602319 C25.3676153,24.7034427 37.8338058,9.56190341 42.03437,10.5082496 C43.1183865,10.7515958 44.1888528,12.049442 45.1644678,13.9691729 C45.7606768,15.1859037 46.4788378,17.1597116 46.61434,17.5517693 C48.9991763,17.5247308 48.57912,17.5517693 48.7959233,17.5517693 C49.2701805,16.1592884 49.5953855,15.4022114 49.5818353,15.4157307 C50.2457955,13.8069421 51.655017,10.9003073 53.362343,10.5082496 C57.6984093,9.53486495 71.0453633,25.7444235 74.175461,39.4799628 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M40.5130087,14.8004607 C41.4545255,14.724296 42.3404242,15.2703395 43.2401358,16.2211174 C43.844097,16.9402459 44.1541125,17.3103582 44.1701823,17.3314543 C44.5770235,17.8655479 44.4723282,18.6271598 43.936339,19.0325621 C43.4003495,19.4379644 42.6360345,19.3336395 42.2291933,18.7995458 C41.986018,18.4899876 41.859044,18.3286785 41.8482713,18.3156185 L40.7542925,17.2813836 L40.7238148,17.2641429 L39.7325905,18.5678988 C39.670905,18.6704726 39.4567875,19.0863831 39.0902378,19.8156303 C38.8095898,20.4250562 38.0862888,20.6923879 37.4746997,20.4127325 C36.863111,20.133077 36.5948303,19.4123342 36.8754783,18.8029084 L37.1182785,18.2914213 C37.2236442,18.0768659 37.396533,17.7560017 37.636944,17.3288288 C38.5371665,15.8019494 39.4390397,14.8788265 40.5130087,14.8004607 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
<path d="M64.4562625,57.51838 C65.0461218,57.1956882 65.7868188,57.4105788 66.110656,57.9983519 C66.434493,58.5861248 66.2188398,59.3242022 65.6289805,59.646894 C64.6740205,60.1693201 63.6660473,60.6703037 62.630571,61.1433322 C60.832103,61.9079537 59.9107008,62.2989963 59.8663643,62.3164596 L57.2760995,63.2679242 C57.0121855,63.3579578 55.7335118,63.7430351 53.4400788,64.4231557 C53.399373,64.4336807 52.6414868,64.6066673 51.1664195,64.9421162 C49.841893,65.1997916 48.6707235,65.3396191 47.739007,65.3396191 C46.6094163,65.3396191 45.1279263,65.1361679 43.4474528,64.7677954 L40.509949,64.0139408 C40.46734,64.0015585 39.4183938,63.6628116 37.3631103,62.9976998 C35.0519835,62.0964758 33.8524645,61.626955 33.7645538,61.5891375 L30.684499,60.1442387 C30.195084,59.8878868 29.8904378,59.7271255 29.7705605,59.6619556 C29.1798465,59.34082 28.962234,58.6033138 29.2845093,58.0146891 C29.6067845,57.4260642 30.3469085,57.2092215 30.9376225,57.5303569 C31.5036995,57.838099 32.0901055,58.1381032 32.690561,58.4288397 L35.6549235,59.7469342 C35.7178573,59.7726505 38.805909,60.9280903 38.8683885,60.9493811 L42.486846,62.0428091 C42.563244,62.0627458 43.520094,62.2726207 45.3573965,62.6724328 C46.2758583,62.8282629 47.0840855,62.9114246 47.739007,62.9114246 C48.3222293,62.9114246 49.0274493,62.8446472 49.8240148,62.7186528 C52.5754125,62.0856116 53.9708033,61.7634157 54.0101865,61.752065 L56.564689,60.9442341 L59.573909,59.8160545 C61.95057,58.7510394 63.4072285,58.0769116 63.943884,57.7936712 L64.2866305,57.610619 C64.343372,57.5799509 64.3999183,57.5492039 64.4562625,57.51838 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
<path d="M46.885344,43.6844439 C47.8880595,45.090444 49.7308875,46.0773477 51.8989208,46.1990209 L51.8989208,46.8073862 C51.8989208,50.6468482 50.7607033,53.7562714 47.6848063,53.7562714 C44.64956,53.7562714 43.4977923,50.7009251 43.470692,46.9155401 C43.470692,46.3747708 43.470692,46.0458029 43.470692,45.9286363 C44.9341143,45.5365785 46.1400828,44.7389439 46.885344,43.6844439 Z" id="Path" fill="#F23C57" fill-rule="nonzero"></path>
<path d="M34.9609983,39.8510278 C35.6170285,39.7017956 36.270252,40.1107558 36.4200138,40.7644658 C36.7971668,42.4107383 37.729436,43.8209474 39.0211698,44.6728535 C41.5888978,46.3662851 44.882324,45.3493015 46.4210183,42.3125645 C46.7243048,41.7140047 47.4571178,41.4737684 48.057802,41.7759822 C48.6584865,42.0781957 48.8995753,42.8084171 48.5962888,43.406977 C46.4204265,47.7012159 41.5011325,49.2202545 37.6762575,46.6977268 C35.8447725,45.4898517 34.5567008,43.5414332 34.044318,41.304883 C33.8945563,40.6511732 34.304968,40.0002598 34.9609983,39.8510278 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
<path d="M58.312739,40.7644658 C58.4625008,40.1107558 59.1157243,39.7017956 59.7717545,39.8510278 C60.4277848,40.0002598 60.8381965,40.6511732 60.6884348,41.304883 C60.176052,43.5414332 58.8879803,45.4898517 57.0564953,46.6977268 C53.2316203,49.2202545 48.3123263,47.7012159 46.136464,43.406977 C45.8331778,42.8084171 46.0742665,42.0781957 46.6749508,41.7759822 C47.2756353,41.4737684 48.0084483,41.7140047 48.3117345,42.3125645 C49.850429,45.3493015 53.1438553,46.3662851 55.711583,44.6728535 C57.0033168,43.8209474 57.935586,42.4107383 58.312739,40.7644658 Z" id="Path-Copy" fill="#000000" fill-rule="nonzero"></path>
<path d="M47.468003,43.7250015 C49.3379315,43.7250015 51.9531215,40.9941167 51.9531215,38.6823283 C51.9531215,36.3705396 50.3270968,36.1271934 47.400252,36.1271934 C44.4734073,36.1271934 42.8473823,36.3705396 42.8473823,38.6823283 C42.8473823,40.9941167 45.5980745,43.7250015 47.468003,43.7250015 Z" id="Oval" fill="#000000" fill-rule="nonzero"></path>
<path d="M38.701019,30.4626353 C36.8310905,30.962847 35.7877245,33.125924 36.0316283,34.0317124 C36.275532,34.9375011 38.0641593,35.5458663 39.9340878,35.0456549 C41.8040165,34.5454432 43.023535,33.0177702 42.8067318,32.2201354 C42.5899285,31.4089815 40.5709475,29.9624239 38.701019,30.4626353 Z" id="Oval-Copy-3" fill="#000000" fill-rule="nonzero"></path>
<path d="M56.7227945,30.4626353 C58.592723,30.962847 59.636089,33.125924 59.3921852,34.0317124 C59.1482815,34.9375011 57.3596542,35.5458663 55.4897255,35.0456549 C53.619797,34.5454432 52.4002782,33.0177702 52.6170817,32.2201354 C52.833885,31.4225009 54.8393155,29.9624239 56.7227945,30.4626353 Z" id="Oval-Copy-4" fill="#000000" fill-rule="nonzero"></path>
<path d="M51.925176,16.3090342 C52.8606485,15.2995095 53.7683583,14.7222917 54.7250875,14.7997248 C55.7860473,14.8771785 56.6728375,15.7638522 57.5493765,17.2256689 C57.842431,17.7415165 58.055606,18.1375372 58.1889015,18.4137309 C58.2972335,18.6430962 58.3583273,18.772822 58.3721823,18.8029084 C58.6528303,19.4123342 58.3845498,20.133077 57.772961,20.4127325 C57.161372,20.6923879 56.438071,20.4250562 56.157423,19.8156303 L55.5096673,18.5588251 C55.2122455,18.0543638 54.5848463,17.3156962 54.5447338,17.2816756 C54.1999508,17.5123321 53.9414935,17.7180916 53.769362,17.8989543 L53.0184675,18.7995458 C52.6116263,19.3336395 51.847311,19.4379644 51.3113218,19.0325621 C50.7753325,18.6271598 50.6706373,17.8655479 51.0774785,17.3314543 L51.925176,16.3090342 Z" id="Path-Copy-2" fill="#CABCB4" fill-rule="nonzero"></path>
<path d="M39.0857368,32.8474823 C39.6149,32.3195282 39.7864885,31.6347423 39.4689905,31.31797 C39.1514925,31.0011978 38.4651378,31.1723942 37.935974,31.7003478 C37.4068108,32.2283019 37.2352223,32.9130876 37.5527203,33.2298598 C37.8702183,33.5466321 38.556573,33.3754357 39.0857368,32.8474823 Z" id="Oval-Copy-7" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M55.3486545,32.954987 C55.9763015,32.5483632 56.2868768,31.9141422 56.0423438,31.5384146 C55.7978105,31.1626872 55.0907685,31.1877336 54.463121,31.5943569 C53.835474,32.000981 53.5248988,32.6352021 53.7694318,33.0109294 C54.0139653,33.3866568 54.721007,33.3616106 55.3486545,32.954987 Z" id="Oval-Copy-8" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M91.9444445,5.26258992 L110.833333,5.26258992 C112.674283,5.26258992 114.166667,6.75014437 114.166667,8.58513578 L114.166667,25.2054344 C114.166667,25.8170983 113.669205,26.4142395 113.055556,26.4142395 L91.9444445,26.4142395 C91.3307948,26.4142395 90.8333333,25.8170983 90.8333333,25.2054344 L90.8333333,6.37010522 C90.8333333,5.75844141 91.3307948,5.26258992 91.9444445,5.26258992 Z" id="Rectangle" fill="#FFCA3D" fill-rule="nonzero"></path>
<path d="M103.2142,7.97411003 C107.632602,7.97411003 109.969538,10.9765406 110.178,14.3005289 C110.380517,17.5297332 110.201469,22.6688803 109.0483,26.4142395 L97.5363535,26.4142395 C96.9669115,23.4651448 96.2977453,19.3968245 96.3087163,16.4487992 C95.6055153,16.0427077 95.1394328,15.7437666 94.910469,15.5519759 C94.0706783,14.8485281 93.6948253,14.2919279 93.7565138,13.9735572 C94.0114313,12.6579448 95.058614,12.4439806 96.5508963,12.6122341 C97.3323058,10.02525 99.5632098,7.97411003 103.2142,7.97411003 Z" id="Path" fill="#4CBFEA" fill-rule="nonzero"></path>
<path d="M93.75,14.2803021 C94.7387305,14.2869003 100.665601,16.0421213 100.779908,16.0623312 C101.710781,16.2269147 102.358415,16.0406637 102.722809,15.5035784 L102.727941,15.8398107 C102.634666,22.8737477 102.587527,26.3985574 102.586524,26.4142395 L97.333057,26.4142395 C96.5029448,23.4278615 96.1931475,19.365188 96.204203,16.3958621 L96.1288678,16.3519496 C94.9332718,15.5938989 94.3316638,15.2114978 94.3240435,15.2047464 L94.2901418,15.1742545 C93.9997255,14.9090217 93.7985318,14.6182939 93.75,14.2803021 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M104.691488,12.1608256 C105.876093,12.443808 106.596703,13.5928637 106.301507,14.7272315 C106.249909,14.9255078 106.039995,15.0462441 105.83265,14.9969034 C105.625305,14.9475627 105.499047,14.7468294 105.550644,14.5485531 C105.742783,13.8102114 105.273946,13.0626231 104.503958,12.8786861 C103.734236,12.6948126 102.954477,13.1437115 102.762404,13.8817999 C102.710806,14.0800763 102.500892,14.2008125 102.293547,14.1514718 C102.086202,14.102131 101.959944,13.9013978 102.011541,13.7031214 C102.306804,12.5685003 103.506617,11.8777806 104.691488,12.1608256 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
<path d="M102.365249,14.9966072 C102.574812,15.0062043 102.737019,15.1861129 102.727547,15.3984443 C102.688118,16.2823197 101.977686,16.6059177 100.863027,16.4063951 C100.775397,16.3907082 100.39878,16.2862544 99.7331758,16.0930336 L98.4516848,15.6415518 C96.8548668,15.0830675 95.593332,14.7499239 94.0835805,14.562086 C93.875367,14.5361809 93.7273033,14.3441607 93.7528708,14.133197 C93.778438,13.9222333 93.967955,13.7722137 94.1761683,13.7981189 C95.681789,13.9854428 96.9471038,14.3108231 98.4958953,14.8433357 L99.9405645,15.3515853 C100.555982,15.5337867 100.907523,15.6327335 100.995189,15.6484258 C101.697446,15.77413 101.940227,15.6770468 101.966787,15.3910546 C102.092719,15.1216917 102.22554,14.9902092 102.365249,14.9966072 Z" id="Path" fill="#1683AC" fill-rule="nonzero"></path>
<path d="M105.342285,17.6077403 C105.449023,17.440419 105.661516,17.3862365 105.831012,17.4771775 L105.862251,17.4959374 L107.653171,18.6918577 C107.748825,18.7557323 107.810292,18.8601897 107.821629,18.975104 L107.82353,19.0137547 L107.82353,23.8401474 C107.82353,24.0842782 107.603986,24.2665628 107.370484,24.2163065 C104.918229,23.6885105 103.69853,21.5111838 103.69853,17.8178344 C103.69853,17.6055406 103.866738,17.4333981 104.074233,17.4333981 C104.281728,17.4333981 104.449937,17.6055406 104.449937,17.8178344 C104.449937,20.9087224 105.316738,22.7106219 107.040407,23.3266985 L107.071928,23.3375379 L107.071928,19.2215938 L105.451561,18.1397314 C105.288021,18.030525 105.235064,17.8131177 105.323949,17.6397028 L105.342285,17.6077403 Z" id="Path-11" fill="#1683AC" fill-rule="nonzero"></path>
<path d="M108.990216,13.783927 C108.786461,13.8348866 108.580611,13.7084298 108.530439,13.5014778 C108.471102,13.2567271 108.387979,13.0082108 108.282177,12.7603458 C108.048814,12.2136439 107.709765,11.6803939 107.28247,11.1972642 C106.855196,10.7141701 106.369777,10.3152109 105.860217,10.0218583 C105.629222,9.88887579 105.395234,9.77878492 105.162451,9.69316556 C104.965148,9.6205959 104.863122,9.39931123 104.934571,9.19891243 C105.00602,8.99851365 105.223887,8.89488767 105.42119,8.96745733 C105.694614,9.06802466 105.967329,9.19633622 106.234928,9.35039253 C106.816569,9.68524149 107.366171,10.1369525 107.847779,10.6814707 C108.32934,11.2259638 108.713115,11.8295599 108.979376,12.4533316 C109.101862,12.7402812 109.198668,13.0297058 109.268303,13.3169365 C109.318475,13.5238886 109.193972,13.7329673 108.990216,13.783927 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M91.9444445,27.9748202 L113.055556,27.9748202 C113.669205,27.9748202 114.166667,28.4706715 114.166667,29.0823353 L114.166667,47.9176647 C114.166667,48.5293285 113.669205,49.0251798 113.055556,49.0251798 L91.9444445,49.0251798 C91.3307948,49.0251798 90.8333333,48.5293285 90.8333333,47.9176647 L90.8333333,29.0823353 C90.8333333,28.4706715 91.3307948,27.9748202 91.9444445,27.9748202 Z" id="Rectangle-Copy-5" fill="#FE5BA3" fill-rule="nonzero"></path>
<path d="M91.9444445,50.6870504 L113.055556,50.6870504 C113.669205,50.6870504 114.166667,51.1829017 114.166667,51.7945656 L114.166667,68.4148643 C114.166667,70.2498556 112.674283,71.7374101 110.833333,71.7374101 L91.9444445,71.7374101 C91.3307948,71.7374101 90.8333333,71.2415585 90.8333333,70.6298949 L90.8333333,51.7945656 C90.8333333,51.1829017 91.3307948,50.6870504 91.9444445,50.6870504 Z" id="Rectangle-Copy-6" fill="#4DC17B" fill-rule="nonzero"></path>
<path d="M102.25,52.3300971 C104.064924,52.3300971 106.494853,54.4941995 107.590007,57.0290814 C108.926565,60.1227278 109.75,64.5446101 109.75,65.4829234 C109.75,65.8797612 109.465807,66.2975642 109.0014,66.7051419 L108.275763,67.2454656 C108.734593,68.2433846 108.946429,69.4043108 108.946429,70.6431768 C108.946429,70.9457113 108.926633,71.4749893 108.888273,71.7669903 L95.573462,71.7669903 C95.5351018,71.4749893 95.515306,70.9457113 95.515306,70.6431768 C95.515306,69.4347129 95.7168725,68.3004102 96.152671,67.3191466 L95.9808008,67.2012549 C95.2383448,66.6744278 94.75,66.0858807 94.75,65.4829234 C94.75,64.4035757 95.566779,60.0431632 96.8797585,57.0076953 C97.9738345,54.4783084 100.435077,52.3300971 102.25,52.3300971 Z" id="Path" fill="#112F40" fill-rule="nonzero"></path>
<path d="M102.261954,61.3438098 C102.88843,61.3438098 103.307995,61.2569433 103.656078,61.1556076 L104.289433,60.9572583 C104.533466,60.8877973 104.788283,60.8385647 105.118273,60.8439809 C106.72513,60.8703535 106.90094,64.5129651 106.889183,66.1986132 C106.880102,67.5004661 103.47449,68.664433 102.25,68.664433 C101.02551,68.664433 97.4285715,67.5004661 97.4285715,66.1425046 L97.4313878,65.7434914 C97.4548043,64.2006391 97.663843,60.8270556 99.4181933,60.8270556 C99.638903,60.8270556 99.8337898,60.8619881 100.028218,60.9136885 L100.872784,61.1693216 C101.231515,61.2652115 101.666038,61.3438098 102.261954,61.3438098 Z" id="Mask" fill="#000000" fill-rule="nonzero"></path>
<path d="M99.4181933,60.8270556 C99.638903,60.8270556 99.8337898,60.8619881 100.028218,60.9136885 L100.872784,61.1693216 C101.231515,61.2652115 101.666038,61.3438098 102.261954,61.3438098 C102.88843,61.3438098 103.307995,61.2569433 103.656078,61.1556076 L104.289433,60.9572583 C104.533466,60.8877973 104.788283,60.8385647 105.118273,60.8439809 C105.478219,60.8498884 105.766356,61.0372536 105.996662,61.343432 L105.933366,62.8865975 L105.655612,64.7457443 C104.975579,66.8910871 103.843542,67.5004661 102.269133,67.5004661 C100.694723,67.5004661 99.5723178,66.8910871 98.8922845,64.7457443 C98.8050003,64.2669887 98.7205035,63.6002265 98.638794,62.7454582 C98.6008363,62.3483809 98.5432378,61.2050488 98.5429283,61.1876999 C98.7804968,60.9609601 99.0686768,60.8270556 99.4181933,60.8270556 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M102.25,66.5692924 C103.348934,66.5692924 104.239796,65.4441246 104.239796,64.7845433 C104.239796,63.6702853 103.348934,63.4653808 102.25,63.4653808 C101.151066,63.4653808 100.260204,63.6702853 100.260204,64.7845433 C100.260204,65.4441246 101.151066,66.5692924 102.25,66.5692924 Z" id="Oval" fill="#0D222E" fill-rule="nonzero"></path>
<path d="M106.970793,67.8435271 C107.138274,67.750305 107.349413,67.8108706 107.442385,67.9788041 C107.535356,68.1467376 107.474953,68.3584457 107.307471,68.4516678 C106.903146,68.6767189 106.172738,69.0035268 105.116247,69.4320909 C105.016337,69.4679318 104.794238,69.5422161 104.44995,69.6549438 C103.576411,69.9255996 102.778547,70.0861309 102.251361,70.0861309 C101.929201,70.0861309 101.194351,69.9426061 100.046812,69.6555566 C99.1225755,69.3244815 98.6353858,69.1485422 98.585242,69.127739 C97.848853,68.7912533 97.379051,68.5668758 97.1758355,68.4546068 C97.00806,68.3619172 96.946989,68.1504017 97.0394295,67.9821739 C97.1318698,67.8139461 97.3428163,67.7527102 97.5105918,67.8454 C97.8941468,68.0573 98.3108265,68.25649 98.7360393,68.4368654 L100.819361,69.1536913 C101.397379,69.3047451 101.902378,69.3905734 102.251361,69.3905734 C102.600083,69.3905734 103.103441,69.304695 103.679035,69.1535076 L104.691113,68.8445846 C105.181443,68.6754929 106.875458,67.8965913 106.970793,67.8435271 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
<path d="M102.5,30.7446044 C106.745647,30.7446044 110.189142,34.0574222 110.189142,38.14695 C110.189142,39.9020569 109.555397,41.5155537 108.496201,42.7814621 C109.728237,44.1331949 110.277778,45.9869998 110.277778,48.0382003 C110.277778,48.3729151 110.255619,48.7033388 110.211301,49.0251798 L94.788699,49.0251798 C94.7443813,48.7033388 94.7222223,48.3729151 94.7222223,48.0382003 C94.7222223,45.9869998 95.2717633,44.1331949 96.5037988,42.7814621 C95.4446028,41.5155537 94.8108577,39.9020569 94.8108577,38.14695 C94.8108577,34.0574222 98.2543527,30.7446044 102.5,30.7446044 Z" id="Path" fill="#FFE934" fill-rule="nonzero"></path>
<path d="M107.08304,43.0985663 C107.263989,42.9842186 107.503676,43.0377353 107.618395,43.2180995 C107.733114,43.3984634 107.679423,43.6373747 107.498474,43.7517225 C107.057364,44.0304734 106.579716,44.273003 106.073054,44.4755372 C104.968595,44.9115697 103.752383,45.1421002 102.5,45.1421002 C101.247617,45.1421002 100.031405,44.9115697 98.9265333,44.4753737 C98.4237678,44.2762205 97.9495623,44.0348505 97.5015263,43.7517225 C97.3205768,43.6373747 97.2668863,43.3984634 97.3816053,43.2180995 C97.4963243,43.0377353 97.736011,42.9842186 97.9169605,43.0985663 C98.3242775,43.3559626 98.7553408,43.5753735 99.2126545,43.7565229 C100.226009,44.156588 101.345271,44.3687419 102.5,44.3687419 C103.65473,44.3687419 104.773991,44.156588 105.785799,43.7571371 C106.247296,43.5726538 106.682532,43.3516599 107.08304,43.0985663 Z" id="Path" fill="#FF9000" fill-rule="nonzero"></path>
<ellipse id="Oval" fill="#000000" fill-rule="nonzero" cx="99.4420703" cy="37.6534603" rx="1.17442228" ry="1.33027662"></ellipse>
<ellipse id="Oval-Copy-3" fill="#FFFFFF" fill-rule="nonzero" cx="99.1761633" cy="37.3316192" rx="1" ry="1"></ellipse>
<ellipse id="Oval-Copy-2" fill="#000000" fill-rule="nonzero" cx="105.55793" cy="37.6534603" rx="1.17442228" ry="1.33027662"></ellipse>
<path d="M102.544318,38.2542305 C103.204653,38.2542305 103.510446,38.5202856 103.763058,38.7949235 L103.794081,38.8292532 L103.896012,38.9451161 L103.927034,38.9794459 L103.958056,39.0094843 C104.144191,39.2111713 104.343622,39.3699462 104.698164,39.3699462 C105.863723,39.3699462 106.413264,39.7175347 106.426559,40.421294 L106.426559,40.4427501 L106.426559,40.4770797 C106.382241,41.6399989 104.281577,42.3137198 102.579772,42.3308846 L102.526591,42.3308846 L102.504432,42.3308846 L102.482273,42.3308846 C100.771605,42.3308846 98.6266223,41.6528727 98.5823045,40.4770797 L98.5823045,40.4427501 C98.5823045,39.721826 99.1362773,39.3699462 100.3107,39.3699462 C100.647515,39.3699462 100.842514,39.224045 101.019785,39.0395228 L101.050807,39.0094843 L101.08183,38.9794459 L101.112852,38.9451161 L101.214783,38.8292532 C101.219215,38.8249619 101.223647,38.8163795 101.228079,38.8120885 L101.259101,38.7777587 C101.507281,38.5117033 101.813074,38.2542305 102.460114,38.2542305 C102.473409,38.2542305 102.491137,38.2542305 102.504432,38.2542305 C102.513295,38.2542305 102.531023,38.2542305 102.544318,38.2542305 Z" id="Path" fill="#FF4B00" fill-rule="nonzero"></path>
<path d="M105.067531,40.1325146 C105.263202,40.0455276 105.492571,40.1331202 105.57984,40.3281582 C105.66711,40.5231962 105.579233,40.7518226 105.383562,40.8388097 C104.621871,41.1774248 103.668289,41.344375 102.522159,41.344375 C101.376029,41.344375 100.422447,41.1774248 99.6607563,40.8388097 C99.465085,40.7518226 99.377208,40.5231962 99.4644775,40.3281582 C99.551747,40.1331202 99.7811158,40.0455276 99.9767873,40.1325146 C100.629104,40.4225066 101.477361,40.5710167 102.522159,40.5710167 C103.566958,40.5710167 104.415214,40.4225066 105.067531,40.1325146 Z" id="Path" fill="#921000" fill-rule="nonzero"></path>
<ellipse id="Oval-Copy-4" fill="#FFFFFF" fill-rule="nonzero" cx="105.247705" cy="37.3316192" rx="1" ry="1"></ellipse>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="83px" height="120px" viewBox="0 0 83 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>record_td_portrait</title>
<g id="record_td_portrait" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M77,9.55160931 L77,84.7273399 C77,85.3811732 76.470394,86 75.8170923,86 L7.18290784,86 C6.52960589,86 6,85.3811732 6,84.7273399 L6,9.55160931 C6,7.59010964 7.58881763,6 9.5487235,6 L73.4512766,6 C75.4111823,6 77,7.59010964 77,9.55160931 Z" id="Rectangle" fill="#0A9AD8" fill-rule="nonzero"></path>
<path d="M77,89.8056802 L77,110.134529 C77,112.11582 75.7238703,114 73.7458927,114 L55.8305058,114 C55.1711798,114 55,112.66043 55,112 L55,89.5084229 C55,88.8479926 55.9805666,88 56.6398926,88 C57.0794432,88 63.57732,88 76.1335231,88 C76.7928488,88 77,89.14525 77,89.8056802 Z" id="Rectangle" fill="#FFCA3D" fill-rule="nonzero"></path>
<path d="M53,89.5047607 L53,111.526158 C53,112.186589 51.6593259,114 51,114 L32.3484913,114 C31.6891654,114 30,112.186589 30,111.526158 C30,97.0575332 30,89.7170673 30,89.5047607 C30,89.1863009 31.6615311,88 32.0029297,88 L51.1621094,88 C51.8214353,88 53,88.8443305 53,89.5047607 Z" id="Rectangle-Copy-5" fill="#FE5BA3" fill-rule="nonzero"></path>
<path d="M28,90 L28,112 C28,112.66043 26.6593259,114 26,114 L9,114 C7.02202225,114 6,113.11582 6,111.134529 L6,89.8056802 C6,89.14525 7.20715113,88 7.86647705,88 L26.1694942,88 C26.8288202,88 28,89.3395698 28,90 Z" id="Rectangle-Copy-6" fill="#4DC17B" fill-rule="nonzero"></path>
<path d="M41.3656958,92.5560538 C46.2043205,92.5560538 50.1287584,96.3592496 50.1287584,101.054127 C50.1287584,103.069033 49.4065002,104.921367 48.1993694,106.374661 C49.6034796,107.926483 50.2297735,110.054696 50.2297735,112.409524 C50.2297735,112.793785 50.2045197,113.630519 50.1540122,114 L32.5773794,114 C32.5268719,113.630519 32.5016181,112.793785 32.5016181,112.409524 C32.5016181,110.054696 33.1279119,107.926483 34.5320221,106.374661 C33.3248914,104.921367 32.6026332,103.069033 32.6026332,101.054127 C32.6026332,96.3592496 36.5270711,92.5560538 41.3656958,92.5560538 Z" id="Path" fill="#FFE934" fill-rule="nonzero"></path>
<path d="M35.5300673,106.874427 C35.6619508,106.666553 35.9370974,106.605129 36.1446243,106.737234 C36.6086526,107.032618 37.0997263,107.284407 37.6206979,107.492285 C38.7751269,107.951388 40.0502062,108.194849 41.3656958,108.194849 C42.6811854,108.194849 43.9562647,107.951388 45.1089166,107.492997 C45.6346668,107.281287 46.1304986,107.027678 46.5867673,106.737234 C46.7942941,106.605129 47.0694408,106.666553 47.2013243,106.874427 C47.3332078,107.082302 47.2718866,107.357909 47.0643598,107.490013 C46.5614652,107.810139 46.0169132,108.088667 45.4392689,108.321269 C44.1800966,108.822026 42.7935134,109.086778 41.3656958,109.086778 C39.9378782,109.086778 38.551295,108.822026 37.2916478,108.321079 C36.7184525,108.092363 36.1778208,107.815164 35.6670318,107.490013 C35.459505,107.357909 35.3981838,107.082302 35.5300673,106.874427 Z" id="Path" fill="#FF9000" fill-rule="nonzero"></path>
<ellipse id="Oval" fill="#000000" fill-rule="nonzero" cx="37.8806738" cy="100.487589" rx="1.33845047" ry="1.52719005"></ellipse>
<ellipse id="Oval-Copy-3" fill="#FFFFFF" fill-rule="nonzero" cx="37.5776284" cy="100.118108" rx="1" ry="1"></ellipse>
<ellipse id="Oval-Copy-2" fill="#000000" fill-rule="nonzero" cx="44.8507178" cy="100.487589" rx="1.33845047" ry="1.52719005"></ellipse>
<path d="M41.4162033,101.177288 C42.1687662,101.177288 42.5172681,101.482726 42.8051613,101.798017 L42.8405166,101.837428 L42.9566841,101.970442 L42.9920394,102.009853 L43.0273947,102.044338 C43.2395264,102.275879 43.4668104,102.458157 43.8708711,102.458157 C45.19922,102.458157 45.8255138,102.857197 45.840666,103.66513 L45.840666,103.689762 L45.840666,103.729173 C45.7901585,105.064233 43.3960998,105.837681 41.4566095,105.857387 L41.3960005,105.857387 L41.3707464,105.857387 L41.3454927,105.857387 C39.3959008,105.857387 36.9513346,105.079012 36.9008271,103.729173 L36.9008271,103.689762 C36.9008271,102.862123 37.5321716,102.458157 38.870622,102.458157 C39.2544796,102.458157 39.4767128,102.290659 39.6787431,102.078823 L39.7140984,102.044338 L39.7494537,102.009853 L39.784809,101.970442 L39.9009765,101.837428 C39.9060272,101.832502 39.9110778,101.822649 39.9161287,101.817722 L39.951484,101.778311 C40.2343263,101.472873 40.5828285,101.177288 41.3202389,101.177288 C41.3353911,101.177288 41.3555942,101.177288 41.3707464,101.177288 C41.380848,101.177288 41.4010511,101.177288 41.4162033,101.177288 Z" id="Path" fill="#FF4B00" fill-rule="nonzero"></path>
<path d="M44.2902005,103.331896 C44.514676,103.231372 44.7780041,103.33216 44.8783603,103.557011 C44.9787161,103.781863 44.8780973,104.045632 44.6536215,104.146156 C43.7850075,104.535136 42.6976887,104.726897 41.3909496,104.726897 C40.0842107,104.726897 38.9968916,104.535136 38.1282776,104.146156 C37.9038018,104.045632 37.803183,103.781863 37.9035388,103.557011 C38.003895,103.33216 38.2672231,103.231372 38.4916986,103.331896 C39.2345824,103.664572 40.2007594,103.834968 41.3909496,103.834968 C42.5811397,103.834968 43.5473167,103.664572 44.2902005,103.331896 Z" id="Path" fill="#921000" fill-rule="nonzero"></path>
<ellipse id="Oval-Copy-4" fill="#FFFFFF" fill-rule="nonzero" cx="44.4971649" cy="100.118108" rx="1" ry="1"></ellipse>
<path d="M70.8949759,50.0041797 C70.8949759,50.0120623 71.6193972,52.4693865 72.0003017,55.0309609 C72.36058,57.4538236 72.3784903,59.9893162 72.3784903,59.9744042 C72.4243721,61.5082851 72.4855479,63.5943627 69.2585219,66.8768674 C69.2891099,66.8615287 69.0597003,67.1069497 67.3314827,68.6101528 C69.9467501,74.2394949 70.6423464,80.6774339 70,86 L12,86 C11.3423596,80.5393847 12.0285146,74.1321234 14.5979003,68.5948138 C14.5826063,68.5794751 12.9614463,67.1529662 12.9767402,67.1683049 C11.2485225,65.4810361 9.53559871,63.256909 9.53559871,60.8487164 C9.53559871,60.8415363 9.35005086,59.4393285 9.58307734,56.6233709 C9.81610381,53.8074135 11.5849897,48.2555556 11.6920474,47.8260689 C15.8061233,33.2388635 29.8765688,16.0593993 34.6176969,17.1331158 C35.8412139,17.4092144 37.0494371,18.8817398 38.1506024,21.0598505 C38.8235366,22.4403431 39.6341168,24.679809 39.7870565,25.1246344 C42.4787938,25.0939568 42.0046808,25.1246344 42.2493842,25.1246344 C42.7846729,23.5447372 43.1517282,22.685764 43.1364342,22.7011028 C43.8858382,20.8757848 45.4764105,17.5779412 47.4034497,17.1331158 C52.2975175,16.0287217 67.3620705,34.4199517 70.8949759,50.0041797 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M32.9005543,22.0030227 C33.9632333,21.9166069 34.963137,22.5361432 35.978631,23.6148879 C36.6603151,24.4308051 37.0102259,24.8507314 37.0283637,24.8746668 C37.4875608,25.480645 37.3693925,26.3447635 36.7644275,26.8047296 C36.1594625,27.2646955 35.296789,27.1463295 34.8375919,26.5403512 C34.5631227,26.1891291 34.4198088,26.0061091 34.4076495,25.9912914 L33.1728885,24.8178571 L33.1384887,24.798296 L32.0197051,26.2775265 C31.9500815,26.3939059 31.7084094,26.8657945 31.2946888,27.6931921 C30.9779248,28.3846418 30.1615433,28.6879542 29.47125,28.3706594 C28.7809567,28.0533646 28.4781515,27.235616 28.7949158,26.5441664 L29.0689613,25.9638374 C29.1878866,25.7204046 29.3830239,25.3563548 29.6543732,24.871688 C30.6704437,23.1393033 31.6883779,22.0919358 32.9005543,22.0030227 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
<path d="M59.9250284,70.470417 C60.5907959,70.1042935 61.4268122,70.3481069 61.7923232,71.0149891 C62.1578345,71.6818714 61.9144291,72.5192879 61.2486619,72.8854114 C60.1708094,73.4781517 59.0331217,74.0465634 57.8643917,74.5832575 C55.8344814,75.4507908 54.7945054,75.8944644 54.7444634,75.9142781 L51.8208614,76.9938019 C51.5229846,77.0959534 50.0797605,77.5328586 47.491189,78.304518 C47.4452449,78.3164594 46.5898273,78.5127288 44.9249362,78.893326 C43.4299582,79.1856826 42.1080728,79.3443299 41.0564553,79.3443299 C39.7814992,79.3443299 38.1093584,79.1134956 36.2126274,78.6955434 L32.8971008,77.8402262 C32.8490086,77.8261773 31.6650748,77.4418378 29.3453003,76.6872075 C26.736758,75.6646865 25.3828749,75.131972 25.2836511,75.0890648 L21.8072286,73.4496944 C21.2548316,73.1588395 20.910981,72.9764413 20.7756767,72.9025001 C20.1089447,72.5381424 19.863328,71.7013738 20.2270764,71.0335251 C20.5908248,70.3656764 21.4261942,70.1196484 22.0929262,70.4840061 C22.7318509,70.8331674 23.3937206,71.1735498 24.0714476,71.5034171 L27.4172895,72.9989161 C27.488322,73.0280935 30.9737702,74.3390457 31.0442904,74.3632022 L35.1284016,75.6037967 C35.2146311,75.6264167 36.2946166,75.8645387 38.3683587,76.3181626 C39.4050158,76.4949659 40.317253,76.5893204 41.0564553,76.5893204 C41.7147312,76.5893204 42.510705,76.5135554 43.4097792,76.3706031 C46.5152503,75.6523601 48.0902116,75.2867992 48.134663,75.2739207 L51.0179006,74.3573626 L54.4143724,73.0773393 C57.0968824,71.8689821 58.7409958,71.1041222 59.3467129,70.7827604 L59.7335668,70.5750708 C59.7976103,70.5402751 59.8614333,70.5053898 59.9250284,70.470417 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
<path d="M40.0929357,54.7745486 C41.2246887,56.3697845 43.3046677,57.4895174 45.7517016,57.6275669 L45.7517016,58.3178131 C45.7517016,62.6740343 44.4670088,66.20196 40.9952794,66.20196 C37.5694319,66.20196 36.269445,62.7353895 36.238857,58.4405236 C36.238857,57.8269714 36.238857,57.453727 36.238857,57.3207907 C37.8906051,56.8759652 39.2517677,55.9709755 40.0929357,54.7745486 Z" id="Path" fill="#F23C57" fill-rule="nonzero"></path>
<path d="M26.6340641,50.4251868 C27.3745179,50.2558692 28.1118037,50.7198721 28.2808382,51.461566 C28.7065264,53.3294131 29.7587676,54.9294245 31.2167327,55.89599 C34.1148977,57.8173434 37.83215,56.6634823 39.5688565,53.2180259 C39.9111724,52.5389048 40.7382899,52.266335 41.4162753,52.6092239 C42.0942609,52.9521132 42.366375,53.7806161 42.0240593,54.459737 C39.5681884,59.3319447 34.0158382,61.0554331 29.6987457,58.1933943 C27.6315698,56.8229494 26.1777382,54.6122898 25.5994178,52.0747189 C25.4303833,51.333025 25.8936103,50.5945044 26.6340641,50.4251868 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
<path d="M52.9909044,51.461566 C53.1599388,50.7198721 53.8972246,50.2558692 54.6376784,50.4251868 C55.3781321,50.5945044 55.8413591,51.333025 55.6723247,52.0747189 C55.0940043,54.6122898 53.6401726,56.8229494 51.5729968,58.1933943 C47.2559044,61.0554331 41.7035539,59.3319447 39.2476833,54.459737 C38.9053676,53.7806161 39.1774816,52.9521132 39.855467,52.6092239 C40.5334526,52.266335 41.3605702,52.5389048 41.7028861,53.2180259 C43.4395926,56.6634823 47.1568449,57.8173434 50.0550098,55.89599 C51.5129747,54.9294245 52.5652162,53.3294131 52.9909044,51.461566 Z" id="Path-Copy" fill="#000000" fill-rule="nonzero"></path>
<path d="M40.7505761,54.8205651 C42.8611428,54.8205651 45.8128774,51.7221261 45.8128774,49.09919 C45.8128774,46.476254 43.9776021,46.2001555 40.6741062,46.2001555 C37.3706103,46.2001555 35.5353347,46.476254 35.5353347,49.09919 C35.5353347,51.7221261 38.6400091,54.8205651 40.7505761,54.8205651 Z" id="Oval" fill="#000000" fill-rule="nonzero"></path>
<path d="M30.8553824,39.7731952 C28.7448154,40.3407312 27.5671803,42.7949403 27.8424717,43.8226404 C28.1177631,44.8503404 30.1365662,45.5405868 32.2471329,44.9730509 C34.3576996,44.4055149 35.7341563,42.6722298 35.4894529,41.7672401 C35.2447496,40.8469117 32.9659491,39.2056593 30.8553824,39.7731952 Z" id="Oval-Copy-3" fill="#000000" fill-rule="nonzero"></path>
<path d="M51.1963522,39.7731952 C53.3069192,40.3407312 54.4845541,42.7949403 54.209263,43.8226404 C53.9339716,44.8503404 51.9151685,45.5405868 49.8046018,44.9730509 C47.6940348,44.4055149 46.3175784,42.6722298 46.5622817,41.7672401 C46.8069851,40.8622507 49.0704915,39.2056593 51.1963522,39.7731952 Z" id="Oval-Copy-4" fill="#000000" fill-rule="nonzero"></path>
<path d="M45.7813355,23.7146376 C46.8371928,22.5692392 47.8617144,21.9143328 48.9415635,22.0021877 C50.1390566,22.0900661 51.1399665,23.0960787 52.1293061,24.7546436 C52.4600732,25.3399201 52.7006813,25.7892418 52.8511305,26.1026089 C52.9734037,26.3628448 53.0423593,26.5100306 53.0579974,26.5441664 C53.3747617,27.235616 53.0719564,28.0533646 52.3816632,28.3706594 C51.6913699,28.6879542 50.8749883,28.3846418 50.5582241,27.6931921 L49.8271096,26.2672316 C49.491413,25.694874 48.783275,24.8567879 48.7380005,24.8181883 C48.3488479,25.0798893 48.05713,25.3133423 47.8628472,25.5185476 L47.0153213,26.5403512 C46.5561242,27.1463295 45.6934506,27.2646955 45.0884857,26.8047296 C44.4835207,26.3447635 44.3653523,25.480645 44.8245494,24.8746668 L45.7813355,23.7146376 Z" id="Path-Copy-2" fill="#CABCB4" fill-rule="nonzero"></path>
<path d="M31.2896089,42.4790225 C31.8868691,41.8800102 32.0805392,41.1030581 31.7221831,40.7436509 C31.3638265,40.3842439 30.5891458,40.5784819 29.9918848,41.1774934 C29.3946246,41.7765057 29.2009544,42.5534578 29.5593106,42.912865 C29.9176672,43.2722723 30.6923479,43.078034 31.2896089,42.4790225 Z" id="Oval-Copy-7" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M49.6453766,42.6009969 C50.3537945,42.1396445 50.7043371,41.4200626 50.4283355,40.9937656 C50.1523337,40.5674683 49.3543034,40.5958857 48.645885,41.0572372 C47.9374671,41.5185893 47.5869243,42.2381712 47.8629261,42.6644685 C48.138928,43.0907656 48.9369579,43.0623482 49.6453766,42.6009969 Z" id="Oval-Copy-8" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M66.9321135,93.0941704 C71.9620717,93.0941704 74.6224662,96.5136105 74.8597814,100.299269 C75.0903297,103.97698 74.8864994,109.734446 73.5737187,114 L60.4683894,114 C59.8201299,110.641304 59.0583435,106.103392 59.0708333,102.745914 C58.2703012,102.28342 57.7397077,101.942959 57.4790528,101.724531 C56.5230255,100.92338 56.0951503,100.289474 56.1653772,99.9268843 C56.4555779,98.4285457 57.6477029,98.1848639 59.3465338,98.3764862 C60.236099,95.4301945 62.7757854,93.0941704 66.9321135,93.0941704 Z" id="Path" fill="#4CBFEA" fill-rule="nonzero"></path>
<path d="M56.1519564,100.373352 C57.2689339,100.380813 63.9645721,102.365468 64.0937051,102.38832 C65.1453207,102.574417 65.8769584,102.36382 66.288618,101.756529 L66.2944157,102.136712 C66.1890419,109.90225 66.1357887,113.793885 66.134656,113.811617 L60.1997673,113.811617 C59.2619825,110.434873 58.9120016,106.12291 58.9244911,102.765448 L58.8393841,102.715796 C57.488709,101.858656 56.8090672,101.426269 56.8004585,101.418636 L56.7621593,101.384158 C56.4340734,101.084255 56.2067832,100.755525 56.1519564,100.373352 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M68.5645035,97.8576051 C69.8975496,98.1911701 70.7084588,99.5456177 70.3762719,100.882752 C70.3182089,101.11647 70.0819904,101.258787 69.8486634,101.200627 C69.6153362,101.142467 69.4732566,100.905853 69.5313195,100.672135 C69.7475348,99.8018158 69.2199484,98.9205974 68.3534746,98.7037819 C67.4872995,98.4870414 66.6098296,99.0161801 66.3936885,99.8862008 C66.3356256,100.119919 66.099407,100.262236 65.8660801,100.204076 C65.6327528,100.145916 65.4906732,99.9093016 65.5487362,99.6755836 C65.8809975,98.338151 67.2311585,97.5239664 68.5645035,97.8576051 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
<path d="M65.9592058,101.164067 C66.1994035,101.174942 66.3853214,101.378802 66.3744647,101.619402 C66.3292722,102.620952 65.5149871,102.987632 64.2373853,102.761546 C64.1369462,102.743771 63.7052745,102.62541 62.9423702,102.406465 L61.4735479,101.894876 C59.6433036,101.262038 58.1973547,100.884541 56.4669046,100.671696 C56.2282541,100.642342 56.058546,100.424757 56.0878509,100.185707 C56.1171558,99.9466569 56.3343767,99.7766645 56.5730272,99.8060185 C58.2987428,100.018282 59.7490241,100.386981 61.5242211,100.99039 L63.1800754,101.566305 C63.8854556,101.772763 64.2883865,101.884883 64.3888678,101.902665 C65.1937817,102.045105 65.4720533,101.935096 65.5024952,101.611029 C65.646837,101.305804 65.7990738,101.156817 65.9592058,101.164067 Z" id="Path" fill="#1683AC" fill-rule="nonzero"></path>
<path d="M69.2123975,104.194477 C69.3360842,104.004652 69.5823186,103.943183 69.7787275,104.046354 L69.8149281,104.067637 L71.8902236,105.4244 C72.0010659,105.496865 72.0722933,105.615371 72.0854302,105.74574 L72.0876325,105.789589 L72.0876325,111.265095 C72.0876325,111.542059 71.8332283,111.748859 71.5626492,111.691844 C68.7210066,111.093063 67.3076337,108.622903 67.3076337,104.432827 C67.3076337,104.191981 67.5025513,103.996687 67.7429945,103.996687 C67.9834375,103.996687 68.178355,104.191981 68.178355,104.432827 C68.178355,107.939415 69.1827936,109.983657 71.1801596,110.682591 L71.2166861,110.694888 L71.2166861,106.025381 L69.3390246,104.798017 C69.1495176,104.674123 69.0881505,104.427476 69.1911501,104.230738 L69.2123975,104.194477 Z" id="Path-11" fill="#1683AC" fill-rule="nonzero"></path>
<path d="M73.5439784,99.765205 C73.3105091,99.8227905 73.0746408,99.6798917 73.0171516,99.4460314 C72.9491623,99.169458 72.8539178,98.8886295 72.7326859,98.6085366 C72.4652919,97.9907521 72.0768,97.3881683 71.5871927,96.8422213 C71.097609,96.2963169 70.5414024,95.8454825 69.9575326,95.5139879 C69.6928528,95.3637148 69.4247424,95.2393098 69.1580126,95.142558 C68.9319365,95.0605528 68.8150327,94.8104965 68.8969008,94.5840417 C68.9787689,94.3575869 69.2284071,94.2404874 69.4544833,94.3224926 C69.7677806,94.4361358 70.0802649,94.5811305 70.3868886,94.7552174 C71.0533499,95.1336038 71.6831002,95.6440466 72.2349403,96.2593639 C72.7867267,96.8746526 73.226468,97.5567291 73.5315572,98.2616042 C73.6719056,98.5858633 73.7828282,98.9129193 73.8626181,99.2374959 C73.9201076,99.4713562 73.7774475,99.7076196 73.5439784,99.765205 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M17.0566343,91.2107623 C19.1691504,91.2107623 21.9975154,93.7271446 23.2722409,96.6746631 C24.8279544,100.271904 25.7864078,105.413595 25.7864078,106.50465 C25.7864078,106.966087 25.4556152,107.451901 24.9150599,107.925826 L24.0704404,108.554105 C24.6045043,109.714469 24.8510749,111.064375 24.8510749,112.504907 C24.8510749,112.85669 24.8280333,113.660466 24.7833831,114 L9.28534584,114 C9.24069562,113.660466 9.21765404,112.85669 9.21765404,112.504907 C9.21765404,111.099726 9.45227133,109.780777 9.95952763,108.63978 L9.75947568,108.502698 C8.8952793,107.890112 8.32686084,107.205759 8.32686084,106.50465 C8.32686084,105.249603 9.2775668,100.179388 10.8058353,96.649796 C12.0793069,93.7086667 14.9441182,91.2107623 17.0566343,91.2107623 Z" id="Path" fill="#112F40" fill-rule="nonzero"></path>
<path d="M17.0705483,101.691758 C17.7997477,101.691758 18.2881087,101.590751 18.6932669,101.472919 L19.4304722,101.242282 C19.7145196,101.161514 20.0111192,101.104267 20.3952178,101.110565 C22.2655508,101.141231 22.4701879,105.376799 22.4565026,107.336843 C22.4459332,108.850616 18.4819034,110.204057 17.0566343,110.204057 C15.6313652,110.204057 11.4446371,108.850616 11.4446371,107.271601 L11.4479151,106.807635 C11.4751714,105.013632 11.7184861,101.090885 13.7604969,101.090885 C14.0173964,101.090885 14.2442386,101.131504 14.4705466,101.19162 L15.4535958,101.488866 C15.8711487,101.600365 16.3769196,101.691758 17.0705483,101.691758 Z" id="Mask" fill="#000000" fill-rule="nonzero"></path>
<path d="M13.7604969,101.090885 C14.0173964,101.090885 14.2442386,101.131504 14.4705466,101.19162 L15.4535958,101.488866 C15.8711487,101.600365 16.3769196,101.691758 17.0705483,101.691758 C17.7997477,101.691758 18.2881087,101.590751 18.6932669,101.472919 L19.4304722,101.242282 C19.7145196,101.161514 20.0111192,101.104267 20.3952178,101.110565 C20.814183,101.117434 21.149566,101.3353 21.4176357,101.691319 L21.343961,103.485686 L21.0206641,105.647471 C20.229126,108.14204 18.9114691,108.850616 17.0789041,108.850616 C15.2463391,108.850616 13.939893,108.14204 13.1483549,105.647471 C13.0467586,105.090782 12.9484068,104.315482 12.8532995,103.321572 C12.809118,102.859857 12.7420749,101.530409 12.7417149,101.510236 C13.0182372,101.246586 13.3536701,101.090885 13.7604969,101.090885 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M17.0566343,107.767862 C18.3357602,107.767862 19.3726967,106.459536 19.3726967,105.692586 C19.3726967,104.396945 18.3357602,104.158685 17.0566343,104.158685 C15.7775084,104.158685 14.740572,104.396945 14.740572,105.692586 C14.740572,106.459536 15.7775084,107.767862 17.0566343,107.767862 Z" id="Oval" fill="#0D222E" fill-rule="nonzero"></path>
<path d="M22.5514943,109.249521 C22.746438,109.141124 22.9921973,109.211549 23.100413,109.406819 C23.2086287,109.602089 23.1383217,109.84826 22.943378,109.956657 C22.472756,110.218343 21.6225831,110.59835 20.3928594,111.096677 C20.2765672,111.138352 20.0180506,111.224729 19.6173098,111.355806 C18.6005361,111.670521 17.6718474,111.857184 17.0582185,111.857184 C16.6832333,111.857184 15.8278904,111.690295 14.4921899,111.356519 C13.4164068,110.97155 12.8493324,110.766971 12.7909667,110.742782 C11.9338323,110.351522 11.3869967,110.090619 11.15046,109.960075 C10.9551746,109.852297 10.8840897,109.60635 10.9916875,109.410737 C11.0992853,109.215125 11.3448207,109.143921 11.5401061,109.251699 C11.9865528,109.498093 12.4715555,109.729708 12.9664902,109.939445 L15.3914133,110.772958 C16.0642095,110.948601 16.6520132,111.048401 17.0582185,111.048401 C17.4641206,111.048401 18.0500138,110.948543 18.7199873,110.772745 L19.8980163,110.413534 C20.4687448,110.216917 22.4405277,109.311223 22.5514943,109.249521 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -2202,11 +2202,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_group_call_edit_title_channel" = "Edit live stream title";
"lng_group_call_recording_start" = "Start recording";
"lng_group_call_recording_stop" = "Stop recording";
"lng_group_call_recording_started" = "Voice chat recording started.";
"lng_group_call_recording_started" = "Started recording the audio stream.";
"lng_group_call_recording_started_video" = "Started recording the video stream.";
"lng_group_call_recording_started_channel" = "Live stream recording started.";
"lng_group_call_recording_stopped" = "Voice chat recording stopped.";
"lng_group_call_recording_stopped" = "Recording stopped.";
"lng_group_call_recording_stopped_channel" = "Live stream recording stopped.";
"lng_group_call_recording_saved" = "Audio saved to Saved Messages.";
"lng_group_call_recording_saved_video" = "Video saved to Saved Messages.";
"lng_group_call_pinned_camera_me" = "Your video is pinned.";
"lng_group_call_pinned_screen_me" = "Your screencast is pinned.";
"lng_group_call_pinned_camera" = "{user}'s video is pinned.";
@ -2216,10 +2218,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_group_call_unpinned_camera" = "{user}'s video is unpinned.";
"lng_group_call_unpinned_screen" = "{user}'s screencast is unpinned.";
"lng_group_call_sure_screencast" = "{user} is screensharing. This action will make your screencast pinned for all participants.";
"lng_group_call_recording_start_sure" = "Do you want to start recording this chat and save the result into an audio file?\n\nOther members will see the chat is being recorded.";
"lng_group_call_recording_start_sure" = "Participants will see the chat is being recorded.";
"lng_group_call_recording_stop_sure" = "Do you want to stop recording this chat?";
"lng_group_call_recording_start_field" = "Recording Title";
"lng_group_call_recording_start_button" = "Start";
"lng_group_call_recording_start_title" = "Add Title";
"lng_group_call_recording_start_checkbox" = "Also record video";
"lng_group_call_recording_start_audio_subtitle" = "This chat will be recorded into an audio file";
"lng_group_call_recording_start_video_subtitle" = "Choose video orientation";
"lng_group_call_is_recorded" = "Voice chat is being recorded.";
"lng_group_call_is_recorded_channel" = "Live stream is being recorded.";
"lng_group_call_can_speak_here" = "You can now speak.";

View file

@ -62,6 +62,9 @@
<file alias="night-green.tdesktop-theme">../../night-green.tdesktop-theme</file>
<file alias="icons/calls/hands.lottie">../../icons/calls/hands.lottie</file>
<file alias="icons/calls/voice.lottie">../../icons/calls/voice.lottie</file>
<file alias="recording/info_audio.svg">../../art/recording/recording_info_audio.svg</file>
<file alias="recording/info_video_landscape.svg">../../art/recording/recording_info_video_landscape.svg</file>
<file alias="recording/info_video_portrait.svg">../../art/recording/recording_info_video_portrait.svg</file>
</qresource>
<qresource prefix="/qt-project.org">
<file>../qmime/freedesktop.org.xml</file>

View file

@ -1314,3 +1314,14 @@ groupCallStickedTooltipClose: IconButton(defaultIconButton) {
}
groupCallNiceTooltipTop: 4px;
groupCallPaused: icon {{ "calls/video_large_paused", groupCallVideoTextFg }};
groupCallRecordingSubLabel: FlatLabel(boxDividerLabel) {
margin: margins(0px, 0px, 0px, 0px);
textFg: groupCallMemberNotJoinedStatus;
align: align(top);
}
groupCallRecordingInfoMargins: margins(0px, 22px, 0px, 22px);
groupCallRecordingSubLabelMargins: margins(8px, 22px, 8px, 22px);
groupCallRecordingAudioSkip: 23px;
groupCallRecordingSelectWidth: 2px;
groupCallRecordingInfoHeight: 204px;

View file

@ -2184,7 +2184,11 @@ void GroupCall::changeTitle(const QString &title) {
}).send();
}
void GroupCall::toggleRecording(bool enabled, const QString &title) {
void GroupCall::toggleRecording(
bool enabled,
const QString &title,
bool video,
bool videoPortrait) {
const auto real = lookupReal();
if (!real) {
return;
@ -2201,10 +2205,11 @@ void GroupCall::toggleRecording(bool enabled, const QString &title) {
using Flag = MTPphone_ToggleGroupCallRecord::Flag;
_api.request(MTPphone_ToggleGroupCallRecord(
MTP_flags((enabled ? Flag::f_start : Flag(0))
| (video ? Flag::f_video : Flag(0))
| (title.isEmpty() ? Flag(0) : Flag::f_title)),
inputCall(),
MTP_string(title),
MTPBool() // video_portrait
MTP_bool(videoPortrait)
)).done([=](const MTPUpdates &result) {
_peer->session().api().applyUpdates(result);
_recordingStoppedByMe = false;

View file

@ -245,7 +245,11 @@ public:
void handlePossibleCreateOrJoinResponse(
const MTPDupdateGroupCallConnection &data);
void changeTitle(const QString &title);
void toggleRecording(bool enabled, const QString &title);
void toggleRecording(
bool enabled,
const QString &title,
bool video,
bool videoPortrait);
[[nodiscard]] bool recordingStoppedByMe() const {
return _recordingStoppedByMe;
}

View file

@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "calls/group/calls_group_call.h"
#include "calls/group/calls_group_settings.h"
#include "calls/group/calls_group_panel.h"
#include "calls/group/ui/calls_group_recording_box.h"
#include "data/data_peer.h"
#include "data/data_group_call.h"
#include "info/profile/info_profile_values.h" // Info::Profile::NameValue.
@ -31,87 +32,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Calls::Group {
namespace {
constexpr auto kMaxGroupCallLength = 40;
void EditGroupCallTitleBox(
not_null<Ui::GenericBox*> box,
const QString &placeholder,
const QString &title,
bool livestream,
Fn<void(QString)> done) {
box->setTitle(livestream
? tr::lng_group_call_edit_title_channel()
: tr::lng_group_call_edit_title());
const auto input = box->addRow(object_ptr<Ui::InputField>(
box,
st::groupCallField,
rpl::single(placeholder),
title));
input->setMaxLength(kMaxGroupCallLength);
box->setFocusCallback([=] {
input->setFocusFast();
});
const auto submit = [=] {
const auto result = input->getLastText().trimmed();
box->closeBox();
done(result);
};
QObject::connect(input, &Ui::InputField::submitted, submit);
box->addButton(tr::lng_settings_save(), submit);
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
void StartGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
const QString &title,
Fn<void(QString)> done) {
box->setTitle(tr::lng_group_call_recording_start());
box->addRow(
object_ptr<Ui::FlatLabel>(
box.get(),
tr::lng_group_call_recording_start_sure(),
st::groupCallBoxLabel));
const auto input = box->addRow(object_ptr<Ui::InputField>(
box,
st::groupCallField,
tr::lng_group_call_recording_start_field(),
title));
box->setFocusCallback([=] {
input->setFocusFast();
});
const auto submit = [=] {
const auto result = input->getLastText().trimmed();
box->closeBox();
done(result);
};
QObject::connect(input, &Ui::InputField::submitted, submit);
box->addButton(tr::lng_group_call_recording_start_button(), submit);
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
void StopGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
Fn<void(QString)> done) {
box->addRow(
object_ptr<Ui::FlatLabel>(
box.get(),
tr::lng_group_call_recording_stop_sure(),
st::groupCallBoxLabel),
style::margins(
st::boxRowPadding.left(),
st::boxPadding.top(),
st::boxRowPadding.right(),
st::boxPadding.bottom()));
box->addButton(tr::lng_box_ok(), [=] {
box->closeBox();
done(QString());
});
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
class JoinAsAction final : public Ui::Menu::ItemBase {
public:
JoinAsAction(
@ -632,10 +552,15 @@ void FillMenu(
if (!real) {
return;
}
const auto type = std::make_shared<RecordingType>();
const auto recordStartDate = real->recordStartDate();
const auto done = [=](QString title) {
if (const auto strong = weak.get()) {
strong->toggleRecording(!recordStartDate, title);
strong->toggleRecording(
!recordStartDate,
title,
(*type) != RecordingType::AudioOnly,
(*type) == RecordingType::VideoPortrait);
}
};
if (recordStartDate) {
@ -643,10 +568,14 @@ void FillMenu(
StopGroupCallRecordingBox,
done));
} else {
showBox(Box(
StartGroupCallRecordingBox,
real->title(),
done));
const auto typeDone = [=](RecordingType newType) {
*type = newType;
showBox(Box(
AddTitleGroupCallRecordingBox,
real->title(),
done));
};
showBox(Box(StartGroupCallRecordingBox, typeDone));
}
};
menu->addAction(MakeRecordingAction(

View file

@ -1028,19 +1028,28 @@ void Panel::subscribeToChanges(not_null<Data::GroupCall*> real) {
};
using namespace rpl::mappers;
const auto startedAsVideo = std::make_shared<bool>(real->recordVideo());
real->recordStartDateChanges(
) | rpl::map(
_1 != 0
) | rpl::distinct_until_changed(
) | rpl::start_with_next([=](bool recorded) {
const auto livestream = _call->peer()->isBroadcast();
const auto isVideo = real->recordVideo();
if (recorded) {
*startedAsVideo = isVideo;
}
validateRecordingMark(recorded);
showToast((recorded
? (livestream
? tr::lng_group_call_recording_started_channel
: isVideo
? tr::lng_group_call_recording_started_video
: tr::lng_group_call_recording_started)
: _call->recordingStoppedByMe()
? tr::lng_group_call_recording_saved
? ((*startedAsVideo)
? tr::lng_group_call_recording_saved_video
: tr::lng_group_call_recording_saved)
: (livestream
? tr::lng_group_call_recording_stopped_channel
: tr::lng_group_call_recording_stopped))(

View file

@ -0,0 +1,376 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "calls/group/ui/calls_group_recording_box.h"
#include "lang/lang_keys.h"
#include "ui/effects/animations.h"
#include "ui/image/image_prepare.h"
#include "ui/layers/generic_box.h"
#include "ui/widgets/checkbox.h"
#include "ui/widgets/input_fields.h"
#include "ui/widgets/labels.h"
#include "styles/style_calls.h"
#include "styles/style_layers.h"
#include "styles/style_boxes.h"
#include <QSvgRenderer>
namespace Calls::Group {
namespace {
constexpr auto kRoundRadius = 9;
constexpr auto kMaxGroupCallLength = 40;
constexpr auto kSwitchDuration = 200;
constexpr auto kSelectDuration = 120;
class GraphicButton final : public Ui::AbstractButton {
public:
GraphicButton(
not_null<Ui::RpWidget*> parent,
const QString &filename,
int selectWidth = 0);
void setToggled(bool value);
protected:
void paintEvent(QPaintEvent *e);
private:
const style::margins _margins;
QSvgRenderer _renderer;
Ui::RoundRect _roundRect;
Ui::RoundRect _roundRectSelect;
Ui::Animations::Simple _animation;
bool _toggled = false;
};
class RecordingInfo final : public Ui::RpWidget {
public:
RecordingInfo(not_null<Ui::RpWidget*> parent);
void prepareAudio();
void prepareVideo();
RecordingType type() const;
private:
void setLabel(const QString &text);
const object_ptr<Ui::VerticalLayout> _container;
RecordingType _type = RecordingType::AudioOnly;
};
class Switcher final : public Ui::RpWidget {
public:
Switcher(
not_null<Ui::RpWidget*> parent,
rpl::producer<bool> &&toggled);
RecordingType type() const;
private:
const object_ptr<Ui::BoxContentDivider> _background;
const object_ptr<RecordingInfo> _audio;
const object_ptr<RecordingInfo> _video;
bool _toggled = false;
Ui::Animations::Simple _animation;
};
GraphicButton::GraphicButton(
not_null<Ui::RpWidget*> parent,
const QString &filename,
int selectWidth)
: AbstractButton(parent)
, _margins(selectWidth, selectWidth, selectWidth, selectWidth)
, _renderer(u":/gui/recording/%1.svg"_q.arg(filename))
, _roundRect(kRoundRadius, st::groupCallMembersBg)
, _roundRectSelect(kRoundRadius, st::groupCallActiveFg) {
const auto size = style::ConvertScale(_renderer.defaultSize());
resize((QRect(QPoint(), size) + _margins).size());
}
void GraphicButton::setToggled(bool value) {
if (_toggled == value) {
return;
}
_toggled = value;
_animation.start(
[=] { update(); },
_toggled ? 0. : 1.,
_toggled ? 1. : 0.,
kSelectDuration);
}
void GraphicButton::paintEvent(QPaintEvent *e) {
Painter p(this);
const auto progress = _animation.value(_toggled ? 1. : 0.);
p.setOpacity(progress);
_roundRectSelect.paint(p, rect());
p.setOpacity(1.);
const auto r = rect() - _margins;
_roundRect.paint(p, r);
_renderer.render(&p, r);
}
RecordingInfo::RecordingInfo(not_null<Ui::RpWidget*> parent)
: RpWidget(parent)
, _container(this) {
sizeValue(
) | rpl::start_with_next([=](const QSize &size) {
_container->resizeToWidth(size.width());
}, _container->lifetime());
}
void RecordingInfo::prepareAudio() {
_type = RecordingType::AudioOnly;
setLabel(tr::lng_group_call_recording_start_audio_subtitle(tr::now));
const auto wrap = _container->add(
object_ptr<Ui::RpWidget>(_container),
style::margins(0, st::groupCallRecordingAudioSkip, 0, 0));
const auto audioIcon = Ui::CreateChild<GraphicButton>(
wrap,
"info_audio");
wrap->resize(width(), audioIcon->height());
audioIcon->setAttribute(Qt::WA_TransparentForMouseEvents);
sizeValue(
) | rpl::start_with_next([=](const QSize &size) {
audioIcon->moveToLeft((size.width() - audioIcon->width()) / 2, 0);
}, lifetime());
}
void RecordingInfo::prepareVideo() {
setLabel(tr::lng_group_call_recording_start_video_subtitle(tr::now));
const auto wrap = _container->add(
object_ptr<Ui::RpWidget>(_container),
style::margins());
const auto landscapeIcon = Ui::CreateChild<GraphicButton>(
wrap,
"info_video_landscape",
st::groupCallRecordingSelectWidth);
const auto portraitIcon = Ui::CreateChild<GraphicButton>(
wrap,
"info_video_portrait",
st::groupCallRecordingSelectWidth);
wrap->resize(width(), portraitIcon->height());
landscapeIcon->setToggled(true);
_type = RecordingType::VideoLandscape;
const auto icons = std::vector<GraphicButton*>{
landscapeIcon,
portraitIcon,
};
const auto types = std::map<GraphicButton*, RecordingType>{
{ landscapeIcon, RecordingType::VideoLandscape },
{ portraitIcon, RecordingType::VideoPortrait },
};
for (const auto icon : icons) {
icon->clicks(
) | rpl::start_with_next([=] {
for (const auto &i : icons) {
i->setToggled(icon == i);
}
_type = types.at(icon);
}, lifetime());
}
wrap->sizeValue(
) | rpl::start_with_next([=](const QSize &size) {
const auto wHalf = size.width() / icons.size();
for (auto i = 0; i < icons.size(); i++) {
const auto &icon = icons[i];
icon->moveToLeft(
wHalf * i + (wHalf - icon->width()) / 2,
(size.height() - icon->height()) / 2);
}
}, lifetime());
}
void RecordingInfo::setLabel(const QString &text) {
const auto label = _container->add(
object_ptr<Ui::FlatLabel>(
_container,
text,
st::groupCallRecordingSubLabel),
st::groupCallRecordingSubLabelMargins);
rpl::combine(
sizeValue(),
label->sizeValue()
) | rpl::start_with_next([=](QSize my, QSize labelSize) {
label->moveToLeft(
(my.width() - labelSize.width()) / 2,
label->y(),
my.width());
}, label->lifetime());
}
RecordingType RecordingInfo::type() const {
return _type;
}
Switcher::Switcher(
not_null<Ui::RpWidget*> parent,
rpl::producer<bool> &&toggled)
: RpWidget(parent)
, _background(this, st::groupCallRecordingInfoHeight, st::groupCallBg)
, _audio(this)
, _video(this) {
_audio->prepareAudio();
_video->prepareVideo();
resize(0, st::groupCallRecordingInfoHeight);
const auto updatePositions = [=](float64 progress) {
_audio->moveToLeft(-width() * progress, 0);
_video->moveToLeft(_audio->x() + _audio->width(), 0);
};
sizeValue(
) | rpl::start_with_next([=](const QSize &size) {
_audio->resize(size.width(), size.height());
_video->resize(size.width(), size.height());
updatePositions(_toggled ? 1. : 0.);
_background->lower();
_background->setGeometry(QRect(QPoint(), size));
}, lifetime());
std::move(
toggled
) | rpl::start_with_next([=](bool toggled) {
_toggled = toggled;
_animation.start(
updatePositions,
toggled ? 0. : 1.,
toggled ? 1. : 0.,
kSwitchDuration);
}, lifetime());
}
RecordingType Switcher::type() const {
return _toggled ? _video->type() : _audio->type();
}
} // namespace
void EditGroupCallTitleBox(
not_null<Ui::GenericBox*> box,
const QString &placeholder,
const QString &title,
bool livestream,
Fn<void(QString)> done) {
box->setTitle(livestream
? tr::lng_group_call_edit_title_channel()
: tr::lng_group_call_edit_title());
const auto input = box->addRow(object_ptr<Ui::InputField>(
box,
st::groupCallField,
rpl::single(placeholder),
title));
input->setMaxLength(kMaxGroupCallLength);
box->setFocusCallback([=] {
input->setFocusFast();
});
const auto submit = [=] {
const auto result = input->getLastText().trimmed();
box->closeBox();
done(result);
};
QObject::connect(input, &Ui::InputField::submitted, submit);
box->addButton(tr::lng_settings_save(), submit);
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
void StartGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
Fn<void(RecordingType)> done) {
box->setTitle(tr::lng_group_call_recording_start());
box->addRow(
object_ptr<Ui::FlatLabel>(
box.get(),
tr::lng_group_call_recording_start_sure(),
st::groupCallBoxLabel));
const auto checkbox = box->addRow(
object_ptr<Ui::Checkbox>(
box,
tr::lng_group_call_recording_start_checkbox(),
false,
st::groupCallCheckbox),
style::margins(
st::boxRowPadding.left(),
st::boxRowPadding.left(),
st::boxRowPadding.right(),
st::boxRowPadding.bottom()));
const auto switcher = box->addRow(
object_ptr<Switcher>(box, checkbox->checkedChanges()),
st::groupCallRecordingInfoMargins);
box->addButton(tr::lng_continue(), [=] {
const auto type = switcher->type();
box->closeBox();
done(type);
});
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
void AddTitleGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
const QString &title,
Fn<void(QString)> done) {
box->setTitle(tr::lng_group_call_recording_start_title());
const auto input = box->addRow(object_ptr<Ui::InputField>(
box,
st::groupCallField,
tr::lng_group_call_recording_start_field(),
title));
box->setFocusCallback([=] {
input->setFocusFast();
});
const auto submit = [=] {
const auto result = input->getLastText().trimmed();
box->closeBox();
done(result);
};
QObject::connect(input, &Ui::InputField::submitted, submit);
box->addButton(tr::lng_group_call_recording_start_button(), submit);
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
void StopGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
Fn<void(QString)> done) {
box->addRow(
object_ptr<Ui::FlatLabel>(
box.get(),
tr::lng_group_call_recording_stop_sure(),
st::groupCallBoxLabel),
style::margins(
st::boxRowPadding.left(),
st::boxPadding.top(),
st::boxRowPadding.right(),
st::boxPadding.bottom()));
box->addButton(tr::lng_box_ok(), [=] {
box->closeBox();
done(QString());
});
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
}
} // namespace Calls::Group

View file

@ -0,0 +1,42 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
namespace Ui {
class GenericBox;
} // namespace Ui
namespace Calls::Group {
enum class RecordingType {
AudioOnly,
VideoLandscape,
VideoPortrait,
};
void EditGroupCallTitleBox(
not_null<Ui::GenericBox*> box,
const QString &placeholder,
const QString &title,
bool livestream,
Fn<void(QString)> done);
void StartGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
Fn<void(RecordingType)> done);
void AddTitleGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
const QString &title,
Fn<void(QString)> done);
void StopGroupCallRecordingBox(
not_null<Ui::GenericBox*> box,
Fn<void(QString)> done);
} // namespace Calls::Group

View file

@ -389,7 +389,10 @@ void GroupCall::applyCallFields(const MTPDgroupCall &data) {
setServerParticipantsCount(data.vparticipants_count().v);
changePeerEmptyCallFlag();
_title = qs(data.vtitle().value_or_empty());
_recordStartDate = data.vrecord_start_date().value_or_empty();
{
_recordVideo = data.is_record_video_active();
_recordStartDate = data.vrecord_start_date().value_or_empty();
}
_scheduleDate = data.vschedule_date().value_or_empty();
_scheduleStartSubscribed = data.is_schedule_start_subscribed();
_unmutedVideoLimit = data.vunmuted_video_limit().v;

View file

@ -98,6 +98,9 @@ public:
[[nodiscard]] int unmutedVideoLimit() const {
return _unmutedVideoLimit.current();
}
[[nodiscard]] bool recordVideo() const {
return _recordVideo.current();
}
void setPeer(not_null<PeerData*> peer);
@ -214,6 +217,7 @@ private:
int _serverParticipantsCount = 0;
rpl::variable<int> _fullCount = 0;
rpl::variable<int> _unmutedVideoLimit = 0;
rpl::variable<bool> _recordVideo = 0;
rpl::variable<TimeId> _recordStartDate = 0;
rpl::variable<TimeId> _scheduleDate = 0;
rpl::variable<bool> _scheduleStartSubscribed = false;

View file

@ -47,6 +47,8 @@ nice_target_sources(td_ui ${src_loc}
PRIVATE
${style_files}
calls/group/ui/calls_group_recording_box.cpp
calls/group/ui/calls_group_recording_box.h
calls/group/ui/calls_group_scheduled_labels.cpp
calls/group/ui/calls_group_scheduled_labels.h
calls/group/ui/desktop_capture_choose_source.cpp

@ -1 +1 @@
Subproject commit db1b4b65c7c70001412ce1ca357d82f3590008f3
Subproject commit e0339b7da1e344bf13b7544676da9613fa8a5640