Smuxi.Frontend.Gnome.ChatViewManager.OnChatAdded C# (CSharp) Method

OnChatAdded() private method

private OnChatAdded ( object sender, Smuxi.Frontend.ChatViewAddedEventArgs e ) : void
sender object
e Smuxi.Frontend.ChatViewAddedEventArgs
return void
        void OnChatAdded(object sender, ChatViewAddedEventArgs e)
        {
            Trace.Call(sender, e);

            GLib.Idle.Add(delegate {
                var chatView = (ChatView) CreateChatView(e.ChatModel,
                                                         e.ChatType,
                                                         e.ProtocolManagerType);
                chatView.ID = e.ChatID;
                chatView.Name = e.ChatID;
                chatView.Position = e.ChatPosition;
                chatView.ProtocolManager = e.ProtocolManager;
                f_Chats.Add(chatView);

                if (f_Config != null) {
                    chatView.ApplyConfig(f_Config);
                }

                // POSSIBLE REMOTING CALL
                int idx = GetSortedChatPosition(chatView);
            #if LOG4NET
                f_Logger.Debug("OnChatAdded(): adding " +
                               "<" + chatView.ID + "> at: " + idx);
            #endif
                if (idx == -1) {
                    f_Notebook.AppendPage(chatView, chatView.LabelWidget);
                } else {
                    f_Notebook.InsertPage(chatView, chatView.LabelWidget, idx);
                }
                TreeView.Append(chatView);

                // notify the sync manager that the ChatView is ready to be synced
                SyncManager.ReleaseSync(chatView);

            #if GTK_SHARP_2_10
                f_Notebook.SetTabReorderable(chatView, true);
            #endif

                // we can't do auto switch for remote engines for now as that
                // kills all unseen highlights, see:
                // https://www.smuxi.org/issues/show/866
                if (Frontend.IsLocalEngine) {
                    if ((chatView is PersonChatView && AutoSwitchPersonChats) ||
                        (chatView is GroupChatView && AutoSwitchGroupChats)) {
                        CurrentChatView = chatView;
                    }
                }

                if (ChatAdded != null) {
                    ChatAdded(this, new ChatViewManagerChatAddedEventArgs(chatView));
                }
                return false;
            });
        }