?? qqclient.js
字號(hào):
Ext.BLANK_IMAGE_URL = './ext2.2/resources/images/default/s.gif';
Ext.onReady(function() {
Ext.QuickTips.init();
var currentUser = document.forms[0].elements[0].value;
/**
* @description 構(gòu)建一個(gè)樹形面板,用于顯示在線用戶等
*/
var Tree = Ext.tree;
// 定義樹的Loader,為L(zhǎng)oader加上監(jiān)視器
// 防止在網(wǎng)絡(luò)出現(xiàn)異常的時(shí)候,從后臺(tái)提取不到數(shù)據(jù)
var nodeLoader = new Tree.TreeLoader({
listeners : {
"loadexception" : function(loader, node, response) {
node.loaded = false;
node.reload.defer(10, node);
}
}
});
// 定義(可以異步加載)根節(jié)點(diǎn)
var root = new Tree.AsyncTreeNode({
id : '0',
text : '目錄根節(jié)點(diǎn)'
});
// 開始構(gòu)建樹面板
var treePanel = new Tree.TreePanel({
root : root,
loader : nodeLoader,
deferredRender : false,
title : '在線用戶',
border : true,
rootVisible : false,
lines : false,
autoScroll : true,
enableDD : false,
animate : false
});
/**
* @method treeClick
* @private
* @description 添加‘單擊事件’處理 當(dāng)單擊節(jié)點(diǎn)時(shí),加載該節(jié)點(diǎn)的子節(jié)點(diǎn)
*/
var treeClick = function(node, e) {
if (!node.isLeaf()) {
treePanel.loader.dataUrl = 'treeProcess.qq?NodeId='
+ node.id;
}
}
treePanel.on('beforeload', treeClick);
/**
* @method treeDoubleClick
* @private
* @description 添加‘雙擊事件’處理 當(dāng)雙擊節(jié)點(diǎn)時(shí),彈出聊天對(duì)話框
*/
var treeDoubleClick = function(node, e) {
if (node.text == currentUser||node.text=='登錄用戶') {
return null;
}
new ExtFrame.ui.ChatWin(node.text, currentUser).init();
}
treePanel.on('dblclick', treeDoubleClick);
/**
* @method expandAll
* @private
* @description 展開所有節(jié)點(diǎn)
*/
var expandAll = function() {
treePanel.root.expand(true, false);
}
/**
* @method updateUserList
* @private
* @description 定時(shí)更新在線用戶列表,刷新時(shí)間為10分鐘
*/
var updateUserList = function() {
treePanel.root.reload();
treePanel.root.expand(true, false);
setTimeout(updateUserList, 1000 * 60 * 10);
}
/**
* @method autoShowChatWin
* @private
* @description 當(dāng)收到信息時(shí),自動(dòng)彈出聊天窗口
*/
var autoShowChatWin = function(msg) {
var currentWin = Ext.getCmp(msg.fromUserName);
if (currentWin != null) {
return null;
}
new ExtFrame.ui.ChatWin(msg.fromUserName, currentUser).init();
}
/**
* @method loadMsg
* @private
* @description 定時(shí)從服務(wù)器端獲取消息,刷新時(shí)間為3秒鐘
*/
var loadMsg = function() {
Ext.Ajax.request({
url : 'getMsg.qq',
params : {
toUserName : currentUser
},
success : function(response) {
if (response.responseText != '') {
var msg = eval('(' + response.responseText + ')');
for (var i = 0; i < msg.jsonArr.length; i++) {
autoShowChatWin(msg.jsonArr[i]);
addMsg(msg.jsonArr[i]);
}
}
}
});
setTimeout(loadMsg, 1000 * 3);
}
/**
* @method addMsg
* @private
* @description 把從服務(wù)器端獲取的消息添加到相應(yīng)的聊天窗口
*/
var addMsg = function(msg) {
var formatmsg = "<div class='_msgtitle' style='color:blue'>"
+ msg.fromUserName + " " + msg.sendDate
+ "</div><div class='_msg'>" + decodeURIComponent(msg.message)
+ "</div>";
Ext.getCmp(msg.fromUserName).findById("showMsg").body.insertHtml(
"beforeEnd", formatmsg);
Ext.getCmp(msg.fromUserName).findById("showMsg").body.scroll("bottom",
9999);
}
/**
* @description 構(gòu)建主窗體
*/
var topToolBar = new Ext.Toolbar({
items : [{
text : '關(guān)閉',
tooltip : "guanbi",
title : '關(guān)閉',
handler:function(){
qqClientWin.hide();
}
}
, '-', {
text : '刷新',
tooltip : '刷新用戶列表',
handler:function(){
updateUserList();
}
}, '-', {
text : '幫助',
tooltip : '幫助',
handler:function(){
Ext.MessageBox.alert("qq");
}
}]
});
var qqClientWin = new Ext.Window({
title : 'WebQQ' + '(' + currentUser + ')',
collapsible : true,
width : 220,
height : 400,
shim : false,
animCollapse : false,
constrainHeader : true,
tbar : topToolBar,
layout : 'accordion',
border : false,
layoutConfig : {
animate : false
},
items : [treePanel, {
title : '最近聯(lián)系人',
html : '<p>oa</p>',
autoScroll : true
}, {
title : '群',
html : '<p>oa</p>'
}]
});
expandAll();
loadMsg();
updateUserList();
qqClientWin.show();
});
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -