public VideoSizeHelper(ViewModel.INode nodeContext) { ViewModel.IMetadata videoSizeMetadata = nodeContext.Metadata["Video.Size"]; if (videoSizeMetadata != null) { Size = ParseVideoSize(videoSizeMetadata.Value); } }
private void LoadVideoDetails() { ViewModel.IMetadata videoSourceMetadata = Context.Metadata["Video.Source"]; if (videoSourceMetadata == null) { HasVideo = false; } else { HasVideo = true; VideoSource = videoSourceMetadata.Value; } if (HasVideo) { ViewModel.IMetadata startPositionMetadata = Context.Metadata["Video.StartPosition"]; if (startPositionMetadata != null && _startPosition == null) { if (!string.IsNullOrEmpty(startPositionMetadata.Value)) { TimeSpan parsedStartPosition; if (TimeSpan.TryParse(startPositionMetadata.Value, out parsedStartPosition)) { StartPosition = parsedStartPosition; } else { HasVideo = false; StartPosition = new TimeSpan(0); } } } ViewModel.IMetadata stopPositionMetadata = Context.Metadata["Video.EndPosition"]; if (stopPositionMetadata != null && _stopPosition == null) { if (!string.IsNullOrEmpty(stopPositionMetadata.Value)) { TimeSpan parsedStopPosition; if (TimeSpan.TryParse(stopPositionMetadata.Value, out parsedStopPosition)) { StopPosition = parsedStopPosition; } else { StopPosition = null; } } } } }
private void HandleGetSourceAndPositionCallback(Event callback) { if (callback.EventArgs != null && callback.ContainsEventArg("CallbackId") && callback.ContainsEventArg("Position") && callback.ContainsEventArg("Source") && callback.ContainsEventArg("NodeId")) { string callbackId = callback.GetEventArgValue("CallbackId"); string source = callback.GetEventArgValue("Source"); source = HttpUtility.UrlDecode(source); string viewModelIdAsString = callback.GetEventArgValue("NodeId"); if (!string.IsNullOrEmpty(viewModelIdAsString) && !string.IsNullOrEmpty(source)) { var chain = new TransactionChain(); var viewModelId = new Guid(viewModelIdAsString); var viewModelVideoInfo = ViewModels[viewModelId]; switch (callbackId) { case "StartPosition": { TimeSpan startPosition = TimeSpan.Parse(callback.GetEventArgValue("Position")); // Just add a temporary end position so that the entry doesn't end up in a bad state. ViewModel.IMetadata startPositionMetadata = viewModelVideoInfo.Context.Metadata["Video.StartPosition"]; if (startPositionMetadata != null) { startPositionMetadata.SetValue(startPosition.ToString(), ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata["Video.StartPosition"] = startPosition.ToString(); } else { viewModelVideoInfo.Context.Metadata.Add("Video.StartPosition", startPosition.ToString(), ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata.Add("Video.StartPosition", startPosition.ToString()); } ViewModel.IMetadata endPositionMetadata = viewModelVideoInfo.Context.Metadata["Video.EndPosition"]; if (endPositionMetadata != null) { endPositionMetadata.SetValue("", ref chain); } else { viewModelVideoInfo.Context.Metadata.Add("Video.EndPosition", "", ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata.Add("Video.EndPosition", ""); } viewModelVideoInfo.HasVideo = true; viewModelVideoInfo.StartPosition = startPosition; viewModelVideoInfo.StopPosition = null; break; } case "EndPosition": { TimeSpan endPosition = TimeSpan.Parse(callback.GetEventArgValue("Position")); ViewModel.IMetadata endPositionMetadata = viewModelVideoInfo.Context.Metadata["Video.EndPosition"]; if (endPositionMetadata != null) { endPositionMetadata.SetValue("", ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata["Video.EndPosition"] = endPosition.ToString(); } else { viewModelVideoInfo.Context.Metadata.Add("Video.EndPosition", "", ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata.Add("Video.EndPosition", endPosition.ToString()); } viewModelVideoInfo.Context.Metadata.Add(null, null, "Video.EndPosition", endPosition.ToString(), ref chain); viewModelVideoInfo.StopPosition = endPosition; viewModelVideoInfo.HasVideo = true; break; } } ViewModel.IMetadata videoSourceMetadata = viewModelVideoInfo.Context.Metadata["Video.Source"]; if (videoSourceMetadata != null) { videoSourceMetadata.SetValue(source, ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata[ "Video.Source"] = source; } else { viewModelVideoInfo.Context.Metadata.Add(null, null, "Video.Source", source, ref chain); ((SuperGraph.ViewModel.Node)viewModelVideoInfo.Context).NodeProperties.UIMetadata.Add("Video.Source", source); } viewModelVideoInfo.VideoSource = source; viewModelVideoInfo.Context.Proxy.MapManager.ExecuteTransaction(chain); } } }