private void SavePositionMedia(PositionViewModel position, List<MediaListModel> playlist) { List<MediaListModel> thisPlaylist = playlist; ThreadPool.QueueUserWorkItem(delegate (object r) { lock (FileLock) { string fileName = GetPositionFileName(position); XmlSerializer serializer = new XmlSerializer(typeof(List<MediaListModel>)); FileInfo info = new FileInfo(fileName); if (!File.Exists(fileName)) { StreamWriter writer = info.CreateText(); serializer.Serialize((TextWriter) writer, thisPlaylist); writer.Close(); } else { info.Delete(); StreamWriter writer2 = info.CreateText(); serializer.Serialize((TextWriter) writer2, thisPlaylist); writer2.Close(); } } }); }
public ActionResult SaveMosaic(PositionViewModel[] positionList) { if (positionList != null) { try { var MosaicID = positionList[0].MosaicID; var extra = positionList.Where(p => p.Name == "PersonalInfo" || p.Name == "CarInfo" || p.Name == "LocationInfo" || p.Name == "BatteryInfo" ); var posn = positionList.Except(extra); var mosaic = db.Mosaics.Where(m => m.MosaicID == MosaicID).FirstOrDefault(); if (mosaic != null) { mosaic.Updated = DateTime.Now; if (positionList != null) foreach (var positionItem in posn) { Position position = mosaic.Positions.Where(p => p.Name == positionItem.Name).FirstOrDefault(); if (position == null) { position = new Position(); position.MosaicID = positionItem.MosaicID; db.Positions.AddObject(position); db.SaveChanges(); } position.Name = positionItem.Name; position.X = (double) positionItem.X; position.Y = (double) positionItem.Y; position.Width = (double) positionItem.Width; position.Height = (double) positionItem.Height; var list = position.PositionMediums.ToList(); for (int i = 0; i < list.Count; i++) { var medium = list[i]; db.PositionMediums.DeleteObject(medium); list[i] = null; } db.SaveChanges(); var order = 0; if (positionItem.MediaUri != null) foreach (var path in positionItem.MediaUri) { if (!String.IsNullOrEmpty(path)) // if (!position.Media.Any(i => Path.GetFileNameWithoutExtension(i.Name).ToLower().Replace("thumb", "") == Path.GetFileNameWithoutExtension(path).ToLower().Replace("thumb", ""))) // Duplicates now allowed { // if(order%2==0) //Deal with duplication bug from js ... Fixed already { var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path); if (fileNameWithoutExtension != null) { var nname = fileNameWithoutExtension.ToLower().Replace("thumb", ""); var newpath = ""; if(nname.Contains("-crop-")) { nname = nname.Substring(0,nname.IndexOf("-crop-")); var serverpath = HttpContext.Request.Url.GetLeftPart(UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath; newpath = path.Replace(serverpath, "/"); } //item.Remove("Uploads/Temp/Media/Thumb".Length); // name = position.PositionMediums.Add(new PositionMedium() { Medium = db.Media.Where( m => m.Location.Contains( nname)). FirstOrDefault(), Options = nname, Position = position, Location =!(String.IsNullOrEmpty(newpath)) ?newpath:"", PlayOrder = (short?) order }); } order++; } } } } //Deal With Extras XmlSerializer serializer = new XmlSerializer(typeof(List<PositionViewModel>)); var writer = new StringWriter(); serializer.Serialize(writer,extra.ToList()); mosaic.ExtraData = writer.ToString(); } else { return Json("Invalid Mosiac, Please Choose One Before Saving", JsonRequestBehavior.AllowGet); } if (positionList != null && positionList.Count() > 0) { db.SaveChanges(); return Json("Sucessfully Saved Mosaic", JsonRequestBehavior.AllowGet); } } catch (Exception ex) { return Json("Error Occured During Save " + ex.Message + " " + ex.StackTrace +(ex.InnerException!=null? ex.InnerException.Message + ex.InnerException.StackTrace:""), JsonRequestBehavior.AllowGet); } } return Json("Invalid Mosiac, Please Choose One Before Saving", JsonRequestBehavior.AllowGet); }
private void LoadSavedPosition(PositionViewModel position) { PositionViewModel model = position; MediaElement element = new MediaElement { LoadedBehavior = MediaState.Manual, Stretch = Stretch.Fill }; if (model.Width.HasValue) { double? nullable4 = model.Width + 15.0; element.Width = (nullable4.Value / 768.0) * SystemParameters.PrimaryScreenWidth; } if (model.Height.HasValue) { double? nullable8 = model.Height + 15.0; element.Height = (nullable8.Value / 1366.0) * SystemParameters.PrimaryScreenHeight; } if (model.X.HasValue && model.Y.HasValue) { element.Margin = new Thickness((model.X.Value / 768.0) * SystemParameters.PrimaryScreenWidth, (model.Y.Value / 1366.0) * SystemParameters.PrimaryScreenHeight, 0.0, 0.0); } this.Playlist = new List<MediaListModel>(); IEnumerable<MediaListModel> enumerable = this.LoadPositionMedia(position); this.MediaCanvas.Children.Add(element); Player player = new Player(this.Playlist, element); foreach (MediaListModel model2 in enumerable) { PageSwitcher.DownloadMedium(model2, this.Playlist, player); } this.Players.Add(player); player.Start(); }
public void LoadPositions(PositionViewModel[] positions = null) { ThreadPool.QueueUserWorkItem( (e) => { Dispatcher.BeginInvoke(DispatcherPriority.Normal, new ThreadStart(()=> { List<Player> players = Players; this.Players = new List<Player>(); if (positions == null) { foreach ( PositionViewModel model in PageSwitcher. Positions) { this.LoadPosition( model); } } else { foreach ( PositionViewModel model2 in positions) { this.LoadSavedPosition (model2); } } try { foreach ( Player player in players) { player.Stop(); player.Quit(); this.MediaCanvas. Children.Remove( player.Control); } } catch (Exception) { } })); }); }
private IEnumerable<MediaListModel> LoadPositionMedia(PositionViewModel position) { List<MediaListModel> list = new List<MediaListModel>(); try { string positionFileName = GetPositionFileName(position); XmlSerializer serializer = new XmlSerializer(typeof(List<MediaListModel>)); StreamReader textReader = File.OpenText(positionFileName); list = serializer.Deserialize(textReader) as List<MediaListModel>; textReader.Close(); } catch (Exception) { list = new List<MediaListModel>(); } return list; }
private void LoadPosition(PositionViewModel position) { Func<long, MediaListModel> selector = null; PositionViewModel model = position; MediaElement element = new MediaElement { LoadedBehavior = MediaState.Manual, Stretch = Stretch.Fill }; if (model.Width.HasValue) { double? nullable4 = model.Width + 15.0; element.Width = (nullable4.Value / 768.0) * SystemParameters.PrimaryScreenWidth; } if (model.Height.HasValue) { double? nullable8 = model.Height + 15.0; element.Height = (nullable8.Value / 1366.0) * SystemParameters.PrimaryScreenHeight; } if (model.X.HasValue && model.Y.HasValue) { element.Margin = new Thickness((model.X.Value / 768.0) * SystemParameters.PrimaryScreenWidth, (model.Y.Value / 1366.0) * SystemParameters.PrimaryScreenHeight, 0.0, 0.0); } this.Playlist = new List<MediaListModel>(); ServiceClient myService1 = new ServiceClient("BasicHttpBinding_IService", Constants.ServerAddress); try { if (selector == null) { selector = media => new MediaListModel { MediaID = media, DisplayLocation = myService1.GetMediaLocation(media), Duration = myService1.GetMediaDuration(media) }; } List<MediaListModel> list = position.Media; // position.Media.Select<long, MediaListModel>(selector).ToList<MediaListModel>(); myService1.Close(); List<MediaListModel> playlist = (from m in list select new MediaListModel { MediaID = m.MediaID, DisplayLocation = m.DisplayLocation, Duration = m.Duration }).ToList<MediaListModel>(); this.SavePositionMedia(position, playlist); this.MediaCanvas.Children.Add(element); Player player = new Player(this.Playlist, element); foreach (MediaListModel model2 in list.ToArray()) { PageSwitcher.DownloadMedium(model2, this.Playlist, player); } this.Players.Add(player); player.Start(); } catch (Exception exception) { Console.WriteLine(exception.StackTrace + "\n\n" + exception.Message); } }
private static string GetPositionFileName(PositionViewModel position) { return string.Concat(new object[] { Path.GetFileNameWithoutExtension(Constants.PlayListFile), "mosaic", position.MosaicID, "posn", position.PositionID, ".xml" }); }