protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            var items = MasterListView.ItemsSource as List <Picture>;

            if (items == null)
            {
                var model = new PicturesViewModel();
                MasterListView.ItemsSource = model.SpotlightPictures;
            }

            if (e.Parameter != null && (e.Parameter as Picture) != null)
            {
                items = MasterListView.ItemsSource as List <Picture>;
                // Parameter is item ID
                var m = (Picture)e.Parameter;

                _lastSelectedItem =
                    items.Where((item) => item.Title == m.Title).FirstOrDefault();
            }

            UpdateForVisualState(AdaptiveStates.CurrentState);

            // Don't play a content transition for first item load.
            // Sometimes, this content will be animated as part of the page transition.
            DisableContentTransitions();
        }
예제 #2
0
        public ActionResult Create([Bind(Include = "ID,Subject,link,IsAbout,IsWelcome,Description,ProjectDetailsViewModelID,EducationViewModelID,ExperiencesViewModelID,SkillsViewModelID,Skill,ProjectDetail,Education,Experience")] PicturesViewModel projectPicturesViewModel, HttpPostedFileBase file, string link_picture_to)
        {
            bool   isVideo = false;
            string ext     = file.FileName.Split('.')[1];

            //if (file.FileName.Split('.').Count() > 0 && file.FileName.Split('.')[1] != "mp4")
            if (!(extensionList.Contains(ext.ToLower())))
            {
                ModelState.AddModelError("FileName", "Must be the following format (*.png, *.jpg, *.jpeg, *.gif, *.mp4).");
            }

            if (ext.Equals("mp4"))
            {
                isVideo = true;
            }



            if (ModelState.IsValid && file != null)
            {
                try
                {
                    var picture = projectPicturesViewModel;
                    addOrUpdatePictureTable(picture, file, link_picture_to, isVideo);
                    db.PicturesApp.Add(picture);
                    db.SaveChanges();
                }
                catch (DbEntityValidationException dbEx)
                {
                    Exception raise = dbEx;
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            string message = string.Format("Property: {0} Error: {1}",
                                                           validationError.PropertyName,
                                                           validationError.ErrorMessage);
                            raise = new InvalidOperationException(message, raise);
                        }
                    }
                    ViewBag.ErrorMessage = raise.Message;
                    Log.write(raise.Message, "ERR");
                    //return View("Error");
                    throw raise;
                }
                catch (Exception ex)
                {
                    Log.write(ex.Message, "ERR");
                    return(View("Error"));
                }
                //return Content(Utility.getFileFullPath(Utility.getDirectory(projectPicturesViewModel.path), file.FileName));
                return(RedirectToAction("Index"));
            }

            ViewBag.EducationViewModelID      = new SelectList(db.Education, "ID", "SchoolName", projectPicturesViewModel.EducationViewModelID);
            ViewBag.ExperiencesViewModelID    = new SelectList(db.Experiences, "ID", "Title", projectPicturesViewModel.ExperiencesViewModelID);
            ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", projectPicturesViewModel.ProjectDetailsViewModelID);
            ViewBag.SkillsViewModelID         = new SelectList(db.Skills, "ID", "Title", projectPicturesViewModel.SkillsViewModelID);
            return(View(projectPicturesViewModel));
        }
예제 #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            PicturesViewModel projectPicturesViewModel = db.PicturesApp.Find(id);

            db.PicturesApp.Remove(projectPicturesViewModel);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #4
0
 private void populateSinglePictureWithObjects(PicturesViewModel picture)
 {
     if (picture != null)
     {
         picture.Skill         = db.Skills.Where(x => x.ID == picture.SkillsViewModelID).DefaultIfEmpty().Single();
         picture.Education     = db.Education.Where(x => x.ID == picture.EducationViewModelID).DefaultIfEmpty().Single();
         picture.Experience    = db.Experiences.Where(x => x.ID == picture.ExperiencesViewModelID).DefaultIfEmpty().Single();
         picture.ProjectDetail = db.DetailsProject.Where(x => x.ID == picture.ProjectDetailsViewModelID).DefaultIfEmpty().Single();
     }
 }
예제 #5
0
        //constructor and connects the ModelViews to Views
        public PicturesDetailPage(PicturesViewModel viewModel)
        {
            InitializeComponent();

            var pictureStore = new SQLitePicturePosts(DependencyService.Get <ISQLiteDB>());
            var pageService  = new PageService();

            Title          = (viewModel.Phone == null) ? "New Picture" : "Edit Picture";
            BindingContext = new PictureDetailViewModel(viewModel ?? new PicturesViewModel(), pictureStore, pageService);
        }
예제 #6
0
 public ActionResult Edit([Bind(Include = "ID,Subject,path,FileName,Description,ProjectDetailsViewModelID")] PicturesViewModel projectPicturesViewModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(projectPicturesViewModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", projectPicturesViewModel.ProjectDetailsViewModelID);
     return(View(projectPicturesViewModel));
 }
예제 #7
0
        // GET: Pictures/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PicturesViewModel projectPicturesViewModel = db.PicturesApp.Find(id);

            if (projectPicturesViewModel == null)
            {
                return(HttpNotFound());
            }
            return(View(projectPicturesViewModel));
        }
예제 #8
0
        // GET: Pictures/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PicturesViewModel projectPicturesViewModel = db.PicturesApp.Find(id);

            if (projectPicturesViewModel == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", projectPicturesViewModel.ProjectDetailsViewModelID);
            return(View(projectPicturesViewModel));
        }
예제 #9
0
        private void deletePicture(PicturesViewModel picture)
        {
            if (picture != null)
            {
                string[] savedFiles          = System.IO.Directory.GetFiles(Server.MapPath("~" + picture.path));
                var      origineFileWithPath = Server.MapPath("~" + picture.path) + picture.FileName;

                foreach (var f in savedFiles)
                {
                    if (origineFileWithPath.Equals(f))
                    {
                        System.IO.File.Delete(f);
                    }
                }
                db.PicturesApp.Remove(picture);
            }
        }
예제 #10
0
        public async Task <IActionResult> Index()
        {
            try
            {
                var list = await BlobStorageService.GetBlobUriList(BlobStorageService.PicturesContainerName);

                var model = new PicturesViewModel();
                model.Pictures  = list;
                ViewBag.Context = "Pictures";
                return(View(model));
            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                ViewData["trace"]   = ex.StackTrace;
                return(View("Error"));
            }
        }
예제 #11
0
        // GET: Pictures/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PicturesViewModel projectPicturesViewModel = db.PicturesApp.Find(id);

            if (projectPicturesViewModel == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EducationViewModelID      = new SelectList(db.Education, "ID", "SchoolName", projectPicturesViewModel.EducationViewModelID);
            ViewBag.ExperiencesViewModelID    = new SelectList(db.Experiences, "ID", "Title", projectPicturesViewModel.ExperiencesViewModelID);
            ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", projectPicturesViewModel.ProjectDetailsViewModelID);
            ViewBag.SkillsViewModelID         = new SelectList(db.Skills, "ID", "Title", projectPicturesViewModel.SkillsViewModelID);
            return(View(projectPicturesViewModel));
        }
예제 #12
0
        public ActionResult DeleteConfirmed(int id)
        {
            PicturesViewModel projectPicturesViewModel = db.PicturesApp.Find(id);

            projectPicturesViewModel.Education                 = null;
            projectPicturesViewModel.EducationViewModelID      = null;
            projectPicturesViewModel.ProjectDetail             = null;
            projectPicturesViewModel.ProjectDetailsViewModelID = null;
            projectPicturesViewModel.Experience                = null;
            projectPicturesViewModel.ExperiencesViewModelID    = null;
            projectPicturesViewModel.Skill             = null;
            projectPicturesViewModel.SkillsViewModelID = null;

            try
            {
                string[] savedFiles          = System.IO.Directory.GetFiles(Server.MapPath("~" + projectPicturesViewModel.path));
                var      origineFileWithPath = Server.MapPath("~" + projectPicturesViewModel.path) + projectPicturesViewModel.FileName;

                foreach (var f in savedFiles)
                {
                    if (origineFileWithPath.Equals(f))
                    {
                        System.IO.File.Delete(f);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.write(ex.Message, "ERR");
            }

            try
            {
                db.PicturesApp.Remove(projectPicturesViewModel);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                Log.write(ex.Message, "ERR");
            }
            return(RedirectToAction("Index"));
        }
예제 #13
0
        public ActionResult Create([Bind(Include = "ID,Subject,path,FileName,Description,ProjectDetailsViewModelID")] PicturesViewModel projectPicturesViewModel, HttpPostedFileBase file)
        {
            if (ModelState.IsValid && file != null)
            {
                var picture       = projectPicturesViewModel;
                var projectDetail = db.DetailsProject.Find(picture.ProjectDetailsViewModelID);

                picture.path     = "~/Content/Images/Projects/";
                picture.FileName = file.FileName;
                file.SaveAs(HttpContext.Server.MapPath(picture.path + file.FileName));

                picture.ProjectDetail = projectDetail;
                db.PicturesApp.Add(picture);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", projectPicturesViewModel.ProjectDetailsViewModelID);
            return(View(projectPicturesViewModel));
        }
예제 #14
0
        /// <summary>
        /// Delete project picture
        /// </summary>
        /// <param name="picture"></param>
        /// <param name="Server"></param>
        public void deletePicture(PicturesViewModel picture, HttpServerUtilityBase Server)
        {
            if (picture != null)
            {
                string origineFileWithPath = Utility.getDirectory(picture.path, picture.FileName);// Server.MapPath("~" + picture.path) + picture.FileName;

                foreach (var f in System.IO.Directory.GetFiles(Utility.getDirectory(picture.path)).Where(x => x == origineFileWithPath).ToList())
                {
                    System.IO.File.Delete(f);
                }

                picture.Education                 = null;
                picture.EducationViewModelID      = null;
                picture.ProjectDetail             = null;
                picture.ProjectDetailsViewModelID = null;
                picture.Experience                = null;
                picture.ExperiencesViewModelID    = null;
                picture.Skill             = null;
                picture.SkillsViewModelID = null;
                db.PicturesApp.Remove(picture);
            }
        }
예제 #15
0
        private void addOrUpdatePictureTable(PicturesViewModel picture, HttpPostedFileBase file, string img_subject_link)
        {
            /*var localPicture = new ProjectPicturesViewModel
             * {
             *  ID = picture.ID,
             *  Description = picture.Description,
             *  Subject = picture.Subject
             *
             * };*/
            switch (img_subject_link)
            {
            case "project":
                var projectDetail = db.DetailsProject.Find(picture.ProjectDetailsViewModelID);
                picture.path          = "~/Content/Images/Projects/";
                picture.ProjectDetail = projectDetail;
                break;

            case "education":
                var education = db.Education.Find(picture.EducationViewModelID);
                picture.path      = "~/Content/Images/Education/";
                picture.Education = education;
                break;

            case "experience":
                var experience = db.Experiences.Find(picture.ExperiencesViewModelID);
                picture.path       = "~/Content/Images/Experiences/";
                picture.Experience = experience;
                break;

            case "skill":
                var skill = db.Skills.Find(picture.SkillsViewModelID);
                picture.path  = "~/Content/Images/Skills/";
                picture.Skill = skill;
                break;
            }

            picture.FileName = file.FileName;
            file.SaveAs(HttpContext.Server.MapPath(picture.path + file.FileName));
        }
예제 #16
0
        public ActionResult Create([Bind(Include = "ID,Subject,path,FileName,Description,ProjectDetailsViewModelID,EducationViewModelID,ExperiencesViewModelID,SkillsViewModelID")] PicturesViewModel projectPicturesViewModel, HttpPostedFileBase file, string img_subject_link)
        {
            /*if (ModelState.IsValid)
             * {
             *  db.PicturesProject.Add(projectPicturesViewModel);
             *  db.SaveChanges();
             *  return RedirectToAction("Index");
             * }*/

            if (ModelState.IsValid && file != null)
            {
                var picture = projectPicturesViewModel;
                addOrUpdatePictureTable(picture, file, img_subject_link);
                db.PicturesApp.Add(picture);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.EducationViewModelID      = new SelectList(db.Education, "ID", "SchoolName", projectPicturesViewModel.EducationViewModelID);
            ViewBag.ExperiencesViewModelID    = new SelectList(db.Experiences, "ID", "Title", projectPicturesViewModel.ExperiencesViewModelID);
            ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", projectPicturesViewModel.ProjectDetailsViewModelID);
            ViewBag.SkillsViewModelID         = new SelectList(db.Skills, "ID", "Title", projectPicturesViewModel.SkillsViewModelID);
            return(View(projectPicturesViewModel));
        }
예제 #17
0
        // GET: Pictures/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            PicturesViewModel picturesViewModel = db.PicturesApp.Where(x => x.ID == id).Include("Education").Include("Experience").Include("ProjectDetail").Include("Skill").SingleOrDefault();

            try
            {
                populateSinglePictureWithObjects(picturesViewModel);
            }
            catch (Exception ex)
            {
                Log.write(ex.Message, "ERR");
                return(View("Error"));
            }
            if (picturesViewModel == null)
            {
                return(HttpNotFound());
            }
            return(View(picturesViewModel));
        }
예제 #18
0
 public Replace()
 {
     this.InitializeComponent();
     Channel9ViewModel = new Channel9ViewModel();
     PicturesViewModel = new PicturesViewModel();
 }
예제 #19
0
 private async void LoadData()
 {
     viewModel = PicturesViewModel.GetDefault();
     PicturesList.ItemsSource = await viewModel.GetAllItems();
 }
예제 #20
0
        private void addOrUpdatePictureTable(PicturesViewModel picture, HttpPostedFileBase file, string link_picture_to, bool isVideo)
        {
            //picture.path = Utility.getDirectory("Content","Images");
            string oldPath = picture.path;

            if (isVideo)
            {
                picture.path = "/Content/Videos/";
            }
            else
            {
                picture.path = "/Content/Images/";
            }

            picture.Education     = null;
            picture.ProjectDetail = null;
            picture.Skill         = null;
            picture.Experience    = null;

            //picture.EducationViewModelID = null;
            //picture.ExperiencesViewModelID = null;
            //picture.SkillsViewModelID = null;
            //picture.ProjectDetailsViewModelID = null;

            switch (link_picture_to)
            {
            case "project":
                var projectDetail = db.DetailsProject.Where(x => x.ID == picture.ProjectDetailsViewModelID).DefaultIfEmpty().Single();
                picture.path                  += "Projects/";
                picture.ProjectDetail          = projectDetail;
                picture.Education              = null;
                picture.EducationViewModelID   = null;
                picture.Experience             = null;
                picture.ExperiencesViewModelID = null;
                picture.Skill                  = null;
                picture.SkillsViewModelID      = null;
                //projectDetail.Pictures.Add(picture);
                break;

            case "education":
                var education = db.Education.Find(picture.EducationViewModelID);
                picture.path                     += "Education/";
                picture.Education                 = education;
                picture.ProjectDetail             = null;
                picture.ProjectDetailsViewModelID = null;
                picture.Experience                = null;
                picture.ExperiencesViewModelID    = null;
                picture.Skill                     = null;
                picture.SkillsViewModelID         = null;
                //education.Pictures.Add(picture);
                break;

            case "experience":
                var experience = db.Experiences.Find(picture.ExperiencesViewModelID);
                picture.path                     += "Experiences/";
                picture.Experience                = experience;
                picture.Education                 = null;
                picture.EducationViewModelID      = null;
                picture.ProjectDetail             = null;
                picture.ProjectDetailsViewModelID = null;
                picture.Skill                     = null;
                picture.SkillsViewModelID         = null;
                //experience.Pictures.Add(picture);
                break;

            case "skill":
                var skill = db.Skills.Find(picture.SkillsViewModelID);
                picture.path                     += "Skills/";
                picture.Skill                     = skill;
                picture.Education                 = null;
                picture.EducationViewModelID      = null;
                picture.ProjectDetail             = null;
                picture.ProjectDetailsViewModelID = null;
                picture.Experience                = null;
                picture.ExperiencesViewModelID    = null;
                break;

            default:
                picture.EducationViewModelID      = null;
                picture.ExperiencesViewModelID    = null;
                picture.SkillsViewModelID         = null;
                picture.ProjectDetailsViewModelID = null;
                break;
            }

            if (!string.IsNullOrEmpty(picture.FileName))
            {
                var origineFileWithPath = Utility.getDirectory(oldPath, picture.FileName);// (pathElementList[0], pathElementList.Skip(1).ToArray()); //Server.MapPath("~" + picture.path) + picture.FileName;
                if (System.IO.File.Exists(origineFileWithPath))
                {
                    var newFileWithPath = Utility.getDirectory(picture.path, picture.FileName);// (pathElementList[0], pathElementList.Skip(1).ToArray());
                    System.IO.File.Move(origineFileWithPath, newFileWithPath);
                }
            }

            if (file != null)
            {
                var origineFileWithPath = Utility.getDirectory(picture.path, picture.FileName);
                if (System.IO.File.Exists(origineFileWithPath))
                {
                    System.IO.File.Delete(origineFileWithPath);
                }

                picture.FileName = file.FileName.Replace(" ", "_");
                file.SaveAs(Utility.getDirectory(picture.path, picture.FileName));
            }
        }
예제 #21
0
 public Pictures()
 {
     jPGPicture     = new JPGPicture();
     BindingContext = new PicturesViewModel(new PageService());
     InitializeComponent();
 }
예제 #22
0
        public ActionResult Edit([Bind(Include = "ID,Subject,FileName,path,IsAbout,IsWelcome,link,Description,ProjectDetailsViewModelID,EducationViewModelID,ExperiencesViewModelID,SkillsViewModelID")] PicturesViewModel picturesViewModel, HttpPostedFileBase file, string link_picture_to)
        {
            bool isVideo = false;

            if (file != null)
            {
                string ext = file.FileName.Split('.')[1];
                //if (file.FileName.Split('.').Count() > 0 && file.FileName.Split('.')[1] != "mp4")
                if (!(extensionList.Contains(ext.ToLower())))
                {
                    ModelState.AddModelError("FileName", "Must be the following format (*.png, *.jpg, *.jpeg, *.gif, *.mp4).");
                }

                if (ext.Equals("mp4"))
                {
                    isVideo = true;
                }
            }


            if (ModelState.IsValid)
            {
                try
                {
                    //picturesViewModel.FileName = fileName;
                    var oldPicture = db.PicturesApp.Where(x => x.ID == picturesViewModel.ID).Single();

                    picturesViewModel.FileName = oldPicture.FileName;
                    picturesViewModel.path     = oldPicture.path;
                    addOrUpdatePictureTable(picturesViewModel, file, link_picture_to, isVideo);

                    oldPicture.Subject   = picturesViewModel.Subject;
                    oldPicture.FileName  = picturesViewModel.FileName;
                    oldPicture.path      = picturesViewModel.path;
                    oldPicture.IsAbout   = picturesViewModel.IsAbout;
                    oldPicture.IsWelcome = picturesViewModel.IsWelcome;
                    oldPicture.link      = picturesViewModel.link;
                    //oldPicture.Description = picturesViewModel.Description;
                    oldPicture.ProjectDetailsViewModelID = picturesViewModel.ProjectDetailsViewModelID;
                    oldPicture.ProjectDetail             = picturesViewModel.ProjectDetail;
                    oldPicture.EducationViewModelID      = picturesViewModel.EducationViewModelID;
                    oldPicture.Education = picturesViewModel.Education;
                    oldPicture.ExperiencesViewModelID = picturesViewModel.ExperiencesViewModelID;
                    oldPicture.Experience             = picturesViewModel.Experience;
                    oldPicture.SkillsViewModelID      = picturesViewModel.SkillsViewModelID;
                    oldPicture.Skill = picturesViewModel.Skill;

                    db.Entry(oldPicture).State = EntityState.Modified;
                    db.SaveChanges();
                }
                catch (DbEntityValidationException dbEx)
                {
                    Exception raise = dbEx;
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            string message = string.Format("Property: {0} Error: {1}",
                                                           validationError.PropertyName,
                                                           validationError.ErrorMessage);
                            raise = new InvalidOperationException(message, raise);
                        }
                    }

                    ViewBag.ErrorMessage = raise.Message;
                    Log.write(raise.Message, "ERR");
                    //return View("Error");
                    throw raise;
                }
                catch (Exception ex)
                {
                    Log.write(ex.Message, "ERR");
                    return(View("Error"));
                }


                return(RedirectToAction("Index"));
            }
            ViewBag.EducationViewModelID      = new SelectList(db.Education, "ID", "SchoolName", picturesViewModel.EducationViewModelID);
            ViewBag.ExperiencesViewModelID    = new SelectList(db.Experiences, "ID", "Title", picturesViewModel.ExperiencesViewModelID);
            ViewBag.ProjectDetailsViewModelID = new SelectList(db.DetailsProject, "ID", "Subject", picturesViewModel.ProjectDetailsViewModelID);
            ViewBag.SkillsViewModelID         = new SelectList(db.Skills, "ID", "Title", picturesViewModel.SkillsViewModelID);
            return(View(picturesViewModel));
        }
예제 #23
0
파일: MyPage.cs 프로젝트: alemor10/csci191
        public MyPage(PicturesViewModel viewModel)
        {
            var pictureStore = new SQLitePicturePosts(DependencyService.Get <ISQLiteDB>());
            var pageService  = new PageService();

            Title          = (viewModel.Phone == null) ? "New Picture" : "Edit Picture";
            BindingContext = new PictureDetailViewModel(viewModel ?? new PicturesViewModel(), pictureStore, pageService);

            BackgroundColor = Color.PowderBlue;


            string imagePath   = "";
            double imageRating = 0.0;

            var ratingLabel = new Editor
            {
                BackgroundColor = Color.Aquamarine,
                IsReadOnly      = true,
                Keyboard        = Keyboard.Numeric
            };

            ratingLabel.SetBinding(Editor.TextProperty, nameof(PicturesViewModel.PictureRating));

            var ratingView = new BoxView {
                Color = Color.Teal
            };
            var leftSwipeGesture = new SwipeGestureRecognizer {
                Direction = SwipeDirection.Left
            };

            leftSwipeGesture.Swiped += OnSwiped;
            var rightSwipeGesture = new SwipeGestureRecognizer {
                Direction = SwipeDirection.Right
            };

            rightSwipeGesture.Swiped += OnSwiped;
            ratingView.GestureRecognizers.Add(leftSwipeGesture);
            ratingView.GestureRecognizers.Add(rightSwipeGesture);

            void OnSwiped(object sender, SwipedEventArgs e)
            {
                switch (e.Direction)
                {
                case SwipeDirection.Left:
                    imageRating -= 0.5;
                    var tempLeft = imageRating.ToString();
                    ratingLabel.SetValue(Editor.TextProperty, tempLeft);
                    break;

                case SwipeDirection.Right:
                    imageRating += 0.5;
                    var tempRight = imageRating.ToString();
                    ratingLabel.SetValue(Editor.TextProperty, tempRight);
                    break;
                }
            }

            var f     = string.Empty;
            var image = new Image {
                Aspect = Aspect.AspectFit
            };

            var filePath = new Editor
            {
                IsReadOnly = true
            };

            filePath.SetBinding(Editor.TextProperty, nameof(PicturesViewModel.PicturePath));
            //makes the button to take a picture
            var takeImageButton = new Button
            {
                Text            = "Take Image",
                TextColor       = Color.Black,
                BackgroundColor = Color.Gray,
                Margin          = new Thickness(15)
            };

            //takeImageButton.SetBinding(Button.CommandProperty, nameof(PicturesViewModel.takeImageCommand));
            //handles the  clicked event to take a photo
            takeImageButton.Clicked += async(sender, args) =>
            {
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No camera", ":(No camera available.", "OK");

                    return;
                }
                var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory          = "Test",
                    SaveToAlbum        = true,
                    CompressionQuality = 75,
                    CustomPhotoSize    = 15,
                    PhotoSize          = PhotoSize.Medium,
                    //MaxWidthHeight = 2000,
                    DefaultCamera = CameraDevice.Front
                });

                if (file == null)
                {
                    return;
                }
                await DisplayAlert("File Location", file.Path, "OK");

                f            = file.Path;
                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    file.Dispose();
                    return(stream);
                });
                return;
            };


            // makes a button to pick the image
            var pickImageButton = new Button
            {
                Text            = "Pick Image",
                TextColor       = Color.Black,
                BackgroundColor = Color.Gray,
                Margin          = new Thickness(15)
            };

            //handles the clicked event
            pickImageButton.Clicked += async(sender, args) =>
            {
                if (!CrossMedia.Current.IsPickPhotoSupported)
                {
                    await DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");

                    return;
                }
                var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
                });

                if (file == null)
                {
                    return;
                }

                imagePath = file.Path.ToString();

                //filePath.SetBinding(Editor.TextProperty, nameof(PicturesViewModel.PicturePath));
                filePath.SetValue(Editor.TextProperty, imagePath);

                f            = file.Path;
                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    return(stream);
                });
                file.Dispose();
            };


            var categoryList = new List <string>();

            categoryList.Add("Business");
            categoryList.Add("Educational");
            categoryList.Add("Personal");
            categoryList.Add("Rated R");
            categoryList.Add("Waifus");


            Entry titleEntry = new Entry
            {
                Placeholder = "Title",
                Margin      = new Thickness(10)
            };

            titleEntry.SetBinding(Entry.TextProperty, nameof(PicturesViewModel.PictureTitle));


            var categoryPicker = new Picker
            {
                Title           = "Category",
                VerticalOptions = LayoutOptions.CenterAndExpand
            };

            categoryPicker.ItemsSource = categoryList;
            categoryPicker.SetBinding(Picker.SelectedItemProperty, nameof(PicturesViewModel.PictureCategory));


            var saveButton = new Button
            {
                Text            = "Save",
                TextColor       = Color.Black,
                BackgroundColor = Color.Gray,
                Margin          = new Thickness(15)
            };

            //saveButton.SetBinding(Button.CommandProperty, nameof(PicturesViewModel.SavePostCommand));

            // Accomodate iPhone status bar.
            this.Padding = new Thickness(10, Device.OnPlatform(20, 0, 0), 10, 5);
            Content      = new StackLayout
            {
                Children =
                {
                    image,
                    filePath,
                    takeImageButton,
                    pickImageButton,
                    titleEntry,
                    filePath,
                    categoryPicker,
                    ratingLabel,
                    ratingView,
                    saveButton,
                }
            };
        }
 public void Setup()
 {
     mTarget = new PicturesViewModel(new[] { "c:\\file1.jpg", "c:\\file2.png" });
 }