MoveToRecycleBin() public static method

Send file silently to recycle bin. Surpress dialog, surpress errors, delete if too large.
public static MoveToRecycleBin ( string path ) : void
path string Location of directory or file to recycle
return void
Example #1
0
        private void FixContainer(VideoListItem item)
        {
            SetStatus(item, VideoListItemStatusEnum.Converting);
            string SrcFile = Settings.NaturalGroundingFolder + item.FileName;

            if (item.FileName != null && File.Exists(SrcFile))
            {
                FFmpegProcess FileInfo = MediaInfo.GetFileInfo(SrcFile);
                string        Ext1     = Path.GetExtension(item.FileName).ToLower();
                string        Ext2     = DownloadBusiness.GetFinalExtension(FileInfo.VideoStream?.Format, FileInfo.AudioStream?.Format);
                if ((Ext2 == ".mp4" || Ext2 == ".webm") && Ext1 != Ext2)
                {
                    string DstFile = item.FileName.Substring(0, item.FileName.Length - Ext1.Length) + Ext2;
                    if (MediaMuxer.Muxe(SrcFile, SrcFile, Settings.NaturalGroundingFolder + DstFile) == CompletionStatus.Success)
                    {
                        FileOperationAPIWrapper.MoveToRecycleBin(SrcFile);
                        // Change database binding.
                        EditVideoBusiness Business     = new EditVideoBusiness();
                        Media             ExistingData = Business.GetVideoById(item.MediaId.Value);
                        if (ExistingData != null)
                        {
                            // Edit video info.
                            ExistingData.FileName = DstFile;
                            Business.Save();
                            SetStatus(item, VideoListItemStatusEnum.Done);
                            return;
                        }
                    }
                }
            }
            SetStatus(item, VideoListItemStatusEnum.Failed);
        }
Example #2
0
        /// <summary>
        /// Updates database if needed.
        /// </summary>
        /// <param name="backupBeforeUpdate">If true, backups database before udpating.</param>
        public async Task UpdateDatabaseAsync()
        {
            Version databaseVersion = VersionAccess.GetVersionInfo();

            if (databaseVersion < new Version(1, 4, 0, 0))
            {
                if (isDatabaseRecreated)
                {
                    throw new Exception(string.Format("InitialDatabase version {0} is outdated.", databaseVersion.ToString()));
                }

                string Msg = string.Format("Database v{0} is outdated. Do you wish to delete it and recreate an updated database? All your personal data will be lost.", databaseVersion.ToString(3));
                if (MessageBox.Show(owner, Msg, "Database Update", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
                {
                    throw new Exception(string.Format("Database is outdated."));
                }

                GC.Collect();
                await TryUntilTimeout(() => FileOperationAPIWrapper.MoveToRecycleBin(AppPaths.DatabasePath), 10000);

                isDatabaseRecreated = true;
                await EnsureAvailableAsync();

                // UpdateDatabaseToVersion(backupBeforeUpdate, 0, 9, 3, 0);
            }
        }
        protected override void OnMuxing(object sender, DownloadCompletedEventArgs e)
        {
            // Separate file extension.
            DownloadItemData IData = e.DownloadInfo.Data as DownloadItemData;

            FileProgress     VideoFile = e.DownloadInfo.Files.FirstOrDefault(f => f.Type == StreamType.Video);
            FileProgress     AudioFile = e.DownloadInfo.Files.FirstOrDefault(f => f.Type == StreamType.Audio);
            string           SrcFile   = IData.Media.FileName != null ? Settings.NaturalGroundingFolder + IData.Media.FileName : null;
            CompletionStatus Result    = CompletionStatus.Success;

            if (IData.Media.FileName != null && File.Exists(SrcFile) && (VideoFile == null || AudioFile == null))
            {
                // Upgrade audio or video
                FFmpegProcess MInfo       = MediaInfo.GetFileInfo(SrcFile);
                string        VideoFormat = VideoFile != null?Path.GetExtension(VideoFile.Destination).TrimStart('.') : MInfo.VideoStream?.Format;

                string AudioFormat = AudioFile != null?Path.GetExtension(AudioFile.Destination).TrimStart('.') : MInfo.AudioStream?.Format;

                string VideoDestExt = GetFinalExtension(VideoFormat, AudioFormat);
                e.DownloadInfo.Destination = e.DownloadInfo.DestinationNoExt + VideoDestExt;
                Result = MediaMuxer.Muxe(VideoFile?.Destination ?? SrcFile, AudioFile?.Destination ?? SrcFile, e.DownloadInfo.Destination);
            }
            if (Result == CompletionStatus.Success && File.Exists(SrcFile))
            {
                FileOperationAPIWrapper.MoveToRecycleBin(SrcFile);
            }

            e.DownloadInfo.Status = Result == CompletionStatus.Success ? DownloadStatus.Done : DownloadStatus.Failed;
        }
        protected override void OnCompleted(object sender, DownloadCompletedEventArgs e)
        {
            DownloadItemData IData          = e.DownloadInfo.Data as DownloadItemData;
            Media            Video          = IData.Media;
            string           Destination    = e.DownloadInfo.Destination;
            string           DestinationExt = Path.GetExtension(Destination);

            Destination = Destination.Substring(0, Destination.Length - Path.GetExtension(Destination).Length);

            // Ensure download and merge succeeded.
            if (!FileHasContent(e.DownloadInfo.Destination))
            {
                e.DownloadInfo.Status = DownloadStatus.Failed;
                return;
            }

            // Get final file name.
            DefaultMediaPath PathCalc    = new DefaultMediaPath();
            string           NewFileName = PathCalc.GetDefaultFileName(Video.Artist, Video.Title, Video.MediaCategoryId, (MediaType)Video.MediaTypeId);

            Directory.CreateDirectory(Path.GetDirectoryName(Settings.NaturalGroundingFolder + NewFileName));
            Video.FileName = NewFileName + DestinationExt;

            // Move file and overwrite.
            string DstFile = Settings.NaturalGroundingFolder + Video.FileName;

            if (File.Exists(DstFile))
            {
                FileOperationAPIWrapper.MoveToRecycleBin(DstFile);
            }
            File.Move(Destination + DestinationExt, DstFile);

            // Add to database
            EditVideoBusiness Business     = new EditVideoBusiness();
            Media             ExistingData = Business.GetVideoById(Video.MediaId);

            if (ExistingData != null)
            {
                // Edit video info.
                ExistingData.FileName = Video.FileName;
                ExistingData.Length   = null;
                ExistingData.Height   = null;
                Business.Save();
            }
            else
            {
                // Add new video info.
                Business.AddVideo(Video);
                Business.Save();
            }

            base.OnCompleted(sender, e);
        }