/// <summary> /// 组件结构 /// </summary> private void TabTree() { pal_tree.Show(); treeView1.Nodes.Clear(); treeView1.BackColor = Color.White; treeView1.Width = pal_tree.Width - 2; treeView1.Height = pal_tree.Height - 2; treeView1.Scrollable = true; if (filename == null || filename.Trim().Length == 0) filename = "new"; //filename = "1340003997218.xml"; IQ tree_iq = new IQ(IqType.get); tree_iq.Id = CSS.IM.XMPP.Id.GetNextId(); tree_iq.Namespace = null; CSS.IM.XMPP.protocol.Base.Query query = new CSS.IM.XMPP.protocol.Base.Query(); query.Attributes.Add("filename", filename); query.Namespace = "xmlns:org:tree"; tree_iq.AddChild(query); XmppCon.IqGrabber.SendIq(tree_iq, new IqCB(TreeResulit), null); }
public void XmppCon_OnLogin(object sender) { if (InvokeRequired) { BeginInvoke(new CSS.IM.XMPP.ObjectHandler(XmppCon_OnLogin), new object[] { sender }); return; } Program.LocalHostIP =IPAddress.Parse(XmppCon.ClientSocket.LocalHostIP);//设置本地IP地址 VcardIq viq = new VcardIq(IqType.get, null, new Jid(XmppCon.MyJID.User)); XmppCon.IqGrabber.SendIq(viq, new IqCB(VcardResult), null); Program.UserName = XmppCon.MyJID.User;//保存登录的用户名 notifyIcon1.Visible = true; waiting.Close(); XmppCon.Show = ShowType.NONE; XmppCon.SendMyPresence(); DiscoServer();//获取各种服务器 this.NikeName = XmppCon.Username; this.ShowInTaskbar = false; this.Show(); this.WindowState = FormWindowState.Normal; friendListView.Conn = XmppCon; friendListView.AddGroup("我的联系人"); friendListView.UpdateLayout(3, 0); this.TopMost = true; this.Show(); this.Activate(); this.TopMost = false; //获取新的组织结构图 IQ tree_iq = new IQ(IqType.get); tree_iq.Id = CSS.IM.XMPP.Id.GetNextId(); tree_iq.Namespace = null; CSS.IM.XMPP.protocol.Base.Query query = new CSS.IM.XMPP.protocol.Base.Query(); query.Attributes.Add("filename", "new"); query.Namespace = "xmlns:org:tree"; tree_iq.AddChild(query); XmppCon.IqGrabber.SendIq(tree_iq, new IqCB(TreeResulit), null); }
/// <summary> /// 查看联系人详细信息事件、删除、备注 /// </summary> /// <param name="sender"></param> /// <param name="item"></param> public void friendListView_friend_qcm_MouseClickEvent(object sender, Friend item, String type) { CSS.IM.XMPP.protocol.iq.roster.RosterItem ritem = friendListView.SelectedFriend.Ritem; switch (type) { case "vcar": VcardForm vcardForm = new VcardForm(ritem.Jid, XmppCon); try { vcardForm.Show(); } catch (Exception) { } break; case "chat": if (!Util.ChatForms.ContainsKey(item.Ritem.Jid.ToString())) { try { ChatForm chat = new ChatForm(item.Ritem.Jid, XmppCon, item.NikeName); chat.UpdateFriendOnline(item.IsOnline);//设置好友在线状态 chat.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { try { ChatForm chatform = Util.ChatForms[item.Ritem.Jid.ToString()] as ChatForm; chatform.WindowState = FormWindowState.Normal; chatform.Activate(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } break; case "dele": Jid jid = item.Ritem.Jid; Friend friend = new Friend(); friend.NikeName = item.Ritem.Jid.User; friend.Description = "";//心情 friend.HeadIMG = "big1"; friend.IsSysHead = true; friend.State = 1; if (item.Ritem.GetGroups().Count > 0) { CSS.IM.XMPP.protocol.Base.Group g = (CSS.IM.XMPP.protocol.Base.Group)item.Ritem.GetGroups().Item(0); int groupID = 0; foreach (var groups in friendListView.Groups) { if (groups.Value.Title == g.Name) { groupID = groups.Value.Id; } } //if (groupID == 0) //{ // friendListView.AddGroup(g.Name); // groupID = friendListView.Groups[g.Name].Id; // friendListView.UpdateLayout(3, groupID); //} friend.GroupID = groupID; friend.GroupName = g.Name; } else { //离线联系人 Group group = friendListView.Groups["我的联系人"]; friend.GroupID = group.Id; friend.GroupName = group.Title; } friend.Ritem = item.Ritem; friend.IsOnline = false; DialogResult msgResult=MsgBox.Show(this, "CSS&IM", "确认要删除联系人么?", MessageBoxButtons.YesNo); if (msgResult==DialogResult.Yes) { friendListView.RemoveFriend(friend); try { RosterIq riq = new RosterIq(); riq.Type = IqType.set; XmppCon.RosterManager.RemoveRosterItem(jid); } catch (Exception ex) { throw ex; } } break; case "move": MoveFriendGroup _MoveFriendGroup = new MoveFriendGroup(); Dictionary<string, Group> group_args = friendListView.Groups; string[] strvalue = new string[group_args.Count]; int index = 0; foreach (String keystr in group_args.Keys) { Group groupargs = group_args[keystr]; strvalue[index] = groupargs.Title; index++; } _MoveFriendGroup.basicComboBox1.Items = strvalue; _MoveFriendGroup.basicComboBox1.SelectIndex = 0; DialogResult reslut = _MoveFriendGroup.ShowDialog(); String groupupdate = _MoveFriendGroup.basicComboBox1.SelectItem.ToString(); String name_move = friendListView.SelectedFriend.Ritem.Jid.User; if (reslut == DialogResult.Yes) { foreach (String user_key in friendListView.Rosters.Keys) { if (friendListView.Rosters[user_key].Ritem.Jid.User == name_move) { Friend friend_old = friendListView.Rosters[user_key]; friendListView.RemoveFriend(friendListView.Rosters[user_key].Ritem.Jid.User); Group fgroup = friendListView.Groups[groupupdate]; friend_old.GroupID = fgroup.Id; friend_old.GroupName = fgroup.Title; friendListView.AddFriend(friend_old); friendListView.UpdateLayout(3, 0); break; } } CSS.IM.XMPP.protocol.Base.Group group_move = new CSS.IM.XMPP.protocol.Base.Group(groupupdate); CSS.IM.XMPP.protocol.Base.Item item_move = new CSS.IM.XMPP.protocol.Base.Item(); item_move.Namespace = null; item_move.AddChild(group_move); item_move.SetAttribute("jid", friendListView.SelectedFriend.Ritem.Jid); item_move.SetAttribute("subscripton", "from"); CSS.IM.XMPP.protocol.Base.Query query_move = new CSS.IM.XMPP.protocol.Base.Query(); query_move.Namespace = CSS.IM.XMPP.Uri.IQ_ROSTER; query_move.AddChild(item_move); IQ iq = new IQ(IqType.set); iq.GenerateId(); iq.Namespace = null; iq.AddChild(query_move); XmppCon.IqGrabber.SendIq(iq); } break; case "g_dele": break; case "remark": //RemarkFriendGroup _RemarkFriendGroup = new RemarkFriendGroup(); //Dictionary<string, Group> group_args = friendListView.Groups; //string[] strvalue = new string[group_args.Count]; //int index = 0; //foreach (String keystr in group_args.Keys) //{ // Group groupargs = group_args[keystr]; // strvalue[index] = groupargs.Title; // index++; //} //_MoveFriendGroup.basicComboBox1.Items = strvalue; //_MoveFriendGroup.basicComboBox1.SelectIndex = 0; //DialogResult reslut = _MoveFriendGroup.ShowDialog(); //String groupupdate = _MoveFriendGroup.basicComboBox1.SelectItem.ToString(); //String name_move = friendListView.SelectedFriend.Ritem.Jid.User; //if (reslut == DialogResult.Yes) //{ // foreach (String user_key in friendListView.Rosters.Keys) // { // if (friendListView.Rosters[user_key].Ritem.Jid.User == name_move) // { // Friend friend_old = friendListView.Rosters[user_key]; // friendListView.RemoveFriend(friendListView.Rosters[user_key].Ritem.Jid.User); // Group fgroup = friendListView.Groups[groupupdate]; // friend_old.GroupID = fgroup.Id; // friend_old.GroupName = fgroup.Title; // friendListView.AddFriend(friend_old); // friendListView.UpdateLayout(3, 0); // break; // } // } // CSS.IM.XMPP.protocol.Base.Group group_move = new CSS.IM.XMPP.protocol.Base.Group(groupupdate); // CSS.IM.XMPP.protocol.Base.Item item_move = new CSS.IM.XMPP.protocol.Base.Item(); // item_move.Namespace = null; // item_move.AddChild(group_move); // item_move.SetAttribute("jid", friendListView.SelectedFriend.Ritem.Jid); // item_move.SetAttribute("subscripton", "from"); // CSS.IM.XMPP.protocol.Base.Query query_move = new CSS.IM.XMPP.protocol.Base.Query(); // query_move.Namespace = CSS.IM.XMPP.Uri.IQ_ROSTER; // query_move.AddChild(item_move); // IQ iq = new IQ(IqType.set); // iq.GenerateId(); // iq.Namespace = null; // iq.AddChild(query_move); // XmppCon.IqGrabber.SendIq(iq); break; default: break; } }
/// <summary> /// 设置聊天室的参数 /// </summary> public void SetConfiguration() { IQ IqSetRquest = new IQ(IqType.set); IqSetRquest.Namespace = null; IqSetRquest.Id = CSS.IM.XMPP.Id.GetNextId(); IqSetRquest.To = this.MJid; CSS.IM.XMPP.protocol.Base.Query query = new CSS.IM.XMPP.protocol.Base.Query(); query.Namespace = CSS.IM.XMPP.Uri.MUC_OWNER; Data query_x = new Data(XDataFormType.submit); Field field1 = new Field(); field1.Var = "FORM_TYPE"; field1.Type = FieldType.Hidden; field1.AddValue(Features.FEAT_MUC_ROOMCONFIG); query_x.AddField(field1); Field field2 = new Field(); field2.Var = "muc#roomconfig_roomname"; field2.Type = FieldType.Text_Single; field2.AddValue(txt_name.Texts.Trim()); query_x.AddField(field2); Field field3 = new Field(); field3.Var = "muc#roomconfig_roomdesc"; field3.Type = FieldType.Text_Single; field3.AddValue(txt_tm.Texts.Trim()); query_x.AddField(field3); Field field4 = new Field(); field4.Var = "muc#roomconfig_persistentroom"; field4.Type = FieldType.Boolean; field4.AddValue(txt_gd.Checked == true ? "1" : "0"); query_x.AddField(field4); Field field5 = new Field(); field5.Var = "muc#roomconfig_passwordprotectedroom"; field5.Type = FieldType.Boolean; field5.AddValue(txt_sy.Checked == true ? "1" : "0"); query_x.AddField(field5); Field field6 = new Field(); field6.Var = "muc#roomconfig_roomsecret"; field6.Type = FieldType.Text_Private; field6.AddValue(txt_pswd2.Texts.ToString()); query_x.AddField(field6); Field field7 = new Field(); field7.Var = "muc#roomconfig_roomowners"; field7.Type = FieldType.Jid_Multi; field7.AddValue(XmppCon.MyJID.ToString()); query_x.AddField(field7); query.AddChild(query_x); IqSetRquest.AddChild(query); XmppCon.IqGrabber.SendIq(IqSetRquest, new IqCB(SetConfigurationCell), null, true); }
/// <summary> /// 查看联系人详细信息事件、删除、备注 /// </summary> /// <param name="sender"></param> /// <param name="item"></param> public void listView_fd_friend_qcm_MouseClickEvent(object sender, Friend item, String type) { CSS.IM.XMPP.protocol.iq.roster.RosterItem ritem = null; if (listView_fd.SelectFriend!=null) { ritem = listView_fd.SelectFriend.Ritem; } Document doc_setting = new Document(); Settings.Settings config = new Settings.Settings(); Settings.Paths path = null; switch (type) { case "vcar": if (vcardForm == null || vcardForm.IsDisposed) { vcardForm = new VcardInfoForm(ritem.Jid, XmppCon); } vcardForm.Show(); vcardForm.Activate(); break; case "chat": if (!Util.ChatForms.ContainsKey(item.Ritem.Jid.Bare)) { try { string nickName = listView_fd.GetFriendNickName(item.Ritem.Jid.Bare); ChatFromMsg chat = new ChatFromMsg(item.Ritem.Jid, XmppCon, nickName); chat.UpdateFriendOnline(item.IsOnline);//设置好友在线状态 chat.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { try { ChatFromMsg chatform = Util.ChatForms[item.Ritem.Jid.Bare] as ChatFromMsg; chatform.WindowState = FormWindowState.Normal; chatform.Activate(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } break; case "dele": Jid jid = item.Ritem.Jid; Friend friend = new Friend(); friend.NikeName = item.Ritem.Jid.User; friend.Description = "";//心情 friend.HeadIMG = "big1"; friend.IsSysHead = true; friend.State = 1; if (item.Ritem.GetGroups().Count > 0) { CSS.IM.XMPP.protocol.Base.Group g = (CSS.IM.XMPP.protocol.Base.Group)item.Ritem.GetGroups().Item(0); int groupID = 0; foreach (var groups in listView_fd.Groups) { if (groups.Value.Title == g.Name) { groupID = groups.Value.Id; } } //if (groupID == 0) //{ // friendListView.AddGroup(g.Name); // groupID = friendListView.Groups[g.Name].Id; // friendListView.UpdateLayout(3, groupID); //} friend.GroupID = groupID; friend.GroupName = g.Name; } else { //离线联系人 Group group = listView_fd.Groups["我的联系人"]; friend.GroupID = group.Id; friend.GroupName = group.Title; } friend.Ritem = item.Ritem; friend.IsOnline = false; DialogResult msgResult = MsgBox.Show(this, "CSS&IM", "确认要删除联系人么?", MessageBoxButtons.YesNo); if (msgResult == DialogResult.Yes) { listView_fd.RemoveFriend(friend); try { RosterIq riq = new RosterIq(); riq.Type = IqType.set; XmppCon.RosterManager.RemoveRosterItem(jid); } catch (Exception ex) { throw ex; } } break; case "move": if (moveFriendGroup == null || moveFriendGroup.IsDisposed) { moveFriendGroup = new MoveFriendGroup(); } Dictionary<string, Group> group_args = listView_fd.Groups; string[] strvalue = new string[group_args.Count]; int index = 0; foreach (String keystr in group_args.Keys) { Group groupargs = group_args[keystr]; strvalue[index] = groupargs.Title; index++; } moveFriendGroup.basicComboBox1.Items = strvalue; moveFriendGroup.basicComboBox1.SelectIndex = 0; DialogResult reslut = moveFriendGroup.ShowDialog(); String groupupdate = moveFriendGroup.basicComboBox1.SelectItem.ToString(); String Bare_move = listView_fd.SelectFriend.Ritem.Jid.Bare; if (reslut == DialogResult.Yes) { foreach (String user_key in listView_fd.Rosters.Keys) { if (listView_fd.Rosters[user_key].Ritem.Jid.Bare == Bare_move) { Friend friend_old = listView_fd.Rosters[user_key]; listView_fd.RemoveFriend(listView_fd.Rosters[user_key].Ritem.Jid.Bare); Group fgroup = listView_fd.Groups[groupupdate]; friend_old.GroupID = fgroup.Id; friend_old.GroupName = fgroup.Title; listView_fd.AddFriend(friend_old); listView_fd.RefreshGroup(); break; } } CSS.IM.XMPP.protocol.Base.Group group_move = new CSS.IM.XMPP.protocol.Base.Group(groupupdate); CSS.IM.XMPP.protocol.Base.Item item_move = new CSS.IM.XMPP.protocol.Base.Item(); item_move.Namespace = null; item_move.AddChild(group_move); item_move.SetAttribute("jid", listView_fd.SelectFriend.Ritem.Jid); item_move.SetAttribute("subscripton", "from"); CSS.IM.XMPP.protocol.Base.Query query_move = new CSS.IM.XMPP.protocol.Base.Query(); query_move.Namespace = CSS.IM.XMPP.Uri.IQ_ROSTER; query_move.AddChild(item_move); IQ iq = new IQ(IqType.set); iq.GenerateId(); iq.Namespace = null; iq.AddChild(query_move); XmppCon.IqGrabber.SendIq(iq); } break; case "g_dele": break; case "remark": //RemarkFriendGroup _RemarkFriendGroup = new RemarkFriendGroup(); //Dictionary<string, Group> group_args = friendListView.Groups; //string[] strvalue = new string[group_args.Count]; //int index = 0; //foreach (String keystr in group_args.Keys) //{ // Group groupargs = group_args[keystr]; // strvalue[index] = groupargs.Title; // index++; //} //_MoveFriendGroup.basicComboBox1.Items = strvalue; //_MoveFriendGroup.basicComboBox1.SelectIndex = 0; //DialogResult reslut = _MoveFriendGroup.ShowDialog(); //String groupupdate = _MoveFriendGroup.basicComboBox1.SelectItem.ToString(); //String name_move = friendListView.SelectedFriend.Ritem.Jid.User; //if (reslut == DialogResult.Yes) //{ // foreach (String user_key in friendListView.Rosters.Keys) // { // if (friendListView.Rosters[user_key].Ritem.Jid.User == name_move) // { // Friend friend_old = friendListView.Rosters[user_key]; // friendListView.RemoveFriend(friendListView.Rosters[user_key].Ritem.Jid.User); // Group fgroup = friendListView.Groups[groupupdate]; // friend_old.GroupID = fgroup.Id; // friend_old.GroupName = fgroup.Title; // friendListView.AddFriend(friend_old); // friendListView.UpdateLayout(3, 0); // break; // } // } // CSS.IM.XMPP.protocol.Base.Group group_move = new CSS.IM.XMPP.protocol.Base.Group(groupupdate); // CSS.IM.XMPP.protocol.Base.Item item_move = new CSS.IM.XMPP.protocol.Base.Item(); // item_move.Namespace = null; // item_move.AddChild(group_move); // item_move.SetAttribute("jid", friendListView.SelectedFriend.Ritem.Jid); // item_move.SetAttribute("subscripton", "from"); // CSS.IM.XMPP.protocol.Base.Query query_move = new CSS.IM.XMPP.protocol.Base.Query(); // query_move.Namespace = CSS.IM.XMPP.Uri.IQ_ROSTER; // query_move.AddChild(item_move); // IQ iq = new IQ(IqType.set); // iq.GenerateId(); // iq.Namespace = null; // iq.AddChild(query_move); // XmppCon.IqGrabber.SendIq(iq); break; case "HeadSmall": //listView_fd.FCType = FriendContainerType.Small; CSS.IM.UI.Util.Path.FriendContainerType = false; doc_setting.LoadFile(string.Format(CSS.IM.UI.Util.Path.ConfigFilename, Program.UserName)); path = doc_setting.RootElement.SelectSingleElement(typeof(Settings.Paths),false) as Settings.Paths; path.FriendContainerType = CSS.IM.UI.Util.Path.FriendContainerType; config.Paths = path; config.Font = doc_setting.RootElement.SelectSingleElement(typeof(Settings.SFont), false) as Settings.SFont; config.Color = doc_setting.RootElement.SelectSingleElement(typeof(Settings.SColor), false) as Settings.SColor; doc_setting.Clear(); doc_setting.ChildNodes.Add(config); try { doc_setting.Save(string.Format(CSS.IM.UI.Util.Path.ConfigFilename, Program.UserName)); } catch (Exception) { } listView_fd.FCType = CSS.IM.UI.Util.Path.FriendContainerType == true ? FriendContainerType.Big : FriendContainerType.Small; chatHistory_lt.FCType = listView_fd.FCType; listView_gp.FCType = listView_fd.FCType; break; case "HeadBig": //listView_fd.FCType = FriendContainerType.Small; CSS.IM.UI.Util.Path.FriendContainerType = true; doc_setting.LoadFile(string.Format(CSS.IM.UI.Util.Path.ConfigFilename, Program.UserName)); path = doc_setting.RootElement.SelectSingleElement(typeof(Settings.Paths),false) as Settings.Paths; path.FriendContainerType = CSS.IM.UI.Util.Path.FriendContainerType; config.Paths = path; config.Font = doc_setting.RootElement.SelectSingleElement(typeof(Settings.SFont), false) as Settings.SFont; config.Color = doc_setting.RootElement.SelectSingleElement(typeof(Settings.SColor), false) as Settings.SColor; doc_setting.Clear(); doc_setting.ChildNodes.Add(config); try { doc_setting.Save(string.Format(CSS.IM.UI.Util.Path.ConfigFilename, Program.UserName)); } catch (Exception) { } listView_fd.FCType = CSS.IM.UI.Util.Path.FriendContainerType == true ? FriendContainerType.Big : FriendContainerType.Small; chatHistory_lt.FCType = listView_fd.FCType; listView_gp.FCType = listView_fd.FCType; break; default: break; } }
private void btn_nt_Click(object sender, EventArgs e) { btn_fd.SelectTab = false; panel_fd.Visible = false; btn_gp.SelectTab = false; panel_gp.Visible = false; btn_nt.SelectTab = true; panel_nt.Visible = true; btn_lt.SelectTab = false; panel_lt.Visible = false; System.GC.Collect(); //treeView_nt.Nodes.Clear(); treeView_nt.BackColor = Color.White; treeView_nt.Width = panel_nt.Width - 2; treeView_nt.Height = panel_nt.Height - 2; treeView_nt.Scrollable = true; if (filename == null || filename.Trim().Length == 0) filename = "new"; IQ tree_iq = new IQ(IqType.get); tree_iq.Id = CSS.IM.XMPP.Id.GetNextId(); tree_iq.Namespace = null; CSS.IM.XMPP.protocol.Base.Query query = new CSS.IM.XMPP.protocol.Base.Query(); query.Attributes.Add("filename", filename); query.Namespace = "xmlns:org:tree"; tree_iq.AddChild(query); XmppCon.IqGrabber.SendIq(tree_iq, new IqCB(TreeResulit), null); }
/// <summary> /// 聊天室设置功能 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_set_Click(object sender, EventArgs e) { IQ iq = new IQ(); iq.Namespace = null; iq.Id = CSS.IM.XMPP.Id.GetNextId(); iq.To = new Jid(TO_Jid.User, TO_Jid.Server, XmppConn.MyJID.User); iq.Type = IqType.get; CSS.IM.XMPP.protocol.Base.Query query = new CSS.IM.XMPP.protocol.Base.Query(); query.Namespace = CSS.IM.XMPP.Uri.MUC_OWNER; iq.AddChild(query); XmppConn.IqGrabber.SendIq(iq, new IqCB(RequestConfigurationForm), null, true); }