Пример #1
0
        private bool?ShowBuildOpenWindow(ServiceBuild build)
        {
            BuildOpenWindow window = BuildOpenWindow.Current;

            //BuildOpenWindow window = new BuildOpenWindow(build);
            window.Build = build;

            return(window.ShowDialog());
        }
Пример #2
0
        private async Task BuildAudioServiceAsync()
        {
            while (true)
            {
                if (viewModel.Service?.Communicator != null)
                {
                    viewModel.Service.Communicator.Disconnected -= Communicator_Disconnected;
                }
                viewModel.Service = null;

                ServiceBuild build = ServiceBuild.Build(serviceBuilder, TimeSpan.FromMilliseconds(500));
                await Task.WhenAny(build.CompleteToken.ResultTask, Task.Delay(100));

                if (build.CompleteToken.IsEnded == BuildEndedType.Canceled ||
                    (!build.CompleteToken.IsEnded.HasValue && ShowBuildOpenWindow(build) == false))
                {
                    build.Cancel();
                    Close();
                    return;
                }

                ServiceBuildResult result = await build.CompleteToken.ResultTask;
                viewModel.Service = result;

                if (build.CompleteToken.IsEnded is BuildEndedType.Settings)
                {
                    UpdateBuilders();
                }
                else if (build.CompleteToken.IsEnded != BuildEndedType.Successful)
                {
                    continue;
                }

                if (build.Communicator != null)
                {
                    build.Communicator.Disconnected += Communicator_Disconnected;
                }
                if (!(build.Communicator is IClientCommunicator))
                {
                    await Task.Run(async() =>
                    {
                        await Task.WhenAll(result.AudioService.SourcePlaylists.Select(p => p.Update()));

                        IDictionary <string, Song> allSongs = result.AudioService.SourcePlaylists
                                                              .SelectMany(p => p.Songs).Distinct().ToDictionary(s => s.FullPath);

                        foreach (IPlaylist playlist in result.AudioService.Playlists)
                        {
                            Song song      = new Song();
                            playlist.Songs = playlist.Songs
                                             .Where(s => allSongs.TryGetValue(s.FullPath, out song)).Select(_ => song).ToArray();
                        }
                    });
                }
                break;
            }
        }
        private void Service_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            ServiceHandler service = (ServiceHandler)sender;
            ServiceBuild   build   = service.ServiceOpenBuild;

            if (e.PropertyName == nameof(ServiceHandler.ServiceOpenBuild) && build != null)
            {
                rootFrame.Navigate(typeof(BuildOpenPage), build);
            }
        }
Пример #4
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            DataContext = build = (ServiceBuild)e.Parameter;

            base.OnNavigatedTo(e);

            IEnumerable <string> frames = Frame.BackStack.Select(s => s.SourcePageType.FullName);

            tblFrameStack.Text = string.Join("\r\n", frames);

            BackPressHandler.Current.BackPressed += BackPressHandler_BackPressed;
        }
        private async void OnEnteredBackground(object sender, EnteredBackgroundEventArgs e)
        {
            ServiceBuild build = viewModel.Service.ServiceOpenBuild;

            if (build?.CompleteToken.IsEnded.HasValue != false)
            {
                return;
            }

            Deferral deferral = e.GetDeferral();

            try
            {
                await viewModel.Service.CloseAsync();

                canceledBuild = true;
            }
            finally
            {
                deferral.Complete();
            }
        }
Пример #6
0
        private async Task OpenAudioServiceAsync()
        {
            while (true)
            {
                if (viewModel.Service.Communicator != null)
                {
                    viewModel.Service.Communicator.Disconnected -= Communicator_Disconnected;
                }

                ServiceBuild build = ServiceBuild.Open(viewModel.Service.Communicator, viewModel.Service.AudioService,
                                                       viewModel.Service.ServicePlayer, viewModel.Service.Data, TimeSpan.FromMilliseconds(500));
                await Task.WhenAny(build.CompleteToken.ResultTask, Task.Delay(100));

                if (build.CompleteToken.IsEnded == BuildEndedType.Canceled ||
                    (!build.CompleteToken.IsEnded.HasValue && ShowBuildOpenWindow(build) == false))
                {
                    build.Cancel();
                    Close();
                    return;
                }

                await build.CompleteToken.ResultTask;

                if (build.CompleteToken.IsEnded is BuildEndedType.Settings)
                {
                    UpdateBuilders();
                }
                else if (build.CompleteToken.IsEnded is BuildEndedType.Successful)
                {
                    if (build.Communicator != null)
                    {
                        build.Communicator.Disconnected += Communicator_Disconnected;
                    }
                    break;
                }
            }
        }