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;
                    }
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 6
0
        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;
     }
 }