Prechádzať zdrojové kódy

Add calculator icons

Toby Chui 1 deň pred
rodič
commit
5cfbfac02d

BIN
src/web/Calculator/img/desktop_icon.png


BIN
src/web/Calculator/img/desktop_icon.psd


BIN
src/web/Calculator/img/module_icon.png


BIN
src/web/Calculator/img/module_icon.psd


+ 312 - 0
src/web/SystemAO/system_setting/index.html.bak

@@ -0,0 +1,312 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>System Setting</title>
+        <meta charset="UTF-8">
+        <meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=no">
+        <link rel="stylesheet" href="../../script/semantic/semantic.min.css">
+        <script type="text/javascript" src="../../script/jquery.min.js"></script>
+        <script type="text/javascript" src="../../script/semantic/semantic.min.js"></script>
+        <script type="text/javascript" src="../../script/ao_module.js"></script>
+        <script type="text/javascript" src="../../script/applocale.js"></script>
+        <style>
+            html{
+                overflow:hidden;
+                height:100%;
+            }
+            body{
+                background-color:#fcfcfc;
+                overflow:hidden !important;
+                height:100%;
+            }
+            #mainSideMenuDimmer{
+                width:100%;
+                height:100%;
+                position:fixed;
+                top:0px;
+                left:0px;
+                background-color: rgba(26,26,26,0.3);
+                z-index:99;
+            }
+            #mainSideMenu{
+                z-index:100;
+            }
+            #settingContentLoader{
+                overflow-x: hidden;
+                overflow-y:auto;
+                height: calc(100% - 60px);
+            }
+            #mainFunctionTabMenu{
+                background-color: #f8f8f8;
+                margin-top: 0;
+                padding-top: 1em;
+                border-radius: 0 0 0 0 !important;
+            }
+
+            #msgbox{
+                position: fixed;
+                bottom: 0.2em;
+                right: 2em;
+                display:none;
+            }
+        </style>
+    </head>
+    <body>
+        <div id="mainSideMenu" class="ui left fixed vertical menu">
+            <div class="item">
+                <img class="ui image" src="img/banner.png">
+            </div>
+            
+        </div>
+        <div id="mainSideMenuDimmer" onclick="hideToolBar();"></div>
+        <div id="mainFunctionTabMenu" class="ui top attached tabular menu" style="overflow-x:auto;overflow-y:hidden;">
+            <a id="toolbarBtn" class="item" onclick="showToolBar();">
+                <i class="content icon"></i>
+            </a>
+        
+            <div class="right menu">
+                <!--
+                <div class="item">
+                    <div class="ui transparent icon input">
+                    <input id="searchInput" type="text" placeholder="Search Settings..." onkeydown="if (event.which == 13){ search(); }">
+                        <i class="search link icon" onclick="search();"></i>
+                    </div>
+                </div>
+                -->
+            </div>
+          </div>
+          <div id="settingContentLoader" class="ui bottom attached segment">
+
+          </div>
+          <div id="msgbox" class="ui compact small message">
+            Hello World
+          </div>
+          </div>
+         
+          <script>
+              var currentSettingModuleList = [];
+              var loadViaSystemSetting = true; //Check for this parameter to see if launching in Setting Interface
+              var loadToPage = undefined; //Load setting page directly to the given tab, passed in via window hash
+              var pageStateRestored = false; //Flag to track if page state has been restored from hash
+
+            function restorePageFromHash(){
+                if (pageStateRestored){
+                    return;
+                }
+                if (window.location.hash.length > 0){
+                    var hashObject = window.location.hash.substr(1);
+                    hashObject = JSON.parse(decodeURIComponent(hashObject));
+                    if (typeof(hashObject.group) != 'undefined' && typeof(hashObject.name) != 'undefined'){
+                        loadToPage = hashObject;
+                    }
+
+                    if (!loadToPage || loadToPage.group == "" || loadToPage.name == ""){
+                        //Invalid hash object
+                        initSettingGroup("Info");
+                        return;
+                    }
+
+                    initSettingGroup(loadToPage.group, function(settingList){
+                        let reversedList = JSON.parse(JSON.stringify(settingList)).reverse();
+                        for (var i = 0; i < settingList.length; i++){
+                            var settingTab = settingList[i];
+                            console.log(settingTab.Name, loadToPage.name, settingTab.Name == loadToPage.name, i);
+                            if (settingTab.Name == loadToPage.name){
+                                //This is the tab we are looking for
+                                initSettingModules(settingList.length - i-1);
+                            }
+                        }
+                            
+                    });
+
+                }else{
+                    //No hash, load default Info page
+                    initSettingGroup("Info");
+                }
+                 pageStateRestored = true;
+            }
+
+            applocale.init("../locale/system_settings.json", function(){
+                applocale.translate();
+                //Initiation Functions
+                initMainSideMenu(function(){
+                    //Menu is now loaded
+                    hideToolBar();
+                    if (!pageStateRestored){
+                        restorePageFromHash();
+                        return;
+                    }
+
+                    initSettingGroup("Info");
+                });
+            });
+ 
+            
+            function initMainSideMenu(callback){
+                $.get("../../system/setting/list",function(data){
+                    for (var i =0; i < data.length; i++){
+                        var settingGroupName = data[i].Name;
+                        var groupUUID = data[i].Group;
+                        var iconPath = "../../" + data[i].IconPath;
+                        var toolTip = data[i].Desc;
+                        settingGroupName = applocale.getString("menu/group/" + settingGroupName, settingGroupName);
+                        $("#mainSideMenu").append(`<a class="item" group="${groupUUID}" title="${toolTip}" style="padding:4px;" onclick="menuClicked(this);"><img class="ui middle aligned mini image" src="${iconPath}" style="padding: 2px;"></img> ${settingGroupName}</a>`);
+                    }
+                    applocale.translate();
+                    
+                    //Notify that menu is loaded
+                    if (callback){
+                        callback();
+                    }
+                });
+            }
+
+            function initSettingGroup(group, callback=undefined){
+                $.get("../../system/setting/list?listGroup=" + group,function(data){
+                    if (data.error !== undefined){
+                        console.log(data.error);
+                    }else{
+                        currentSettingModuleList = data;
+                        initSettingModuleTabs(group);
+                        initSettingModules(0);
+                        if (callback != undefined){
+                            callback(data);
+                        }
+                    }
+                });
+            }
+
+              function menuClicked(object){
+                var group=$(object).attr("group");
+                initSettingGroup(group, function(settingList){
+                    //After loading group, update hash with first tab
+                    if (settingList.length > 0){
+                        updateWindowHash(settingList[0].Group, settingList[0].Name);
+                    }
+                });
+                hideToolBar();
+              }
+
+              //Initiate the setting modules tabs
+              function initSettingModuleTabs(groupName){
+                $(".settingTab").remove();
+                var moduleListInReverse = currentSettingModuleList.reverse();
+                for (var i =0; i < moduleListInReverse.length; i ++){
+                    var thisModuleInfo = moduleListInReverse[i];
+                    var stringifyModuleInfo = encodeURIComponent(JSON.stringify(thisModuleInfo));
+                    let localeGroupKey = "tab/" + groupName.toLowerCase() + "/" + thisModuleInfo.Name;
+                    let displayTabName = applocale.getString(localeGroupKey, thisModuleInfo.Name)
+                    console.log(thisModuleInfo.Desc);
+                    $("#toolbarBtn").after(`<a class="item settingTab" moduleInfo="${stringifyModuleInfo}" title="${thisModuleInfo.Desc}" onclick="loadSettingModuleFromTab(this);">${displayTabName}</a>`);
+                }
+
+                applocale.translate();
+            
+              }
+
+              function initSettingModules(index){
+                if (index < 0){
+                    index = 0;
+                }
+                var targetObject = $(".settingTab")[index];
+                $(".settingTab.active").removeClass("active");
+                if (targetObject !== undefined){
+                    //Select this object
+                    $(targetObject).addClass("active");
+
+                    //Load this object into the tab
+                    var settingModuleInfo = JSON.parse(decodeURIComponent($(targetObject).attr("moduleInfo")));
+                    var settingStartDir = settingModuleInfo.StartDir;
+                    $("#settingContentLoader").html("");
+                    $("#settingContentLoader").load("../../" + settingStartDir, function(){
+                        injectIMEToLoadedConetentFrame();
+                    });
+                }
+              }
+
+              function loadSettingModuleFromTab(object){
+                targetObject = $(object);
+                $(".settingTab.active").removeClass("active");
+                if (targetObject !== undefined){
+                    //Select this object
+                    $(targetObject).addClass("active");
+
+                    //Load this object into the tab
+                    var settingModuleInfo = JSON.parse(decodeURIComponent($(targetObject).attr("moduleInfo")));
+                    var settingStartDir = settingModuleInfo.StartDir;
+                    
+                    //Update window hash with current tab
+                    updateWindowHash(settingModuleInfo.Group, settingModuleInfo.Name);
+                    
+                    $("#settingContentLoader").html("");
+                    $("#settingContentLoader").load("../../" + settingStartDir, function(){
+                        injectIMEToLoadedConetentFrame();
+                    });
+                }
+              }
+
+              function updateWindowHash(groupName, moduleName){
+                  //Update window hash to preserve tab state on refresh
+                  //Skip if in ao_window mode
+                  if (ao_module_windowID !== false){
+                      //Running in floatWindow mode, do not update hash
+                      return;
+                  }
+                  
+                  var hashObject = {
+                      group: groupName,
+                      name: moduleName
+                  };
+                  window.location.hash = encodeURIComponent(JSON.stringify(hashObject));
+              }
+
+              function injectIMEToLoadedConetentFrame(){
+                    //Inject IME listener into the loaded content window
+                    var inputFields = document.getElementById("settingContentLoader").querySelectorAll("input,textarea");
+                    for (var i = 0; i < inputFields.length; i++){
+                        if ($(inputFields[i]).attr("type") != undefined){
+                            var thisType = $(inputFields[i]).attr("type");
+                            if (thisType == "text" || thisType =="search" || thisType =="url"){
+                                //Supported types of input
+                                if (ao_module_virtualDesktop){
+                                    ao_module_bindCustomIMEEvents(inputFields[i]);
+                                }
+                                
+                                console.log(inputFields[i]);
+                            }else{
+                                //Not supported type of inputs
+                                
+                            }
+                        }else{
+                            //text area
+                            if (ao_module_virtualDesktop){
+                                ao_module_bindCustomIMEEvents(inputFields[i]);
+                            }
+                        }
+                    }
+              }
+
+
+              function hideToolBar(){
+                  $("#mainSideMenuDimmer").fadeOut('fast');
+                  $("#mainSideMenu").animate({left: -1 * $("#mainSideMenu").width()},300);
+              }
+
+              function showToolBar(){
+                $("#mainSideMenuDimmer").fadeIn('fast');
+                $("#mainSideMenu").animate({left: "0px"},300);
+              }
+
+              function search(){
+                var keyword = $("#searchInput").val();
+                alert(keyword);
+              }
+
+              function msgbox(message, succ=true, delay=3000){
+                $("#msgbox").html(`<i class="ui ${succ?"green circle check":"red circle times"} icon"></i> ${message}`);
+                $("#msgbox").stop().finish().fadeIn("fast").delay(delay).fadeOut("fast");
+              }
+
+          </script>
+    </body>
+</html>