PeerCastStation.WPF.CoreSettings.SettingViewModel.Apply C# (CSharp) Method

Apply() public method

public Apply ( ) : void
return void
    public void Apply()
    {
      if (!IsModified) return;
      IsModified = false;

      ChannelCleaner.Mode = channelCleanupMode;
      ChannelCleaner.InactiveLimit = channelCleanupInactiveLimit*60000;
      peerCast.AccessController.MaxRelays = maxRelays;
      peerCast.AccessController.MaxRelaysPerChannel = maxRelaysPerChannel;
      peerCast.AccessController.MaxPlays = maxPlays;
      peerCast.AccessController.MaxPlaysPerChannel = maxPlaysPerChannel;
      peerCast.AccessController.MaxUpstreamRate = maxUpstreamRate;
      peerCast.AccessController.MaxUpstreamRatePerChannel = maxUpstreamRatePerChannel;
      pecaApp.Settings.Get<WPFSettings>().ShowWindowOnStartup = isShowWindowOnStartup;
      if (IsListenersModified) {
        foreach (var listener in peerCast.OutputListeners.ToArray()) {
          peerCast.StopListen(listener);
        }
        foreach (var listener in ports) {
          var newlistener = peerCast.StartListen(listener.EndPoint, listener.LocalAccepts, listener.GlobalAccepts);
          newlistener.GlobalAuthorizationRequired = listener.GlobalAuthRequired;
          newlistener.LocalAuthorizationRequired = listener.LocalAuthRequired;
          newlistener.AuthenticationKey = listener.AuthenticationKey;
        }
        isListenersModified = false;
      }
      if (IsYellowPagesModified) {
        foreach (var yp in peerCast.YellowPages.ToArray()) {
          peerCast.RemoveYellowPage(yp);
        }
        foreach (var yp in yellowPages) {
          if (String.IsNullOrEmpty(yp.Name)) continue;
          if (String.IsNullOrEmpty(yp.AnnounceUri) && String.IsNullOrEmpty(yp.ChannelsUri)) continue;
          Uri announce_uri = String.IsNullOrEmpty(yp.AnnounceUri) ? null : new Uri(yp.AnnounceUri, UriKind.Absolute);
          Uri channels_uri = String.IsNullOrEmpty(yp.ChannelsUri) ? null : new Uri(yp.ChannelsUri, UriKind.Absolute);
          peerCast.AddYellowPage(yp.Protocol.Protocol, yp.Name, announce_uri, channels_uri);
        }
        isYellowPagesModified = false;
      }
      var port_mapper = pecaApp.Plugins.GetPlugin<PeerCastStation.UI.PortMapperPlugin>();
      if (port_mapper!=null) {
        port_mapper.Enabled = portMapperEnabled;
        port_mapper.DiscoverAsync()
          .ContinueWith(prev => OnPropertyChanged("PortMapperExternalAddresses"));
      }
      PortCheckStatus = PortCheckStatus.Checking;
      CheckPortAsync().ContinueWith(prev => {
        if (prev.IsCanceled || prev.IsFaulted) {
          PortCheckStatus = PortCheckStatus.Failed;
        }
        else {
          PortCheckStatus = prev.Result;
          peerCast.IsFirewalled = prev.Result!=PortCheckStatus.Opened;
        }
      });
      pecaApp.SaveSettings();
    }