예제 #1
0
bool XBMCHelper::OnSettingChanging(const CSetting *setting)
{
  if (setting == NULL)
    return false;

  const std::string &settingId = setting->GetId();
  if (settingId == CSettings::SETTING_INPUT_APPLEREMOTEMODE)
  {
    int remoteMode = ((CSettingInt*)setting)->GetValue();

    // if it's not disabled, start the event server or else apple remote won't work
    if (remoteMode != APPLE_REMOTE_DISABLED)
    {
      // if starting the event server fails, we have to revert the change
      if (!CSettings::Get().SetBool("services.esenabled", true))
        return false;
    }

    // if XBMC helper is running, prompt user before effecting change
    if (IsRunning() && GetMode() != remoteMode)
    {
      bool cancelled;
      if (!CGUIDialogYesNo::ShowAndGetInput(CVariant{13144}, CVariant{13145}, cancelled, CVariant{""}, CVariant{""}, 10000))
        return false;
      // reload configuration
      else
        Configure();
    }
    // set new configuration.
    else
      Configure();

    if (ErrorStarting() == true)
    {
      // inform user about error
      CGUIDialogOK::ShowAndGetInput(CVariant{13620}, CVariant{13621});
      return false;
    }
  }

  if (settingId == CSettings::SETTING_INPUT_APPLEREMOTEALWAYSON)
  {
    HandleLaunchAgent();
  }

  return true;
}
예제 #2
0
bool XBMCHelper::OnSettingChanging(const CSetting *setting)
{
    if (setting == NULL)
        return false;

    const std::string &settingId = setting->GetId();
    if (settingId == "input.appleremotemode")
    {
        int remoteMode = ((CSettingInt*)setting)->GetValue();

        // if it's not disabled, start the event server or else apple remote won't work
        if (remoteMode != APPLE_REMOTE_DISABLED)
        {
            // if starting the event server fails, we have to revert the change
            if (!CSettings::Get().SetBool("services.esenabled", true))
                return false;
        }

        // if XBMC helper is running, prompt user before effecting change
        if (IsRunning() && GetMode() != remoteMode)
        {
            bool cancelled;
            if (!CGUIDialogYesNo::ShowAndGetInput(13144, 13145, 13146, 13147, -1, -1, cancelled, 10000))
                return false;
            // reload configuration
            else
                Configure();
        }
        // set new configuration.
        else
            Configure();

        if (ErrorStarting() == true)
        {
            // inform user about error
            CGUIDialogOK::ShowAndGetInput(13620, 13621, 20022, 20022);
            return false;
        }
    }

    return true;
}