protected override async void OnActivate()
        {
            if (string.IsNullOrEmpty(PresetFileName))
            {
                return;
            }
            maxVolume = settings.Get <int>("MaxVolume").GetOrElse(100);
            MuteVolume();
            NotifyButtons();

            fileManager.FileName = PresetFileName;
            eventAggregator.Publish(new Events.HearingTest.PitchGeneratorChanged(pitchGenerator));
            eventAggregator.Publish(new Events.HearingTest.ChannelChanged(CurrentChannel));
            eventAggregator.Publish(new Events.HearingTest.StopPlaying());
            IsPlaying = false;

            PresetItems     = new ReadOnlyTraversableList <PresetItemViewModel>((await fileManager.GetCollection <PresetItemViewModel>()).ToList());
            ProgressMaximum = PresetItems.Count;
            if (!PresetItems.Any())
            {
                return;
            }

            CurrentItem = PresetItems.Next();
            pitchGenerator.Frequency = CurrentItem.Frequency;
            CurrentFrequency         = CurrentItem.Frequency.ToString(CultureInfo.InvariantCulture);
            NotifyButtons();
        }
        public HearingTestViewModel(INavigationService navigationService,
                                    IAsyncXmlFileManager fileManager,
                                    ISettings settings,
                                    IEventAggregator eventAggregator,
                                    IPitchGenerator pitchGenerator) : base(navigationService)
        {
            this.settings        = settings;
            this.pitchGenerator  = pitchGenerator;
            this.eventAggregator = eventAggregator;
            this.fileManager     = fileManager;

            IsPlaying            = false;
            IsLeftChannelChecked = true;
            results = new Dictionary <Channel, ISet <HearingResult> >(2);
            results[Channel.Right] = new HashSet <HearingResult>(new FrequencyResultComparer());
            results[Channel.Left]  = new HashSet <HearingResult>(new FrequencyResultComparer());
            PresetItems            = new ReadOnlyTraversableList <PresetItemViewModel>();
        }
        protected override async void OnActivate()
        {
            if (string.IsNullOrEmpty(PresetFileName))
                return;
            maxVolume = settings.Get<int>("MaxVolume").GetOrElse(100);
            MuteVolume();
            NotifyButtons();

            fileManager.FileName = PresetFileName;
            eventAggregator.Publish(new Events.HearingTest.PitchGeneratorChanged(pitchGenerator));
            eventAggregator.Publish(new Events.HearingTest.ChannelChanged(CurrentChannel));
            eventAggregator.Publish(new Events.HearingTest.StopPlaying());
            IsPlaying = false;

            PresetItems = new ReadOnlyTraversableList<PresetItemViewModel>((await fileManager.GetCollection<PresetItemViewModel>()).ToList());
            ProgressMaximum = PresetItems.Count;
            if (!PresetItems.Any())
                return;

            CurrentItem = PresetItems.Next();
            pitchGenerator.Frequency = CurrentItem.Frequency;
            CurrentFrequency = CurrentItem.Frequency.ToString(CultureInfo.InvariantCulture);
            NotifyButtons();
        }
        public HearingTestViewModel(INavigationService navigationService, 
            IAsyncXmlFileManager fileManager, 
            ISettings settings,
            IEventAggregator eventAggregator, 
            IPitchGenerator pitchGenerator) : base(navigationService)
        {
            this.settings = settings;
            this.pitchGenerator = pitchGenerator;
            this.eventAggregator = eventAggregator;
            this.fileManager = fileManager;

            IsPlaying = false;
            IsLeftChannelChecked = true;
            results = new Dictionary<Channel, ISet<HearingResult>>(2);
            results[Channel.Right] = new HashSet<HearingResult>(new FrequencyResultComparer());
            results[Channel.Left] = new HashSet<HearingResult>(new FrequencyResultComparer());            
            PresetItems = new ReadOnlyTraversableList<PresetItemViewModel>();
        }