public int upate(StorageVideo entity)
        {
            string sql = "update storageVideo set origFilename=@origFilename,url=@url,size=@size"
                         + ",ext=@ext,createTime=@createTime,duration=@duration"
                         + ",storageImageId=@storageImageId,folderId=@folderId"
                         + "  where id=@id";

            SQLiteParameter[] parameters =
            {
                new SQLiteParameter("@origFilename",   DbType.String, 100),
                new SQLiteParameter("@url",            DbType.String, 255),
                new SQLiteParameter("@size",           DbType.Int32,    4),
                new SQLiteParameter("@ext",            DbType.String,  10),
                new SQLiteParameter("@createTime",     DbType.String,  30),
                new SQLiteParameter("@duration",       DbType.Int32,    4),
                new SQLiteParameter("@storageImageId", DbType.Int32,    4),
                new SQLiteParameter("@folderId",       DbType.Int32,    4),
                new SQLiteParameter("@id",             DbType.Int32, 4)
            };
            parameters[0].Value = entity.origFilename;
            parameters[1].Value = entity.url;
            parameters[2].Value = entity.size;
            parameters[3].Value = entity.ext;

            parameters[4].Value = entity.createTime;
            parameters[5].Value = entity.duration;
            parameters[6].Value = entity.storageImageId;
            parameters[7].Value = entity.folderId;
            parameters[8].Value = entity.id;

            int result = Common.SQLiteHelper.ExecuteNonQuery(sql, parameters);

            return(result);
        }
Exemple #2
0
        /*
         * 3.4插入视频  Video
         */
        public void insertVideoToPage(DControl ctl)
        {
            //获取视频所在的集合
            StorageVideo storageVideo = storageVideoBll.get(ctl.storageId);

            if (storageVideo == null)
            {
                storageVideo              = new StorageVideo();
                storageVideo.url          = "/myfile/sysimg/notExists/video.mp4";
                storageVideo.origFilename = "演示视频.mp4";
            }
            StorageVideoDto dto          = StorageVideoUtil.convert(storageVideo);
            StorageImage    storageImage = storageImageBll.get(dto.storageImageId);

            dto.storageImageUrl = storageImage?.url;


            Cfg    pageCfg = PageWidthUtil.getPageCfg(pageTemplate.dPage, App.localStorage.cfg);
            CVideo cVideo  = NewControlUtil.newCVideo(ctl, dto, pageCfg, pageTemplate.mqServer, true);

            System.Windows.Style myStyle = (System.Windows.Style)pageTemplate.container.FindResource("DefaultCVideoStyle");
            cVideo.Style = myStyle;
            cVideo.PreviewMouseLeftButtonDown += control_MouseDown;
            cVideo.PreviewMouseMove           += control_MouseMove;
            cVideo.PreviewMouseLeftButtonUp   += control_MouseUp;
            //控件上右击显示菜单
            cVideo.MouseRightButtonUp += control_MouseRightButtonUp;
            pageTemplate.container.Children.Add(cVideo);
        }
        //1、插入图片
        public StorageVideo insert(StorageVideo entity)
        {
            String sql = "insert into StorageVideo(origFilename,url,ext,size,createTime,storageImageId,duration,folderId) values(@origFilename,@url,@ext,@size,@createTime,@storageImageId,@duration,@folderId);select last_insert_rowid();";

            SQLiteParameter[] parameters =
            {
                new SQLiteParameter("@origFilename",   DbType.String, 100),
                new SQLiteParameter("@url",            DbType.String, 255),
                new SQLiteParameter("@ext",            DbType.String,  10),
                new SQLiteParameter("@size",           DbType.Int32,    4),
                new SQLiteParameter("@createTime",     DbType.String,  30),
                new SQLiteParameter("@storageImageId", DbType.Int32,    4),
                new SQLiteParameter("@duration",       DbType.Int32,    4),
                new SQLiteParameter("@folderId",       DbType.Int32, 4)
            };
            parameters[0].Value = entity.origFilename;
            parameters[1].Value = entity.url;
            parameters[2].Value = entity.ext;
            parameters[3].Value = entity.size;
            parameters[4].Value = entity.createTime;
            parameters[5].Value = entity.storageImageId;
            parameters[6].Value = entity.duration;
            parameters[7].Value = entity.folderId;

            DataTable dt = Common.SQLiteHelper.ExecuteQuery(sql, parameters);
            int       id = DataType.ToInt32(dt.Rows[0]["last_insert_rowid()"].ToString());

            entity.id = id;
            return(entity);
        }
        private async void Camera_Click(object sender, RoutedEventArgs e)
        {
            var capture = new CameraCaptureUI();

            //capture.PhotoSettings.AllowCropping = true;
            capture.PhotoSettings.Format        = CameraCaptureUIPhotoFormat.Jpeg;
            capture.PhotoSettings.MaxResolution = CameraCaptureUIMaxPhotoResolution.HighestAvailable;
            capture.VideoSettings.Format        = CameraCaptureUIVideoFormat.Mp4;
            capture.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.HighestAvailable;

            var file = await capture.CaptureFileAsync(CameraCaptureUIMode.PhotoOrVideo);

            if (file != null)
            {
                if (file.ContentType.Equals("video/mp4"))
                {
                    if (Services.SettingsService.Current.SaveCameraMediaInGallery)
                    {
                        await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("UM_yyyyMMdd_HH_mm_ss") + ".mp4", NameCollisionOption.GenerateUniqueName);
                    }
                    ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StorageVideo.CreateAsync(file), false));
                }
                else
                {
                    if (Services.SettingsService.Current.SaveCameraMediaInGallery)
                    {
                        await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("UM_yyyyMMdd_HH_mm_ss") + ".jpg", NameCollisionOption.GenerateUniqueName);
                    }
                    ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StoragePhoto.CreateAsync(file), false));
                }
            }
        }
        /*
         * 3.4插入视频  Video
         */
        public void insertVideoToPage(DControl ctl)
        {
            //获取视频所在的集合
            StorageVideo storageVideo = storageVideoBll.get(ctl.storageId);

            if (storageVideo == null)
            {
                storageVideo              = new StorageVideo();
                storageVideo.url          = "/myfile/sysimg/notExists/video.mp4";
                storageVideo.origFilename = "演示视频.mp4";
            }
            StorageVideoDto dto          = StorageVideoUtil.convert(storageVideo);
            StorageImage    storageImage = storageImageBll.get(dto.storageImageId);

            dto.storageImageUrl = storageImage?.url;

            //foreach (Window win in App.appWindowList)
            //{
            //    string type = win.GetType().Name;
            //    Console.WriteLine("窗口类型:" + type);
            //}


            Cfg    pageCfg = PageWidthUtil.getPageCfg(dPage, App.localStorage.cfg);
            CVideo cVideo  = NewControlUtil.newCVideo(ctl, dto, pageCfg, pageTemplate1.mqServer, false);

            loadAllAnimation(cVideo, ctl);
            mainContainer.Children.Add(cVideo);
        }
Exemple #6
0
        private async void More_Click(object sender, RoutedEventArgs e)
        {
            var picker = new FileOpenPicker();

            picker.ViewMode = PickerViewMode.Thumbnail;
            picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            picker.FileTypeFilter.AddRange(Constants.MediaTypes);

            var files = await picker.PickMultipleFilesAsync();

            if (files != null)
            {
                foreach (var file in files)
                {
                    if (file.ContentType.Equals("video/mp4"))
                    {
                        Items.Add(await StorageVideo.CreateAsync(file, true));
                    }
                    else
                    {
                        Items.Add(new StoragePhoto(file)
                        {
                            IsSelected = true
                        });
                    }
                }
            }
        }
        private void insertCVideoBackground(StorageVideo storageVideo)
        {
            Cfg cfg = new Cfg();

            cfg.screenWidth  = Convert.ToInt32(pageTemplate.ActualWidth);
            cfg.screenHeight = Convert.ToInt32(pageTemplate.ActualHeight);

            DControl ctl = new DControl();

            ctl.name      = "CVideoBackground";
            ctl.width     = cfg.screenWidth;
            ctl.height    = cfg.screenHeight;
            ctl.left      = 0;
            ctl.top       = 0;
            ctl.storageId = storageVideo.id;


            StorageVideoDto dto          = StorageVideoUtil.convert(storageVideo);
            StorageImage    storageImage = storageImageBll.get(dto.storageImageId);

            dto.storageImageUrl = storageImage?.url;
            CVideoBackground cVideoBackground1 = new CVideoBackground(dto, true);

            cVideoBackground1.Name = "CVideoBackground";
            cVideoBackground1.HorizontalAlignment = HorizontalAlignment.Left;
            cVideoBackground1.VerticalAlignment   = VerticalAlignment.Top;
            cVideoBackground1.Margin = new Thickness(ctl.left, ctl.top, 0, 0);
            cVideoBackground1.Width  = ctl.width;
            cVideoBackground1.Height = ctl.height;
            pageTemplate.backgroundVideo.Children.Add(cVideoBackground1);
        }
        /*
         * 插入视频背景
         *
         * @param storageVideo 视频信息
         *
         * @param pageWidth  页面宽度
         *
         * @param pageHeight  页面高度
         *
         */
        private void insertCVideoBackground(StorageVideo storageVideo, int pageWidth, int pageHeight)
        {
            DControl ctl = new DControl();

            ctl.name      = "CVideoBackground";
            ctl.width     = pageWidth;
            ctl.height    = pageHeight;
            ctl.left      = 0;
            ctl.top       = 0;
            ctl.storageId = storageVideo.id;

            StorageVideoDto dto          = StorageVideoUtil.convert(storageVideo);
            StorageImage    storageImage = storageImageBll.get(dto.storageImageId);

            dto.storageImageUrl = storageImage?.url;
            CVideoBackground cVideoBackground1 = new CVideoBackground(dto, true);

            cVideoBackground1.Name = "CVideoBackground";
            cVideoBackground1.HorizontalAlignment = HorizontalAlignment.Left;
            cVideoBackground1.VerticalAlignment   = VerticalAlignment.Top;
            cVideoBackground1.Margin = new Thickness(ctl.left, ctl.top, 0, 0);
            cVideoBackground1.Width  = ctl.width;
            cVideoBackground1.Height = ctl.height;
            backgroundVideo.Children.Add(cVideoBackground1);
        }
Exemple #9
0
        /*
         * 保存视频
         */
        private void Submit_Button_Click(object sender, RoutedEventArgs e)
        {
            DControl     currDControl = (DControl)currElement.Tag;
            StorageVideo storageVideo = storageVideoBll.get(this.currDControl.storageId);

            if (storageVideo == null)
            {
                MessageBox.Show("视频不存在");
                return;
            }

            //更新到数据库
            DControl dControl = dControlBll.get(currDControl.id);

            dControl.storageId = this.currDControl.storageId;
            dControlBll.update(dControl);
            currElement.Tag = dControl;

            //更新页面控件信息
            //获取视频所在的集合
            //StorageVideo storageVideo = storageVideoBll.get(ctl.storageId);
            //获取视频列表

            StorageVideoDto dto          = StorageVideoUtil.convert(storageVideo);
            StorageImage    storageImage = storageImageBll.get(dto.storageImageId);

            dto.storageImageUrl = storageImage?.url;

            CVideo cVideo = (CVideo)currElement;

            cVideo.updateElement(dControl, true, dto);

            Close();
        }
        private async void Camera_Click(object sender, RoutedEventArgs e)
        {
            var capture = new CameraCaptureUI();

            capture.PhotoSettings.AllowCropping = true;
            capture.PhotoSettings.Format        = CameraCaptureUIPhotoFormat.Jpeg;
            capture.PhotoSettings.MaxResolution = CameraCaptureUIMaxPhotoResolution.MediumXga;
            capture.VideoSettings.Format        = CameraCaptureUIVideoFormat.Mp4;
            capture.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.StandardDefinition;

            var file = await capture.CaptureFileAsync(CameraCaptureUIMode.PhotoOrVideo);

            if (file != null)
            {
                if (file.ContentType.Equals("video/mp4"))
                {
                    await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("WIN_yyyyMMdd_HH_mm_ss") + ".mp4", NameCollisionOption.GenerateUniqueName);

                    ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StorageVideo.CreateAsync(file, true), false));
                }
                else
                {
                    await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("WIN_yyyyMMdd_HH_mm_ss") + ".jpg", NameCollisionOption.GenerateUniqueName);

                    ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StoragePhoto.CreateAsync(file, true), false));
                }
            }
        }
        /*
         * 初始化页面控件
         */
        private void initControl(Int32 pageId)
        {
            DPage dPage = dPageBll.get(pageId);

            this.dPage = dPage;
            if (dPage == null)
            {
                return;
            }
            //1加载背景图片
            StorageImage storageImage = null;

            if (dPage.backgroundImageId > 0)
            {
                storageImage = storageImageBll.get(dPage.backgroundImageId);
            }
            if (FileUtil.imageIsExists(storageImage?.url))
            {
                Background = Brushes.Transparent;
                FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + storageImage.url, Convert.ToInt32(ActualWidth), Stretch.Fill);
            }
            else if (showDefaultBackgroundInCFrameDialog)
            {
                Background = Brushes.Transparent;
                FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + Params.CFrameDialogDefaultBackground, Convert.ToInt32(ActualWidth), Stretch.Fill);
            }
            //2加载视频背景
            if (dPage.backgroundVideoId > 0)
            {
                StorageVideo storageVideo = storageVideoBll.get(dPage.backgroundVideoId);
                if (storageVideo != null)
                {
                    int pageWidth  = App.localStorage.cfg.screenWidth;
                    int pageHeight = App.localStorage.cfg.screenHeight;
                    if (dPage.width > 0)
                    {
                        pageWidth  = dPage.width;
                        pageHeight = dPage.height;
                    }
                    insertCVideoBackground(storageVideo, pageWidth, pageHeight);
                }
            }


            insertToPage = new InsertToPage(mainFrame, container, dPage, this);
            List <DControl> list = dControlBll.getByPageId(pageId);

            if (list == null)
            {
                return;
            }
            foreach (DControl ctl in list)
            {
                insertToPage.insertControl(ctl);
            }
        }
        //显示选中的控件
        private void showSelectedVideo(StorageVideo storageVideo)
        {
            if (storageVideo == null)
            {
                return;
            }
            selectedVideoWrapPanel.Children.Clear();
            Canvas selectedVideoCanvas = initSelectedVideo(storageVideo);

            selectedVideoWrapPanel.Children.Add(selectedVideoCanvas);
        }
        /*
         * 初始化页面控件
         */
        private void initControl(Int32 pageId)
        {
            container.Children.Clear();
            dPage = dPageBll.get(pageId);
            if (dPage == null)
            {
                return;
            }
            //1加载背景图片
            StorageImage storageImage = null;

            if (dPage.backgroundImageId > 0)
            {
                storageImage = storageImageBll.get(dPage.backgroundImageId);
            }
            if (FileUtil.imageIsExists(storageImage?.url))
            {
                Background = Brushes.Transparent;
                FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + storageImage.url, App.localStorage.cfg.screenWidth, Stretch.Fill);
            }
            else if (showDefaultBackgroundInCFrameDialog)
            {
                Background = Brushes.Transparent;
                FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + Params.CFrameDialogDefaultBackground, App.localStorage.cfg.screenWidth, Stretch.Fill);
            }
            else
            {
                Background = Brushes.White;
            }

            //2加载视频背景
            if (dPage.backgroundVideoId > 0)
            {
                StorageVideo storageVideo = storageVideoBll.get(dPage.backgroundVideoId);
                if (storageVideo != null)
                {
                    int pageWidth  = App.localStorage.cfg.screenWidth;
                    int pageHeight = App.localStorage.cfg.screenHeight;
                    if (dPage.width > 0)
                    {
                        pageWidth  = dPage.width;
                        pageHeight = dPage.height;
                    }
                    insertCVideoBackground(storageVideo, pageWidth, pageHeight);
                }
            }

            //编辑框,及页面空白处点击
            editing = new Editing(mainFrame, this);
        }
Exemple #14
0
        private void init(DControl ctl)
        {
            StorageVideo storageVideo  = storageVideoBll.get(ctl.storageId);
            string       videoFullPath = FileUtil.notExistsShowDefault(storageVideo?.url, Params.VideoNotExists);


            width.Text  = ctl.width.ToString();
            height.Text = ctl.height.ToString();
            left.Text   = ctl.left.ToString();
            top.Text    = ctl.top.ToString();

            opacity.Text = ctl.opacity.ToString();
            idx.Content  = ctl.idx.ToString();
        }
        private void url_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            StorageVideo storageVideo = null;
            object       tag          = backgroundVideoId.Tag;

            if (tag == null)
            {
                return;
            }
            storageVideo = (StorageVideo)tag;
            string fullFolder = FileUtil.getDirectory(AppDomain.CurrentDomain.BaseDirectory + storageVideo.url);

            FileUtil.openFile(fullFolder);
        }
Exemple #16
0
        public static StorageVideoDto convert(StorageVideo sv)
        {
            StorageVideoDto dto = new StorageVideoDto();

            dto.id           = sv.id;
            dto.origFilename = sv.origFilename;
            dto.url          = sv.url;
            dto.size         = sv.size;
            dto.ext          = sv.ext;
            dto.createTime   = sv.createTime;

            dto.duration       = sv.duration;
            dto.storageImageId = sv.storageImageId;
            dto.folderId       = sv.folderId;
            return(dto);
        }
        private void init(DControl ctl)
        {
            if (!isLoading && !isLastPage)
            {
                isLoading = true;
                videoListWrap.Children.Clear();
                initVideoList();
                isLoading = false;
            }
            videoListScrollViewer.ScrollChanged += videoListScrollViewerChanged;

            //初始化选中按钮
            if (ctl.linkToVideoId > 0)
            {
                StorageVideo storageVideo = storageVideoBll.get(ctl.linkToVideoId);
                showSelectedVideo(storageVideo);
            }
        }
        /*
         * 保存视频
         */
        private void Submit_Button_Click(object sender, RoutedEventArgs e)
        {
            //更新页面控件信息
            StorageVideo storageVideo = storageVideoBll.get(storageVideoId);
            StorageImage storageImage = storageImageBll.get(storageVideo.storageImageId);
            string       imgFullPath  = FileUtil.notExistsShowDefault(storageImage?.url, Params.ImageNotExists);

            imgFullPath = AppDomain.CurrentDomain.BaseDirectory + imgFullPath;


            currElement.Background = new ImageBrush
            {
                ImageSource = FileUtil.readImage2(imgFullPath, Convert.ToInt32(currElement.ActualWidth)),
                Stretch     = Stretch.Fill
            };
            currElement.Tag = storageVideo;

            Close();
        }
Exemple #19
0
        private void init(DControl ctl)
        {
            StorageVideo storageVideo  = storageVideoBll.get(ctl.storageId);
            string       videoFullPath = FileUtil.notExistsShowDefault(storageVideo?.url, Params.VideoNotExists);
            string       filename      = FileUtil.getFilename(videoFullPath);
            string       fullFolder    = FileUtil.getDirectory(AppDomain.CurrentDomain.BaseDirectory + videoFullPath);

            url.Content        = filename;
            url.Tag            = fullFolder;
            width.Text         = ctl.width.ToString();
            height.Text        = ctl.height.ToString();
            left.Text          = ctl.left.ToString();
            top.Text           = ctl.top.ToString();
            autoplay.IsChecked = ctl.autoplay;
            loop.IsChecked     = ctl.loop;
            opacity.Text       = ctl.opacity.ToString();
            idx.Content        = ctl.idx.ToString();
            isHideVideoConsoleOfFirstLoad.IsChecked = ctl.isHideVideoConsoleOfFirstLoad;
            url.PreviewMouseLeftButtonUp           += url_PreviewMouseLeftButtonUp;
        }
        //获取视频
        public StorageVideo get(int id)
        {
            String sql = "select * from storageVideo where id=@id";

            SQLiteParameter[] parameters =
            {
                new SQLiteParameter("@id", DbType.Int32, 4)
            };
            parameters[0].Value = id;

            DataTable dt = Common.SQLiteHelper.ExecuteQuery(sql, parameters);

            if (dt == null || dt.Rows.Count == 0)
            {
                return(null);
            }
            StorageVideo dControl = DataToEntity <StorageVideo> .FillModel(dt.Rows[0]);

            return(dControl);
        }
Exemple #21
0
        public StorageVideo insert(string origFilePath, string url, int duration, string imgPath, Int32 imgWidth, Int32 imgHeight, Int32 folderId)
        {
            StorageImage storageImage = storageImageBll.insert(AppDomain.CurrentDomain.BaseDirectory + imgPath, imgPath, imgWidth, imgHeight, 1);

            //补充idx,createTime两个参数
            FileInfo fileInfo     = new FileInfo(origFilePath);
            String   origFilename = FileUtil.getFilename(origFilePath);

            StorageVideo storageVideo = new StorageVideo();

            storageVideo.origFilename   = origFilename;
            storageVideo.url            = url;
            storageVideo.ext            = fileInfo.Extension;
            storageVideo.size           = (int)fileInfo.Length;
            storageVideo.createTime     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            storageVideo.storageImageId = storageImage.id;
            storageVideo.duration       = duration;
            storageVideo.folderId       = folderId; //放在默认文件夹下

            return(storageVideoDal.insert(storageVideo));
        }
        private void init(Int32 backgroundVideoIdVal)
        {
            StorageImage storageImage = null;
            StorageVideo storageVideo = null;

            if (backgroundVideoIdVal > 0)
            {
                storageVideo = storageVideoBll.get(backgroundVideoIdVal);
                if (storageVideo != null)
                {
                    storageImage = storageImageBll.get(storageVideo.storageImageId);
                }
            }
            //Canvas canvas = initOneImage(storageVideo, storageImage);
            //imgList.Children.Add(canvas);


            //显示背景图片
            backgroundVideoId.Tag = storageVideo;
            string imgPath = FileUtil.notExistsShowDefault(storageImage?.url, Params.Ico_Add_Image);

            backgroundVideoId.Background = new ImageBrush
            {
                ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + imgPath)
                ,
                Stretch = Stretch.Uniform
            };
            backgroundVideoId.Click += btn_Click;

            //删除
            removeBtn.Background = new ImageBrush
            {
                ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + "/myfile/sysimg/ico-image-remove.png")
                ,
                Stretch = Stretch.UniformToFill
            };
            removeBtn.Click += removeBtnClick;

            url.PreviewMouseLeftButtonUp += url_PreviewMouseLeftButtonUp;
        }
        /*
         * 保存数据
         */
        private void Submit_Button_Click(object sender, RoutedEventArgs e)
        {
            StorageVideo storageVideo = null;
            object       tag          = backgroundVideoId.Tag;

            if (tag != null)
            {
                storageVideo = (StorageVideo)tag;
            }

            //更新到数据库
            DPage dPage = dPageBll.get(currDPage.id);

            dPage.backgroundVideoId = storageVideo == null ? 0 : storageVideo.id;
            dPageBll.update(dPage);
            currDPage          = dPage;
            pageTemplate.dPage = dPage;


            //更新页面控件信息

            //1.清空视频背景
            foreach (FrameworkElement ele in pageTemplate.backgroundVideo.Children)
            {
                if (ele.Name == "CVideoBackground")
                {
                    CVideoBackground cVideoBackground = (CVideoBackground)ele;

                    cVideoBackground = null;
                }
            }
            pageTemplate.backgroundVideo.Children.Clear();
            if (storageVideo != null)
            {
                insertCVideoBackground(storageVideo);
            }

            Close();
        }
Exemple #24
0
        public Int32 delete(StorageVideo storageVideo)
        {
            //1.删除物理文件
            if (string.IsNullOrWhiteSpace(storageVideo.url))
            {
                return(0);
            }
            //string fullFilePath = AppDomain.CurrentDomain.BaseDirectory + storageVideo.url;
            //Boolean b = File.Exists(fullFilePath);
            //if (b)
            //{
            //    File.Delete(fullFilePath);
            //}

            //2.同时删除缩略图
            StorageImage storageImage = storageImageBll.get(storageVideo.storageImageId);

            storageImageBll.delete(storageImage);

            //3.数据库记录删除
            return(storageVideoDal.delete(storageVideo.id));
        }
Exemple #25
0
        private void MediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            vlcControl.SourceProvider.MediaPlayer.TimeChanged -= MediaPlayer_TimeChanged;
            string   shotJpg  = FileUtil.replaceExt(destFilePath, "jpg");
            FileInfo shotFile = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + shotJpg);

            ThreadPool.QueueUserWorkItem(_ =>
            {
                Console.WriteLine("视频截图----------");
                vlcControl.SourceProvider.MediaPlayer.TakeSnapshot(shotFile, 0, 0);
                long length  = vlcControl.SourceProvider.MediaPlayer.Length;
                int duration = Convert.ToInt32(length / 1000.0);

                int jpgWidth  = 0;
                int jpgHeight = 0;
                try
                {
                    System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + shotJpg);
                    jpgWidth  = sourceImage.Width;
                    jpgHeight = sourceImage.Height;
                }
                catch (Exception)
                {
                }
                StorageVideo storageVideo = storageVideoBll.insert(this.sourceFilePath, destFilePath, duration, shotJpg, jpgWidth, jpgHeight, folderId);


                //插入一个视频到列表
                App.Current.Dispatcher.Invoke((Action)(() =>
                {
                    Canvas newVideo = initOneVideo(storageVideo);
                    videoListWrap.Children.Insert(0, newVideo);
                    selectButton(newVideo);
                }));

                vlcControl?.Dispose();
            });
        }
Exemple #26
0
        private async void OnPaste(object sender, TextControlPasteEventArgs e)
        {
            // If the user tries to paste RTF content from any TOM control (Visual Studio, Word, Wordpad, browsers)
            // we have to handle the pasting operation manually to allow plaintext only.
            var package = Clipboard.GetContent();

            if (package.AvailableFormats.Contains(StandardDataFormats.Bitmap))
            {
                if (e != null)
                {
                    e.Handled = true;
                }

                var bitmap = await package.GetBitmapAsync();

                var media = new ObservableCollection <StorageMedia>();

                var fileName = string.Format("image_{0:yyyy}-{0:MM}-{0:dd}_{0:HH}-{0:mm}-{0:ss}.png", DateTime.Now);
                var cache    = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName);

                using (var stream = await bitmap.OpenReadAsync())
                {
                    var result = await ImageHelper.TranscodeAsync(stream, cache, BitmapEncoder.PngEncoderId);

                    var photo = await StoragePhoto.CreateAsync(result, true);

                    if (photo == null)
                    {
                        return;
                    }

                    media.Add(photo);
                }

                if (package.AvailableFormats.Contains(StandardDataFormats.Text))
                {
                    media[0].Caption = new FormattedText(await package.GetTextAsync(), new TextEntity[0]);
                }

                ViewModel.SendMediaExecute(media, media[0]);
            }
            else if (package.AvailableFormats.Contains(StandardDataFormats.WebLink))
            {
            }
            else if (package.AvailableFormats.Contains(StandardDataFormats.StorageItems))
            {
                if (e != null)
                {
                    e.Handled = true;
                }

                var items = await package.GetStorageItemsAsync();

                var media = new ObservableCollection <StorageMedia>();
                var files = new List <StorageFile>(items.Count);

                foreach (var file in items.OfType <StorageFile>())
                {
                    if (file.ContentType.Equals("image/jpeg", StringComparison.OrdinalIgnoreCase) ||
                        file.ContentType.Equals("image/png", StringComparison.OrdinalIgnoreCase) ||
                        file.ContentType.Equals("image/bmp", StringComparison.OrdinalIgnoreCase) ||
                        file.ContentType.Equals("image/gif", StringComparison.OrdinalIgnoreCase))
                    {
                        var photo = await StoragePhoto.CreateAsync(file, true);

                        if (photo != null)
                        {
                            media.Add(photo);
                        }
                    }
                    else if (file.ContentType == "video/mp4")
                    {
                        var video = await StorageVideo.CreateAsync(file, true);

                        if (video != null)
                        {
                            media.Add(video);
                        }
                    }

                    files.Add(file);
                }

                // Send compressed __only__ if user is dropping photos and videos only
                if (media.Count > 0 && media.Count == files.Count)
                {
                    ViewModel.SendMediaExecute(media, media[0]);
                }
                else if (files.Count > 0)
                {
                    ViewModel.SendFileExecute(files);
                }
            }
            else if (package.AvailableFormats.Contains(StandardDataFormats.Text) && package.AvailableFormats.Contains("application/x-tl-field-tags"))
            {
                if (e != null)
                {
                    e.Handled = true;
                }

                // This is our field format
                var text = await package.GetTextAsync();

                var data = await package.GetDataAsync("application/x-tl-field-tags") as IRandomAccessStream;

                var reader = new DataReader(data.GetInputStreamAt(0));
                var length = await reader.LoadAsync((uint)data.Size);

                var count    = reader.ReadInt32();
                var entities = new List <TextEntity>(count);

                for (int i = 0; i < count; i++)
                {
                    var entity = new TextEntity {
                        Offset = reader.ReadInt32(), Length = reader.ReadInt32()
                    };
                    var type = reader.ReadByte();

                    switch (type)
                    {
                    case 1:
                        entity.Type = new TextEntityTypeBold();
                        break;

                    case 2:
                        entity.Type = new TextEntityTypeItalic();
                        break;

                    case 3:
                        entity.Type = new TextEntityTypePreCode();
                        break;

                    case 4:
                        entity.Type = new TextEntityTypeTextUrl {
                            Url = reader.ReadString(reader.ReadUInt32())
                        };
                        break;

                    case 5:
                        entity.Type = new TextEntityTypeMentionName {
                            UserId = reader.ReadInt32()
                        };
                        break;
                    }

                    entities.Add(entity);
                }

                InsertText(text, entities);
            }
            else if (package.AvailableFormats.Contains(StandardDataFormats.Text) && package.AvailableFormats.Contains("application/x-td-field-tags"))
            {
                // This is Telegram Desktop mentions format
            }
            else if (package.AvailableFormats.Contains(StandardDataFormats.Text) /*&& package.Contains("Rich Text Format")*/)
            {
                if (e != null)
                {
                    e.Handled = true;
                }

                var text = await package.GetTextAsync();

                var start = Document.Selection.StartPosition;

                var result = Emoticon.Pattern.Replace(text, (match) =>
                {
                    var emoticon = match.Groups[1].Value;
                    var emoji    = Emoticon.Replace(emoticon);
                    if (match.Value.StartsWith(" "))
                    {
                        emoji = $" {emoji}";
                    }

                    return(emoji);
                });

                Document.Selection.SetText(TextSetOptions.None, result);
                Document.Selection.SetRange(start + result.Length, start + result.Length);
            }
        }
        /*
         * 添加已选择的视频
         */
        private Canvas initSelectedVideo(StorageVideo video)
        {
            VideoListTag tag = new VideoListTag();

            tag.isSelected   = false;
            tag.storageVideo = video;
            Canvas selectedVideoCanvas = new Canvas();

            selectedVideoCanvas.Name   = "selectedVideoCanvas";
            selectedVideoCanvas.Width  = 100;
            selectedVideoCanvas.Height = 100;
            selectedVideoCanvas.Margin = new Thickness(10);
            selectedVideoCanvas.Tag    = tag;

            //1.按钮
            StorageImage storageImage = storageImageBll.get(video.storageImageId);
            string       imgFullPath  = FileUtil.notExistsShowDefault(storageImage?.url, Params.ImageNotExists);

            imgFullPath = AppDomain.CurrentDomain.BaseDirectory + imgFullPath;
            Image videoImage = new Image();

            videoImage.Name    = "videoImage1";
            videoImage.Width   = 100;
            videoImage.Height  = 75;
            videoImage.Source  = FileUtil.readImage2(imgFullPath, 200);
            videoImage.Stretch = Stretch.UniformToFill;

            //2.按钮行
            Canvas bg = new Canvas();

            bg.Name       = "bg";
            bg.Background = Brushes.Black;
            bg.Width      = 100;
            bg.Height     = 24;
            bg.Opacity    = 0.6;
            bg.SetValue(Canvas.BottomProperty, 25.0);
            bg.SetValue(Canvas.LeftProperty, 0.0);

            //时长
            string mmss   = VideoUtil.duration2mmss(video.duration);
            Label  lLabel = new Label();

            lLabel.Width      = 50;
            lLabel.Height     = 24;
            lLabel.Content    = mmss;
            lLabel.Foreground = Brushes.White;
            lLabel.SetValue(Canvas.LeftProperty, 0.0);
            lLabel.SetValue(Canvas.TopProperty, 0.0);
            bg.Children.Add(lLabel);

            //删除按钮
            Button rbtn = new Button();

            rbtn.Width           = 16;
            rbtn.Height          = 16;
            rbtn.BorderThickness = new Thickness(0);
            rbtn.Background      = new ImageBrush
            {
                ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + App.localStorage.icoRemove)
                ,
                Stretch = Stretch.UniformToFill
            };
            rbtn.SetValue(Canvas.RightProperty, -8.0);
            rbtn.SetValue(Canvas.TopProperty, -8.0);
            rbtn.Click += rbtnRemoveSelectedVideoClick;


            //标题
            string videoFullPath = FileUtil.notExistsShowDefault(video?.url, Params.VideoNotExists);
            string fullFolder    = FileUtil.getDirectory(AppDomain.CurrentDomain.BaseDirectory + videoFullPath);

            Label titleLabel = new Label();

            titleLabel.Width   = 100;
            titleLabel.Height  = 25;
            titleLabel.Content = video.origFilename;
            titleLabel.Tag     = fullFolder;
            titleLabel.SetValue(Canvas.LeftProperty, 0.0);
            titleLabel.SetValue(Canvas.BottomProperty, 0.0);
            titleLabel.ToolTip = video.origFilename;
            titleLabel.PreviewMouseLeftButtonUp += titleLabel_PreviewMouseLeftButtonUp;

            selectedVideoCanvas.Children.Add(videoImage);
            selectedVideoCanvas.Children.Add(bg);
            selectedVideoCanvas.Children.Add(titleLabel);
            selectedVideoCanvas.Children.Add(rbtn);
            return(selectedVideoCanvas);
        }
        /*
         *  1.4 链接到全屏视频
         */
        public void insertFullVideoToPage(DControlDto dControlDto)
        {
            StorageVideo storageVideo = storageVideoBll.get(dControlDto.linkToVideoId);


            int frameWidth  = App.localStorage.cfg.screenWidth;
            int frameHeight = App.localStorage.cfg.screenHeight;

            if (dPage.width > 0)
            {
                frameWidth = dPage.width;
            }
            if (dPage.height > 0)
            {
                frameHeight = dPage.height;
            }
            Cfg cfg = new Cfg();

            cfg.screenWidth  = frameWidth;
            cfg.screenHeight = frameHeight;


            if (storageVideo == null)
            {
                storageVideo              = new StorageVideo();
                storageVideo.url          = "/myfile/sysimg/notExists/video.mp4";
                storageVideo.origFilename = "演示视频.mp4";
            }
            StorageVideoDto dto          = StorageVideoUtil.convert(storageVideo);
            StorageImage    storageImage = storageImageBll.get(dto.storageImageId);

            dto.storageImageUrl = storageImage?.url;

            DControl ctl = new DControl();

            ctl.id               = 10003;
            ctl.pageId           = 0;
            ctl.name             = "cVideo";
            ctl.width            = cfg.screenWidth;
            ctl.height           = cfg.screenHeight;
            ctl.left             = 0;
            ctl.top              = 0;
            ctl.type             = "Video";
            ctl.content          = FileUtil.getFilenameTitle(storageVideo?.origFilename);
            ctl.idx              = 0; /////
            ctl.linkToPageId     = 0;
            ctl.isClickShow      = false;
            ctl.linkToVideoId    = 0;
            ctl.autoplay         = true;
            ctl.loop             = false;
            ctl.turnPictureSpeed = 0;
            ctl.storageId        = storageVideo.id;


            Canvas fullVideoCanvas = new Canvas();

            fullVideoCanvas.Name   = "fullVideoCanvas";
            fullVideoCanvas.Width  = ctl.width;
            fullVideoCanvas.Height = ctl.height;
            fullVideoCanvas.HorizontalAlignment = HorizontalAlignment.Left;
            fullVideoCanvas.VerticalAlignment   = VerticalAlignment.Top;
            TransformGroup group          = new TransformGroup();
            double         scaleX         = dControlDto.width / Convert.ToDouble(ctl.width);
            double         scaleY         = dControlDto.height / Convert.ToDouble(ctl.height);
            ScaleTransform scaleTransform = new ScaleTransform();

            scaleTransform.ScaleX = scaleX;
            scaleTransform.ScaleY = scaleY;
            group.Children.Add(scaleTransform);
            fullVideoCanvas.RenderTransform = group;
            double left = dControlDto.left;
            double top  = dControlDto.top;

            fullVideoCanvas.Margin = new Thickness(left, top, 0, 0);
            Panel.SetZIndex(fullVideoCanvas, 10003);

            CVideo cVideo = new CVideo(ctl, true, cfg, dto, pageTemplate1.mqServer, true);

            cVideo.Name = "cVideo";
            cVideo.HorizontalAlignment = HorizontalAlignment.Left;
            cVideo.VerticalAlignment   = VerticalAlignment.Top;
            cVideo.Width      = ctl.width;
            cVideo.Height     = ctl.height;
            cVideo.Background = null;
            cVideo.Tag        = ctl;


            //动画,平移到指定位置
            double toTranslateTransformX = 0 - dControlDto.left;
            double toTranslateTransformY = 0 - dControlDto.top;

            fullVideoCanvas.Children.Add(cVideo);
            AnimationUtil.loadFullVideo(fullVideoCanvas, toTranslateTransformX, toTranslateTransformY);


            pageTemplate1.container.Children.Add(fullVideoCanvas);

            //是否显示关闭按钮
            Button closebtn = cVideo.GetClosebtn();

            closebtn.Visibility = Visibility.Visible;
            closebtn.Tag        = true;
            closebtn.Click     += (object sender, RoutedEventArgs e) => closeVideoAnimation(fullVideoCanvas, dControlDto, cVideo);
        }
        /*
         * 初始化一个图片控件
         */
        private Canvas initOneVideo(StorageVideo storageVideo)
        {
            VideoListTag tag = new VideoListTag();

            tag.isSelected   = false;
            tag.storageVideo = storageVideo;
            Canvas videoCanvas = new Canvas();

            videoCanvas.Name   = "videoCanvas";
            videoCanvas.Width  = 100;
            videoCanvas.Height = 100;
            videoCanvas.Margin = new Thickness(10);
            videoCanvas.Tag    = tag;

            //1.按钮
            StorageImage storageImage = storageImageBll.get(storageVideo.storageImageId);
            string       imgFullPath  = FileUtil.notExistsShowDefault(storageImage?.url, Params.ImageNotExists);

            imgFullPath = AppDomain.CurrentDomain.BaseDirectory + imgFullPath;

            Image videoImage = new Image();

            videoImage.Name    = "videoImage1";
            videoImage.Width   = 100;
            videoImage.Height  = 75;
            videoImage.Source  = FileUtil.readImage2(imgFullPath, 200);
            videoImage.Stretch = Stretch.UniformToFill;

            //2.按钮行
            Canvas bg = new Canvas();

            bg.Name       = "bg";
            bg.Background = Brushes.Black;
            bg.Width      = 100;
            bg.Height     = 24;
            bg.Opacity    = 0.6;
            bg.SetValue(Canvas.BottomProperty, 25.0);
            bg.SetValue(Canvas.LeftProperty, 0.0);

            //时长
            string mmss   = VideoUtil.duration2mmss(storageVideo.duration);
            Label  lLabel = new Label();

            lLabel.Width      = 50;
            lLabel.Height     = 24;
            lLabel.Content    = mmss;
            lLabel.Foreground = Brushes.White;
            lLabel.SetValue(Canvas.LeftProperty, 0.0);
            lLabel.SetValue(Canvas.TopProperty, 0.0);
            bg.Children.Add(lLabel);

            //删除按钮
            Button rbtn = new Button();

            rbtn.Width           = 16;
            rbtn.Height          = 16;
            rbtn.BorderThickness = new Thickness(0);
            rbtn.Background      = new ImageBrush
            {
                ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + "/myfile/sysimg/ico-image-remove.png")
                ,
                Stretch = Stretch.UniformToFill
            };
            rbtn.SetValue(Canvas.RightProperty, -8.0);
            rbtn.SetValue(Canvas.TopProperty, -8.0);
            // bg.Children.Add(rbtn);
            // rbtn.Click += rbtnClick;


            //标题
            Label titleLabel = new Label();

            titleLabel.Width   = 100;
            titleLabel.Height  = 25;
            titleLabel.Content = storageVideo.origFilename;
            titleLabel.SetValue(Canvas.LeftProperty, 0.0);
            titleLabel.SetValue(Canvas.BottomProperty, 0.0);
            titleLabel.ToolTip = storageVideo.origFilename;

            //勾选
            Button selectButton = new Button();

            selectButton.Name            = "selectButton";
            selectButton.Tag             = storageVideo.id;
            selectButton.Width           = 24;
            selectButton.Height          = 24;
            selectButton.BorderThickness = new Thickness(0);
            selectButton.SetValue(Canvas.LeftProperty, 7.0);
            selectButton.SetValue(Canvas.TopProperty, 7.0);
            selectButton.Background = new ImageBrush
            {
                ImageSource = new BitmapImage(new Uri(@"Resources/ico_media_select.png", UriKind.Relative)),
                Stretch     = Stretch.UniformToFill
            };
            selectButton.Visibility = Visibility.Hidden;


            videoCanvas.MouseEnter          += videoCanvasMouseEnter;
            videoCanvas.MouseLeave          += videoCanvasMouseLeave;
            videoCanvas.MouseLeftButtonDown += selectButtonClick;
            selectButton.Click += selectButtonClick;



            videoCanvas.Children.Add(videoImage);
            videoCanvas.Children.Add(bg);
            videoCanvas.Children.Add(titleLabel);
            videoCanvas.Children.Add(selectButton);
            // videoCanvas.Children.Add(rbtn);

            return(videoCanvas);
        }
Exemple #30
0
        /*
         * 更新视频
         */
        public StorageVideo update(StorageVideo one)
        {
            int rows = storageVideoDal.upate(one);

            return(one);
        }