/// <summary> /// Load the view from from the provided JSON /// </summary> /// <param name="root">The JSON-object containing the serialized view</param> /// <param name="archive">Optional archive that the data points should be loaded from</param> /// <returns></returns> public async Task DeserializeView(JObject root, IDataStructure archive = null) { if (!await SerializableViewHelper.EnsureViewType(root, this, false, true)) { return; } var figures = XamarinHelpers.GetAllChildElements <FigureView>(PlayerContainer); foreach (var figure in figures) { figure.RemoveThisView(); } PlayerContainer.ViewerContext = ViewerContext; FigureView.DeserializationFailedWarned = false; if (root["player_container"] is JObject playerContainerJson) { await PlayerContainer.DeserializeView(playerContainerJson, archive); } if (root["playbar"] is JObject playbarJson) { await Playbar.DeserializeView(playbarJson, archive); } }
/// <summary> /// Store the important parts of the objects in the provided JSON object (or a new one if the provided one is null) /// </summary> /// <param name="root">The JSON object the view should be stored in</param> /// <returns>The serialized JSON-view</returns> public JObject SerializeView(JObject root = null) { root = SerializableViewHelper.SerializeDefaults(root, this); root["player_container"] = PlayerContainer.SerializeView(); root["playbar"] = Playbar.SerializeView(); return(root); }
private void Awake() { notes.Reverse(); _rows = new Row[notes.Count]; var parent = rowParent; for (var i = parent.childCount - 1; i > 0; i--) { Destroy(parent.GetChild(i).gameObject); } for (var i = 0; i < _rows.Length; i++) { _rows[i] = Instantiate(rowPrefab, parent); _rows[i] .Set( notes[i].noteName, notes[i].frequency, 0.27f - 0.01f * i ); } playbar = Instantiate(playbarPrefab, parent); }
public MainWindow() { InitializeComponent(); // Play startup animation if enabled if (App.Settings.IntroEnabled) { Storyboard sb = FindResource("Startup") as Storyboard; sb.Begin(); IntroVideo.Source = new Uri("pack://siteoforigin:,,,/Assets/Intro.mov", UriKind.Absolute); } MainVM = new MainViewModel(); Playbar.SetViewModel(MainVM.PlaybarVM); DataContext = MainVM; PlaylistContent.AddPlaylist.Click += (object sender, RoutedEventArgs e) => { NewPlaylistDialog.Visibility = Visibility.Visible; }; NewPlaylistDialog.CreateBttn.Click += (object sender, RoutedEventArgs e) => { bool IsFolderBased = NewPlaylistDialog.TypeToggle.IsChecked != true; if (!IsFolderBased) { using (var dialog = new OpenFileDialog { Title = "Select tracks to add", Multiselect = true }) { dialog.Filter = "MP3 files|*.mp3"; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (dialog.FileNames.Length == 0) { return; } MainVM.PlaylistsVM.AddPlaylist(NewPlaylistDialog.NewPlaylistName.Text, dialog.FileNames); } else { return; } } } else { using (var dialog = new FolderBrowserDialog()) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (Directory.GetFiles(dialog.SelectedPath, "*.mp3").Length == 0) { return; } MainVM.PlaylistsVM.AddPlaylist(NewPlaylistDialog.NewPlaylistName.Text, dialog.SelectedPath); } else { return; } } } NewPlaylistDialog.CancelBttn_Click(null, null); }; SettingsContent.AppRestartRequired += () => { RestartDialog.Visibility = Visibility.Visible; }; }
private void TreeView_UseInTimelineTapped(object sender, IDataPoint datapoint) { Playbar.UseDataPointForTimelinePreview(datapoint); }