Пример #1
0
    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();

                }

            }

        });

    }
Пример #2
0
        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);
        }
Пример #3
0
    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();

    }
Пример #4
0
    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)

                {

                }

            }));

        });

    }
Пример #5
0
    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;

    }
Пример #6
0
    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);

        }

    }
Пример #7
0
    private static string GetPositionFileName(PositionViewModel position)

    {

        return string.Concat(new object[] { Path.GetFileNameWithoutExtension(Constants.PlayListFile), "mosaic", position.MosaicID, "posn", position.PositionID, ".xml" });

    }