private void content_OnMultiWinEvent(MultiWin sender, MultiWin.MultiWinEvent multiWinEvent) { switch (multiWinEvent) { case MultiWin.MultiWinEvent.Close: { _closingCompletely = true; Close(); break; } case MultiWin.MultiWinEvent.Hide: { WindowState = WindowState.Minimized; break; } case MultiWin.MultiWinEvent.Flyout: { _closingCompletely = false; _container.Child = null; Close(); _multiWinContainerProvider.MultiTabControl.MultiWindows.Add(new MultiTabItem(_name, _content)); break; } } }
internal void AddMuc(Service service, string nick, string password) { MucConversation conversation = new MucConversation(); conversation.MucConversationInit(service, nick, password); MultiWin multiWin = new MultiWin(conversation, _keyBase, service.Jid.ToString()); _multi.MultiWindows.Add(new MultiTabItem(service.Name, multiWin)); }
void Container_OnMultiWinEvent(MultiWin sender, MultiWin.MultiWinEvent multiWinEvent) { MultiTabItem tabItem = null; lock (_multiWindows._syncObject) { foreach (MultiTabItem multiTabItem in _multiWindows) { if (multiTabItem.Container == sender) { tabItem = multiTabItem; break; } } } if (tabItem != null) { switch (multiWinEvent) { case MultiWin.MultiWinEvent.Close: { IFlyoutContainer flyoutContainer = sender.ContentElement as IFlyoutContainer; if (flyoutContainer != null) { flyoutContainer.Closing(); } _multiWindows.Remove(tabItem); break; } case MultiWin.MultiWinEvent.Hide: { tabItem.IsVisible = false; break; } case MultiWin.MultiWinEvent.Flyout: { _multiWindows.Remove(tabItem); MultiWinFlyout flyout = new MultiWinFlyout(_multiWinContainerProvider, tabItem.Container, tabItem.Name, sender.Key); flyout.Width = tabItem.Container.ActualWidth; flyout.Height = tabItem.Container.ActualHeight; flyout.Show(); flyout.Activate(); break; } } } }
internal MultiTabItem(string name, MultiWin container) { _name = name; _container = container; _gridSplitter.Width = 4; _gridSplitter.ResizeDirection = GridResizeDirection.Auto; _gridSplitter.ResizeBehavior = GridResizeBehavior.BasedOnAlignment; _container.OnMultiWinEvent += _container_OnMultiWinEvent; }
internal MultiWinFlyout(IMultiWinContainerProvider multiWinContainerProvider, MultiWin content, string name, string key) : base(key) { _multiWinContainerProvider = multiWinContainerProvider; _content = content; _name = name; Title = name; InitializeComponent(); Loaded += MultiWinFlyout_Loaded; }
internal bool AddChat(IContact contact) { ContactChat contactChat = Roster.Instance.CreateChat(contact); Conversation conversation = new Conversation(contactChat); try { MultiWin multiWin = new MultiWin(conversation, _keyBase, contact.Jid.ToString()); _multi.MultiWindows.Add(new MultiTabItem(contact.DisplayName, multiWin)); } catch (WindowExistsException e) { e.ActivateControl(); return false; } return true; }
void _container_OnMultiWinEvent(MultiWin sender, MultiWin.MultiWinEvent multiWinEvent) { if (multiWinEvent == MultiWin.MultiWinEvent.Show && !IsVisible) { IsVisible = true; } }