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; } }