示例#1
0
 Toollist.init = function(resolve){ //Toollist.init
 
     calls('Toollist.init')
     .then(function(){ //初始化节点
         root = Z.E(
             '<div class="toollist">\
                 <div class="item">\
                     <span class="pinyin" title="QQ云输入法" cmd="pinyin"></span>\
                     <span class="sound" title="静音" cmd="sound"></span>\
                 </div>\
                 <div class="item">\
                     <span class="setting" title="系统设置" cmd="setting"></span>\
                     <span class="theme" title="主题设置" cmd="theme"></span>\
                 </div>\
                 <div class="item2"><span title="开始"></span></div>\
             </div>'
         );
         Sidebar.addToollist(root);
     })
     .then(function(){ //设置事件监听
         root.click(function(evt){
             var target = Z(evt.target);
             switch(target.attr('cmd')){
                 case 'sound': target.cls('~mute'); break;
                 case 'theme': Command.call('openTheme'); break;
                 case 'setting': Command.call('openSystemset'); break;
             }
         });
         resolve();
     });
     
 };
示例#2
0
 Systemset.init = function(resolve){//Systemset.init
     
     calls('Systemset.init')
     .then(function(){ //初始化节点
         root = Z.E(
             '<div>\
                 <div class="desktopSettingHeader">默认桌面(登录后默认显示)</div>\
                 <div class="desktopSettingBody default_desktop_setting" id="defaultDesktopRadioSet">\
                     <label><input type="radio" value="1" name="defaultDesktop" id="defaultDesktop_1">第1屏桌面</label>\
                     <label><input type="radio" value="2" name="defaultDesktop" id="defaultDesktop_2">第2屏桌面</label>\
                     <label><input type="radio" value="3" name="defaultDesktop" id="defaultDesktop_3" checked>第3屏桌面</label>\
                     <label><input type="radio" value="4" name="defaultDesktop" id="defaultDesktop_4">第4屏桌面</label>\
                     <label><input type="radio" value="5" name="defaultDesktop" id="defaultDesktop_5">第5屏桌面</label>\
                 </div>\
                 <div class="desktopSettingHeader">桌面图标设置</div>\
                 <div class="desktopSettingBody dsektop_icon_style_setting" id="desktopIconStyle">\
                     <label><input type="radio" value="1" name="desktopIconStyle" id="desktopIconStyle_1">小图标</label>\
                     <label><input type="radio" value="0" name="desktopIconStyle" id="desktopIconStyle_0" checked>大图标</label>\
                 </div>\
                 <div class="desktopSettingHeader">应用码头位置</div>\
                 <div class="desktopSettingBody dock_location_preview_contaienr">\
                 <div class="dock_location_preview dock_location_left" id="dockLocationPreview">\
                     <div class="dock_set_btn dock_set_left"><label class="dock_set_btn_label"><input type="radio" class="dock_set_btn_radio" value="left" name="dockLocation" id="dockSetLeft">左部</label></div>\
                     <div class="dock_set_btn dock_set_right"><label class="dock_set_btn_label"><input type="radio" class="dock_set_btn_radio" value="right" name="dockLocation" id="dockSetRight">右部</label></div>\
                     <div class="dock_set_btn dock_set_top"><label class="dock_set_btn_label"><input type="radio" class="dock_set_btn_radio" value="top" name="dockLocation" id="dockSetTop" checked>顶部</label></div>\
                 </div>\
                 </div>\
             </div>'
         );
     })
     .then(function(){ //设置事件监听
         root.click(function(e){
             var target = Z(e.target);
             switch(target.attr('name')){
                 case 'defaultDesktop': Command.call('toggleDesk', target.val() -1); break;
                 case 'desktopIconStyle': Command.call('setGrid', ['big', 'small'][target.val()]); break;
                 case 'dockLocation': 
                     Z('#dockLocationPreview').cls('=dock_location_preview dock_location_'+ target.val());
                     Viewport.layout(target.val()); break;
             }
         });
     })
     .then(function(){ //设置菜单指令
         
         Desktop.contextmenuitems.splice(4, 0, {text: '系统设置', cmd: 'openSystemset'});
         
         var app = createApp();
         
         Command({
             
             openSystemset: function(){
                 
                 if(!app.window){
                     app.fire('open');
                 }else{
                     app.fire('focus');
                 }
                 
             }
             
         });
         
         resolve();
         
     });
 };
示例#3
0
 Navbar.init = function(resolve){ //Navbar.init
     
     calls('Navbar.init')
     .then(function(){ //初始化节点
     
         Viewport.add(root = Z.E(
             '<div id="Navbar" class="navbar">\
                 <div class="indicatorContainer">\
                 '+ indicators() +'\
                 </div>\
             </div>'
         ), true);
         
         function indicators(){
             
             var indicators = ['<div class="header" cmd="user" title="请登录"><img src="css/imgs/avatar.png" alt="请登录"></div>'];
             
             Z.forEach(Desktop.desks, function(desk, i){
                 indicators.push(Z.rstr(
                     '<a class="indicator{cls}" index="{index}"><span class="icon_bg"></span><span class="icon_{iconIndex}"></span></a>',
                     {cls: desk.isFocus() ? ' current' : '', index: i, iconIndex: i + 1}
                 ));
             });
             
             indicators.push('<a href="#" class="indicator indicator_manage" hidefocus="true" cmd="openManager" title="全局视图"></a>');
             
             return indicators.join('');
             
         }
         
     })
     .then(function(){ //设置事件监听
         
         Desktop.on('focused', function(){
             root.find('.current').cls('-current');
             root.find('.indicator').eq(this.index).cls('+current');
         });
         
         root.drag({rang: 1});
         
         root
         .on('mousedown', function(){
             Contextmenu.hide();
         }).find('.indicator').click(function(evt){
             evt.preventDefault();
             if(this.attr('cmd') == 'openManager'){
                 Command.call('openManager');
             }else if(!this.cls('current')){
                 Command.call('toggleDesk', +this.attr('index'));
             }
         });
         
         var 
         button = root.find('.indicator'),
         toggleButtonX,
         toggleButtonY;
         
         App.on('beforeDrag', function(){
             if(Desktop.active){
                 toggleButtonX = button.offsetLeft();
                 toggleButtonY = button.offsetTop();
             }
         });
         
         App.on('draging', function(point){
             
             if(!Desktop.active){
                 return;
             }
             
             var x = point[0];
             var y = point[1];
             
             //拖动图标时候的桌面切换检测,20为按钮高度,22为按钮宽度
             if(y > toggleButtonY //y在前面考虑高度小于宽度,减少运算量
             && y < toggleButtonY + 20
             && x > toggleButtonX
             && x < toggleButtonX + 110
             ){
                 Command.call('toggleDesk', 0 | (x - toggleButtonX) / 22);
             }
             
         });
         
     })
     .then(resolve);
     
 };
示例#4
0
 Desktop.init = function(resolve){ //Desktop.init
 
     calls('Desktop.init')
     .then(function(){ //初始化节点
         Viewport.add(
             deskwraper = Z.E('<div id=Desktop class=desktop></div>'), 
             true
         );
     })
     .then(function(){ //设置事件监听
         
         Viewport
         .on('layout', function(){
             curdesk.refresh();
         })
         .on('resize', function(){
             curdesk.refresh();
         });
         
         var submenuitems = [ //子菜单内容数据引用,独立引用便于操作
             {text: '桌面1', cmd: 'moveAppToDesk', args: 0},
             {text: '桌面2', cmd: 'moveAppToDesk', args: 1},
             {text: '桌面3', cmd: 'moveAppToDesk', args: 2},
             {text: '桌面4', cmd: 'moveAppToDesk', args: 3},
             {text: '桌面5', cmd: 'moveAppToDesk', args: 4}
         ];
         
         App.contextmenuitems.splice(2, 0, {text: '移动应用', submenu: submenuitems});
         
         App.on('contextmenu', function(){
             
             Z.forEach(submenuitems, function(item, i){
                 
                 if(curdesk.index == i){
                     item.status = 'selected';
                 }else{
                     item.status = '';
                 }
                 
             });
             
         });
         
         App
         .on('add', function(place, index){
             
             var app = this;
             
             if(place.type == 'Desktop'){
                 place.addApp(app, index);
                 app.stopEvent();
             }
             
         })
         .on('remove', function(){
             
             var app = this;
             var place = app.place;
             
             if(place.type == 'Desktop'){
                 place.removeApp(app);
                 app.stopEvent();
             }
             
         })
         .on('drop', function(point){
             
             if(Desktop.active){
                 curdesk.dropApp(this, point);
             }
             
         })
         .on('addoverflow', function(app){
             if(Desktop.active){
                 app.add(curdesk, -1);
             }
         })
         .on('end', function(){});
         
         App.on('open', function(){
             if(Desktop.active){
                 this.open(curdesk);
             }
         })
         .on('opened', function(){
             curdesk.addWindow(this.window);
         })
         .on('closed', function(){
             this.windowplace.removeWindow(this.window);
         })
         .on('focus', function(){
             if(Desktop.active){
                 this.windowplace.focus();
                 this.focus();
             }
         })
         .on('focused', function(){
             this.windowplace.focusWindow(this.window);
         })
     
     })
     .then(function(){ //设置右键菜单
     
         var 
         submenuitems1 = [
             {text: '大图标', cmd: 'setGrid', args: 'big'},
             {text: '小图标', cmd: 'setGrid', args: 'small'}
         ],
         submenuitems2 = [
             {text: '桌面1', cmd: 'toggleDesk', args: 0},
             {text: '桌面2', cmd: 'toggleDesk', args: 1},
             {text: '桌面3', cmd: 'toggleDesk', args: 2},
             {text: '桌面4', cmd: 'toggleDesk', args: 3},
             {text: '桌面5', cmd: 'toggleDesk', args: 4}
         ],
         menuitems = Desktop.contextmenuitems = [
             {text: '显示桌面', cmd: 'showDesk'},
             {text: '切换桌面', submenu: submenuitems2},
             '-',
             ///{text: '系统设置', cmd: 'openSystemset'},
             ///{text: '主题设置', cmd: 'openTheme'},
             {text: '图标设置', submenu: submenuitems1},
             '-',
             {text: '关于', cmd: 'showAbout'}
         ],
         contextmenu = new Contextmenu(menuitems);
         
         deskwraper.on('contextmenu', function(e){
             
             e.preventDefault();
             
             Z.forEach(submenuitems1, function(menuitem, i){
                 
                 if(curgridsize == GRIDSIZE.big && i == 0 || curgridsize == GRIDSIZE.small && i == 1){
                     menuitem.status = 'selected';
                 }else{
                     menuitem.status = '';
                 }
                 
             });
             
             Z.forEach(submenuitems2, function(menuitem, i){
                 
                 if(curdesk.index == i){
                     menuitem.status = 'selected';
                 }else{
                     menuitem.status = '';
                 }
                 
             });
             
             contextmenu.render(menuitems).showBy(Desktop, e.clientX, e.clientY);
             
         });
         
     })
     .then(function(){ //设置菜单指令
     
         Command({
             
             showDesk: function(){
                 curdesk.show();
             },
             
             toggleDesk: function(index){
                 desks[index].focus();
             },
             
             setGrid: function(type){
                 curdesk.setGrid(type);
             },
             
             showAbout: function(){
                 alert([
                     'WEB++是基于1kjs仿照WEBQQ开发的一款模拟桌面系统',   
                     '程序以文件和对象的方式进行管理,代码实现了流程控制和性能监控',   
                     '数据采用纯静态的JSON格式,在数据交互中实现了并行请求和串行处理',
                     '===========================================',
                     '感谢WEBQQ提供素材和交互模型,感谢Google App提供托管空间',
                     '本程序所有图片素材都来自网络,版权归原作者所有!',
                     '如有疑问请联系:zjfeihu@126.com',
                 ].join('\n\n'));
             },
             
             moveAppToDesk: function(index){ //图标位置移动
                 var app = this;
                 var targetdesk = desks[index];
                 if(targetdesk != curdesk){
                     app.add(targetdesk, -1);
                 }
             }
             
         });
         
     })
     .then(function(){ //初始化子桌面
         
         var desktop = Data.CONFIG.desktop;
         Z.forEach(desktop.desks, function(data, i){
             
             if(i == MAX_COUNT){
                 return true;
             }
             
             desks[i] = new Desktop({
                 container: deskwraper,
                 apps: data.apps,
                 gridsize: GRIDSIZE[desktop.gridtype || 'big']
             });
             
         });
         
         desks[desktop.curindex || 2].focus();
         
         Desktop.active = true; //设置桌面为激活状态
         Desktop.desks = desks; //在Navbar中使用
     
     })
     .then(resolve);
     
 };
示例#5
0
 App.init = function(resolve){ //App.init
     
     calls('App.init')
     .then(function(){ //设置右键菜单
         
         var
         menuitems  = App.contextmenuitems = [ //右键菜单内容数据
             {text: '打开应用', icon:'1', cmd: 'openApp'},
             '-',
             {text: '卸载应用', cmd: 'removeApp'}
         ],
         original_contextmenu = new Contextmenu;
         
         contextmenu = { //重写original_contextmenu接口
             
             showBy: function(app, x, y){
                 app.fire('contextmenu');
                 original_contextmenu.render(menuitems).showBy(app, x, y);
             },
             
             hide: function(){
                 original_contextmenu.hide();
             }
             
         };
         
     })
     .then(function(){ //设置事件监听
        
         App.on('closed', function(){
            
            var app = this;
            
            setTimeout(function(){ //延迟是为了在最后操作,因为其他接口在closed状态下需要用到这些属性
                 app.window = null;
                 app.windowplace = null;
            });
            
         })
         .on('end', function(){});
         
     })
     .then(function(){ //设置菜单指令
     
         Command({
             
             openApp: function(){
                 appclick(this);
             },
             
             removeApp: function(){
                 this.remove(true);
             }
             
         });
         
         resolve();
         
     });
     
 };