protected void UpdateShutdownItems()
        {
            ISettingsManager       sm = ServiceRegistration.Get <ISettingsManager>();
            List <SystemStateItem> systemStateItems = sm.Load <SystemStateDialogSettings>().ShutdownItemList;

            bool timerActive = false;

            Models.SleepTimerModel stm = ServiceRegistration.Get <IWorkflowManager>().GetModel(Consts.WF_STATE_ID_SLEEP_TIMER_MODEL) as Models.SleepTimerModel;
            if (stm != null && stm.IsSleepTimerActive == true)
            {
                timerActive = true;
            }

            _shutdownItems.Clear();
            if (systemStateItems != null)
            {
                for (int i = 0; i < systemStateItems.Count; i++)
                {
                    SystemStateItem systemStateItem = systemStateItems[i];
                    if (!systemStateItem.Enabled)
                    {
                        continue;
                    }
                    ListItem item = new ListItem(Consts.KEY_NAME, Consts.GetResourceIdentifierForMenuItem(systemStateItem.Action, timerActive));
                    item.Command = new MethodDelegateCommand(() => DoAction(systemStateItem.Action));
                    _shutdownItems.Add(item);
                }
            }
            _shutdownItems.FireChange();
        }
        protected void DoAction(SystemStateAction action)
        {
            // I don't like this way, but I need it...
            DoClose(action);

            switch (action)
            {
            case SystemStateAction.Suspend:
                ServiceRegistration.Get <ISystemStateService>().Suspend();
                return;

            case SystemStateAction.Hibernate:
                ServiceRegistration.Get <ISystemStateService>().Hibernate();
                return;

            case SystemStateAction.Shutdown:
                ServiceRegistration.Get <ISystemStateService>().Shutdown();
                return;

            case SystemStateAction.Restart:
                ServiceRegistration.Get <ISystemStateService>().Restart();
                return;

            case SystemStateAction.Logoff:
                ServiceRegistration.Get <ISystemStateService>().Logoff();
                return;

            case SystemStateAction.CloseMP:
                ServiceRegistration.Get <IScreenControl>().Shutdown();
                return;

            case SystemStateAction.MinimizeMP:
                ServiceRegistration.Get <IScreenControl>().Minimize();
                return;

            case SystemStateAction.SleepTimer:
                Models.SleepTimerModel stm = ServiceRegistration.Get <IWorkflowManager>().GetModel(Consts.WF_STATE_ID_SLEEP_TIMER_MODEL) as Models.SleepTimerModel;
                if (stm == null || stm.IsSleepTimerActive == false)
                {
                    ServiceRegistration.Get <IWorkflowManager>().NavigatePop(1);

                    ServiceRegistration.Get <IWorkflowManager>().NavigatePush(
                        Consts.WF_STATE_ID_SLEEP_TIMER_DIALOG);
                }
                else
                {
                    stm.Stop();
                    UpdateShutdownItems();
                }
                return;
            }
        }