Browse Source

feat(recording): new label for live streaming (#2890)

master
virtuacoplenny 7 years ago
parent
commit
aaf2f428e6

+ 3
- 0
css/_font.scss View File

201
 .icon-rec:before {
201
 .icon-rec:before {
202
   content: "\e92b";
202
   content: "\e92b";
203
 }
203
 }
204
+.icon-live:before {
205
+  content: "\e92c";
206
+}

+ 11
- 3
css/modals/video-quality/_video-quality.scss View File

174
 
174
 
175
     .recording-icon,
175
     .recording-icon,
176
     .recording-icon i {
176
     .recording-icon i {
177
-        color: rgb(255, 86, 48);
178
         line-height: $videoStateIndicatorSize;
177
         line-height: $videoStateIndicatorSize;
179
         font-size: $videoStateIndicatorSize;
178
         font-size: $videoStateIndicatorSize;
180
         opacity: 0.9;
179
         opacity: 0.9;
181
         position: relative;
180
         position: relative;
182
     }
181
     }
183
 
182
 
183
+    .icon-rec {
184
+        color: #FF5630;
185
+    }
186
+
187
+    .icon-live {
188
+        color: #0065FF;
189
+    }
190
+
184
     .recording-icon-background {
191
     .recording-icon-background {
185
         background: white;
192
         background: white;
186
-        height: 25%;
193
+        border-radius: 50%;
194
+        height: calc(#{$videoStateIndicatorSize} - 1px);
187
         left: 50%;
195
         left: 50%;
188
         opacity: 0.9;
196
         opacity: 0.9;
189
         position: absolute;
197
         position: absolute;
190
         top: 50%;
198
         top: 50%;
191
         transform: translate(-50%, -50%);
199
         transform: translate(-50%, -50%);
192
-        width: 80%;
200
+        width: calc(#{$videoStateIndicatorSize} - 1px);
193
     }
201
     }
194
 
202
 
195
     #recordingLabelText {
203
     #recordingLabelText {

BIN
fonts/jitsi.eot View File


+ 1
- 0
fonts/jitsi.svg View File

69
 <glyph unicode="&#xe929;" glyph-name="SD" d="M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM281.6 451.175c1.925-47.075 40.95-76.65 101.15-76.65 63.35 0 102.375 31.15 102.375 82.075 0 39.2-21.875 61.075-72.625 71.75l-30.45 6.475c-29.575 6.3-41.65 15.225-41.65 30.8 0 19.25 17.5 31.5 43.925 31.5 25.55 0 44.1-13.3 46.55-33.25h49.7c-1.575 44.975-40.95 76.125-96.6 76.125-58.275 0-96.6-31.325-96.6-78.925 0-38.5 22.575-62.475 68.6-72.1l32.9-7c30.975-6.65 43.575-15.925 43.575-32.025 0-19.075-19.425-32.375-46.9-32.375-29.75 0-50.4 13.125-52.85 33.6h-51.1zM535 633.7v-252.7h99.4c75.6 0 118.475 46.025 118.475 128.1 0 79.1-43.4 124.6-118.475 124.6h-99.4zM587.85 588.55v-162.4h38.15c46.725 0 72.975 28.7 72.975 82.075 0 51.1-27.125 80.325-72.975 80.325h-38.15z" />
69
 <glyph unicode="&#xe929;" glyph-name="SD" d="M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM281.6 451.175c1.925-47.075 40.95-76.65 101.15-76.65 63.35 0 102.375 31.15 102.375 82.075 0 39.2-21.875 61.075-72.625 71.75l-30.45 6.475c-29.575 6.3-41.65 15.225-41.65 30.8 0 19.25 17.5 31.5 43.925 31.5 25.55 0 44.1-13.3 46.55-33.25h49.7c-1.575 44.975-40.95 76.125-96.6 76.125-58.275 0-96.6-31.325-96.6-78.925 0-38.5 22.575-62.475 68.6-72.1l32.9-7c30.975-6.65 43.575-15.925 43.575-32.025 0-19.075-19.425-32.375-46.9-32.375-29.75 0-50.4 13.125-52.85 33.6h-51.1zM535 633.7v-252.7h99.4c75.6 0 118.475 46.025 118.475 128.1 0 79.1-43.4 124.6-118.475 124.6h-99.4zM587.85 588.55v-162.4h38.15c46.725 0 72.975 28.7 72.975 82.075 0 51.1-27.125 80.325-72.975 80.325h-38.15z" />
70
 <glyph unicode="&#xe92a;" glyph-name="camera-take-picture" d="M725.333 512c0-117.821-95.513-213.333-213.333-213.333s-213.333 95.513-213.333 213.333c0 117.821 95.513 213.333 213.333 213.333s213.333-95.513 213.333-213.333zM512 256c141.385 0 256 114.615 256 256s-114.615 256-256 256v0c-141.385 0-256-114.615-256-256s114.615-256 256-256v0zM512 213.333c-164.949 0-298.667 133.718-298.667 298.667s133.718 298.667 298.667 298.667v0c164.949 0 298.667-133.718 298.667-298.667s-133.718-298.667-298.667-298.667v0z" />
70
 <glyph unicode="&#xe92a;" glyph-name="camera-take-picture" d="M725.333 512c0-117.821-95.513-213.333-213.333-213.333s-213.333 95.513-213.333 213.333c0 117.821 95.513 213.333 213.333 213.333s213.333-95.513 213.333-213.333zM512 256c141.385 0 256 114.615 256 256s-114.615 256-256 256v0c-141.385 0-256-114.615-256-256s114.615-256 256-256v0zM512 213.333c-164.949 0-298.667 133.718-298.667 298.667s133.718 298.667 298.667 298.667v0c164.949 0 298.667-133.718 298.667-298.667s-133.718-298.667-298.667-298.667v0z" />
71
 <glyph unicode="&#xe92b;" glyph-name="rec" d="M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM581.333 433.782h-110.595v59.233h104.338v40.332h-104.338v56.87h110.595v43.539h-161.665v-243.512h161.665v43.539zM738.771 384c58.849 0 101.802 36.282 106.029 88.933h-49.717c-4.904-26.832-26.888-44.045-56.143-44.045-38.556 0-62.4 31.895-62.4 83.196s23.844 83.027 62.231 83.027c29.086 0 51.239-18.394 56.143-46.407h49.717c-3.72 52.989-48.026 91.296-105.86 91.296-70.855 0-114.485-48.77-114.485-127.916 0-79.314 43.798-128.084 114.485-128.084zM230.27 478.502h41.769l45.489-88.258h57.834l-51.408 96.19c28.072 11.138 44.306 38.138 44.306 69.189 0 48.432-32.976 78.133-86.582 78.133h-102.478v-243.512h51.070v88.258zM230.27 592.58v-74.927h44.813c25.704 0 40.754 13.838 40.754 37.295 0 23.119-15.896 37.632-41.262 37.632h-44.306z" />
71
 <glyph unicode="&#xe92b;" glyph-name="rec" d="M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM581.333 433.782h-110.595v59.233h104.338v40.332h-104.338v56.87h110.595v43.539h-161.665v-243.512h161.665v43.539zM738.771 384c58.849 0 101.802 36.282 106.029 88.933h-49.717c-4.904-26.832-26.888-44.045-56.143-44.045-38.556 0-62.4 31.895-62.4 83.196s23.844 83.027 62.231 83.027c29.086 0 51.239-18.394 56.143-46.407h49.717c-3.72 52.989-48.026 91.296-105.86 91.296-70.855 0-114.485-48.77-114.485-127.916 0-79.314 43.798-128.084 114.485-128.084zM230.27 478.502h41.769l45.489-88.258h57.834l-51.408 96.19c28.072 11.138 44.306 38.138 44.306 69.189 0 48.432-32.976 78.133-86.582 78.133h-102.478v-243.512h51.070v88.258zM230.27 592.58v-74.927h44.813c25.704 0 40.754 13.838 40.754 37.295 0 23.119-15.896 37.632-41.262 37.632h-44.306z" />
72
+<glyph unicode="&#xe92c;" glyph-name="live" d="M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM298.225 430.025h-112.35v206.5h-52.85v-252.525h165.2v46.025zM399.025 384v252.525h-52.85v-252.525h52.85zM591.525 384l84.175 252.525h-56.875l-56.35-193.025h-3.15l-57.4 193.025h-59.675l85.4-252.525h63.875zM886.050 429.15h-114.45v61.425h107.975v41.825h-107.975v58.975h114.45v45.15h-167.3v-252.525h167.3v45.15z" />
72
 </font></defs></svg>
73
 </font></defs></svg>

BIN
fonts/jitsi.ttf View File


BIN
fonts/jitsi.woff View File


+ 215
- 186
fonts/selection.json
File diff suppressed because it is too large
View File


+ 215
- 186
react/features/base/font-icons/jitsi.json
File diff suppressed because it is too large
View File


+ 24
- 5
react/features/recording/components/RecordingLabel.web.js View File

5
 import { translate } from '../../base/i18n';
5
 import { translate } from '../../base/i18n';
6
 import { JitsiRecordingStatus } from '../../base/lib-jitsi-meet';
6
 import { JitsiRecordingStatus } from '../../base/lib-jitsi-meet';
7
 
7
 
8
+import { RECORDING_TYPES } from '../constants';
9
+
8
 /**
10
 /**
9
  * Implements a React {@link Component} which displays the current state of
11
  * Implements a React {@link Component} which displays the current state of
10
  * conference recording. Currently it uses CSS to display itself automatically
12
  * conference recording. Currently it uses CSS to display itself automatically
43
          */
45
          */
44
         _labelDisplayConfiguration: PropTypes.object,
46
         _labelDisplayConfiguration: PropTypes.object,
45
 
47
 
48
+        /**
49
+         * Whether the recording feature is live streaming (jibri) or is file
50
+         * recording (jirecon).
51
+         */
52
+        _recordingType: PropTypes.string,
53
+
46
         /**
54
         /**
47
          * Invoked to obtain translated string.
55
          * Invoked to obtain translated string.
48
          */
56
          */
93
      * @returns {ReactElement}
101
      * @returns {ReactElement}
94
      */
102
      */
95
     render() {
103
     render() {
96
-        const { _isRecording, _labelDisplayConfiguration } = this.props;
104
+        const {
105
+            _isRecording,
106
+            _labelDisplayConfiguration,
107
+            _recordingType
108
+        } = this.props;
97
         const { centered, key, showSpinner } = _labelDisplayConfiguration || {};
109
         const { centered, key, showSpinner } = _labelDisplayConfiguration || {};
98
 
110
 
99
         const isVisible = Boolean(key);
111
         const isVisible = Boolean(key);
114
                 { _isRecording
126
                 { _isRecording
115
                     ? <div className = 'recording-icon'>
127
                     ? <div className = 'recording-icon'>
116
                         <div className = 'recording-icon-background' />
128
                         <div className = 'recording-icon-background' />
117
-                        <i className = 'icon-rec' />
129
+                        <i
130
+                            className = {
131
+                                _recordingType === RECORDING_TYPES.JIBRI
132
+                                    ? 'icon-live'
133
+                                    : 'icon-rec' } />
118
                     </div>
134
                     </div>
119
                     : <div id = 'recordingLabelText'>
135
                     : <div id = 'recordingLabelText'>
120
                         { this.props.t(key) }
136
                         { this.props.t(key) }
139
  * @returns {{
155
  * @returns {{
140
  *     _filmstripVisible: boolean,
156
  *     _filmstripVisible: boolean,
141
  *     _isRecording: boolean,
157
  *     _isRecording: boolean,
142
- *     _labelDisplayConfiguration: Object
158
+ *     _labelDisplayConfiguration: Object,
159
+ *     _recordingType: string
143
  * }}
160
  * }}
144
  */
161
  */
145
 function _mapStateToProps(state) {
162
 function _mapStateToProps(state) {
146
     const { visible } = state['features/filmstrip'];
163
     const { visible } = state['features/filmstrip'];
147
     const {
164
     const {
148
         labelDisplayConfiguration,
165
         labelDisplayConfiguration,
149
-        recordingState
166
+        recordingState,
167
+        recordingType
150
     } = state['features/recording'];
168
     } = state['features/recording'];
151
 
169
 
152
     return {
170
     return {
153
         _filmstripVisible: visible,
171
         _filmstripVisible: visible,
154
         _isRecording: recordingState === JitsiRecordingStatus.ON,
172
         _isRecording: recordingState === JitsiRecordingStatus.ON,
155
-        _labelDisplayConfiguration: labelDisplayConfiguration
173
+        _labelDisplayConfiguration: labelDisplayConfiguration,
174
+        _recordingType: recordingType
156
     };
175
     };
157
 }
176
 }
158
 
177
 

Loading…
Cancel
Save