private void AddMediaSource(object parameters)
        {
            MediaSource newMediaSource = new MediaSource {
                Name = NewMediaSourceName, Path = NewMediaSourcePath
            };

            MediaSources.Add(newMediaSource);
        }
 private void ReadSettingsFromXml()
 {
     MediaSources.Clear();
     if (Settings.properties.MediaSources != null)
     {
         foreach (MediaSource ms in Settings.properties.MediaSources)
         {
             MediaSources.Add(ms);
         }
     }
 }
Esempio n. 3
0
 public SettingsViewModel()
 {
     // 由于默认值不是常量,因此需要动态注册
     SettingService.Instance.RegisterSetting(this, nameof(PriorSource), null, MediaSources.First());
     SettingService.Instance.RegisterSetting(this, nameof(Theme), null, ThemeList.First());
     SettingService.Instance.RegisterSetting(this, nameof(ReminderSpanAhead), null, TimeSpan.FromMinutes(5));
     SettingService.Instance.ApplySettingAttributes(this);
     ClearCacheFiles = new DelegateCommand(async() =>
     {
         await CacheService.ClearCache();
         await new MessageDialog("成功清空缓存", "成功").ShowAsync();
         CacheFileSize = 0;
     }, () => CacheFileSize > 0);
 }
        private IEnumerable <Song> LoadAllSongs()
        {
            try
            {
                IEnumerable <string> sourcePaths    = MediaSources.ToNotNull();
                IEnumerable <string> nonHiddenFiles = sourcePaths.SelectMany(LoadFilePaths).Where(IsNotHidden);

                return(nonHiddenFiles.Select(p => new Song(p)));
            }
            catch
            {
                return(Enumerable.Empty <Song>());
            }
        }
 private void DeleteMediaSource(object parameters)
 {
     System.Collections.IList items = (System.Collections.IList)parameters;
     for (int ms = 0; ms < items.Count; ms++)
     {
         try
         {
             MediaSources.Remove((MediaSource)items[ms]);
         }
         catch (InvalidCastException ex)
         {
             MessageBox.Show(String.Format("Invalid element. Exception: {0}", ex.Message));
         }
         catch (ArgumentOutOfRangeException ex)
         {
             MessageBox.Show(ex.Message);
         }
     }
 }
Esempio n. 6
0
        /// <summary>
        /// 添加节目源
        /// </summary>
        public void AddSource(ProgramSource program)
        {
            if (ProgramInfo == null)
            {
                IsThumbAvaliable = program.IsThumbAvaliable;
                ThumbImage       = program.ThumbImage;
                ProgramInfo      = program.ProgramInfo;
                MediaSources.Add(new SourceRecord(program.SourceStation.IdentifierName, program.MediaSource));
                counter.Add(program.SourceStation.IdentifierName, 1);
            }
            else
            {
                if (ProgramInfo != null && ProgramInfo.Channel != program.ProgramInfo.Channel)
                {
                    throw new InvalidOperationException("添加的节目不属于同一个频道");
                }
                ProgramInfo |= program.ProgramInfo;
                var idn = program.SourceStation.IdentifierName;
                if (!counter.ContainsKey(idn))
                {
                    counter.Add(idn, 0);
                }
                if (!string.IsNullOrWhiteSpace(program.MediaSourceTag))
                {
                    MediaSources.Add(new SourceRecord($"{idn}-{program.MediaSourceTag}", program.MediaSource));
                }
                else
                {
                    MediaSources.Add(new SourceRecord($"{idn}", program.MediaSource));
                }
                counter[idn]++;

                if (!IsThumbAvaliable && program.IsThumbAvaliable)
                {
                    IsThumbAvaliable = true;
                    ThumbImage       = program.ThumbImage;
                }
            }
        }
        public override void Activate()
        {
            const bool suppressMediaForDebugging = false;

            timeActivated       = DateTime.Now;
            videoPlayIsComplete = false;
            dieStoppedRolling   = false;

            if (!suppressMediaForDebugging)
            {
                string[] mediaSources = MediaSources.Split(';');
                foreach (string mediaSource in mediaSources)
                {
                    ShowStampedeMediaSource(mediaSource.Trim(), true);
                }
            }

            stampedePlaybackTimer.Start();
            stampedeDieRollGuid = Guid.NewGuid().ToString();
            DungeonMasterApp.SetNextStampedeRoll(CardName, UserName, DamageStr, stampedeDieRollGuid);
            remindDungeonMasterTimer.Start();
            HubtasticBaseStation.DiceStoppedRolling += HubtasticBaseStation_DiceStoppedRolling;
        }
        public MainWindowViewModel()
        {
            #region ChangeNumberOfCubesCommand
            ChangeNumberOfCubesCommand = new RelayCommand<EventArgs>(e =>
                {
                    Status = Strings.ChangingNumberStatus;
                    var args = e as RoutedPropertyChangedEventArgs<double>;
                    if (args != null)
                    {
                        var numToChange = Math.Abs(Convert.ToInt32(CubeViewModels.Count - args.NewValue));
                        if (args.NewValue < CubeViewModels.Count) // removing cubes
                        {
                            for (var i = 0; i < numToChange; i++)
                            {
                                CubeViewModels.RemoveAt(CubeViewModels.Count - 1);
                            }
                            NeighborCalculator.CalculateNeighbors(CubeViewModels);
                        }
                        else if (args.NewValue > CubeViewModels.Count) // adding cubes
                        {
                            AddNewCubes(numToChange);
                            Status = ReadyStatus;
                            SnapToGridCommand.Execute(null);
                            if (AppRunner.IsRunning)
                            {
                                AppRunner.App.AssociateCubes(CubeSet);
                            }
                        }
                    }
                    Status = ReadyStatus;
                });
            #endregion
            #region SnapToGridCommand
            SnapToGridCommand = new RelayCommand(() =>
                {
                    Status = Strings.SnappingStatus;
                    for (var i = 0; i < Math.Ceiling(CubeViewModels.Count / 4.0); i++)
                    {
                        for (var j = 0; j < 4; j++)
                        {
                            if ((i * 4) + j > CubeViewModels.Count - 1)
                            {
                                NeighborCalculator.CalculateNeighbors(CubeViewModels);
                                Status = ReadyStatus;
                                return;
                            }
                            CubeViewModels[(i * 4) + j].PositionX = 200 * j;
                            CubeViewModels[(i * 4) + j].PositionY = 200 * i;
                        }
                    }
                    NeighborCalculator.CalculateNeighbors(CubeViewModels);
                    Status = ReadyStatus;
                });
            #endregion
            #region LoadAFileCommand
            LoadAFileCommand = new RelayCommand(() =>
                {
                    if (AppRunner.IsRunning)
                    {
                        AppRunner.StopExecution();
                    }

                    Status = Strings.SelectAppStatus;

                    var openFileDialog = new OpenFileDialog
                                             {
                                                 Filter = "C# Library (*.dll)|*.dll|All Files (*.*)|*.*",
                                                 FilterIndex = 1,
                                                 Multiselect = false
                                             };
                    if (openFileDialog.ShowDialog() == true)
                    {
                        Status = Strings.LoadingStatus;
                        using (var fileStream = openFileDialog.File.OpenRead())
                        {
                            try
                            {
                                AppRunner.LoadApplication(fileStream);
                            }
                            catch (TypeLoadException e)
                            {
                                Status = String.Format(Strings.LoadingError + ": {0}", e.Message);
                            }
                        }
                        if (AppRunner.IsLoaded)
                        {
                            Status = Strings.LoadingImagesStatus;
                            if (openFileDialog.File.Directory != null)
                            {
                                _imageSources =
                                    new ImageSources(openFileDialog.File.Directory.FullName + "\\assets\\images");
                                SoundSources =
                                    new SoundSources(openFileDialog.File.Directory.FullName + "\\assets\\sounds", ActiveSounds, InactiveSounds);

                                AppRunner.App.Images = (ImageSet) _imageSources.GetMediaSet();

                                foreach (var cubeViewModel in CubeViewModels)
                                {
                                    cubeViewModel.ImageSources = _imageSources;
                                }

                                Status = openFileDialog.File.Name + " " + Strings.LoadingSuccess;
                                AppRunner.StartExecution(CubeSet, Application.Current.MainWindow.Dispatcher, (SoundSet) SoundSources.GetMediaSet());
                                AppRunner.NotifyApplicationException += DisplayException;
                                NotifyPropertyChanged("PauseOrResumeText");
                                NotifyPropertyChanged("CanPauseOrResume");
                            }
                            else
                            {
                                Status = Strings.LoadingFail;
                            }
                        }
                    }
                    else
                    {
                        Status = Strings.LoaderClosed;
                    }
                });
            #endregion
            #region PauseOrResumeCommand

            PauseOrResumeCommand = new RelayCommand(() =>
            {
                if (AppRunner.IsRunning)
                {
                    AppRunner.PauseExecution();
                    foreach (var sound in ActiveSounds)
                    {
                        sound.SetResumeSpot();
                        InactiveSounds.Add(sound);
                    }
                    ActiveSounds.Clear();
                }
                else
                {
                    AppRunner.ResumeExecution();
                    foreach (var sound in InactiveSounds)
                    {
                        ActiveSounds.Add(sound);
                        sound.RestoreResumeSpot();
                    }
                    InactiveSounds.Clear();
                }
                NotifyPropertyChanged("PauseOrResumeText");
            });
            #endregion

            AppRunner = AppRunner.GetInstance();

            CubeViewModels = new ObservableCollection<CubeViewModel>();
            AddNewCubes(NumInitialCubes);
            SnapToGridCommand.Execute(null);
            ActiveSounds = new ObservableCollection<SoundViewModel>();
            InactiveSounds = new Collection<SoundViewModel>();
            Status = ReadyStatus;
        }
        internal CspOptions Build()
        {
            List <string> directives = new List <string>();

            string connectSourcesString = ConnectSources.Build();

            if (!string.IsNullOrEmpty(connectSourcesString))
            {
                directives.Add($"connect-src {connectSourcesString}");
            }

            string defaultResourcesString = DefaultSources.Build();

            if (!string.IsNullOrEmpty(defaultResourcesString))
            {
                directives.Add($"default-src {defaultResourcesString}");
            }

            string fontSourcesString = FontSources.Build();

            if (!string.IsNullOrEmpty(fontSourcesString))
            {
                directives.Add($"font-src {fontSourcesString}");
            }

            string frameSourcesString = FrameSources.Build();

            if (!string.IsNullOrEmpty(frameSourcesString))
            {
                directives.Add($"frame-src {frameSourcesString}");
            }

            string imgSourcesString = ImgSources.Build();

            if (!string.IsNullOrEmpty(imgSourcesString))
            {
                directives.Add($"img-src {imgSourcesString}");
            }

            string manifestSourcesString = ManifestSources.Build();

            if (!string.IsNullOrEmpty(manifestSourcesString))
            {
                directives.Add($"manifest-src {manifestSourcesString}");
            }

            string mediaSourcesString = MediaSources.Build();

            if (!string.IsNullOrEmpty(mediaSourcesString))
            {
                directives.Add($"media-src {mediaSourcesString}");
            }

            string objectSourcesString = ObjectSources.Build();

            if (!string.IsNullOrEmpty(objectSourcesString))
            {
                directives.Add($"object-src {objectSourcesString}");
            }

            string prefetchSourcesString = PrefetchSources.Build();

            if (!string.IsNullOrEmpty(prefetchSourcesString))
            {
                directives.Add($"prefetch-src {prefetchSourcesString}");
            }

            string scriptSourcesString = ScriptSources.Build();

            if (!string.IsNullOrEmpty(scriptSourcesString))
            {
                directives.Add($"script-src {scriptSourcesString}");
            }

            string styleSourcesString = StyleSources.Build();

            if (!string.IsNullOrEmpty(styleSourcesString))
            {
                directives.Add($"style-src {styleSourcesString}");
            }

            string webrtcSourcesString = WebRtcSources.Build();

            if (!string.IsNullOrEmpty(webrtcSourcesString))
            {
                directives.Add($"webrtc-src {webrtcSourcesString}");
            }

            string workerSourcesString = WorkerSources.Build();

            if (!string.IsNullOrEmpty(workerSourcesString))
            {
                directives.Add($"worker-src {workerSourcesString}");
            }

            string baseUriString = BaseUri.Build();

            if (!string.IsNullOrEmpty(baseUriString))
            {
                directives.Add($"base-uri {baseUriString}");
            }

            string pluginTypesString = PluginTypes.Build();

            if (!string.IsNullOrEmpty(pluginTypesString))
            {
                directives.Add($"plugin-types {pluginTypesString}");
            }

            string sanboxOptionsString = Sandbox.Build();

            if (!string.IsNullOrEmpty(sanboxOptionsString))
            {
                directives.Add($"sandbox {sanboxOptionsString}");
            }

            string formActionString = FormAction.Build();

            if (!string.IsNullOrEmpty(formActionString))
            {
                directives.Add($"form-action {formActionString}");
            }

            string frameAncestors = FrameAncestors.Build();

            if (!string.IsNullOrEmpty(frameAncestors))
            {
                directives.Add($"frame-ancestors {frameAncestors}");
            }

            if (upgrateInsecureRequests)
            {
                directives.Add("upgrade-insecure-requests");
            }

            if (blockAllMixedContent)
            {
                directives.Add("block-all-mixed-content");
            }

            string requireSriForString = RequireSriFor.Build();

            if (!string.IsNullOrEmpty(requireSriForString))
            {
                directives.Add($"require-sri-for {requireSriForString}");
            }

            if (reportGroup != null)
            {
                directives.Add($"report-to {reportGroup.Group}");
            }

            CspOptions options = new CspOptions
            {
                Content        = string.Join("; ", directives),
                ReportingGroup = reportGroup
            };

            return(options);
        }