Skip to content

Commit e18a32a

Browse files
authored
Merge pull request #3238 from bashward/master
added seperate quality setting for full screen modes
2 parents 45cc678 + b5df939 commit e18a32a

File tree

5 files changed

+61
-1
lines changed

5 files changed

+61
-1
lines changed

_locales/en/messages.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,6 +1523,8 @@
15231523
"excludeShortsInPlayAll": {
15241524
"message": "Exclude Shorts when using \"Play all\""
15251525
},
1526+
"fullScreenQuality": {
1527+
"message": "Fullscreen quality"
15261528
"secondaryColor": {
15271529
"message": "Secondary color"
15281530
},

js&css/web-accessible/init.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,19 @@ ImprovedTube.init = function () {
110110
if (window.matchMedia) {
111111
document.documentElement.dataset.systemColorScheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
112112
}
113+
114+
if (ImprovedTube.storage.full_screen_quality) {
115+
if (!ImprovedTube._fsqBound) {
116+
document.addEventListener('fullscreenchange', () => ImprovedTube.playerQualityFullScreen(), { passive: true });
117+
ImprovedTube._fsqBound = true;
118+
}
119+
ImprovedTube.playerQualityFullScreen();
120+
}
121+
113122
};
114123

124+
125+
115126
document.addEventListener('yt-navigate-finish', function () {
116127
/* if (name === 'META') { //<META> infos are not updated when clicking related videos...
117128
if(node.getAttribute('name')) {

js&css/web-accessible/www.youtube.com/appearance.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@ ImprovedTube.playerRevertTheaterButtonSize();
869869
document.addEventListener('yt-page-data-updated', run);
870870
document.addEventListener('yt-navigate-finish', run);
871871
window.addEventListener('load', run);
872-
etTimeout(run, 2000); // fallback for late loads
872+
setTimeout(run, 2000); // fallback for late loads
873873
})();
874874

875875
/*------------------------------------------------------------------------------

js&css/web-accessible/www.youtube.com/player.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,39 @@ ImprovedTube.playerQualityWithoutFocus = function () {
512512
}
513513
};
514514
/*------------------------------------------------------------------------------
515+
QUALITY FULL SCREEN
516+
------------------------------------------------------------------------------*/
517+
ImprovedTube.playerQualityFullScreen = function () {
518+
var isFs = !!(
519+
document.fullscreenElement ||
520+
document.webkitFullscreenElement ||
521+
document.mozFullScreenElement ||
522+
document.msFullscreenElement ||
523+
document.webkitIsFullScreen ||
524+
document.mozFullScreen
525+
);
526+
527+
var target = isFs ? fsq : ImprovedTube.storage.player_quality;
528+
529+
var map = {
530+
'144p':'tiny','240p':'small','360p':'medium','480p':'large',
531+
'720p':'hd720','1080p':'hd1080','1440p':'hd1440','2160p':'hd2160','4320p':'highres',
532+
'tiny':'tiny','small':'small','medium':'medium','large':'large',
533+
'hd720':'hd720','hd1080':'hd1080','hd1440':'hd1440','hd2160':'hd2160','highres':'highres'
534+
};
535+
var desired = map[target] || target;
536+
537+
var player = ImprovedTube.elements && ImprovedTube.elements.player;
538+
if (!player) return;
539+
540+
if (typeof ImprovedTube.playerQuality === 'function') {
541+
ImprovedTube.playerQuality(desired);
542+
return;
543+
}
544+
try { if (typeof player.setPlaybackQualityRange === 'function') player.setPlaybackQualityRange(desired, desired); } catch(e) {}
545+
try { if (typeof player.setPlaybackQuality === 'function') player.setPlaybackQuality(desired); } catch(e) {}
546+
}
547+
/*------------------------------------------------------------------------------
515548
BATTERY FEATURES; PLAYER QUALITY BASED ON POWER STATUS
516549
------------------------------------------------------------------------------*/
517550
ImprovedTube.batteryFeatures = async function () {

menu/skeleton-parts/player.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,19 @@ extension.skeleton.main.layers.section.player.on.click = {
812812
}
813813
}
814814
},
815+
full_screen_quality: {
816+
component: 'select',
817+
text: 'fullScreenQuality',
818+
id: 'full_screen_quality',
819+
options: function () {
820+
return extension.skeleton.main.layers.section.player.on.click.section_1.player_quality.options;
821+
},
822+
on: {
823+
render: function () {
824+
extension.skeleton.main.layers.section.player.on.click.section_1.player_quality.on.render.call(this)
825+
}
826+
}
827+
},
815828
/*
816829
qualityWhenRunningOnBattery: {
817830
component: 'select',
@@ -983,6 +996,7 @@ extension.skeleton.main.layers.section.player.on.click = {
983996
document.getElementById('player_codecs').dispatchEvent(new CustomEvent('render'));
984997
document.getElementById('optimize_codec_for_hardware_acceleration').dispatchEvent(new CustomEvent('render'));
985998
document.getElementById('player_quality_without_focus').dispatchEvent(new CustomEvent('render'));
999+
document.getElementById('full_screen_quality')?.dispatchEvent(new CustomEvent('render'))
9861000
//document.getElementById('quality_when_low_battery').dispatchEvent(new CustomEvent('render'));
9871001
}
9881002
if (this.dataset.value === 'false') {

0 commit comments

Comments
 (0)