issue #10 #11 Add language selection feature.

This commit is contained in:
paul kim
2024-06-02 15:31:53 +09:00
parent bc7ea606f8
commit a069902c86
8 changed files with 471 additions and 2 deletions

View File

@@ -473,7 +473,8 @@ HotelTV.ui_appfull = (function() {
if ( _state.menu.stage.cur=="tvCtgShow" ||
_state.menu.stage.cur=="tvCtgHide" ||
_state.menu.stage.cur=="tvShortcut" ||
_state.menu.stage.cur=="tvPreparing" )
_state.menu.stage.cur=="tvPreparing" ||
_state.menu.stage.cur=="language_selection" )
{
console.warn("HDMI input doesn't work tv mode");
//HDMI사용불가 말풍선 출력
@@ -4631,7 +4632,7 @@ HotelTV.ui_appfull = (function() {
{
'conId': _mpinfo[_state.menu.main[_mmIdx].cur].id
}
}])
}]);
}
$('.main .mypage .slider .owl-item.focus').removeClass('focus');
@@ -5933,6 +5934,125 @@ HotelTV.ui_appfull = (function() {
});
}
function __uifxn_AppFull_Build_LangSel() {
let _state = HotelTV.state;
let _trTbl = HotelTV.translation;
let _langInf = HotelTV.opening.languages;
let _elLangSelDiv = $('.popup>.lang_selection');
let _elLangSelCtrlDiv = $('.popup>.lang_selection .selector');
let _elLangSelTitleDiv = _elLangSelCtrlDiv.children('.title');
let _elLangSelUsageDiv = _elLangSelCtrlDiv.children('.usage');
let _elLangSelButtonsDiv = _elLangSelCtrlDiv.children('.buttons');
// 초기 메인 메뉴 KEY설정
_state.menu.stage.cur = "language_selection";
// Reset language total count as 1
_state["langTotalCnt"] = 1;
// Remove all items unter _elLangSelButtonsDiv
_elLangSelButtonsDiv.children().remove();
const ___ifxn_drawLangButtons = function() {
for (let __lang in _langInf) {
console.log("Lang==>" + __lang);
let _elDiv_LangBtn = document.createElement('div');
if ( __lang===_state.lang ){
_elDiv_LangBtn.className = 'langBtn focus';
} else {
_elDiv_LangBtn.className = 'langBtn';
}
_elDiv_LangBtn.id = __lang;
_elDiv_LangBtn.setAttribute("lang_idx", _state["langTotalCnt"]);
_elDiv_LangBtn.innerHTML = _langInf[__lang].name;
_state["langTotalCnt"] += 1;
_elLangSelButtonsDiv.append(_elDiv_LangBtn);
}
}
// Title
_elLangSelTitleDiv.text(_trTbl.system.szsellanguage[_state.lang]);
// Usages
_elLangSelUsageDiv.html(_trTbl.system.lang_sel_usage[_state.lang]);
// Draw Lang Buttons
___ifxn_drawLangButtons();
// Language selection 프레임 활성화
if ( _elLangSelDiv.css('display') == "none") {
_elLangSelDiv.fadeIn(1000);
}
}
function __uifxn_AppFull_HandleLangSelect(_action, _cbFxn=null) {
let _state = HotelTV.state;
let _trTbl = HotelTV.translation;
let _langInf = HotelTV.opening.languages;
let _elLangSelDiv = $('.popup>.lang_selection');
let _elLangSelCtrlDiv = $('.popup>.lang_selection .selector');
let _elLangSelTitleDiv = _elLangSelCtrlDiv.children('.title');
let _elLangSelUsageDiv = _elLangSelCtrlDiv.children('.usage');
let _elLangSelButtonsDiv = _elLangSelCtrlDiv.children('.buttons');
const ___ifxn_moveLangButton = function(_direction) {
let selectedBtnItemCur = _elLangSelButtonsDiv.find('.focus');
let selectedBtnItemNext = null;
if ( _direction=="down" ){
selectedBtnItemNext = selectedBtnItemCur.next(".langBtn");
} else if ( _direction=="up" ) {
selectedBtnItemNext = selectedBtnItemCur.prev(".langBtn");
}
selectedBtnItemCur.removeClass("focus");
if (selectedBtnItemNext.length) {
selectedBtnItemNext.addClass('focus');
}else{
if ( _direction=="down" ){
_elLangSelButtonsDiv.find('.langBtn').first().addClass("focus");
} else if ( _direction=="up" ) {
_elLangSelButtonsDiv.find('.langBtn').last().addClass("focus");
}
}
}
const __ifxn_sendNextLangUsrData = async function(_nextLang, __cbFxnFailure=null, __cbFxn_Success=null) {
try {
let _usrDataJson = {
'next_lang': _nextLang,
};
_result = await HotelTV.api.SetUsrDataset(_usrDataJson);
console.log("The app main page will be reloaded");
window.location.replace('./app_hoteltv_full.html');
} catch ( __err ){
console.log("CALL API::>" + __err);
_elLangSelDiv.fadeOut(1000, function() {
if ( __cbFxnFailure ){ __cbFxnFailure(); }
});
}
}
if ( _action=="up" ) {
___ifxn_moveLangButton(_action);
} else if ( _action=="down" ) {
___ifxn_moveLangButton(_action);
} else if ( _action=="back") {
_elLangSelDiv.fadeOut(1000, function() {
if ( _cbFxn ){ _cbFxn(); }
});
} else if ( _action=="enter") {
if ( _elLangSelButtonsDiv.find('.focus').length ) {
__ifxn_sendNextLangUsrData(_elLangSelButtonsDiv.find('.focus').attr('id'), _cbFxn);
} else {
__ifxn_sendNextLangUsrData("en-US", _cbFxn);
}
}
}
/**
* HotelTV UI[AppFull] Wrapper Function::> Bottom Guide Bar UI mngr
*/
@@ -6767,6 +6887,9 @@ HotelTV.ui_appfull = (function() {
} else if (_program[Number(_state.menu.main.cur)].service == "screenmirroring") {
HotelTV.hcap.LaunchPreApp(_program[Number(_state.menu.main.cur)].service, null);
}
} else if (_program[Number(_state.menu.main.cur)].type.toLowerCase() == "language") {
console.log("Preparing language select sub menu...");
__uifxn_AppFull_Build_LangSel();
} else {
console.log(`Type:${_program[Number(_state.menu.main.cur)].type} doen's have sub menu...`);
}
@@ -6996,6 +7119,31 @@ HotelTV.ui_appfull = (function() {
__uifxn_AppFull_HotKey_ShowBtnOnMM(true);
});
}
} else if ( _state.menu.stage.cur == "language_selection" ) {
console.log("HOTKEY(MM:LANGUAGE SELECTION: MENU) KEY EVENT::> " + _evt.keyCode);
if (_evt.keyCode == gRmtKey.left) {
console.log("LANGUAGE SELECTION::>LEFT");
} else if (_evt.keyCode == gRmtKey.up) {
console.log("LANGUAGE SELECTION::>UP");
__uifxn_AppFull_HandleLangSelect("up");
} else if (_evt.keyCode == gRmtKey.right) {
console.log("LANGUAGE SELECTION::>RIGHT");
} else if (_evt.keyCode == gRmtKey.down) {
console.log("LANGUAGE SELECTION::>DOWN");
__uifxn_AppFull_HandleLangSelect("down");
} else if (_evt.keyCode == gRmtKey.enter) {
console.log("LANGUAGE SELECTION::>ENTER");
__uifxn_AppFull_HandleLangSelect("enter", function() {
_state.menu.stage.cur = "main";
__uifxn_AppFull_HotKey_ShowBtnOnMM(true);
});
} else if (_evt.keyCode == gRmtKey.back) {
console.log("LANGUAGE SELECTION::>BACK");
__uifxn_AppFull_HandleLangSelect("back", function() {
_state.menu.stage.cur = "main";
__uifxn_AppFull_HotKey_ShowBtnOnMM(true);
});
}
}
});