mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
remember display mirroring
This commit is contained in:
parent
29afe3348c
commit
6350971623
7 changed files with 76 additions and 45 deletions
|
@ -77,62 +77,62 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelSeriesName}</td>
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
<td>%sn</td>
|
<td>%sn</td>
|
||||||
<td>${LabelSeriesName}</td>
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelSeriesName}</td>
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
<td>%s.n</td>
|
<td>%s.n</td>
|
||||||
<td>${ValueSeriesNamePeriod}</td>
|
<td>${ValueSeriesNamePeriod}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelSeriesName}</td>
|
<td>${LabelSeriesNamePlain}</td>
|
||||||
<td>%s_n</td>
|
<td>%s_n</td>
|
||||||
<td>${ValueSeriesNameUnderscore}</td>
|
<td>${ValueSeriesNameUnderscore}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelSeasonNumber}</td>
|
<td>${LabelSeasonNumberPlain}</td>
|
||||||
<td>%s</td>
|
<td>%s</td>
|
||||||
<td>1</td>
|
<td>1</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelSeasonNumber}</td>
|
<td>${LabelSeasonNumberPlain}</td>
|
||||||
<td>%0s</td>
|
<td>%0s</td>
|
||||||
<td>01</td>
|
<td>01</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEpisodeNumber}</td>
|
<td>${LabelEpisodeNumberPlain}</td>
|
||||||
<td>%e</td>
|
<td>%e</td>
|
||||||
<td>4</td>
|
<td>4</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEpisodeNumber}</td>
|
<td>${LabelEpisodeNumberPlain}</td>
|
||||||
<td>%0e</td>
|
<td>%0e</td>
|
||||||
<td>04</td>
|
<td>04</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEndingEpisodeNumber}</td>
|
<td>${LabelEndingEpisodeNumberPlain}</td>
|
||||||
<td>%ed</td>
|
<td>%ed</td>
|
||||||
<td>5</td>
|
<td>5</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEndingEpisodeNumber}</td>
|
<td>${LabelEndingEpisodeNumberPlain}</td>
|
||||||
<td>%0ed</td>
|
<td>%0ed</td>
|
||||||
<td>05</td>
|
<td>05</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEpisodeName}</td>
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
<td>%en</td>
|
<td>%en</td>
|
||||||
<td>${LabelEpisodeName}</td>
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEpisodeName}</td>
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
<td>%e.n</td>
|
<td>%e.n</td>
|
||||||
<td>${ValueEpisodeNamePeriod}</td>
|
<td>${ValueEpisodeNamePeriod}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${LabelEpisodeName}</td>
|
<td>${LabelEpisodeNamePlain}</td>
|
||||||
<td>%e_n</td>
|
<td>%e_n</td>
|
||||||
<td>${ValueEpisodeNameUnderscore}</td>
|
<td>${ValueEpisodeNameUnderscore}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
<label>${LabelMonitorUsers}</label>
|
<label>${LabelMonitorUsers}</label>
|
||||||
<div class="monitorUsersList">
|
<div class="monitorUsersList">
|
||||||
</div>
|
</div>
|
||||||
<div class="fieldDescription">${UsersNotNotifiedAboutSelfActivity}</div>
|
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -316,12 +316,19 @@
|
||||||
var bitrateSetting = MediaPlayer.getBitrateSetting();
|
var bitrateSetting = MediaPlayer.getBitrateSetting();
|
||||||
bitrateSetting = Math.min(bitrateSetting, 10000000);
|
bitrateSetting = Math.min(bitrateSetting, 10000000);
|
||||||
|
|
||||||
|
var receiverName = null;
|
||||||
|
|
||||||
|
if (castPlayer.session && castPlayer.session.receiver && castPlayer.session.receiver.friendlyName) {
|
||||||
|
receiverName = castPlayer.session.receiver.friendlyName;
|
||||||
|
}
|
||||||
|
|
||||||
message = $.extend(message, {
|
message = $.extend(message, {
|
||||||
userId: Dashboard.getCurrentUserId(),
|
userId: Dashboard.getCurrentUserId(),
|
||||||
deviceId: ApiClient.deviceId(),
|
deviceId: ApiClient.deviceId(),
|
||||||
accessToken: ApiClient.accessToken(),
|
accessToken: ApiClient.accessToken(),
|
||||||
serverAddress: ApiClient.serverAddress(),
|
serverAddress: ApiClient.serverAddress(),
|
||||||
maxBitrate: bitrateSetting
|
maxBitrate: bitrateSetting,
|
||||||
|
receiverName: receiverName
|
||||||
});
|
});
|
||||||
|
|
||||||
getEndpointInfo().done(function (endpoint) {
|
getEndpointInfo().done(function (endpoint) {
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
(function ($, window) {
|
(function ($, window, store) {
|
||||||
|
|
||||||
|
function setMirrorModeEnabled(enabled) {
|
||||||
|
|
||||||
|
var val = enabled ? '1' : '';
|
||||||
|
|
||||||
|
store.setItem('displaymirror', val);
|
||||||
|
|
||||||
|
}
|
||||||
|
function isMirrorModeEnabled() {
|
||||||
|
return (store.getItem('displaymirror') || '') == '1';
|
||||||
|
}
|
||||||
|
|
||||||
var enableMirrorMode;
|
|
||||||
var currentDisplayInfo;
|
var currentDisplayInfo;
|
||||||
|
|
||||||
function mirrorItem(info) {
|
function mirrorItem(info) {
|
||||||
|
|
||||||
var item = info.item;
|
var item = info.item;
|
||||||
|
@ -16,6 +25,18 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mirrorIfEnabled(info) {
|
||||||
|
|
||||||
|
if (isMirrorModeEnabled()) {
|
||||||
|
|
||||||
|
var player = MediaController.getPlayerInfo();
|
||||||
|
|
||||||
|
if (!player.isLocalPlayer && player.supportedCommands.indexOf('DisplayContent') != -1) {
|
||||||
|
mirrorItem(info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function monitorPlayer(player) {
|
function monitorPlayer(player) {
|
||||||
|
|
||||||
$(player).on('playbackstart.mediacontroller', function (e, state) {
|
$(player).on('playbackstart.mediacontroller', function (e, state) {
|
||||||
|
@ -455,7 +476,7 @@
|
||||||
|
|
||||||
html += '<p class="fieldDescription">' + Globalize.translate('LabelAllPlaysSentToPlayer') + '</p>';
|
html += '<p class="fieldDescription">' + Globalize.translate('LabelAllPlaysSentToPlayer') + '</p>';
|
||||||
|
|
||||||
checkedHtml = enableMirrorMode ? ' checked="checked"' : '';
|
checkedHtml = isMirrorModeEnabled() ? ' checked="checked"' : '';
|
||||||
html += '<div style="margin-top:1.5em;" class="fldMirrorMode"><label for="chkEnableMirrorMode">Enable display mirroring</label><input type="checkbox" class="chkEnableMirrorMode" id="chkEnableMirrorMode" data-mini="true"' + checkedHtml + ' /></div>';
|
html += '<div style="margin-top:1.5em;" class="fldMirrorMode"><label for="chkEnableMirrorMode">Enable display mirroring</label><input type="checkbox" class="chkEnableMirrorMode" id="chkEnableMirrorMode" data-mini="true"' + checkedHtml + ' /></div>';
|
||||||
|
|
||||||
html += '</form>';
|
html += '</form>';
|
||||||
|
@ -488,7 +509,7 @@
|
||||||
$('.players', elem).html(getTargetsHtml(targets)).trigger('create');
|
$('.players', elem).html(getTargetsHtml(targets)).trigger('create');
|
||||||
|
|
||||||
$('.chkEnableMirrorMode', elem).on().on('change', function () {
|
$('.chkEnableMirrorMode', elem).on().on('change', function () {
|
||||||
enableMirrorMode = this.checked;
|
setMirrorModeEnabled(this.checked);
|
||||||
|
|
||||||
if (this.checked && currentDisplayInfo) {
|
if (this.checked && currentDisplayInfo) {
|
||||||
|
|
||||||
|
@ -506,7 +527,6 @@
|
||||||
$('.fldMirrorMode', elem).show();
|
$('.fldMirrorMode', elem).show();
|
||||||
} else {
|
} else {
|
||||||
$('.fldMirrorMode', elem).hide();
|
$('.fldMirrorMode', elem).hide();
|
||||||
$('.chkEnableMirrorMode', elem).checked(false).trigger('change').checkboxradio('refresh');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}).each(function () {
|
}).each(function () {
|
||||||
|
@ -532,6 +552,12 @@
|
||||||
deviceName: deviceName
|
deviceName: deviceName
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (currentDisplayInfo) {
|
||||||
|
|
||||||
|
mirrorIfEnabled(currentDisplayInfo);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -610,9 +636,7 @@
|
||||||
|
|
||||||
currentDisplayInfo = info;
|
currentDisplayInfo = info;
|
||||||
|
|
||||||
if (enableMirrorMode) {
|
mirrorIfEnabled(info);
|
||||||
mirrorItem(info);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery, window);
|
})(jQuery, window, window.store);
|
|
@ -200,6 +200,8 @@
|
||||||
|
|
||||||
self.setCurrentTrackElement = function (index) {
|
self.setCurrentTrackElement = function (index) {
|
||||||
|
|
||||||
|
var modes = ['disabled', 'showing', 'hidden'];
|
||||||
|
|
||||||
var textStreams = self.currentMediaSource.MediaStreams.filter(function (s) {
|
var textStreams = self.currentMediaSource.MediaStreams.filter(function (s) {
|
||||||
return s.Type == 'Subtitle' && s.IsTextSubtitleStream;
|
return s.Type == 'Subtitle' && s.IsTextSubtitleStream;
|
||||||
});
|
});
|
||||||
|
@ -219,13 +221,26 @@
|
||||||
var mode;
|
var mode;
|
||||||
|
|
||||||
if (trackIndex == i) {
|
if (trackIndex == i) {
|
||||||
mode = "showing"; // show this track
|
mode = 1; // show this track
|
||||||
} else {
|
} else {
|
||||||
mode = "disabled"; // hide all other tracks
|
mode = 0; // hide all other tracks
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Setting track ' + i + ' mode to: ' + mode);
|
console.log('Setting track ' + i + ' mode to: ' + mode);
|
||||||
allTracks[i].mode = mode;
|
|
||||||
|
// Safari uses integers for the mode property
|
||||||
|
// http://www.jwplayer.com/html5/scripting/
|
||||||
|
var useNumericMode = false;
|
||||||
|
|
||||||
|
if (!isNaN(allTracks[i].mode)) {
|
||||||
|
useNumericMode = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useNumericMode) {
|
||||||
|
allTracks[i].mode = mode;
|
||||||
|
} else {
|
||||||
|
allTracks[i].mode = modes[mode];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -555,14 +555,7 @@
|
||||||
self.displayContent = function (options) {
|
self.displayContent = function (options) {
|
||||||
|
|
||||||
// Handle it the same as a remote control command
|
// Handle it the same as a remote control command
|
||||||
Dashboard.onBrowseCommand({
|
Dashboard.onBrowseCommand(options);
|
||||||
|
|
||||||
ItemName: options.itemName,
|
|
||||||
ItemType: options.itemType,
|
|
||||||
ItemId: options.itemId,
|
|
||||||
Context: options.context
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
self.getItemsForPlayback = function (query) {
|
self.getItemsForPlayback = function (query) {
|
||||||
|
|
|
@ -157,14 +157,7 @@
|
||||||
|
|
||||||
self.displayContent = function (options) {
|
self.displayContent = function (options) {
|
||||||
|
|
||||||
sendCommandByName('DisplayContent', {
|
sendCommandByName('DisplayContent', options);
|
||||||
|
|
||||||
ItemName: options.itemName,
|
|
||||||
ItemType: options.itemType,
|
|
||||||
ItemId: options.itemId,
|
|
||||||
Context: options.context
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
self.getPlayerState = function () {
|
self.getPlayerState = function () {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue