Пример #1
0
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (!IsSystemActive())
            {
                return;
            }

            bool forceMenuUpdate = false;

            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType messageType = (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ServerConnectionMessaging.MessageType.HomeServerConnected:
                case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                    forceMenuUpdate = true;
                    break;
                }
            }

            InitMenu(force: forceMenuUpdate);

            if (message.ChannelName == MenuModelMessaging.CHANNEL)
            {
                if ((MenuModelMessaging.MessageType)message.MessageType == MenuModelMessaging.MessageType.UpdateMenu)
                {
                    UpdateShortcuts();
                }
            }
            if (message.ChannelName == WorkflowManagerMessaging.CHANNEL)
            {
                IsHomeScreen = ServiceRegistration.Get <IWorkflowManager>().CurrentNavigationContext.WorkflowState.StateId.ToString().Equals("7F702D9C-F2DD-42da-9ED8-0BA92F07787F", StringComparison.OrdinalIgnoreCase);
                if ((WorkflowManagerMessaging.MessageType)message.MessageType == WorkflowManagerMessaging.MessageType.StatePushed)
                {
                    if (!string.Equals(_menuSettings.Settings.DefaultMenuGroupId, MenuSettings.MENU_ID_PLAYING, StringComparison.OrdinalIgnoreCase))
                    {
                        _lastActiveGroup = _menuSettings.Settings.DefaultMenuGroupId;
                    }
                    UpdateSelectedGroup();
                }
                if ((WorkflowManagerMessaging.MessageType)message.MessageType == WorkflowManagerMessaging.MessageType.StatesPopped)
                {
                    UpdateSelectedGroup();
                    // MP2-665: Make sure to recreate the main tiles when navigating back into Home screen
                    if (IsHomeScreen)
                    {
                        CreatePositionedItems();
                    }
                }
                if ((WorkflowManagerMessaging.MessageType)message.MessageType == WorkflowManagerMessaging.MessageType.NavigationComplete)
                {
                    CheckShortCutsWorkflows();
                    SetWorkflowName();
                    _navigated = true;
                }
            }
        }
Пример #2
0
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType type = (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (type)
                {
                case ServerConnectionMessaging.MessageType.HomeServerConnected:
                    Enable(true);
                    RefreshNetworkNeighborhoodResourceProviderSettings();
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
                    Enable(false);
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                    RegisterService();
                    Visible(true);
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                    Visible(false);
                    break;
                }
            }
        }
Пример #3
0
 /// <summary>
 /// Receive Server change messages from the <see cref="IServerConnectionManager"/> or from the <see cref="ILocalization"/> service.
 /// </summary>
 public void Receive(SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         var connectionType = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (connectionType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerAttached:
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
         case ServerConnectionMessaging.MessageType.HomeServerDetached:
         case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
             _serverConnectionStatus = connectionType;
             break;
         }
         UpdateServerStatus();
     }
     else if (message.ChannelName == LocalizationMessaging.CHANNEL)
     {
         if (((LocalizationMessaging.MessageType)message.MessageType) ==
             LocalizationMessaging.MessageType.LanguageChanged)
         {
             UpdateServerStatus();
         }
     }
 }
 void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType type = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (type)
         {
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
         case ServerConnectionMessaging.MessageType.HomeServerAttached:
             UpdateServerAddress();
             break;
         }
     }
     else if (message.ChannelName == SystemMessaging.CHANNEL)
     {
         SystemMessaging.MessageType messageType = (SystemMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case SystemMessaging.MessageType.SystemStateChanged:
             SystemState newState = (SystemState)message.MessageData[SystemMessaging.NEW_STATE];
             if (newState == SystemState.Suspending)
             {
                 _suspended = true;
             }
             else if (newState == SystemState.Resuming && _suspended)
             {
                 _suspended = false;
                 DoWakeServer();
             }
             break;
         }
     }
 }
 protected void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerAttached:
         case ServerConnectionMessaging.MessageType.HomeServerDetached:
             FireStateChanged();
             break;
         }
     }
     else if (message.ChannelName == ContentDirectoryMessaging.CHANNEL)
     {
         ContentDirectoryMessaging.MessageType messageType = (ContentDirectoryMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ContentDirectoryMessaging.MessageType.RegisteredSharesChanged:
             FireStateChanged();
             break;
         }
     }
     else if (message.ChannelName == SharesMessaging.CHANNEL)
     {
         SharesMessaging.MessageType messageType = (SharesMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case SharesMessaging.MessageType.ShareAdded:
         case SharesMessaging.MessageType.ShareRemoved:
             FireStateChanged();
             break;
         }
     }
 }
Пример #6
0
        public AppController()
        {
            _synchronizationContext = SynchronizationContext.Current;
            Clients = new ObservableCollectionMt <ClientData>();
            _serverConnectionStatus = ServerConnectionMessaging.MessageType.HomeServerDisconnected;

            // Register at message channels
            ServiceRegistration.Get <IMessageBroker>().RegisterMessageReceiver(ServerConnectionMessaging.CHANNEL, this);
            ServiceRegistration.Get <IMessageBroker>().RegisterMessageReceiver(LocalizationMessaging.CHANNEL, this);
        }
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType messageType =
                    (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                case ServerConnectionMessaging.MessageType.HomeServerConnected:
                    _updatePending = true; //Update all
                    break;
                }
            }
            else if (message.ChannelName == ContentDirectoryMessaging.CHANNEL)
            {
                ContentDirectoryMessaging.MessageType messageType = (ContentDirectoryMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ContentDirectoryMessaging.MessageType.ShareImportCompleted:
                    _importUpdatePending = true; //Update latest added
                    break;

                case ContentDirectoryMessaging.MessageType.MediaItemChanged:
                    if ((ContentDirectoryMessaging.MediaItemChangeType)message.MessageData[ContentDirectoryMessaging.MEDIA_ITEM_CHANGE_TYPE] != ContentDirectoryMessaging.MediaItemChangeType.None)
                    {
                        _mediaItemUpdatePending = true;
                    }
                    break;
                }
            }
            else if (message.ChannelName == SharesMessaging.CHANNEL)
            {
                SharesMessaging.MessageType messageType = (SharesMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case SharesMessaging.MessageType.ShareChanged:
                case SharesMessaging.MessageType.ShareRemoved:
                    _updatePending = true; //Update all
                    break;
                }
            }
            else if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
            {
                PlayerManagerMessaging.MessageType messageType =
                    (PlayerManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerManagerMessaging.MessageType.PlayerStopped:
                case PlayerManagerMessaging.MessageType.PlayerEnded:
                    _playbackUpdatePending = true; //Update most played and last played
                    break;
                }
            }
        }
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == NotificationServiceMessaging.CHANNEL)
            {
                INotification notification = (INotification)message.MessageData[NotificationServiceMessaging.NOTIFICATION];
                NotificationServiceMessaging.MessageType messageType = (NotificationServiceMessaging.MessageType)message.MessageType;
                if (messageType == NotificationServiceMessaging.MessageType.NotificationDequeued ||
                    messageType == NotificationServiceMessaging.MessageType.NotificationRemoved)
                {
                    lock (_syncObj)
                        if (notification == _queuedNotification)
                        {
                            _queuedNotification = null;
                        }
                }
            }
            // Check setting which prevents the listener service to pop up server availability messages
            ISettingsManager settingsManager = ServiceRegistration.Get <ISettingsManager>();
            SkinBaseSettings settings        = settingsManager.Load <SkinBaseSettings>();

            if (!settings.EnableServerListener)
            {
                RemoveNotification();
                return;
            }
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType messageType =
                    (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ServerConnectionMessaging.MessageType.AvailableServersChanged:
                    bool serversWereAdded = (bool)message.MessageData[ServerConnectionMessaging.SERVERS_WERE_ADDED];
                    if (serversWereAdded)
                    {
                        QueueNotification();
                    }
                    else
                    {
                        ICollection <ServerDescriptor> servers = (ICollection <ServerDescriptor>)message.MessageData[ServerConnectionMessaging.AVAILABLE_SERVERS];
                        if (servers.Count == 0)
                        {
                            // No servers available any more
                            RemoveNotification();
                        }
                    }
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                    // Home server was attached outside the notification handler
                    RemoveNotification();
                    break;
                }
            }
        }
        void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType messageType =
                    (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                case ServerConnectionMessaging.MessageType.HomeServerConnected:
                    UpdateProperties_NoLock();
                    UpdateSharesLists_NoLock(false);
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
                    if (_shareProxy is ServerShares)
                    {
                        // If in edit workflow for a server share, when the server gets disconneted, go back to the shares overview
                        NavigateBackToOverview();
                    }
                    else
                    {
                        UpdateProperties_NoLock();
                        UpdateSharesLists_NoLock(false);
                    }
                    break;
                }
            }
            else if (message.ChannelName == ContentDirectoryMessaging.CHANNEL)
            {
                ContentDirectoryMessaging.MessageType messageType = (ContentDirectoryMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ContentDirectoryMessaging.MessageType.RegisteredSharesChanged:
                    UpdateProperties_NoLock();
                    UpdateSharesLists_NoLock(false);
                    break;
                }
            }
            else if (message.ChannelName == SharesMessaging.CHANNEL)
            {
                SharesMessaging.MessageType messageType = (SharesMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case SharesMessaging.MessageType.ShareAdded:
                case SharesMessaging.MessageType.ShareRemoved:
                    UpdateProperties_NoLock();
                    UpdateSharesLists_NoLock(false);
                    break;
                }
            }
        }
Пример #10
0
 private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType type = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (type)
         {
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
             SyncWithServer(Load());
             break;
         }
     }
 }
 protected virtual void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
         case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
             Update();
             break;
         }
     }
 }
Пример #12
0
 void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == RemovableMediaMessaging.CHANNEL)
     {
         RemovableMediaMessaging.MessageType messageType = (RemovableMediaMessaging.MessageType)message.MessageType;
         if (messageType == RemovableMediaMessaging.MessageType.MediaInserted)
         {
             string drive = (string)message.MessageData[RemovableMediaMessaging.DRIVE_LETTER];
             var    type  = ExamineVolume(drive);
             if (_removableMediaItems.TryGetValue(drive, out var items))
             {
                 PlayItemsModel.AddOrUpdateRemovableMediaItems(items);
             }
             RemovableMediaManagerSettings settings = ServiceRegistration.Get <ISettingsManager>().Load <RemovableMediaManagerSettings>();
             if (settings.AutoPlay == AutoPlayType.AutoPlay)
             {
                 IPlayerContextManager pcm = ServiceRegistration.Get <IPlayerContextManager>();
                 if (!pcm.IsFullscreenContentWorkflowStateActive)
                 {
                     CheckAutoPlay(drive, type);
                 }
             }
         }
         else if (messageType == RemovableMediaMessaging.MessageType.MediaRemoved)
         {
             string drive = (string)message.MessageData[RemovableMediaMessaging.DRIVE_LETTER];
             IEnumerable <MediaItem> items;
             if (_removableMediaItems.TryRemove(drive, out items))
             {
                 PlayItemsModel.RemoveRemovableMediaItems(items);
             }
             if (_removableMediaItems.TryRemove(drive + @"\", out items))
             {
                 PlayItemsModel.RemoveRemovableMediaItems(items);
             }
         }
     }
     else if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType = (ServerConnectionMessaging.MessageType)message.MessageType;
         if (messageType == ServerConnectionMessaging.MessageType.HomeServerConnected && _runStartupCheck)
         {
             _runStartupCheck = false;
             StartupCheck();
         }
     }
 }
Пример #13
0
 private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType =
             (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerAttached:
         case ServerConnectionMessaging.MessageType.HomeServerDetached:
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
         case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
             SynchronizeHomeServer();
             break;
         }
     }
 }
Пример #14
0
 void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType =
             (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerAttached:
         case ServerConnectionMessaging.MessageType.HomeServerDetached:
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
         case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
             _ = UpdateUserLists_NoLock(false);
             break;
         }
     }
 }
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType type = (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (type)
                {
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                    _proxyRegistration.RegisterService();
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                    _proxyRegistration.UnregisterService();
                    break;
                }
            }
        }
Пример #16
0
 private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == SystemMessaging.CHANNEL)
     {
         SystemMessaging.MessageType messageType = (SystemMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case SystemMessaging.MessageType.SystemStateChanged:
             SystemState newState = (SystemState)message.MessageData[SystemMessaging.NEW_STATE];
             if (newState == SystemState.Running)
             {
                 StartTimer();
                 if (UserSettingStorage.AutoLoginUser == Guid.Empty && UserSettingStorage.UserLoginScreenEnabled && UserSettingStorage.UserLoginEnabled)
                 {
                     ShowLoginScreen();
                 }
             }
             else if (newState == SystemState.Suspending || newState == SystemState.Hibernating)
             {
                 if ((UserSettingStorage.AutoLoginUser == Guid.Empty || UserSettingStorage.AutoLoginUser != CurrentUser?.ProfileId) && UserSettingStorage.UserLoginEnabled)
                 {
                     LogoutUser();
                 }
             }
             else if (newState == SystemState.ShuttingDown)
             {
                 StopTimer();
             }
             break;
         }
     }
     else if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
             if (_firstLogin)
             {
                 _ = SetCurrentUser(); //Auto login user on first connect
             }
             _ = RefreshUserList();
             break;
         }
     }
 }
Пример #17
0
        void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType messageType =
                    (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                case ServerConnectionMessaging.MessageType.HomeServerConnected:
                case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
                case ServerConnectionMessaging.MessageType.ClientsOnlineStateChanged:
                    UpdateProperties_NoLock();
                    UpdateSharesList_NoLock(false);
                    break;
                }
            }
            else if (message.ChannelName == ContentDirectoryMessaging.CHANNEL)
            {
                ContentDirectoryMessaging.MessageType messageType =
                    (ContentDirectoryMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ContentDirectoryMessaging.MessageType.RegisteredSharesChanged:
                    UpdateSharesList_NoLock(false);
                    break;

                case ContentDirectoryMessaging.MessageType.ShareImportStarted:
                case ContentDirectoryMessaging.MessageType.ShareImportCompleted:
                    Guid shareId = (Guid)message.MessageData[ContentDirectoryMessaging.SHARE_ID];
                    IServerConnectionManager scm = ServiceRegistration.Get <IServerConnectionManager>();
                    IContentDirectory        cd  = scm.ContentDirectory;
                    if (cd == null)
                    {
                        break;
                    }
                    UpdateShareImportState_NoLock(shareId, messageType == ContentDirectoryMessaging.MessageType.ShareImportStarted);
                    break;
                }
            }
        }
Пример #18
0
        void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType type = (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (type)
                {
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                    RegisterService();
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                    UnregisterService();
                    break;
                }
            }
            if (message.ChannelName == SystemMessaging.CHANNEL)
            {
                SystemMessaging.MessageType messageType = (SystemMessaging.MessageType)message.MessageType;
                if (messageType == SystemMessaging.MessageType.SystemStateChanged)
                {
                    SystemState state = (SystemState)message.MessageData[SystemMessaging.NEW_STATE];
                    switch (state)
                    {
                    case SystemState.Suspending:
                        ITvProvider tvProvider = ServiceRegistration.Get <ITvProvider>(false);
                        if (tvProvider != null)
                        {
                            tvProvider.DeInit();
                        }
                        break;

                    case SystemState.ShuttingDown:
                        // Called to make sure that timeshifting on server is stopped on shutdown.
                        UnregisterService();
                        break;
                    }
                }
            }
        }
        void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
            {
                ServerConnectionMessaging.MessageType messageType =
                    (ServerConnectionMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ServerConnectionMessaging.MessageType.HomeServerAttached:
                case ServerConnectionMessaging.MessageType.HomeServerDetached:
                case ServerConnectionMessaging.MessageType.HomeServerConnected:
                    UpdateProperties();
                    UpdatePlaylists(false);
                    break;

                case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
                    if (!NavigateBackToOverview())
                    {
                        UpdateProperties();
                        UpdatePlaylists(false);
                    }
                    break;
                }
            }
            else if (message.ChannelName == ContentDirectoryMessaging.CHANNEL)
            {
                ContentDirectoryMessaging.MessageType messageType =
                    (ContentDirectoryMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case ContentDirectoryMessaging.MessageType.PlaylistsChanged:
                    UpdatePlaylists(false);
                    break;
                }
            }
        }
Пример #20
0
 private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType = (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.HomeServerConnected:
         case ServerConnectionMessaging.MessageType.HomeServerDisconnected:
             Update();
             break;
         }
     }
     else if (message.ChannelName == ContentDirectoryMessaging.CHANNEL)
     {
         ContentDirectoryMessaging.MessageType messageType = (ContentDirectoryMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ContentDirectoryMessaging.MessageType.PlaylistsChanged:
             Update();
             break;
         }
     }
 }
 private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == ServerConnectionMessaging.CHANNEL)
     {
         ServerConnectionMessaging.MessageType messageType =
             (ServerConnectionMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case ServerConnectionMessaging.MessageType.AvailableServersChanged:
             ICollection <ServerDescriptor> availableServers = (ICollection <ServerDescriptor>)
                                                               message.MessageData[ServerConnectionMessaging.AVAILABLE_SERVERS];
             SynchronizeAvailableServers();
             Mode mode;
             lock (_syncObj)
                 mode = _mode;
             if (mode == Mode.AttachToServer)
             {
                 if (_autoCloseOnNoServer && availableServers.Count == 0)
                 {
                     LeaveConfiguration();
                     return;
                 }
             }
             break;
         }
     }
     else if (message.ChannelName == DialogManagerMessaging.CHANNEL)
     {
         DialogManagerMessaging.MessageType messageType = (DialogManagerMessaging.MessageType)message.MessageType;
         if (messageType == DialogManagerMessaging.MessageType.DialogClosed)
         {
             Guid dialogHandle       = (Guid)message.MessageData[DialogManagerMessaging.DIALOG_HANDLE];
             bool leaveConfiguration = false;
             bool doDetach           = false;
             lock (_syncObj)
                 if (_attachInfoDialogHandle == dialogHandle)
                 {
                     _attachInfoDialogHandle = null;
                     leaveConfiguration      = true;
                 }
                 else if (_detachConfirmDialogHandle == dialogHandle)
                 {
                     DialogResult dialogResult = (DialogResult)message.MessageData[DialogManagerMessaging.DIALOG_RESULT];
                     _detachConfirmDialogHandle = Guid.Empty;
                     if (dialogResult == DialogResult.Yes)
                     {
                         doDetach = true;
                     }
                     leaveConfiguration = true;
                 }
             // Do the next two statements outside our lock
             if (doDetach)
             {
                 DoDetachFromHomeServer();
             }
             if (leaveConfiguration)
             {
                 LeaveConfiguration();
             }
         }
     }
 }