"use strict"; cc._RF.push(module, '206f7ai3axIgJQSSPY0yn2p', 'cmp.friend.wnd'); // Scripts/mod/friend/cmp/cmp.friend.wnd.js "use strict"; // -------------------------------------------------------------------- // @author: shiraho@syg.com(必填, 创建模块的人员) // @description: // 好友主界面 //
Create: new Date().toISOString() // -------------------------------------------------------------------- var FriendController = require("friend_controller"); var RoleController = require("role_controller"); var FriendConst = require("friend_const"); var FriendEvent = require("friend_event"); var FxSVC = require("nx.fx.sv.expand"); var FxTogs = require("nx.fx.togs"); var BridgeWindow = require("bridge.window"); cc.Class({ "extends": BridgeWindow, properties: { scrollCon: { "default": null, type: FxSVC }, togs: { "default": null, type: FxTogs }, view: { "default": null, type: cc.Node }, //好友数 friend_num: { "default": null, type: cc.RichText }, empty_con: { "default": null, type: cc.Node }, friend_views: { "default": [], type: [cc.Node] }, cost_panel: { "default": null, type: cc.Node }, cur_type: 0 }, // LIFE-CYCLE CALLBACKS: onLoad: function onLoad() { this.model = FriendController.getInstance().getModel(); this.ctrl = FriendController.getInstance(); this.role_vo = RoleController.getInstance().getRoleVo(); this.rend_list = []; //好友申请列表返回 this.bindGEvent(FriendEvent.FRIEND_APPLY, this.updateApplyFri.bind(this)); //赠送礼物返回 this.bindGEvent(FriendEvent.STRENGTH_UPDATE, this.FriendGiftRev.bind(this)); //删除好友 this.bindGEvent(FriendEvent.FRIEND_DELETE, this.delFriend.bind(this)); //添加好友 this.bindGEvent(FriendEvent.UPDATE_APPLY, this.addApplyFri.bind(this)); //更新好友数量 this.bindGEvent(FriendEvent.UPDATE_COUNT, this.updateFriNum.bind(this)); //好友数量变动(删除+被删) this.bindGEvent(FriendEvent.UPDATE_GROUP_COUNT, this.changeFriNum.bind(this)); //有人来送礼物 this.bindGEvent(FriendEvent.FRIEND_LIST, this.revGiftBack.bind(this)); //更新红点 this.bindGEvent(FriendEvent.Update_Red_Point, this.updateRedPoint.bind(this)); //改变按钮状态 this.bindGEvent(FriendEvent.IS_DEL_BTN_STATUS, this.delChangeBtnStatus.bind(this)); //好友搜索和推荐 this.bindGEvent(FriendEvent.UD_COMMEND_LIST, this.updateFindList.bind(this)); this.bindGEvent(FriendEvent.FRIEND_QUERY_RESULT, this.updateFindList.bind(this)); this.togs.posTog = this.onTogMenu.bind(this); this.togs.togTo(0); }, //当前根节点销毁前进行的预处理操作 onPreClosed: function onPreClosed() { this.scrollCon.rebuild([]); }, updateApplyFri: function updateApplyFri() { if (this.cur_type != FriendConst.Type.ApplyList) return; this.updateFriendList(false); }, FriendGiftRev: function FriendGiftRev(data) { if (this.cur_type != FriendConst.Type.Award && this.cur_type != FriendConst.Type.MyFriend) return; var list = data.list || {}; var id_list = {}; for (var i in list) { var v = list[i]; id_list[v.rid + "_" + v.srv_id] = v; } this.updateFriendList(false); }, delFriend: function delFriend() { if (this.cur_type != FriendConst.Type.MyFriend && this.cur_type != FriendConst.Type.BlackList) return; this.updateFriendList(false, true); this.changeFriendBtn(true); }, addApplyFri: function addApplyFri() { if (this.cur_type != FriendConst.Type.MyFriend) { if (this.cur_type == FriendConst.Type.ApplyList) { this.updateFriendList(false); } } else { this.updateFriendList(false); } }, updateFriNum: function updateFriNum() { this.updateFriendList(false); }, changeFriNum: function changeFriNum() { this.updateFriendList(false, true); }, revGiftBack: function revGiftBack() { this.updateFriendList(false); }, updateRedPoint: function updateRedPoint() {}, delChangeBtnStatus: function delChangeBtnStatus(is_del) { if (this.cur_type == FriendConst.Type.MyFriend) { var v = is_del || false; this.changeFriendBtn(v); } }, start: function start() {}, selectedTabCallBack: function selectedTabCallBack(type2) { var type = type2 || FriendConst.Type.MyFriend; if (this.cur_type == type) return; this.changeFriendBtn(false); // //切换到好友列表就把红点清掉 // this.setTabTips(false, FriendConst.Type.MyFriend); this.cur_type = type; if (this.pre_panel != null) { nx.gui.setActive(this.pre_panel, "", false); } this.pre_panel = this.friend_views[this.cur_type - 1]; if (this.pre_panel != null) { nx.gui.setActive(this.pre_panel, "", true); } // //更新列表数据 this.updateFriendList(true); }, //变更好友子项的按钮作用,true变为删除好友,false还原为私聊 changeFriendBtn: function changeFriendBtn(bool) { this.del_friend_status = bool; for (var i = 0; i < this.rend_list.length; ++i) { this.rend_list[i].del_status = bool; } this.scrollCon.svcKey = this.cur_type; this.scrollCon.rebuild(this.rend_list); // this.item_scrollview.resetAddPosition(this.rend_list, null, this.cur_type); }, updateFindList: function updateFindList(data_list) { var list = []; for (var i in data_list) { list.push(data_list[i]); } this.rend_list = list; this.showEmptyIcon(false); if (this.rend_list.length <= 0) { this.scrollCon.rebuild([]); this.showEmptyIcon(true); } this.scrollCon.rebuild(this.rend_list); }, updateFriendList: function updateFriendList(change_index, is_del) { change_index = change_index || false; this.rend_list = []; var list = []; this.cost_panel.active = true; if (this.cur_type == FriendConst.Type.MyFriend) { list = this.ctrl.getModel().getArray() || []; nx.mTip.openTip("bar.friend.rev", false); } else if (this.cur_type == FriendConst.Type.ApplyList) { if (change_index) { this.ctrl.apply(); return; } else { var array = []; var apply_list = this.ctrl.getModel().getApplyList() || {}; for (var i in apply_list) { array.push(apply_list[i]); } list = array; } this.updateApplyNum(); nx.mTip.openTip("bar.friend.apply", false); } else if (this.cur_type == FriendConst.Type.Award) { var array = this.ctrl.getModel().getArray() || []; var award_array = []; for (var i = 0; i < array.length; i++) { var vo = array[i]; if (vo && vo.is_draw == 1) { award_array.push(vo); } } list = award_array; } else if (this.cur_type == FriendConst.Type.BlackList) { list = this.ctrl.getModel().getBlackArray() || []; } else if (this.cur_type == FriendConst.Type.Find) { this.cost_panel.active = false; } if (list) { for (var k in list) { if (list[k]) { this.rend_list.push(list[k]); } } } // console.log( "friendlist====>", this.cur_type, list ); this.showEmptyIcon(false); if (this.rend_list.length <= 0) { this.scrollCon.rebuild([]); this.showEmptyIcon(true); } this.createSubPanel(this.cur_type, this.rend_list); if (is_del && !change_index && Utils.next(this.rend_list) != null) { this.scrollCon.rebuild(this.rend_list); } else { this.scrollCon.svcKey = this.cur_type; this.scrollCon.rebuild(this.rend_list); } }, //更新申请数 updateApplyNum: function updateApplyNum() { var num = this.ctrl.getModel().getApplyNum() || 0; this.friend_num.string = cc.js.formatStr("" + nx.text.getKey("friend_str9") + "" + "%s/%s", num, 99); }, //显示空白 showEmptyIcon: function showEmptyIcon(bool) { this.empty_con.active = bool; }, createSubPanel: function createSubPanel(index, data) { if (index == FriendConst.Type.MyFriend) { var all_num = this.ctrl.getModel().getFriendOnlineAndTotal().total_num; var str = cc.js.formatStr("" + nx.text.getKey("friend_str6") + "" + "%s/100", all_num); this.friend_num.string = str; } else if (index == FriendConst.Type.ApplyList) { this.updateApplyNum(); } else if (index == FriendConst.Type.Award) { var num = 0; if (data) { for (var i in data) { var vo = data[i]; if (vo && vo.is_draw == 1) num = num + 1; } } var str = cc.js.formatStr("" + nx.text.getKey("friend_str10") + "" + "%s", num); this.friend_num.string = str; } else if (index == FriendConst.Type.BlackList) { var all_num = this.ctrl.getModel().getBlackListOnlineAndTotal().total_num; this.friend_num.string = cc.js.formatStr("%s%d/%d", nx.text.getKey("friend_str11"), all_num, 50); } else if (index == FriendConst.Type.Find) { var all_num = this.ctrl.getModel().getBlackListOnlineAndTotal().total_num; var str = cc.js.formatStr("" + nx.text.getKey("friend_str6") + "" + "%s/100", all_num); this.friend_num.string = str; } }, onOpenConfigs: function onOpenConfigs(param) { this.selectedTabCallBack(param.type || FriendConst.Type.MyFriend); }, onTogMenu: function onTogMenu(_type) { this.selectedTabCallBack(_type + 1); }, touchClose: function touchClose() { this.close(); } // update (dt) {}, }); cc._RF.pop();