Esempio n. 1
0
        private void LoadMusic(string MusicDBFileName)
        {
            Grid      LoadGrid = new Grid();
            Rectangle LoadRect = new Rectangle()
            {
                Margin = new Thickness(0)
            };

            LoadRect.SetResourceReference(Rectangle.FillProperty, "LoadingBackground");
            LoadGrid.Children.Add(LoadRect);
            Label LoadLabel = new Label()
            {
                Margin = new Thickness(0),
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                Content             = "Загрузка спектакля",
                FontSize            = ScaleTo(48.0),
                FontWeight          = FontWeights.Bold,
            };

            LoadLabel.SetResourceReference(Label.ForegroundProperty, "Foreground");

            LoadGrid.Children.Add(LoadLabel);
            Grid.SetRow(LoadGrid, 0);
            Grid.SetRowSpan(LoadGrid, 3);
            Grid.SetColumn(LoadGrid, 0);
            Grid.SetColumnSpan(LoadGrid, 2);
            MainGrid.Children.Add(LoadGrid);
            Thread.SpinWait(100);

            Loading = true;
            Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(delegate()
            {
                MusicDB MDB = null;
                MDB         = new MusicDB(System.IO.Path.GetFullPath(System.IO.Path.Combine(
                                                                         Config.GetConfigValue("MusicDir"),
                                                                         System.IO.Path.ChangeExtension(MusicDBFileName, ".sdb"))));
                SpNameLabel.Content = MDB.Name;

                LoadSDB(MDB, SpNameLabel, MusicDBFileName, Channels);

                MainGrid.Children.Remove(LoadGrid);

                Loading = false;
            }));
        }
Esempio n. 2
0
        private void LoadSDB(MusicDB MDB, Label NameLabel, string MusicDBFileName, Desk[] Channel)
        {
            Task <List <MusicTrack> >[] LoadDesks = new Task <List <MusicTrack> > [Channels.Length];
            for (int i = 0; i < Channels.Length; i++)
            {
                int j = i;
                LoadDesks[i] = Task.Run(() => { return(MDB.LoadDesk(Channel[j].DeskN)); });
            }

            Task.WaitAll(LoadDesks);
            for (int i = 0; i < Channels.Length; i++)
            {
                Channel[i].LoadTrackList(LoadDesks[i].Result);
            }



            switch (DeskCount)
            {
            case 1:
                Grid.SetColumnSpan(Desk1, 6);
                Desk2.Visibility = Visibility.Collapsed;
                Desk3.Visibility = Visibility.Collapsed;
                break;

            case 2:
                Grid.SetColumnSpan(Desk1, 3);
                Grid.SetColumnSpan(Desk2, 3);
                Grid.SetColumn(Desk2, 3);
                Desk2.Visibility = Visibility.Visible;
                Desk3.Visibility = Visibility.Collapsed;
                break;

            case 3:
                Grid.SetColumnSpan(Desk1, 2);
                Grid.SetColumnSpan(Desk2, 2);
                Grid.SetColumnSpan(Desk3, 2);
                Grid.SetColumn(Desk2, 2);
                Grid.SetColumn(Desk3, 4);
                Desk2.Visibility = Visibility.Visible;
                Desk3.Visibility = Visibility.Visible;
                break;
            }
        }