示例#1
0
 public override bool Equals(object obj)
 {
     if (obj is EPGWakeupConfig)
     {
         EPGWakeupConfig cfg = (EPGWakeupConfig)obj;
         if (cfg.Hour == Hour && cfg.Minutes == Minutes)
         {
             foreach (EPGGrabDays day in cfg.Days)
             {
                 if (!Days.Contains(day))
                 {
                     return(false);
                 }
             }
             foreach (EPGGrabDays day in Days)
             {
                 if (!cfg.Days.Contains(day))
                 {
                     return(false);
                 }
             }
             return(true);
         }
     }
     return(false);
 }
示例#2
0
 private void CheckDay(EPGWakeupConfig cfg, EPGGrabDays day, bool enabled)
 {
     if (enabled)
     {
         cfg.Days.Add(day);
     }
 }
示例#3
0
 public EPGWakeupConfig(string serializedConfig)
 {
   EPGWakeupConfig cfg = new EPGWakeupConfig();
   try
   {
     BinaryFormatter formatter = new BinaryFormatter();
     byte[] buffer = Convert.FromBase64String(serializedConfig);
     using (MemoryStream stream = new MemoryStream(buffer, 0, buffer.Length))
     {
       cfg = (EPGWakeupConfig)formatter.Deserialize(stream);
     }
   }
   catch (Exception) {}
   Hour = cfg.Hour;
   Minutes = cfg.Minutes;
   Days = cfg.Days;
   LastRun = cfg.LastRun;
 }
示例#4
0
        public EPGWakeupConfig(string serializedConfig)
        {
            EPGWakeupConfig cfg = new EPGWakeupConfig();

            try
            {
                BinaryFormatter formatter = new BinaryFormatter();
                byte[]          buffer    = Convert.FromBase64String(serializedConfig);
                using (MemoryStream stream = new MemoryStream(buffer, 0, buffer.Length))
                {
                    cfg = (EPGWakeupConfig)formatter.Deserialize(stream);
                }
            }
            catch (Exception) {}
            Hour    = cfg.Hour;
            Minutes = cfg.Minutes;
            Days    = cfg.Days;
            LastRun = cfg.LastRun;
        }
示例#5
0
        public override void SaveSettings()
        {
            Setting setting;

            setting       = _layer.GetSetting("PowerSchedulerShutdownActive", "false");
            setting.Value = checkBox1.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerIdleTimeout", "5");
            setting.Value = numericUpDown1.Value.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0");
            setting.Value = numUpDownStandbyAllowedStartHour.Value.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24");
            setting.Value = numUpDownStandbyAllowedEndHour.Value.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerWakeupActive", "false");
            setting.Value = checkBox2.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerShutdownMode", "2");
            setting.Value = comboBox1.SelectedIndex.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerForceShutdown", "false");
            setting.Value = checkBox3.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false");
            setting.Value = checkBox4.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60");
            setting.Value = numericUpDown2.Value.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300");
            setting.Value = numericUpDown4.Value.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerCheckInterval", "60");
            setting.Value = numericUpDown3.Value.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerReinitializeController", "false");
            setting.Value = checkBox5.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerCommand", string.Empty);
            setting.Value = textBox2.Text;
            setting.Persist();

            setting       = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false");
            setting.Value = checkBox6.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false");
            setting.Value = checkBox7.Checked.ToString();
            setting.Persist();

            setting = _layer.GetSetting("EPGWakeupConfig", String.Empty);
            EPGWakeupConfig cfg    = new EPGWakeupConfig(setting.Value);
            EPGWakeupConfig newcfg = new EPGWakeupConfig();

            newcfg.Hour    = cfg.Hour;
            newcfg.Minutes = cfg.Minutes;
            // newcfg.Days = cfg.Days;
            newcfg.LastRun = cfg.LastRun;
            string[] time = maskedTextBox1.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]);
            newcfg.Hour    = Convert.ToInt32(time[0]);
            newcfg.Minutes = Convert.ToInt32(time[1]);
            CheckDay(newcfg, EPGGrabDays.Monday, checkBox8.Checked);
            CheckDay(newcfg, EPGGrabDays.Tuesday, checkBox9.Checked);
            CheckDay(newcfg, EPGGrabDays.Wednesday, checkBox10.Checked);
            CheckDay(newcfg, EPGGrabDays.Thursday, checkBox11.Checked);
            CheckDay(newcfg, EPGGrabDays.Friday, checkBox12.Checked);
            CheckDay(newcfg, EPGGrabDays.Saturday, checkBox13.Checked);
            CheckDay(newcfg, EPGGrabDays.Sunday, checkBox14.Checked);

            if (!cfg.Equals(newcfg))
            {
                setting.Value = newcfg.SerializeAsString();
                setting.Persist();
            }

            setting       = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty);
            setting.Value = tbEpgCmd.Text;
            setting.Persist();

            setting       = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration");
            setting.Value = textBox1.Text;
            setting.Persist();

            // Persist share monitoring configuration for standby prevention
            setting       = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true");
            setting.Value = shareMonitoring.Checked.ToString();
            setting.Persist();

            setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", "");
            StringBuilder shares = new StringBuilder();

            foreach (DataGridViewRow row in inhibitStandbyShares.Rows)
            {
                shares.AppendFormat("{0},{1},{2};", row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value);
            }
            setting.Value = shares.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("NetworkMonitorEnabled", "false");
            setting.Value = checkBox15.Checked.ToString();
            setting.Persist();

            setting       = _layer.GetSetting("NetworkMonitorIdleLimit", "2");
            setting.Value = numericUpDown5.Value.ToString();
            setting.Persist();
        }
    /// <summary>
    /// Thread to perform reboot
    /// </summary>
    private void RebootThread()
    {
      using (Settings reader = new MPSettings())
      {
        EPGWakeupConfig config = new EPGWakeupConfig(reader.GetValueAsString("psclientplugin", "RebootConfig", String.Empty));

        Log.Debug("RebootHandler: Reboot schedule {0:00}:{1:00} is due", config.Hour, config.Minutes);

        // Start external command
        RunExternalCommand("reboot");

        // Trigger reboot
        Log.Info("RebootHandler: Reboot system");
        IPowerScheduler ps = GlobalServiceProvider.Instance.Get<IPowerScheduler>();
        ps.SuspendSystem("RebootHandler", (int)RestartOptions.Reboot, false);
      }
    }
示例#7
0
 private void _scheduleTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
   TvBusinessLayer layer = new TvBusinessLayer();
   bool scheduleEnabled = Convert.ToBoolean(layer.GetSetting("webepgScheduleEnabled", "true").Value);
   if (scheduleEnabled)
   {
     Setting configSetting = layer.GetSetting("webepgSchedule", String.Empty);
     EPGWakeupConfig config = new EPGWakeupConfig(configSetting.Value);
     if (ShouldRunNow())
     {
       Log.Info("WebEPGImporter: WebEPG schedule {0}:{1} is due: {2}:{3}",
                config.Hour, config.Minutes, DateTime.Now.Hour, DateTime.Now.Minute);
       StartImport(null);
       config.LastRun = DateTime.Now;
       configSetting.Value = config.SerializeAsString();
       configSetting.Persist();
     }
   }
 }
    private void SaveSettings()
    {
      using (_settings = new MPSettings())
      {
        if (_singleSeat)
        {
          SetSetting("HomeOnly", checkBoxHomeOnly.Checked.ToString());
          SetSetting("Command", textBoxCommand.Text);
          return;
        }
#endif
        // General
        SetSetting("Profile", comboBoxProfile.SelectedIndex.ToString());
      
        SetSetting("IdleTimeout", numericUpDownIdleTimeout.Value.ToString());

        SetSetting("ExpertMode", (labelExpertMode.Text == "Expert Mode").ToString());

#if CLIENT
        // Client
        SetSetting("HomeOnly", checkBoxHomeOnly.Checked.ToString());

        SetSetting("Command", textBoxCommand.Text);

#endif
#if SERVER
        // EPG
        {
          EPGWakeupConfig cfg = new EPGWakeupConfig(GetSetting("EPGWakeupConfig", String.Empty));
          EPGWakeupConfig newcfg = new EPGWakeupConfig();
          newcfg.Hour = cfg.Hour;
          newcfg.Minutes = cfg.Minutes;
          // newcfg.Days = cfg.Days;
          newcfg.LastRun = cfg.LastRun;
          string[] time = textBoxEPG.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]);
          newcfg.Hour = Convert.ToInt32(time[0]);
          newcfg.Minutes = Convert.ToInt32(time[1]);
          CheckDay(newcfg, EPGGrabDays.Monday, checkBoxEPGMonday.Checked);
          CheckDay(newcfg, EPGGrabDays.Tuesday, checkBoxEPGTuesday.Checked);
          CheckDay(newcfg, EPGGrabDays.Wednesday, checkBoxEPGWednesday.Checked);
          CheckDay(newcfg, EPGGrabDays.Thursday, checkBoxEPGThursday.Checked);
          CheckDay(newcfg, EPGGrabDays.Friday, checkBoxEPGFriday.Checked);
          CheckDay(newcfg, EPGGrabDays.Saturday, checkBoxEPGSaturday.Checked);
          CheckDay(newcfg, EPGGrabDays.Sunday, checkBoxEPGSunday.Checked);

          if (!cfg.Equals(newcfg))
          {
            SetSetting("EPGWakeupConfig", newcfg.SerializeAsString());
          }
        }

        SetSetting("EPGPreventStandby", checkBoxEPGPreventStandby.Checked.ToString());

        SetSetting("EPGAwayMode", checkBoxEPGAwayMode.Checked.ToString());

        SetSetting("EPGWakeup", checkBoxEPGWakeup.Checked.ToString());

        SetSetting("EPGCommand", textBoxEPGCommand.Text);

#endif
        // Reboot
        {
          EPGWakeupConfig cfg = new EPGWakeupConfig(GetSetting("RebootConfig", String.Empty));
          EPGWakeupConfig newcfg = new EPGWakeupConfig();
          newcfg.Hour = cfg.Hour;
          newcfg.Minutes = cfg.Minutes;
          // newcfg.Days = cfg.Days;
          newcfg.LastRun = cfg.LastRun;
          string[] time = textBoxReboot.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]);
          newcfg.Hour = Convert.ToInt32(time[0]);
          newcfg.Minutes = Convert.ToInt32(time[1]);
          CheckDay(newcfg, EPGGrabDays.Monday, checkBoxRebootMonday.Checked);
          CheckDay(newcfg, EPGGrabDays.Tuesday, checkBoxRebootTuesday.Checked);
          CheckDay(newcfg, EPGGrabDays.Wednesday, checkBoxRebootWednesday.Checked);
          CheckDay(newcfg, EPGGrabDays.Thursday, checkBoxRebootThursday.Checked);
          CheckDay(newcfg, EPGGrabDays.Friday, checkBoxRebootFriday.Checked);
          CheckDay(newcfg, EPGGrabDays.Saturday, checkBoxRebootSaturday.Checked);
          CheckDay(newcfg, EPGGrabDays.Sunday, checkBoxRebootSunday.Checked);

          if (!cfg.Equals(newcfg))
          {
            SetSetting("RebootConfig", newcfg.SerializeAsString());
          }
        }

        SetSetting("RebootWakeup", checkBoxRebootWakeup.Checked.ToString());

        SetSetting("RebootCommand", textBoxRebootCommand.Text);

        // Processes
        SetSetting("Processes", textBoxProcesses.Text);

        SetSetting("ProcessesAwayMode", checkBoxProcessesAwayMode.Checked.ToString());

#if SERVER
        SetSetting("CheckForMPClientRunning", checkBoxMPClientRunning.Checked.ToString());

#endif
        // Active Shares
        SetSetting("ActiveSharesEnabled", checkBoxSharesEnabled.Checked.ToString());

        SetSetting("ActiveSharesAwayMode", checkBoxSharesAwayMode.Checked.ToString());

        StringBuilder shares = new StringBuilder();
        foreach (DataGridViewRow row in dataGridShares.Rows)
        {
          shares.AppendFormat("{0},{1},{2};", row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value);
        }
        SetSetting("ActiveShares", shares.ToString());

        // Network Monitor
        SetSetting("NetworkMonitorEnabled", checkBoxNetworkEnabled.Checked.ToString());

        SetSetting("NetworkMonitorIdleLimit", numericUpDownNetworkIdleLimit.Value.ToString());

        SetSetting("NetworkMonitorAwayMode", checkBoxNetworkAwayMode.Checked.ToString());

        // Ping Monitor

        SetSetting("PingMonitorEnabled", checkBoxPingMonitorEnable.Checked.ToString());
        SetSetting("PingMonitorAwayMode", checkBoxPingMonitorAwayMode.Checked.ToString());

        string str = "";
        for (int i = 0; i < this.listBoxHosts.Items.Count; i++)
        {
          str = str + this.listBoxHosts.Items[i].ToString() + ";";
        }
        str = str.TrimEnd(";".ToCharArray());

        SetSetting("PingMonitorHosts", str);

        // Advanced
#if SERVER
        SetSetting("ReinitializeController", checkBoxReinitializeController.Checked.ToString());

        SetSetting("Command", textBoxCommand.Text);

#endif
        SetSetting("AutoPowerSettings", checkBoxAutoPowerSettings.Checked.ToString());

        SetSetting("ShutdownEnabled", checkBoxShutdownEnabled.Checked.ToString());

        SetSetting("ShutdownMode", comboBoxShutdownMode.SelectedIndex.ToString());

        // Legacy
        SetSetting("PreWakeupTime", numericUpDownPreWakeupTime.Value.ToString());

        SetSetting("PreNoStandbyTime", numericUpDownPreNoStandbyTime.Value.ToString());

        SetSetting("StandbyHoursFrom", numericUpDownStandbyHoursFrom.Value.ToString());
        SetSetting("StandbyHoursTo", numericUpDownStandbyHoursTo.Value.ToString());
        SetSetting("StandbyHoursOnWeekendFrom", numericUpDownStandbyHoursOnWeekendFrom.Value.ToString());
        SetSetting("StandbyHoursOnWeekendTo", numericUpDownStandbyHoursOnWeekendTo.Value.ToString());

        // Power settings
        if (checkBoxAutoPowerSettings.Checked)
        {
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_AWAY_MODE, AC, (uint)(_recommendedSettingsAC.allowAwayMode ? 1 : 0));
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LOCK_CONSOLE_ON_WAKE, AC, (uint)(_recommendedSettingsAC.requirePassword ? 1 : 0));
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_HYBRID_SLEEP, AC, (uint)(_recommendedSettingsAC.hybridSleep ? 1 : 0));
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_RTC_WAKE, AC, (uint)(_recommendedSettingsAC.allowWakeTimers ? 1 : 0));
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.STANDBYIDLE, AC, _recommendedSettingsAC.idleTimeout * 60);
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.HIBERNATE_AFTER, AC, _recommendedSettingsAC.hibernateAfter * 60);
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LID_CLOSE_ACTION, AC, _recommendedSettingsAC.lidCloseAction);
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.POWER_BUTTON_ACTION, AC, _recommendedSettingsAC.powerButtonAction);
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.SLEEP_BUTTON_ACTION, AC, _recommendedSettingsAC.sleepButtonAction);
          PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.WHEN_SHARING_MEDIA, AC, _recommendedSettingsAC.whenSharingMedia);

          if (PowerManager.HasDCPowerSource)
          {
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_AWAY_MODE, DC, (uint)(_recommendedSettingsDC.allowAwayMode ? 1 : 0));
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LOCK_CONSOLE_ON_WAKE, DC, (uint)(_recommendedSettingsDC.requirePassword ? 1 : 0));
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_HYBRID_SLEEP, DC, (uint)(_recommendedSettingsDC.hybridSleep ? 1 : 0));
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_RTC_WAKE, DC, (uint)(_recommendedSettingsDC.allowWakeTimers ? 1 : 0));
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.STANDBYIDLE, DC, _recommendedSettingsDC.idleTimeout * 60);
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.HIBERNATE_AFTER, DC, _recommendedSettingsDC.hibernateAfter * 60);
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LID_CLOSE_ACTION, DC, _recommendedSettingsDC.lidCloseAction);
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.POWER_BUTTON_ACTION, DC, _recommendedSettingsDC.powerButtonAction);
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.SLEEP_BUTTON_ACTION, DC, _recommendedSettingsDC.sleepButtonAction);
            PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.WHEN_SHARING_MEDIA, DC, _recommendedSettingsDC.whenSharingMedia);
          }
        }
      }
#if SERVER

      RefreshStatus();
#endif
    }
    public override void SaveSettings()
    {
      Setting setting;

      setting = _layer.GetSetting("PowerSchedulerShutdownActive", "false");
      setting.Value = checkBox1.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerIdleTimeout", "5");
      setting.Value = numericUpDown1.Value.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0");
      setting.Value = numUpDownStandbyAllowedStartHour.Value.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24");
      setting.Value = numUpDownStandbyAllowedEndHour.Value.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerWakeupActive", "false");
      setting.Value = checkBox2.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerShutdownMode", "2");
      setting.Value = comboBox1.SelectedIndex.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerForceShutdown", "false");
      setting.Value = checkBox3.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false");
      setting.Value = checkBox4.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60");
      setting.Value = numericUpDown2.Value.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300");
      setting.Value = numericUpDown4.Value.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerCheckInterval", "60");
      setting.Value = numericUpDown3.Value.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerReinitializeController", "false");
      setting.Value = checkBox5.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerCommand", string.Empty);
      setting.Value = textBox2.Text;
      setting.Persist();

      setting = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false");
      setting.Value = checkBox6.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false");
      setting.Value = checkBox7.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("EPGWakeupConfig", String.Empty);
      EPGWakeupConfig cfg = new EPGWakeupConfig(setting.Value);
      EPGWakeupConfig newcfg = new EPGWakeupConfig();
      newcfg.Hour = cfg.Hour;
      newcfg.Minutes = cfg.Minutes;
      // newcfg.Days = cfg.Days;
      newcfg.LastRun = cfg.LastRun;
      string[] time = maskedTextBox1.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]);
      newcfg.Hour = Convert.ToInt32(time[0]);
      newcfg.Minutes = Convert.ToInt32(time[1]);
      CheckDay(newcfg, EPGGrabDays.Monday, checkBox8.Checked);
      CheckDay(newcfg, EPGGrabDays.Tuesday, checkBox9.Checked);
      CheckDay(newcfg, EPGGrabDays.Wednesday, checkBox10.Checked);
      CheckDay(newcfg, EPGGrabDays.Thursday, checkBox11.Checked);
      CheckDay(newcfg, EPGGrabDays.Friday, checkBox12.Checked);
      CheckDay(newcfg, EPGGrabDays.Saturday, checkBox13.Checked);
      CheckDay(newcfg, EPGGrabDays.Sunday, checkBox14.Checked);

      if (!cfg.Equals(newcfg))
      {
        setting.Value = newcfg.SerializeAsString();
        setting.Persist();
      }

      setting = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty);
      setting.Value = tbEpgCmd.Text;
      setting.Persist();

      setting = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration");
      setting.Value = textBox1.Text;
      setting.Persist();

      // Persist share monitoring configuration for standby prevention
      setting = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true");
      setting.Value = shareMonitoring.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", "");
      StringBuilder shares = new StringBuilder();
      foreach (DataGridViewRow row in inhibitStandbyShares.Rows)
      {
        shares.AppendFormat("{0},{1},{2};", row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value);
      }
      setting.Value = shares.ToString();
      setting.Persist();

      setting = _layer.GetSetting("NetworkMonitorEnabled", "false");
      setting.Value = checkBox15.Checked.ToString();
      setting.Persist();

      setting = _layer.GetSetting("NetworkMonitorIdleLimit", "2");
      setting.Value = numericUpDown5.Value.ToString();
      setting.Persist();
    }
    public override void LoadSettings()
    {
      Setting setting;
      setting = _layer.GetSetting("PowerSchedulerShutdownActive", "false");
      checkBox1.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerIdleTimeout", "5");
      numericUpDown1.Value = Convert.ToDecimal(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0");
      numUpDownStandbyAllowedStartHour.Value = Convert.ToDecimal(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24");
      numUpDownStandbyAllowedEndHour.Value = Convert.ToDecimal(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerWakeupActive", "false");
      checkBox2.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerShutdownMode", "2");
      comboBox1.SelectedIndex = Convert.ToInt32(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerForceShutdown", "false");
      checkBox3.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false");
      checkBox4.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60");
      numericUpDown2.Value = Convert.ToDecimal(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300");
      numericUpDown4.Value = Convert.ToDecimal(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerCheckInterval", "60");
      numericUpDown3.Value = Convert.ToDecimal(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerReinitializeController", "false");
      checkBox5.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("PowerSchedulerCommand", string.Empty);
      textBox2.Text = setting.Value;

      setting = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false");
      checkBox6.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false");
      checkBox7.Checked = Convert.ToBoolean(setting.Value);


      EPGWakeupConfig config = new EPGWakeupConfig(_layer.GetSetting("EPGWakeupConfig", String.Empty).Value);
      foreach (EPGGrabDays day in config.Days)
      {
        switch (day)
        {
          case EPGGrabDays.Monday:
            checkBox8.Checked = true;
            break;
          case EPGGrabDays.Tuesday:
            checkBox9.Checked = true;
            break;
          case EPGGrabDays.Wednesday:
            checkBox10.Checked = true;
            break;
          case EPGGrabDays.Thursday:
            checkBox11.Checked = true;
            break;
          case EPGGrabDays.Friday:
            checkBox12.Checked = true;
            break;
          case EPGGrabDays.Saturday:
            checkBox13.Checked = true;
            break;
          case EPGGrabDays.Sunday:
            checkBox14.Checked = true;
            break;
        }
      }
      string hFormat, mFormat;
      if (config.Hour < 10)
        hFormat = "0{0}";
      else
        hFormat = "{0}";
      if (config.Minutes < 10)
        mFormat = "0{0}";
      else
        mFormat = "{0}";
      maskedTextBox1.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes);

      setting = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty);
      tbEpgCmd.Text = setting.Value;

      setting = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration");
      textBox1.Text = setting.Value;

      // Load share monitoring configuration for standby prevention
      setting = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true");
      shareMonitoring.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", "");
      inhibitStandbyShares.Rows.Clear();
      string[] shares = setting.Value.Split(';');
      foreach (string share in shares)
      {
        string[] shareItem = share.Split(',');
        if ((shareItem.Length.Equals(3)) &&
            ((shareItem[0].Trim().Length > 0) ||
             (shareItem[1].Trim().Length > 0) ||
             (shareItem[2].Trim().Length > 0)))
        {
          inhibitStandbyShares.Rows.Add(shareItem);
        }
      }

      setting = _layer.GetSetting("NetworkMonitorEnabled", "false");
      checkBox15.Checked = Convert.ToBoolean(setting.Value);

      setting = _layer.GetSetting("NetworkMonitorIdleLimit", "2");
      numericUpDown5.Value = Convert.ToDecimal(setting.Value);
    }
    public override void SaveSettings()
    {
      base.SaveSettings();

      _configFile.Info.GrabDays = (int)nMaxGrab.Value;

      _configFile.Channels = new List<ChannelMap>();
      _configFile.RadioChannels = new List<ChannelMap>();

      foreach (ChannelMap channel in TvMappings.ChannelMapping.Values)
      {
        _configFile.Channels.Add(channel);
      }
      foreach (ChannelMap channel in RadioMappings.ChannelMapping.Values)
      {
        _configFile.RadioChannels.Add(channel);
      }

      Log.Info("WebEPG Config: Button: Save");
      string confFile = _configFileDir + "\\WebEPG.xml";
      FileInfo config = new FileInfo(confFile);
      if (config.Exists)
      {
        File.Delete(confFile.Replace(".xml", ".bak"));
        File.Move(confFile, confFile.Replace(".xml", ".bak"));
      }

      XmlSerializer s = new XmlSerializer(typeof (WebepgConfigFile));
      TextWriter w = new StreamWriter(confFile);
      s.Serialize(w, _configFile);
      w.Close();

      TvBusinessLayer layer = new TvBusinessLayer();
      Setting setting = layer.GetSetting("webepgDestination", "db");
      switch (DestinationComboBox.SelectedIndex)
      {
        case 0:
          setting.Value = "db";
          break;
        case 1:
          setting.Value = "defxmltv";
          break;
        case 2:
          setting.Value = "xmltv";
          break;
      }
      setting.Persist();

      setting = layer.GetSetting("webepgDestinationFolder");
      setting.Value = textBoxFolder.Text;
      setting.Persist();

      setting = layer.GetSetting("webepgDeleteBeforeImport", "true");
      setting.Value = checkBoxDeleteBeforeImport.Checked ? "true" : "false";
      setting.Persist();

      setting = layer.GetSetting("webepgScheduleEnabled", "true");
      setting.Value = ScheduleGrabCheckBox.Checked ? "true" : "false";
      setting.Persist();

      setting = layer.GetSetting("webepgSchedule", String.Empty);
      EPGWakeupConfig cfg = new EPGWakeupConfig(setting.Value);
      EPGWakeupConfig newcfg = new EPGWakeupConfig();
      newcfg.Hour = cfg.Hour;
      newcfg.Minutes = cfg.Minutes;
      // newcfg.Days = cfg.Days;
      newcfg.LastRun = cfg.LastRun;
      string[] time = grabTimeTextBox.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]);
      newcfg.Hour = Convert.ToInt32(time[0]);
      newcfg.Minutes = Convert.ToInt32(time[1]);
      CheckDay(newcfg, EPGGrabDays.Monday, MondayCheckBox.Checked);
      CheckDay(newcfg, EPGGrabDays.Tuesday, TuesdayCheckBox.Checked);
      CheckDay(newcfg, EPGGrabDays.Wednesday, WednesdayCheckBox.Checked);
      CheckDay(newcfg, EPGGrabDays.Thursday, ThursdayCheckBox.Checked);
      CheckDay(newcfg, EPGGrabDays.Friday, FridayCheckBox.Checked);
      CheckDay(newcfg, EPGGrabDays.Saturday, SaturdayCheckBox.Checked);
      CheckDay(newcfg, EPGGrabDays.Sunday, SundayCheckBox.Checked);

      if (!cfg.Equals(newcfg))
      {
        setting.Value = newcfg.SerializeAsString();
        setting.Persist();
      }
    }
    public override void LoadSettings()
    {
      base.LoadSettings();

      Initialize();

      TvBusinessLayer layer = new TvBusinessLayer();
      switch (layer.GetSetting("webepgDestination", "db").Value)
      {
        case "db":
          DestinationComboBox.SelectedIndex = 0;
          break;
        case "defxmltv":
          DestinationComboBox.SelectedIndex = 1;
          break;
        case "xmltv":
          DestinationComboBox.SelectedIndex = 2;
          break;
        default:
          DestinationComboBox.SelectedIndex = 0;
          break;
      }

      textBoxFolder.Text = layer.GetSetting("webepgDestinationFolder").Value;
      checkBoxDeleteBeforeImport.Checked = Convert.ToBoolean(layer.GetSetting("webepgDeleteBeforeImport", "true").Value);

      LoadWebepgConfigFile();
      //RedrawList(null);

      // Schedule
      ScheduleGrabCheckBox.Checked = Convert.ToBoolean(layer.GetSetting("webepgScheduleEnabled", "true").Value);
      EPGWakeupConfig config = new EPGWakeupConfig(layer.GetSetting("webepgSchedule", String.Empty).Value);
      foreach (EPGGrabDays day in config.Days)
      {
        switch (day)
        {
          case EPGGrabDays.Monday:
            MondayCheckBox.Checked = true;
            break;
          case EPGGrabDays.Tuesday:
            TuesdayCheckBox.Checked = true;
            break;
          case EPGGrabDays.Wednesday:
            WednesdayCheckBox.Checked = true;
            break;
          case EPGGrabDays.Thursday:
            ThursdayCheckBox.Checked = true;
            break;
          case EPGGrabDays.Friday:
            FridayCheckBox.Checked = true;
            break;
          case EPGGrabDays.Saturday:
            SaturdayCheckBox.Checked = true;
            break;
          case EPGGrabDays.Sunday:
            SundayCheckBox.Checked = true;
            break;
        }
      }
      grabTimeTextBox.Text = String.Format("{0:00}:{1:00}", config.Hour, config.Minutes);
    }
    /// <summary>
    /// Check if a reboot is due
    /// </summary>
    /// <returns>Returns whether the system should reboot now</returns>
    private bool ShouldRunNow()
    {
      using (Settings reader = new MPSettings())
      {
        EPGWakeupConfig config = new EPGWakeupConfig(reader.GetValueAsString("psclientplugin", "RebootConfig", String.Empty));

        // Check if this day is configured for reboot and there was no reboot yet
        DateTime now = DateTime.Now;
        if (ShouldRun(config.Days, now.DayOfWeek) && config.LastRun.Date < now.Date)
        {
          // Check if schedule is due
          if (now >= new DateTime(now.Year, now.Month, now.Day, config.Hour, config.Minutes, 0))
            return true;
        }
      }
      return false;
    }
示例#14
0
        public override void LoadSettings()
        {
            Setting setting;

            setting           = _layer.GetSetting("PowerSchedulerShutdownActive", "false");
            checkBox1.Checked = Convert.ToBoolean(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerIdleTimeout", "5");
            numericUpDown1.Value = Convert.ToDecimal(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0");
            numUpDownStandbyAllowedStartHour.Value = Convert.ToDecimal(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24");
            numUpDownStandbyAllowedEndHour.Value = Convert.ToDecimal(setting.Value);

            setting           = _layer.GetSetting("PowerSchedulerWakeupActive", "false");
            checkBox2.Checked = Convert.ToBoolean(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerShutdownMode", "2");
            comboBox1.SelectedIndex = Convert.ToInt32(setting.Value);

            setting           = _layer.GetSetting("PowerSchedulerForceShutdown", "false");
            checkBox3.Checked = Convert.ToBoolean(setting.Value);

            setting           = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false");
            checkBox4.Checked = Convert.ToBoolean(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60");
            numericUpDown2.Value = Convert.ToDecimal(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300");
            numericUpDown4.Value = Convert.ToDecimal(setting.Value);

            setting = _layer.GetSetting("PowerSchedulerCheckInterval", "60");
            numericUpDown3.Value = Convert.ToDecimal(setting.Value);

            setting           = _layer.GetSetting("PowerSchedulerReinitializeController", "false");
            checkBox5.Checked = Convert.ToBoolean(setting.Value);

            setting       = _layer.GetSetting("PowerSchedulerCommand", string.Empty);
            textBox2.Text = setting.Value;

            setting           = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false");
            checkBox6.Checked = Convert.ToBoolean(setting.Value);

            setting           = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false");
            checkBox7.Checked = Convert.ToBoolean(setting.Value);


            EPGWakeupConfig config = new EPGWakeupConfig(_layer.GetSetting("EPGWakeupConfig", String.Empty).Value);

            foreach (EPGGrabDays day in config.Days)
            {
                switch (day)
                {
                case EPGGrabDays.Monday:
                    checkBox8.Checked = true;
                    break;

                case EPGGrabDays.Tuesday:
                    checkBox9.Checked = true;
                    break;

                case EPGGrabDays.Wednesday:
                    checkBox10.Checked = true;
                    break;

                case EPGGrabDays.Thursday:
                    checkBox11.Checked = true;
                    break;

                case EPGGrabDays.Friday:
                    checkBox12.Checked = true;
                    break;

                case EPGGrabDays.Saturday:
                    checkBox13.Checked = true;
                    break;

                case EPGGrabDays.Sunday:
                    checkBox14.Checked = true;
                    break;
                }
            }
            string hFormat, mFormat;

            if (config.Hour < 10)
            {
                hFormat = "0{0}";
            }
            else
            {
                hFormat = "{0}";
            }
            if (config.Minutes < 10)
            {
                mFormat = "0{0}";
            }
            else
            {
                mFormat = "{0}";
            }
            maskedTextBox1.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes);

            setting       = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty);
            tbEpgCmd.Text = setting.Value;

            setting       = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration");
            textBox1.Text = setting.Value;

            // Load share monitoring configuration for standby prevention
            setting = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true");
            shareMonitoring.Checked = Convert.ToBoolean(setting.Value);

            setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", "");
            inhibitStandbyShares.Rows.Clear();
            string[] shares = setting.Value.Split(';');
            foreach (string share in shares)
            {
                string[] shareItem = share.Split(',');
                if ((shareItem.Length.Equals(3)) &&
                    ((shareItem[0].Trim().Length > 0) ||
                     (shareItem[1].Trim().Length > 0) ||
                     (shareItem[2].Trim().Length > 0)))
                {
                    inhibitStandbyShares.Rows.Add(shareItem);
                }
            }

            setting            = _layer.GetSetting("NetworkMonitorEnabled", "false");
            checkBox15.Checked = Convert.ToBoolean(setting.Value);

            setting = _layer.GetSetting("NetworkMonitorIdleLimit", "2");
            numericUpDown5.Value = Convert.ToDecimal(setting.Value);
        }
示例#15
0
    /// <summary>
    /// Returns whether a schedule is due, and the EPG should run now.
    /// </summary>
    /// <returns></returns>
    private bool ShouldRunNow()
    {
      TvBusinessLayer layer = new TvBusinessLayer();
      EPGWakeupConfig config = new EPGWakeupConfig(layer.GetSetting("webepgSchedule", String.Empty).Value);

      // check if schedule is due
      // check if we've already run today
      if (config.LastRun.Day != DateTime.Now.Day)
      {
        // check if we should run today
        if (ShouldRun(config.Days, DateTime.Now.DayOfWeek))
        {
          // check if schedule is due
          DateTime now = DateTime.Now;
          if (now.Hour > config.Hour || (now.Hour == config.Hour && now.Minute >= config.Minutes))
          {
            return true;
          }
        }
      }
      return false;
    }
    private void LoadSettings()
    {
      buttonApply.Enabled = false;

      using (_settings = new MPSettings())
      {
        // Detect singleseat/multiseat
        string tvPluginDll;
        string hostName;

        tvPluginDll = Config.GetSubFolder(Config.Dir.Plugins, "windows") + @"\" + "TvPlugin.dll";
        if (File.Exists(tvPluginDll))
        {
          hostName = _settings.GetValueAsString("tvservice", "hostname", String.Empty);
          if (hostName != String.Empty && PowerManager.IsLocal(hostName))
          {
            _singleSeat = true;
            Text = "PowerScheduler Client Plugin (TV-Server on local system)";
          }
          else if (hostName == String.Empty)
          {
            _singleSeat = false;
            Text = "PowerScheduler Client Plugin (No TV-Server configured)";
          }
          else
          {
            _singleSeat = false;
            Text = "PowerScheduler Client Plugin (TV-Server on " + hostName + ")";
          }
        }
        else
        {
          _singleSeat = false;
          Text = "PowerScheduler Client Plugin (No TV-plugin installed)";
        }

        if (_singleSeat)
        {
          textBoxProfile.Text = "Standby / wakeup settings have to be made in the TV-Server Configuration";
          comboBoxProfile.Visible = false;
          flowLayoutPanelIdleTimeout.Visible = false;
          buttonExpertMode.Visible = false;
          labelExpertMode.Visible = false;
          
          tabControl.Controls.Remove(tabPageReboot);
          tabControl.Controls.Remove(tabPageProcesses);
          tabControl.Controls.Remove(tabPageNetwork);
          tabControl.Controls.Remove(tabPageShares);
          tabControl.Controls.Remove(tabPageAdvanced);

          checkBoxHomeOnly.Checked = Convert.ToBoolean(GetSetting("HomeOnly", "false"));
          textBoxCommand.Text = GetSetting("Command", string.Empty);

          return;
        }

#endif
        // Update settings of old PS versions
        UpdateSettings();

        bool buttonApplyEnabled = false;

        // General
        int profile = Convert.ToInt32(GetSetting("Profile", "-1"));
#if SERVER
        if (profile < 0 || profile > 3)
#else
        if (profile < 0 || profile > 2)
#endif
        {
          profile = GetSystemProfile();
          buttonApplyEnabled = true;
        }
        comboBoxProfile.SelectedIndex = profile;

        int idleTimeout = Convert.ToInt32(GetSetting("IdleTimeout", "-1"));
        if (idleTimeout == -1)
        {
          idleTimeout = (int)(PowerManager.RunningOnAC ? _defaultSettingsDesktopAC.idleTimeout : _defaultSettingsDesktopDC.idleTimeout);
          buttonApplyEnabled = true;
        }
        numericUpDownIdleTimeout.Value = idleTimeout;

        labelExpertMode.Text = Convert.ToBoolean(GetSetting("ExpertMode", "false")) ? "Expert Mode" : "Plug&&Play Mode";
        if (labelExpertMode.Text == "Expert Mode")
        {
          comboBoxProfile.ForeColor = SystemColors.GrayText;
          buttonExpertMode.Text = "-> Plug&&Play Mode";
        }
        else
        {
          checkBoxEPGPreventStandby.Visible = false;
          checkBoxEPGAwayMode.Visible = false;
          labelEPGCommand.Visible = false;
          textBoxEPGCommand.Visible = false;
          buttonEPGCommand.Visible = false;

          labelRebootCommand.Visible = false;
          textBoxRebootCommand.Visible = false;
          buttonRebootCommand.Visible = false;

          checkBoxAutoPowerSettings.Checked = true;

          tabControl.Controls.Remove(tabPageProcesses);
          tabControl.Controls.Remove(tabPageShares);
          tabControl.Controls.Remove(tabPageNetwork);
          tabControl.Controls.Remove(tabPageAdvanced);
          tabControl.Controls.Remove(tabPageLegacy);

          buttonExpertMode.Text = "-> Expert Mode";
        }

#if CLIENT
        // Client
        checkBoxHomeOnly.Checked = Convert.ToBoolean(GetSetting("HomeOnly", "false"));

        textBoxCommand.Text = GetSetting("Command", string.Empty);

#endif
#if SERVER
        // EPG
        {
          EPGWakeupConfig config = new EPGWakeupConfig(GetSetting("EPGWakeupConfig", String.Empty));
          foreach (EPGGrabDays day in config.Days)
          {
            switch (day)
            {
              case EPGGrabDays.Monday:
                checkBoxEPGMonday.Checked = true;
                break;
              case EPGGrabDays.Tuesday:
                checkBoxEPGTuesday.Checked = true;
                break;
              case EPGGrabDays.Wednesday:
                checkBoxEPGWednesday.Checked = true;
                break;
              case EPGGrabDays.Thursday:
                checkBoxEPGThursday.Checked = true;
                break;
              case EPGGrabDays.Friday:
                checkBoxEPGFriday.Checked = true;
                break;
              case EPGGrabDays.Saturday:
                checkBoxEPGSaturday.Checked = true;
                break;
              case EPGGrabDays.Sunday:
                checkBoxEPGSunday.Checked = true;
                break;
            }
          }
          string hFormat, mFormat;
          if (config.Hour < 10)
            hFormat = "0{0}";
          else
            hFormat = "{0}";
          if (config.Minutes < 10)
            mFormat = "0{0}";
          else
            mFormat = "{0}";
          textBoxEPG.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes);

          checkBoxEPGPreventStandby.Checked = Convert.ToBoolean(GetSetting("EPGPreventStandby", "false"));
          if (!checkBoxEPGPreventStandby.Checked)
            checkBoxEPGAwayMode.Enabled = false;

          checkBoxEPGAwayMode.Checked = Convert.ToBoolean(GetSetting("EPGAwayMode", "false"));

          checkBoxEPGWakeup.Checked = Convert.ToBoolean(GetSetting("EPGWakeup", "false"));

          textBoxEPGCommand.Text = GetSetting("EPGCommand", String.Empty);
        }

#endif

        // Reboot
        {
          EPGWakeupConfig config = new EPGWakeupConfig(GetSetting("RebootConfig", String.Empty));
          foreach (EPGGrabDays day in config.Days)
          {
            switch (day)
            {
              case EPGGrabDays.Monday:
                checkBoxRebootMonday.Checked = true;
                break;
              case EPGGrabDays.Tuesday:
                checkBoxRebootTuesday.Checked = true;
                break;
              case EPGGrabDays.Wednesday:
                checkBoxRebootWednesday.Checked = true;
                break;
              case EPGGrabDays.Thursday:
                checkBoxRebootThursday.Checked = true;
                break;
              case EPGGrabDays.Friday:
                checkBoxRebootFriday.Checked = true;
                break;
              case EPGGrabDays.Saturday:
                checkBoxRebootSaturday.Checked = true;
                break;
              case EPGGrabDays.Sunday:
                checkBoxRebootSunday.Checked = true;
                break;
            }
          }
          string hFormat, mFormat;
          if (config.Hour < 10)
            hFormat = "0{0}";
          else
            hFormat = "{0}";
          if (config.Minutes < 10)
            mFormat = "0{0}";
          else
            mFormat = "{0}";
          textBoxReboot.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes);

          checkBoxRebootWakeup.Checked = Convert.ToBoolean(GetSetting("RebootWakeup", "false"));

          textBoxRebootCommand.Text = GetSetting("RebootCommand", String.Empty);
        }

        // Processes
        textBoxProcesses.Text = GetSetting("Processes", String.Empty);
#if SERVER

        checkBoxMPClientRunning.Checked = Convert.ToBoolean(GetSetting("CheckForMPClientRunning", "false"));
#endif
        if (!checkBoxMPClientRunning.Checked && textBoxProcesses.Text == String.Empty)
          checkBoxProcessesAwayMode.Enabled = false;

        checkBoxProcessesAwayMode.Checked = Convert.ToBoolean(GetSetting("ProcessesAwayMode", "false"));

        // Active Shares
        checkBoxSharesEnabled.Checked = Convert.ToBoolean(GetSetting("ActiveSharesEnabled", "false"));
        if (!checkBoxSharesEnabled.Checked)
        {
          checkBoxSharesAwayMode.Enabled = false;
          labelShares.ForeColor = SystemColors.GrayText;
          dataGridShares.Enabled = false;
          dataGridShares.ColumnHeadersDefaultCellStyle.ForeColor = SystemColors.GrayText;
          dataGridShares.RowHeadersDefaultCellStyle.ForeColor = SystemColors.GrayText;
          dataGridShares.DefaultCellStyle.ForeColor = SystemColors.GrayText;
          buttonSelectShare.Enabled = false;
        }

        checkBoxSharesAwayMode.Checked = Convert.ToBoolean(GetSetting("ActiveSharesAwayMode", "false"));

        dataGridShares.Rows.Clear();
        string[] shares = GetSetting("ActiveShares", String.Empty).Split(';');
        foreach (string share in shares)
        {
          string[] shareItem = share.Split(',');
          if ((shareItem.Length.Equals(3)) &&
             ((shareItem[0].Trim().Length > 0) ||
              (shareItem[1].Trim().Length > 0) ||
              (shareItem[2].Trim().Length > 0)))
          {
            dataGridShares.Rows.Add(shareItem);
          }
        }
        if (dataGridShares.Rows.Count == 1)
        {
          string[] shareItem = { "", "", "" };
          dataGridShares.Rows.Add(shareItem);
        }

        // Network Monitor
        checkBoxNetworkEnabled.Checked = Convert.ToBoolean(GetSetting("NetworkMonitorEnabled", "false"));
        if (!checkBoxNetworkEnabled.Checked)
          checkBoxNetworkAwayMode.Enabled = false;

        numericUpDownNetworkIdleLimit.Value = Convert.ToDecimal(GetSetting("NetworkMonitorIdleLimit", "0"));

        checkBoxNetworkAwayMode.Checked = Convert.ToBoolean(GetSetting("NetworkMonitorAwayMode", "false"));

        // Advanced
#if SERVER
        checkBoxReinitializeController.Checked = Convert.ToBoolean(GetSetting("ReinitializeController", "false"));

        textBoxCommand.Text = GetSetting("Command", string.Empty);

#endif
        checkBoxAutoPowerSettings.Checked = Convert.ToBoolean(GetSetting("AutoPowerSettings", "true"));

        checkBoxShutdownEnabled.Checked = Convert.ToBoolean(GetSetting("ShutdownEnabled", "false"));
        if (!checkBoxShutdownEnabled.Checked)
        {
          labelShutdownMode.ForeColor = SystemColors.GrayText;
          comboBoxShutdownMode.Enabled = false;
          numericUpDownIdleTimeout.Enabled = checkBoxAutoPowerSettings.Checked;
        }

        int shutdownMode = Convert.ToInt32(GetSetting("ShutdownMode", "0"));
        if (shutdownMode < 0 || shutdownMode > 3)
          shutdownMode = 0;
        comboBoxShutdownMode.SelectedIndex = shutdownMode;

        // Legacy
        numericUpDownPreWakeupTime.Value = Convert.ToInt32(GetSetting("PreWakeupTime", "60"));

        numericUpDownPreNoStandbyTime.Value = Convert.ToInt32(GetSetting("PreNoStandbyTime", "300"));

        numericUpDownStandbyHoursFrom.Value = Convert.ToInt32(GetSetting("StandbyHoursFrom", "0"));
        numericUpDownStandbyHoursTo.Value = Convert.ToInt32(GetSetting("StandbyHoursTo", "24"));
        numericUpDownStandbyHoursOnWeekendFrom.Value = Convert.ToInt32(GetSetting("StandbyHoursOnWeekendFrom", "0"));
        numericUpDownStandbyHoursOnWeekendTo.Value = Convert.ToInt32(GetSetting("StandbyHoursOnWeekendTo", "24"));

        buttonApply.Enabled = buttonApplyEnabled;

#if SERVER
        // Ping Monitor

        bool _pingMonitorEnabled = Convert.ToBoolean(GetSetting("PingMonitorEnabled", "false"));
        checkBoxPingMonitorAwayMode.Checked = Convert.ToBoolean(GetSetting("PingMonitorAwayMode", "false"));
        if (_pingMonitorEnabled)
        {
          checkBoxPingMonitorEnable.Checked = true;
          checkBoxPingMonitorAwayMode.Enabled = true;
          buttonAdd.Enabled = true;
          buttonDelete.Enabled = true;
        }
        else
        {
          checkBoxPingMonitorEnable.Checked = false;  
          checkBoxPingMonitorAwayMode.Enabled = false;
          buttonAdd.Enabled = false;
          buttonDelete.Enabled = false;
        }
 
        listBoxHosts.Items.Clear();
        string str = GetSetting("PingMonitorHosts", "");
        if (str != "")
        {
          foreach (string str2 in str.Split(";".ToCharArray()))
          {
            this.listBoxHosts.Items.Add(str2);
          }
        }
#endif

#if CLIENT
      tabControl.Controls.Remove(tabPagePingMonitor);
#endif

      }
#if SERVER

      // Start the RefeshStatusThread responsible for refreshing status information
      _setupTvThread = Thread.CurrentThread;
      _refreshStatusThread = new Thread(RefreshStatusThread);
      _refreshStatusThread.Name = "RefreshStatusThread";
      _refreshStatusThread.IsBackground = true;
      _refreshStatusThread.Start();
#endif
    }
示例#17
0
    private DateTime GetNextWakeupSchedule(DateTime earliestWakeupTime)
    {
      TvBusinessLayer layer = new TvBusinessLayer();

      EPGWakeupConfig cfg = new EPGWakeupConfig(layer.GetSetting("webepgSchedule", String.Empty).Value);

      // Start by thinking we should run today
      DateTime nextRun = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, cfg.Hour, cfg.Minutes, 0);
      // check if we should run today or some other day in the future
      if (cfg.LastRun.Day == DateTime.Now.Day || nextRun < earliestWakeupTime)
      {
        // determine first next day to run EPG grabber
        for (int i = 1; i < 8; i++)
        {
          if (ShouldRun(cfg.Days, nextRun.AddDays(i).DayOfWeek))
          {
            nextRun = nextRun.AddDays(i);
            break;
          }
        }
        if (DateTime.Now.Day == nextRun.Day)
        {
          Log.Error("WebEPG: no valid next wakeup date for EPG grabbing found!");
          nextRun = DateTime.MaxValue;
        }
      }
      return nextRun;
    }
 private void CheckDay(EPGWakeupConfig cfg, EPGGrabDays day, bool enabled)
 {
   if (enabled)
     cfg.Days.Add(day);
 }
    private void OnPowerSchedulerEvent(PowerSchedulerEventArgs args)
    {
      switch (args.EventType)
      {
        case PowerSchedulerEventType.Started:
        case PowerSchedulerEventType.Elapsed:

          IPowerScheduler ps = GlobalServiceProvider.Instance.Get<IPowerScheduler>();
          if (ps == null)
            return;

          PowerSetting setting;
          bool enabled;

          using (Settings reader = new MPSettings())
          {
            EPGWakeupConfig config = new EPGWakeupConfig(reader.GetValueAsString("psclientplugin", "RebootConfig", String.Empty));

            if (args.EventType == PowerSchedulerEventType.Started)
            {
              // Get time of last reboot
              if (config.LastRun == DateTime.MinValue)
                config.LastRun = DateTime.Now;
              else
                config.LastRun = DateTime.Now.AddMilliseconds(-Environment.TickCount);

              // Save last reboot status
              reader.SetValue("psclientplugin", "RebootConfig", config.SerializeAsString());
              Log.Debug("RebootHandler: Set time of last reboot: {0}", config.LastRun);
            }

            // Check if system should wakeup for reboot
            setting = ps.Settings.GetSetting("RebootWakeup");
            enabled = reader.GetValueAsBool("psclientplugin", "RebootWakeup", false);
            if (setting.Get<bool>() != enabled)
            {
              setting.Set<bool>(enabled);
              if (enabled)
              {
                if (ps.IsRegistered(this as IWakeupHandler))
                  ps.Unregister(this as IWakeupHandler);
                ps.Register(this as IWakeupHandler);
              }
              else
              {
                ps.Unregister(this as IWakeupHandler);
              }
              Log.Debug("RebootHandler: Wakeup system for reboot: {0}", enabled ? "enabled" : "disabled");
            }

            // Check if a reboot time is set
            setting = ps.Settings.GetSetting("RebootConfig");
            if (!config.Equals(setting.Get<EPGWakeupConfig>()))
            {
              setting.Set<EPGWakeupConfig>(config);
              Log.Debug("RebootHandler: Reboot system at {0:00}:{1:00}", config.Hour, config.Minutes);
              if (config.Days != null)
              {
                String days = "";
                foreach (EPGGrabDays day in config.Days)
                {
                  if (days == "")
                    days = day.ToString();
                  else
                    days = days + ", " + day.ToString();
                }
                Log.Debug("RebootHandler: Reboot system on: {0}", days);
              }
            }

            if (args.EventType == PowerSchedulerEventType.Elapsed)
            {
              // Check if reboot is due
              if (ShouldRunNow())
              {
                // See if system is idle
                bool unattended, disAllowShutdown;
              String disAllowShutdownHandler, nextWakeupHandler;
              DateTime nextWakeupTime;

              // Reboot only if all other handlers allow standby
              ps.GetCurrentState(false, out unattended, out disAllowShutdown, out disAllowShutdownHandler,
                out nextWakeupTime, out nextWakeupHandler);
              if (!disAllowShutdown)
              {
                // Kick off reboot thread
                  Log.Debug("RebootHandler: Reboot is due - reboot now");
                  Thread workerThread = new Thread(new ThreadStart(RebootThread));
                  workerThread.Name = "RebootHandler";
                  workerThread.IsBackground = true;
                  workerThread.Priority = ThreadPriority.Lowest;
                  workerThread.Start();
                }
                else
                  Log.Debug("RebootHandler: Reboot is due - reboot when standby is allowed");
              }
            }
            break;
          }
      }
    }