public void Initialize(Controls.ChatsControl ChatsControl, string LayoutStore) { ChatConfigStorage.Load(LayoutStore); foreach (string file in Directory.GetFiles(App.RootFolder + "/Chats/", "*.dll")) { try { Assembly a = Assembly.LoadFile(file); foreach (Type t in a.GetTypes()) { Type iface = t.GetInterface("RatChat.Core.IChatSource"); if (iface != null) { var v = RatChat.Core.ChatNameAttribute.GetAttribute(t); if (v != null) { Sources[v.Name] = t; } else { //Sources[Path.GetFileNameWithoutExtension(file)] = t; } } } } catch { ////// } } RestoreChats(ChatsControl); }
public void OnChatClosed(FrameworkElement vChat) { var data = vChat.Tag as Tuple <RatChat.Core.IChatSource, string>; data.Item1.OnNewMessagesArrived -= ichat_OnNewMessagesArrived; data.Item1.EndWork(); RatChat.Core.IChatListener iListener = data.Item1 as RatChat.Core.IChatListener; if (iListener == null) { foreach (FrameworkElement fe in Chats) { RatChat.Core.IChatSource i = ((Tuple <RatChat.Core.IChatSource, string>)fe.Tag).Item1; RatChat.Core.IChatListener il = i as RatChat.Core.IChatListener; if (il != null) { data.Item1.OnNewMessagesArrived -= il.OnNewMessageReceived; } //i.OnNewMessagesArrived += iListener.OnNewMessageReceived; } } else { foreach (FrameworkElement fe in Chats) { RatChat.Core.IChatSource i = ((Tuple <RatChat.Core.IChatSource, string>)fe.Tag).Item1; i.OnNewMessagesArrived -= iListener.OnNewMessageReceived; } } Chats.Remove(vChat); ChatConfigStorage.RemoveWithPrefix(data.Item1.ConfigPrefix); }
public void RestoreChats(Controls.ChatsControl ChatsControl) { string Settings = ChatConfigStorage.GetDefault("ChatManager.UberChatList", ""); if (string.IsNullOrEmpty(Settings)) { return; } string[] chats = Settings.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < chats.Length; ++j) { string[] vals = chats[j].Split('='); CreateChat(vals[1], vals[0]); if (vals.Length > 2) { ChatsControl.SetChatHeightByIndex(j, double.Parse(vals[2], CultureInfo.InvariantCulture)); } } }