Exemplo n.º 1
0
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            ScanFile item = (ScanFile)(sender as Button).DataContext;
            Scan     scan = Scanner.Instance.ActiveScan;

            if (scan != null && scan.ScanID == item.ScanID)
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddSingleMessage,
                                    Shoko.Commons.Properties.Resources.Integerity_ReaddSingleTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    scan.Status = (int)ScanStatus.Standby;
                    RepoFactory.Scan.Save(scan);
                }
                item.Status = (int)ScanFileStatus.Waiting;
                RepoFactory.ScanFile.Save(item);
                Scanner.Instance.ActiveErrorFiles.Remove(item);
                Scanner.Instance.Refresh();
            }
        }
Exemplo n.º 2
0
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            ScanFile item = (ScanFile)(sender as Button)?.DataContext;
            SVR_Scan scan = Scanner.Instance.ActiveScan;

            if (scan != null && item != null && scan.ScanID == item.ScanID)
            {
                if (scan.GetScanStatus() == ScanStatus.Running)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddSingleMessage,
                                    Shoko.Commons.Properties.Resources.Integerity_ReaddSingleTitle, MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    return;
                }
                if (scan.GetScanStatus() == ScanStatus.Finish)
                {
                    using (var upd = Repo.Instance.Scan.BeginAddOrUpdate(() => scan))
                    {
                        upd.Entity.Status = (int)ScanStatus.Standby;
                        scan = upd.Commit();
                    }
                }
                using (var upd = Repo.Instance.ScanFile.BeginAddOrUpdate(() => item))
                {
                    upd.Entity.Status = (int)ScanFileStatus.Waiting;
                    item = upd.Commit();
                }
                Scanner.Instance.ActiveErrorFiles.Remove(item);
                Scanner.Instance.Refresh();
            }
        }
Exemplo n.º 3
0
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            ScanFile item = (ScanFile)(sender as Button)?.DataContext;

            if (item != null)
            {
                Scanner.Instance.ReAddErrorFile(item);
            }
        }
Exemplo n.º 4
0
 public void AddErrorScan(ScanFile file)
 {
     Utils.MainThreadDispatch(() =>
     {
         if (ActiveScan != null && ActiveScan.ScanID == file.ScanID)
         {
             ActiveErrorFiles.Add(file);
         }
     });
 }
Exemplo n.º 5
0
 public AudioFile(ScanFile file)
 {
     Path          = file.FullPath;
     FileName      = file.FileName;
     FileExtension = file.FileExtension;
     Name          = file.Tags?.Title ?? file.FileName;
     TrackNumber   = file.Tags?.Track ?? 1;
     AudioTags     = file.Tags;
     MimeType      = file.MimeType;
 }
Exemplo n.º 6
0
 public void AddErrorScan(ScanFile file)
 {
     Application.Current.Dispatcher.Invoke(() =>
     {
         if (ActiveScan != null && ActiveScan.ScanID == file.ScanID)
         {
             ActiveErrorFiles.Add(file);
         }
     });
 }
Exemplo n.º 7
0
        public static Option <Scan> Create(ScanFile file, List <Region> regions)
        {
            var validationRules = new List <LazyOption>
            {
                Optional.Lazy(() => file != null, "Scan file cannot be empty"),
                Optional.Lazy(() => regions != null, "List of regions on the scan cannot be null"),
            };

            return(validationRules.Reduce()
                   .Map(() => new Scan(file, regions)));
        }
Exemplo n.º 8
0
        public void ReAddErrorFile(ScanFile sf)
        {
            ScannerInfo info = Scans.FirstOrDefault(a => a.Scan.ScanID == sf.ScanID);

            if (info != null && info.ErrorFiles.Any(a => a.ScanFileID == sf.ScanFileID))
            {
                ScannerInfo          si = Scans.First(a => a.Scan.ScanID == sf.ScanID);
                SVR_VideoLocal_Place pl = Repo.Instance.VideoLocal_Place.GetByID(sf.VideoLocal_Place_ID);
                if (pl != null)
                {
                    info.ErrorFiles.Remove(sf);
                    Repo.Instance.ScanFile.Delete(sf);
                    Queue.Instance.Add(new CmdVerifyFile(pl), BatchName + si.Scan.ScanID);
                }
            }
        }
Exemplo n.º 9
0
        private void BtnAddcheck_Click(object sender, RoutedEventArgs e)
        {
            ScanImportFolders frm = new ScanImportFolders();

            frm.Owner = GetTopParent();
            bool?result = frm.ShowDialog();

            if (result.HasValue && result.Value)
            {
                this.IsEnabled = false;
                Cursor         = Cursors.Wait;
                Scan                  s   = frm.SelectedScan;
                HashSet <int>         imp = new HashSet <int>(s.GetImportFolderList());
                List <SVR_VideoLocal> vl  = imp.SelectMany(a => RepoFactory.VideoLocal.GetByImportFolder(a))
                                            .Distinct()
                                            .ToList();
                List <ScanFile> files = new List <ScanFile>();
                foreach (SVR_VideoLocal v in vl)
                {
                    foreach (SVR_VideoLocal_Place p in v.Places.Where(a => imp.Contains(a.ImportFolderID)))
                    {
                        ScanFile sfile = new ScanFile();
                        sfile.Hash                = v.ED2KHash;
                        sfile.FileSize            = v.FileSize;
                        sfile.FullName            = p.FullServerPath;
                        sfile.ScanID              = s.ScanID;
                        sfile.Status              = (int)ScanFileStatus.Waiting;
                        sfile.ImportFolderID      = p.ImportFolderID;
                        sfile.VideoLocal_Place_ID = p.VideoLocal_Place_ID;
                        files.Add(sfile);
                    }
                }
                RepoFactory.ScanFile.Save(files);
                this.IsEnabled = true;
                Scanner.Instance.Scans.Add(s);
                comboProvider.SelectedItem = s;
                Cursor = Cursors.Arrow;
            }
        }
Exemplo n.º 10
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // METHODS //////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public async Task RenameFileAsync(string newName, NameCollisionOption collisionOption)
        {
            await ScanFile.RenameAsync(newName, collisionOption);

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(ScanFile)));
        }
Exemplo n.º 11
0
 public AudioBook(ScanFile file)
 {
     Files = new List <AudioFile>();
     Files.Add(new AudioFile(file));
     AudioBookDirectoryPath = file.FullPath;
 }
Exemplo n.º 12
0
        //This must be init before queue start
        public void Init()
        {
            List <Scan> scans;

            using (var upd = Repo.Instance.Scan.BeginBatchUpdate(Repo.Instance.Scan.GetAll))
            {
                foreach (Scan s in upd)
                {
                    int cnt       = Queue.Instance.GetCommandCount(BatchName + s.ScanID);
                    int newstatus = cnt > 0 ? (int)ScanStatus.Running : (int)ScanStatus.Finish;
                    if (s.Status != newstatus)
                    {
                        s.Status = newstatus;
                        upd.Update(s);
                    }
                }

                scans = upd.Commit();
            }

            Queue.Instance.Where(a => a.Batch.StartsWith(BatchName)).Subscribe((cmd) =>
            {
                CmdVerifyFile vf = cmd as CmdVerifyFile;
                List <Expression <Func <object> > > changedProperties = new List <Expression <Func <object> > >();
                if (vf != null)
                {
                    string[] spl     = vf.Batch.Split('_');
                    int scanid       = int.Parse(spl[1]);
                    ScannerInfo info = Scans.First(a => a.Scan.ScanID == scanid);
                    if (vf.Status == CommandStatus.Finished || vf.Status == CommandStatus.Error && vf.Retries == vf.MaxRetries)
                    {
                        if (vf.ScanFileStatus != ScanFileStatus.ProcessedOK)
                        {
                            ScanFile sf            = new ScanFile();
                            sf.FullName            = vf.FullName;
                            sf.ScanID              = scanid;
                            sf.CheckDate           = vf.CheckDate;
                            sf.FileSize            = vf.OriginalSize;
                            sf.FileSizeResult      = vf.VerifiedSize;
                            sf.Status              = (int)vf.ScanFileStatus;
                            sf.Hash                = vf.OriginalHash;
                            sf.HashResult          = vf.VerifiedHash;
                            sf.ImportFolderID      = vf.ImportFolderId;
                            sf.VideoLocal_Place_ID = vf.VideoLocalPlaceId;
                            Repo.Instance.ScanFile.BeginAdd(sf).Commit();
                            info.ErrorFiles.Add(sf);
                        }

                        int cnt = Queue.Instance.GetCommandCount(vf.Batch) - 1; //Current command didnt finish yet (thats why 1)
                        if (cnt <= 0)
                        {
                            using (var upd = Repo.Instance.Scan.BeginAddOrUpdate(scanid))
                            {
                                upd.Entity.Status = (int)ScanStatus.Finish;
                                upd.Commit();
                                changedProperties.AddRange(new Expression <Func <object> >[] { () => info.CanBeCanceled, () => info.CanBeResumed, () => info.CanBePaused, () => info.CanBeStarted });
                            }
                        }

                        info.Count = cnt;
                        changedProperties.Add(() => info.Count);
                    }

                    info.State = vf.PrettyDescription.FormatMessage() + " " + ((int)vf.Progress) + " %";
                    changedProperties.Add(() => info.State);
                    info.OnPropertyChanged(changedProperties.ToArray());
                }
            });
            Scans = new AsyncObservableCollection <ScannerInfo>(scans.Select(a => new ScannerInfo(a)));
            foreach (ScannerInfo s in Scans)
            {
                s.ErrorFiles = new AsyncObservableCollection <ScanFile>(Repo.Instance.ScanFile.GetByScanID(s.Scan.ScanID));
            }
        }
Exemplo n.º 13
0
        private Scan(ScanFile file, List <Region> regions)
        {
            File = file;

            _regions = regions;
        }