Selecting popup buttons in 'site settings' and 'extension settings'

This commit is contained in:
Tamius Han 2018-11-26 22:41:44 +01:00
parent 1d7362c27f
commit 6b9c0274b7
4 changed files with 63 additions and 61 deletions

View File

@ -401,7 +401,7 @@ var ExtensionConf = {
{ {
cmd: [{ cmd: [{
action: 'set-stretch', action: 'set-stretch',
arg: 'NO_STRETCH', arg: 0,
}], }],
popup: true, popup: true,
popup_site: true, popup_site: true,
@ -411,7 +411,7 @@ var ExtensionConf = {
},{ },{
cmd: [{ cmd: [{
action: 'set-stretch', action: 'set-stretch',
arg: 'BASIC', arg: 1,
}], }],
popup: true, popup: true,
popup_site: true, popup_site: true,
@ -421,7 +421,7 @@ var ExtensionConf = {
},{ },{
cmd: [{ cmd: [{
action: 'set-stretch', action: 'set-stretch',
arg: 'HYBRID', arg: 2,
}], }],
popup: true, popup: true,
popup_site: true, popup_site: true,
@ -431,7 +431,7 @@ var ExtensionConf = {
},{ },{
cmd: [{ cmd: [{
action: 'set-stretch', action: 'set-stretch',
arg: 'CONDITIONAL', arg: 3,
}], }],
popup: true, popup: true,
popup_site: true, popup_site: true,

View File

@ -71,7 +71,7 @@ class CommsClient {
this.pageInfo.setVideoFloat(message.arg, message.playing); this.pageInfo.setVideoFloat(message.arg, message.playing);
this.pageInfo.restoreAr(); this.pageInfo.restoreAr();
} else if (message.cmd === "set-stretch") { } else if (message.cmd === "set-stretch") {
this.pageInfo.setStretchMode(StretchMode[message.arg], message.playing); this.pageInfo.setStretchMode(message.arg, message.playing);
} else if (message.cmd === "autoar-start") { } else if (message.cmd === "autoar-start") {
if (message.enabled !== false) { if (message.enabled !== false) {
this.pageInfo.initArDetection(message.playing); this.pageInfo.initArDetection(message.playing);

View File

@ -195,12 +195,13 @@ function configurePopupTabs(site) {
function basicCommandHandler(cmdArray) { function basicCommandHandler(cmdArray, scope) {
for (cmd of cmdArray) { for (cmd of cmdArray) {
port.postMessage({ port.postMessage({
cmd: cmd.action, cmd: cmd.action,
arg: cmd.arg, arg: cmd.arg,
targetFrame: selectedSubitem[selectedMenu] targetFrame: selectedSubitem[selectedMenu],
scope: scope
}); });
} }
} }
@ -225,10 +226,11 @@ function buildKeyboardShortcutString(keypress) {
return shortcutCombo; return shortcutCombo;
} }
function processButtonsForPopupCategory(category, buttons) { function processButtonsForPopupCategory(category, buttons, scope) {
if (buttons.length === 0) { if (buttons.length === 0) {
category.container.hide(); category.container.hide();
} else { } else {
category.buttons = {};
category.buttonContainer.removeChildren(); category.buttonContainer.removeChildren();
category.container.show(); category.container.show();
category.buttonContainer.show(); category.buttonContainer.show();
@ -244,51 +246,47 @@ function processButtonsForPopupCategory(category, buttons) {
'', '',
button.label, button.label,
shortcutCombo, shortcutCombo,
() => basicCommandHandler(cmd), () => basicCommandHandler(cmd, scope),
['w24'] ['w24']
) )
nb.appendTo(category.buttonContainer); nb.appendTo(category.buttonContainer);
var buttonId = '';
for (var c in cmd) {
buttonId += `${c > 0 ? ';' : ''}${cmd[c].action}:${cmd[c].arg}`;
}
category.buttons[buttonId] = nb;
} }
} }
} }
function selectButton(action, arg, buttons) {
for (var b in buttons) {
buttons[b].unselect();
}
const cmd=`${action}:${arg}`
if (buttons[cmd]) {
buttons[cmd].select();
}
console.log("SSSSSSSSSSSSSSSSSSS\nselecting button:", cmd, "\nbuttons", buttons)
}
function configureGlobalTab() { function configureGlobalTab() {
const popupButtons = settings.getActionsForSite(site).filter(action => action.popup_global === true); const popupButtons = settings.getActionsForSite(site).filter(action => action.popup_global === true);
const stretchButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-stretch'); const stretchButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-stretch');
const alignButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-alignment'); const alignButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-alignment');
processButtonsForPopupCategory(VideoPanel.elements.stretchSettings, stretchButtons); processButtonsForPopupCategory(GlobalPanel.elements.stretchSettings, stretchButtons);
processButtonsForPopupCategory(VideoPanel.elements.alignmentSettings, alignButtons); processButtonsForPopupCategory(GlobalPanel.elements.alignmentSettings, alignButtons);
selectButton('set-stretch', settings.active.stretch.initialMode, GlobalPanel.elements.stretchSettings.buttons);
selectButton('set-alignment', settings.active.miscFullscreenSettings.videoFloat, GlobalPanel.elements.alignmentSettings.buttons);
return; // todo: revisit return; // todo: revisit
if (Debug.debug) {
console.log("[popup.js] Configuring global tab (ExtPanel).",
"\nextension mode: ", settings.active.extensionMode,
"\narDetect mode: ", settings.active.arDetect.mode,
"\nvideo float mode:", settings.active.miscFullscreenSettings.videoFloat,
"\nstretch mode: ", settings.active.stretch.initialMode,
"\n..")
}
for(var button in ExtPanel.extOptions) {
ExtPanel.extOptions[button].classList.remove("selected");
}
for(var button in ExtPanel.arOptions) {
ExtPanel.arOptions[button].classList.remove("selected");
}
for(var button in ExtPanel.alignment) {
ExtPanel.alignment[button].classList.remove("selected");
}
for(var button in ExtPanel.stretch) {
ExtPanel.stretch[button].classList.remove("selected");
}
ExtPanel.extOptions[settings.active.extensionMode].classList.add("selected"); ExtPanel.extOptions[settings.active.extensionMode].classList.add("selected");
ExtPanel.arOptions[settings.active.arDetect.mode].classList.add("selected"); ExtPanel.arOptions[settings.active.arDetect.mode].classList.add("selected");
ExtPanel.alignment[settings.active.miscFullscreenSettings.videoFloat].classList.add("selected");
ExtPanel.stretch[settings.active.stretch.initialMode].classList.add("selected");
} }
function configureSitesTab(site) { function configureSitesTab(site) {
@ -297,20 +295,23 @@ function configureSitesTab(site) {
const stretchButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-stretch'); const stretchButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-stretch');
const alignButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-alignment'); const alignButtons = popupButtons.filter(action => action.cmd.length === 1 && action.cmd[0].action === 'set-alignment');
processButtonsForPopupCategory(VideoPanel.elements.stretchSettings, stretchButtons); processButtonsForPopupCategory(SitePanel.elements.stretchSettings, stretchButtons, 'site');
processButtonsForPopupCategory(VideoPanel.elements.alignmentSettings, alignButtons); processButtonsForPopupCategory(SitePanel.elements.alignmentSettings, alignButtons, 'site');
// optional settings:
if(settings.active.sites[site.host] && settings.active.sites[site.host].stretch !== undefined) { // can be 0
selectButton('set-stretch', settings.active.sites[site.host].stretch, SitePanel.elements.stretchSettings.buttons)
} else {
selectButton('set-stretch', -1, SitePanel.elements.stretchSettings.buttons)
}
if (settings.active.sites[site.host] && settings.active.sites[site.host].videoAlignment) {
selectButton('set-alignment', settings.active.sites[site.host].videoAlignment, SitePanel.elements.alignmentSettings.buttons);
} else {
selectButton('set-alignment', 'default', SitePanel.elements.alignmentSettings.buttons);
}
return; // todo: revisit return; // todo: revisit
if (Debug.debug) {
console.log("[popup.js] Configuring sites tab (SitePanel).",
"\nsite: ", site,
"\nextension mode: ", settings.active.sites[site.host] ? settings.active.sites[site.host].status : 'no site-special settings for this site',
"\narDetect mode: ", settings.active.sites[site.host] ? settings.active.sites[site.host].arStatus : 'no site-special settings for this site',
"\nvideo float mode:", settings.active.sites[site.host] ? settings.active.sites[site.host].videoFloat : 'no site-special settings for this site',
"\ndefault ar: ", settings.active.sites[site.host] ? settings.active.sites[site.host].ar : 'no site-special settings for this site',
"\nstretch mode: ", settings.active.sites[site.host] ? settings.active.sites[site.host].stretch : 'no site-special settings for this site',
"\n...")
}
for(const button in SitePanel.extOptions) { for(const button in SitePanel.extOptions) {
SitePanel.extOptions[button].classList.remove("selected"); SitePanel.extOptions[button].classList.remove("selected");
@ -334,18 +335,7 @@ function configureSitesTab(site) {
SitePanel.arOptions.default.classList.add("selected"); SitePanel.arOptions.default.classList.add("selected");
} }
// optional settings:
if (settings.active.sites[site.host] && settings.active.sites[site.host].videoAlignment) {
SitePanel.alignment[settings.active.sites[site.host].videoAlignment].classList.add("selected");
} else {
SitePanel.alignment.default.classList.add('selected');
}
if(settings.active.sites[site.host] && settings.active.sites[site.host].stretch !== undefined) { // can be 0
SitePanel.stretch[settings.active.sites[site.host].stretch].classList.add("selected");
} else {
SitePanel.stretch['-1'].classList.add("selected");
}
} }
function configureVideoTab(site) { function configureVideoTab(site) {

View File

@ -3,18 +3,22 @@ var GlobalPanel = {};
GlobalPanel.container = BaseElement.fromExisting(document.getElementById('_menu_settings_global')) GlobalPanel.container = BaseElement.fromExisting(document.getElementById('_menu_settings_global'))
GlobalPanel.elements = {}; GlobalPanel.elements = {};
GlobalPanel.elements.extensionSettings = { GlobalPanel.elements.extensionSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_status')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_status')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_status_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_status_buttons'))
} }
GlobalPanel.elements.autoarSettings = { GlobalPanel.elements.autoarSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_autoar')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_autoar')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_autoar_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_autoar_buttons'))
} }
GlobalPanel.elements.stretchSettings = { GlobalPanel.elements.stretchSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_crop')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_crop')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_stretch_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_stretch_buttons'))
} }
GlobalPanel.elements.alignmentSettings = { GlobalPanel.elements.alignmentSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_alignment')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_global_alignment')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_alignment_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_global_alignment_buttons'))
} }
@ -25,16 +29,19 @@ var SitePanel = {};
SitePanel.elements = {}; SitePanel.elements = {};
SitePanel.container = BaseElement.fromExisting(document.getElementById('_menu_settings_site')) SitePanel.container = BaseElement.fromExisting(document.getElementById('_menu_settings_site'))
SitePanel.elements.extensionSettings = { SitePanel.elements.extensionSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_status')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_status')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_site_status_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_site_status_buttons'))
} }
SitePanel.elements.autoarSettings = { SitePanel.elements.autoarSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_autoar')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_autoar')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_site_autoar_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_site_autoar_buttons'))
} }
SitePanel.elements.stretchSettings = { SitePanel.elements.stretchSettings = {
container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_crop')), buttons: {},
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_site_crop_buttons')) container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_stretch')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_site_stretch_buttons'))
}; };
SitePanel.elements.alignmentSettings = { SitePanel.elements.alignmentSettings = {
container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_alignment')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_site_alignment')),
@ -49,18 +56,23 @@ var VideoPanel = {};
VideoPanel.elements = {}; VideoPanel.elements = {};
VideoPanel.container = BaseElement.fromExisting(document.getElementById('_menu_settings_video')) VideoPanel.container = BaseElement.fromExisting(document.getElementById('_menu_settings_video'))
VideoPanel.elements.cropSettings = { VideoPanel.elements.cropSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_video_crop')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_video_crop')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_video_crop_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_video_crop_buttons'))
} }
VideoPanel.elements.stretchSettings = { VideoPanel.elements.stretchSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_video_stretch')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_video_stretch')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_video_stretch_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_video_stretch_buttons'))
} }
VideoPanel.elements.alignmentSettings = { VideoPanel.elements.alignmentSettings = {
buttons: {},
container: BaseElement.fromExisting(document.getElementById('_menu_settings_video_alignment')), container: BaseElement.fromExisting(document.getElementById('_menu_settings_video_alignment')),
buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_video_alignment_buttons')) buttonContainer: BaseElement.fromExisting(document.getElementById('_menu_settings_video_alignment_buttons'))
} }
// THE FOLLOWING BUTTONS ARE STILL HANDLED THE OLD-FASHIONED WAY
// DO NOT REMOVE
// buttons: for toggle, select // buttons: for toggle, select
VideoPanel.buttons = {}; VideoPanel.buttons = {};
VideoPanel.buttons.zoom = {}; VideoPanel.buttons.zoom = {};