コード例 #1
0
        public SoundViewModel(
            Sound s,
            IMixMediaPlayerService playerService,
            ISoundDataProvider soundDataProvider,
            ISoundMixService soundMixService,
            ITelemetry telemetry,
            IRenamer renamer,
            IDialogService dialogService,
            IIapService iapService,
            IDownloadManager downloadManager)
        {
            Guard.IsNotNull(s, nameof(s));
            Guard.IsNotNull(playerService, nameof(playerService));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(soundMixService, nameof(soundMixService));
            Guard.IsNotNull(renamer, nameof(renamer));
            Guard.IsNotNull(dialogService, nameof(dialogService));
            Guard.IsNotNull(iapService, nameof(iapService));
            Guard.IsNotNull(downloadManager, nameof(downloadManager));

            _sound             = s;
            _soundMixService   = soundMixService;
            _playerService     = playerService;
            _soundDataProvider = soundDataProvider;
            _telemetry         = telemetry;
            _renamer           = renamer;
            _dialogService     = dialogService;
            _iapService        = iapService;
            _downloadManager   = downloadManager;

            DeleteCommand = new RelayCommand(DeleteSound);
            RenameCommand = new AsyncRelayCommand(RenameAsync);
            PlayCommand   = new AsyncRelayCommand(PlayAsync);
        }
コード例 #2
0
        public SoundVmFactory(
            IDownloadManager downloadManager,
            IMixMediaPlayerService player,
            ITelemetry telemetry,
            IPreviewService previewService,
            ISoundDataProvider soundDataProvider,
            ISoundMixService soundMixService,
            IUserSettings userSettings,
            IIapService iapService,
            IRenamer renamer,
            IServiceProvider serviceProvider)
        {
            Guard.IsNotNull(downloadManager, nameof(downloadManager));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(player, nameof(player));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(iapService, nameof(iapService));
            Guard.IsNotNull(previewService, nameof(previewService));
            Guard.IsNotNull(userSettings, nameof(userSettings));
            Guard.IsNotNull(soundMixService, nameof(soundMixService));
            Guard.IsNotNull(renamer, nameof(renamer));
            Guard.IsNotNull(serviceProvider, nameof(serviceProvider));

            _userSettings      = userSettings;
            _downloadManager   = downloadManager;
            _previewService    = previewService;
            _soundMixService   = soundMixService;
            _iapService        = iapService;
            _soundDataProvider = soundDataProvider;
            _player            = player;
            _renamer           = renamer;
            _telemetry         = telemetry;
            _serviceProvider   = serviceProvider;
        }
コード例 #3
0
        public OnlineSoundViewModel(
            Sound s,
            IDownloadManager downloadManager,
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry,
            IPreviewService previewService,
            IIapService iapService,
            IDialogService dialogService)
        {
            Guard.IsNotNull(s, nameof(s));
            Guard.IsNotNull(downloadManager, nameof(downloadManager));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(iapService, nameof(iapService));
            Guard.IsNotNull(previewService, nameof(previewService));
            Guard.IsNotNull(dialogService, nameof(dialogService));
            _sound             = s;
            _downloadManager   = downloadManager;
            _previewService    = previewService;
            _iapService        = iapService;
            _soundDataProvider = soundDataProvider;
            _telemetry         = telemetry;
            _dialogService     = dialogService;

            _downloadProgress = new Progress <double>();
            _downloadProgress.ProgressChanged    += OnProgressChanged;
            _soundDataProvider.LocalSoundDeleted += OnSoundDeleted;
            _iapService.ProductPurchased         += OnProductPurchased;

            DownloadCommand = new AsyncRelayCommand(DownloadAsync);
            LoadCommand     = new AsyncRelayCommand(LoadAsync);
            DeleteCommand   = new AsyncRelayCommand(DeleteSound);
            BuyCommand      = new AsyncRelayCommand(BuySoundAsync);
            PreviewCommand  = new RelayCommand(Preview);
        }
コード例 #4
0
ファイル: SyncEngine.cs プロジェクト: jenius-apps/ambie
        public SyncEngine(
            ICloudFileWriter cloudFileWriter,
            IDownloadManager downloadManager,
            IAccountManager accountManager,
            ISoundDataProvider soundDataProvider,
            IOnlineSoundDataProvider onlineSoundDataProvider,
            IAppSettings appSettings,
            ISoundMixService soundMixService,
            ITelemetry telemetry)
        {
            Guard.IsNotNull(cloudFileWriter, nameof(cloudFileWriter));
            Guard.IsNotNull(downloadManager, nameof(downloadManager));
            Guard.IsNotNull(accountManager, nameof(accountManager));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(onlineSoundDataProvider, nameof(onlineSoundDataProvider));
            Guard.IsNotNull(soundMixService, nameof(soundMixService));
            Guard.IsNotNull(appSettings, nameof(appSettings));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNullOrEmpty(appSettings.CloudSyncFileUrl, nameof(appSettings.CloudSyncFileUrl));

            _accountManager          = accountManager;
            _cloudFileWriter         = cloudFileWriter;
            _downloadManager         = downloadManager;
            _soundDataProvider       = soundDataProvider;
            _onlineSoundDataProvider = onlineSoundDataProvider;
            _soundMixService         = soundMixService;
            _telemetry        = telemetry;
            _cloudSyncFileUrl = appSettings.CloudSyncFileUrl;
            _dataChangeQueue  = new Queue <string>();

            _downloadManager.DownloadsCompleted  += OnDownloadsCompleted;
            _soundDataProvider.LocalSoundDeleted += OnLocalSoundDeleted;
            _soundDataProvider.LocalSoundAdded   += OnLocalSoundAdded;
            _accountManager.SignInUpdated        += OnSignInUpdated;
        }
コード例 #5
0
        public ActiveTrackListViewModel(
            IMixMediaPlayerService player,
            ISoundVmFactory soundVmFactory,
            IUserSettings userSettings,
            ITelemetry telemetry,
            ISoundMixService soundMixService,
            ISoundDataProvider soundDataProvider,
            IAppSettings appSettings)
        {
            Guard.IsNotNull(player, nameof(player));
            Guard.IsNotNull(soundVmFactory, nameof(soundVmFactory));
            Guard.IsNotNull(userSettings, nameof(userSettings));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(soundMixService, nameof(soundMixService));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(appSettings, nameof(appSettings));

            _loadPreviousState = appSettings.LoadPreviousState;
            _telemetry         = telemetry;
            _soundMixService   = soundMixService;
            _soundDataProvider = soundDataProvider;
            _userSettings      = userSettings;
            _soundVmFactory    = soundVmFactory;
            _player            = player;

            RemoveCommand = new RelayCommand <Sound>(RemoveSound);
            SaveCommand   = new AsyncRelayCommand <string>(SaveAsync);
            ClearCommand  = new RelayCommand(ClearAll);
        }
コード例 #6
0
        public SoundViewModel(
            Sound s,
            IMixMediaPlayerService playerService,
            int index,
            ISoundDataProvider soundDataProvider,
            ISoundMixService soundMixService,
            ITelemetry telemetry,
            IRenamer renamer)
        {
            Guard.IsNotNull(s, nameof(s));
            Guard.IsNotNull(playerService, nameof(playerService));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(soundMixService, nameof(soundMixService));
            Guard.IsNotNull(renamer, nameof(renamer));

            Index              = index;
            _sound             = s;
            _soundMixService   = soundMixService;
            _playerService     = playerService;
            _soundDataProvider = soundDataProvider;
            _telemetry         = telemetry;
            _renamer           = renamer;

            _playerService.SoundRemoved += OnSoundPaused;
            _playerService.SoundAdded   += OnSoundPlayed;

            DeleteCommand = new RelayCommand(DeleteSound);
            RenameCommand = new AsyncRelayCommand(RenameAsync);
        }
コード例 #7
0
        public StreamingSoundBuffer(Device device, WaveFormat format, ISoundDataProvider provider)
        {
            NextID++;

            this.device   = device;
            this.provider = provider;

            BufferDescription description = new BufferDescription(format);

            description.BufferBytes           = BufferSize;
            description.ControlPositionNotify = true;
            description.CanGetCurrentPosition = true;
            description.ControlVolume         = true;
            description.LocateInHardware      = false;
            description.LocateInSoftware      = true;
            description.GlobalFocus           = false;
            description.StickyFocus           = false;

            try
            {
                buffer = new SecondaryBuffer(description, device);
                buffer.SetCurrentPosition(0);
                buffer.Volume = 0;
            }
            catch (Exception ex)
            {
                if (buffer != null)
                {
                    buffer.Dispose();
                }
                throw new SoundSystemException(ex, "Failed to create SecondaryBuffer ID {0}.", NextID);
            }

            notifier    = new Notify(buffer);
            notifyEvent = new AutoResetEvent(false);
            BufferPositionNotify[] notifications = new BufferPositionNotify[Notifications];
            for (int i = 0; i < Notifications; i++)
            {
                if (notifyEvent.SafeWaitHandle.IsClosed || notifyEvent.SafeWaitHandle.IsInvalid)
                {
                    throw new SoundSystemException("SecondaryBuffer ID {0} notifier handle was closed or invalid.", NextID);
                }
                else
                {
                    notifications[i].EventNotifyHandle = notifyEvent.SafeWaitHandle.DangerousGetHandle();
                    notifications[i].Offset            = SectorSize * i - 1;
                }
            }
            notifier.SetNotificationPositions(notifications, Notifications);

            data = provider.GetNextChunk();
            FillData();
            FillData(); // do this twice, to have a 370 or so ms lead, in case something were to happen

            dataManager          = new Thread(new ThreadStart(DataStream));
            dataManager.Name     = "Prometheus Sound Stream #" + NextID.ToString();
            dataManager.Priority = ThreadPriority.AboveNormal;
            dataManager.Start(); // must lock buffer from now on
        }
コード例 #8
0
        public Renamer(
            ISoundDataProvider soundDataProvider,
            IDialogService dialogService)
        {
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(dialogService, nameof(dialogService));

            _dialogService     = dialogService;
            _soundDataProvider = soundDataProvider;
        }
コード例 #9
0
        public SoundMixService(
            ISoundDataProvider soundDataProvider,
            IMixMediaPlayerService player)
        {
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(player, nameof(player));

            _soundDataProvider = soundDataProvider;
            _player            = player;
        }
コード例 #10
0
        /// <summary>
        /// Default constructor. Must initialize with <see cref="LoadAsync"/>
        /// immediately after creation.
        /// </summary>
        public MainPageViewModel(IMediaPlayerService mediaPlayerService, ISoundDataProvider soundDataProvider)
        {
            Guard.IsNotNull(mediaPlayerService, nameof(mediaPlayerService));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));

            _player   = mediaPlayerService;
            _provider = soundDataProvider;

            LoadCommand      = new AsyncRelayCommand(LoadAsync);
            PlaySoundCommand = new RelayCommand <SoundViewModel>(PlaySound);
        }
コード例 #11
0
        public WindowsDownloadManager(
            IFileDownloader fileDownloader,
            ISoundDataProvider soundDataProvider,
            IOnlineSoundDataProvider onlineSoundDataProvider)
        {
            Guard.IsNotNull(fileDownloader, nameof(fileDownloader));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(onlineSoundDataProvider, nameof(onlineSoundDataProvider));

            _fileDownloader          = fileDownloader;
            _soundDataProvider       = soundDataProvider;
            _onlineSoundDataProvider = onlineSoundDataProvider;
        }
コード例 #12
0
        public ShareResultsViewModel(
            IOnlineSoundDataProvider dataProvider,
            ISoundDataProvider localDataProvider,
            ISoundVmFactory soundVmFactory)
        {
            Guard.IsNotNull(dataProvider, nameof(dataProvider));
            Guard.IsNotNull(soundVmFactory, nameof(soundVmFactory));
            Guard.IsNotNull(localDataProvider, nameof(localDataProvider));

            _localDataProvider  = localDataProvider;
            _onlineDataProvider = dataProvider;
            _soundVmFactory     = soundVmFactory;
        }
コード例 #13
0
        public CatalogueListViewModel(
            IOnlineSoundDataProvider dataProvider,
            ISoundDataProvider soundDataProvider,
            ISoundVmFactory soundVmFactory)
        {
            Guard.IsNotNull(dataProvider, nameof(dataProvider));
            Guard.IsNotNull(soundVmFactory, nameof(soundVmFactory));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));

            _soundDataProvider = soundDataProvider;
            _dataProvider      = dataProvider;
            _soundVmFactory    = soundVmFactory;
        }
コード例 #14
0
        public CatalogueListViewModel(
            IOnlineSoundDataProvider dataProvider,
            ISoundDataProvider soundDataProvider,
            ISoundVmFactory soundVmFactory)
        {
            Guard.IsNotNull(dataProvider, nameof(dataProvider));
            Guard.IsNotNull(soundVmFactory, nameof(soundVmFactory));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));

            _soundDataProvider = soundDataProvider;
            _dataProvider      = dataProvider;
            _soundVmFactory    = soundVmFactory;

            LoadCommand = new AsyncRelayCommand(LoadAsync);
        }
コード例 #15
0
        /// <summary>
        /// Default constructor. Must initialize with <see cref="LoadAsync"/>
        /// immediately after creation.
        /// </summary>
        public SoundListViewModel(
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry,
            ISoundVmFactory soundVmFactory)
        {
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(soundVmFactory, nameof(soundVmFactory));

            _provider  = soundDataProvider;
            _telemetry = telemetry;
            _factory   = soundVmFactory;

            LoadCommand = new AsyncRelayCommand(LoadAsync);
        }
コード例 #16
0
        public SoundVmFactory(
            IDownloadManager downloadManager,
            IMediaPlayerService player,
            ITelemetry telemetry,
            ISoundDataProvider soundDataProvider)
        {
            Guard.IsNotNull(downloadManager, nameof(downloadManager));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(player, nameof(player));
            Guard.IsNotNull(telemetry, nameof(telemetry));

            _downloadManager   = downloadManager;
            _soundDataProvider = soundDataProvider;
            _player            = player;
            _telemetry         = telemetry;
        }
コード例 #17
0
        /// <summary>
        /// Default constructor. Must initialize with <see cref="LoadAsync"/>
        /// immediately after creation.
        /// </summary>
        public SoundListViewModel(
            IMediaPlayerService mediaPlayerService,
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry)
        {
            Guard.IsNotNull(mediaPlayerService, nameof(mediaPlayerService));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));

            _player    = mediaPlayerService;
            _provider  = soundDataProvider;
            _telemetry = telemetry;

            LoadCommand      = new AsyncRelayCommand(LoadAsync);
            PlaySoundCommand = new RelayCommand <SoundViewModel>(PlaySound);
        }
コード例 #18
0
        public ScreensaverViewModel(
            ITimerService timerService,
            IMixMediaPlayerService mediaPlayerService,
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry)
        {
            Guard.IsNotNull(timerService, nameof(timerService));
            Guard.IsNotNull(mediaPlayerService, nameof(mediaPlayerService));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));

            _telemetry             = telemetry;
            _mediaPlayerService    = mediaPlayerService;
            _timerService          = timerService;
            _soundDataProvider     = soundDataProvider;
            _timerService.Interval = ImageTimeLength;
        }
コード例 #19
0
        /// <summary>
        /// Default constructor. Must initialize with <see cref="LoadAsync"/>
        /// immediately after creation.
        /// </summary>
        public SoundListViewModel(
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry,
            ISoundVmFactory soundVmFactory)
        {
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            Guard.IsNotNull(soundVmFactory, nameof(soundVmFactory));

            _provider  = soundDataProvider;
            _telemetry = telemetry;
            _factory   = soundVmFactory;

            LoadCommand      = new AsyncRelayCommand(LoadAsync);
            PlaySoundCommand = new RelayCommand <SoundViewModel>(PlaySound);

            _provider.LocalSoundAdded   += OnLocalSoundAdded;
            _provider.LocalSoundDeleted += OnLocalSoundDeleted;
        }
コード例 #20
0
        public SoundViewModel(
            Sound s,
            IMediaPlayerService playerService,
            int index,
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry)
        {
            Guard.IsNotNull(s, nameof(s));
            Guard.IsNotNull(playerService, nameof(playerService));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));

            Index          = index;
            _sound         = s;
            _playerService = playerService;
            _playerService.PlaybackStateChanged += PlayerService_PlaybackStateChanged;
            _soundDataProvider = soundDataProvider;
            _telemetry         = telemetry;

            DeleteCommand = new RelayCommand(DeleteSound);
        }
コード例 #21
0
        public OnlineSoundViewModel(
            Sound s,
            IDownloadManager downloadManager,
            ISoundDataProvider soundDataProvider,
            ITelemetry telemetry)
        {
            Guard.IsNotNull(s, nameof(s));
            Guard.IsNotNull(downloadManager, nameof(downloadManager));
            Guard.IsNotNull(soundDataProvider, nameof(soundDataProvider));
            Guard.IsNotNull(telemetry, nameof(telemetry));
            _sound             = s;
            _downloadManager   = downloadManager;
            _soundDataProvider = soundDataProvider;
            _telemetry         = telemetry;

            _downloadProgress = new Progress <double>();
            _downloadProgress.ProgressChanged    += OnProgressChanged;
            _soundDataProvider.LocalSoundDeleted += OnSoundDeleted;

            DownloadCommand = new AsyncRelayCommand(DownloadAsync);
            LoadCommand     = new AsyncRelayCommand(LoadAsync);
            DeleteCommand   = new AsyncRelayCommand(DeleteSound);
        }
コード例 #22
0
 public SoundInstance(Device device, WaveFormat format, ISoundDataProvider provider)
 {
     buffer = new StreamingSoundBuffer(device, format, provider);
 }
コード例 #23
0
 public EnvironmentSoundInstance(Device device, WaveFormat format, ISoundDataProvider provider)
     : base(device, format, provider)
 {
 }