Exemple #1
0
        public List <FileResults> Scan(ICompress file, bool testcrc, bool deepScan)
        {
            List <FileResults> listDsFile = new List <FileResults>();
            int fileCount = file.LocalFilesCount();

            for (int i = 0; i < fileCount; i++)
            {
                FileResults fileResults = new FileResults();
                ZipReturn   zr          = file.ZipFileOpenReadStream(i, out Stream fStream, out fileResults.Size);
                if (zr != ZipReturn.ZipGood)
                {
                    fileResults.FileStatus = zr;
                }
                else
                {
                    int res = CheckSumRead(fStream, fileResults, file.UncompressedSize(i), testcrc, deepScan);
                    if (res != 0)
                    {
                        fileResults.FileStatus = ZipReturn.ZipDecodeError;
                    }
                    else
                    {
                        fileResults.FileStatus = testcrc || ByteArrCompare(file.CRC32(i), fileResults.CRC) ? ZipReturn.ZipGood : ZipReturn.ZipCRCDecodeError;
                    }
                }

                listDsFile.Add(fileResults);
                file.ZipFileCloseReadStream();
            }
            return(listDsFile);
        }
Exemple #2
0
        public void Clear()
        {
            Source = null;
            Target = null;

            TotalFiles = IdenticalFiles = DifferentFiles = UniqueFiles = BaseUniqueFiles = 0;
            FileResults.Clear();
        }
Exemple #3
0
        public List <FileResults> Scan(ICompress file, bool testcrc, bool deepScan)
        {
            testcrc = testcrc || deepScan;

            List <FileResults> lstFileResults = new List <FileResults>();
            int fileCount = file.LocalFilesCount();

            for (int i = 0; i < fileCount; i++)
            {
                LocalFile   lf          = file.GetLocalFile(i);
                FileResults fileResults = new FileResults();
                if (lf.IsDirectory)
                {
                    fileResults.HeaderFileType = HeaderFileType.Nothing;
                    fileResults.FileStatus     = ZipReturn.ZipGood;
                    fileResults.Size           = 0;
                    fileResults.CRC            = new byte[] { 0, 0, 0, 0 };
                    fileResults.SHA1           = new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 };
                    fileResults.MD5            = new byte[] { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04, 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e };

                    lstFileResults.Add(fileResults);
                    continue;
                }

                ZipReturn zr = file.ZipFileOpenReadStream(i, out Stream fStream, out fileResults.Size);
                if (zr != ZipReturn.ZipGood)
                {
                    fileResults.FileStatus = zr;
                }
                else
                {
                    int res = CheckSumRead(fStream, fileResults, lf.UncompressedSize, testcrc, deepScan);
                    if (res != 0)
                    {
                        fileResults.FileStatus = ZipReturn.ZipDecodeError;
                    }
                    else
                    {
                        // if we are not testcrc'ing or deepScan'ing then we did not verify the data stream
                        // so we assume it is good.
                        if (!testcrc)
                        {
                            fileResults.CRC = lf.CRC;
                        }

                        fileResults.FileStatus =
                            ByteArrCompare(lf.CRC, fileResults.CRC)
                                ? ZipReturn.ZipGood
                                : ZipReturn.ZipCRCDecodeError;
                    }
                }

                lstFileResults.Add(fileResults);
            }
            file.ZipFileCloseReadStream();
            return(lstFileResults);
        }
        private async void UpdateResults()
        {
            if (TryInitilaizeFilePath())
            {
                _fileResults = await _resultProvider.GetFileResultsAsync(_filePath);

                UpdateAllLines();
            }
        }
        public void ClearReplays()
        {
            _log.Information("Clearing replay list...");
            App.Current.Dispatcher.Invoke((Action) delegate
            {
                PreviewReplays.Clear();
            });

            FileResults.Clear();
        }
Exemple #6
0
        void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!VM_ShokoServer.Instance.ServerOnline)
                {
                    return;
                }

                FileSearchCriteria searchType = FileSearchCriteria.Name;
                if (cboSearchType.SelectedItem.ToString() == SearchTypeHash)
                {
                    searchType = FileSearchCriteria.ED2KHash;
                }
                if (cboSearchType.SelectedItem.ToString() == SearchTypeTopOneHundred)
                {
                    searchType = FileSearchCriteria.LastOneHundred;
                }

                if (txtFileSearch.Text.Trim().Length == 0 && searchType != FileSearchCriteria.LastOneHundred)
                {
                    MessageBox.Show(Shoko.Commons.Properties.Resources.Seach_Criteria, Shoko.Commons.Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                    txtFileSearch.Focus();
                    return;
                }

                FileResults.Clear();
                ViewFiles.Refresh();
                FileCount = 0;

                Cursor = Cursors.Wait;
                EnableDisableControls(false);

                List <VM_VideoLocal> rawVids = VM_ShokoServer.Instance.ShokoServices.SearchForFiles(
                    (int)searchType, txtFileSearch.Text, VM_ShokoServer.Instance.CurrentUser.JMMUserID).OrderByNatural(a => a.Places.First().FilePath).CastList <VM_VideoLocal>();

                foreach (VM_VideoLocal raw in rawVids)
                {
                    FileResults.Add(raw);
                }

                FileCount = rawVids.Count;

                Cursor = Cursors.Arrow;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
            finally
            {
                Cursor = Cursors.Arrow;
                EnableDisableControls(true);
            }
        }
        void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!JMMServerVM.Instance.ServerOnline)
                {
                    return;
                }

                FileSearchCriteria searchType = FileSearchCriteria.Name;
                if (cboSearchType.SelectedItem.ToString() == SearchTypeHash)
                {
                    searchType = FileSearchCriteria.ED2KHash;
                }
                if (cboSearchType.SelectedItem.ToString() == SearchTypeTopOneHundred)
                {
                    searchType = FileSearchCriteria.LastOneHundred;
                }

                if (txtFileSearch.Text.Trim().Length == 0 && searchType != FileSearchCriteria.LastOneHundred)
                {
                    MessageBox.Show(Properties.Resources.Seach_Criteria, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                    txtFileSearch.Focus();
                    return;
                }

                FileResults.Clear();
                ViewFiles.Refresh();
                FileCount = 0;

                this.Cursor = Cursors.Wait;
                EnableDisableControls(false);
                List <JMMServerBinary.Contract_VideoLocal> rawVids = JMMServerVM.Instance.clientBinaryHTTP.SearchForFiles(
                    (int)searchType, txtFileSearch.Text, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);

                foreach (JMMServerBinary.Contract_VideoLocal raw in rawVids)
                {
                    FileResults.Add(new VideoLocalVM(raw));
                }

                FileCount = rawVids.Count;

                this.Cursor = Cursors.Arrow;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
            finally
            {
                this.Cursor = Cursors.Arrow;
                EnableDisableControls(true);
            }
        }
Exemple #8
0
        private async void UpdateResults()
        {
            if (TryInitilaizeDocument())
            {
                var isModified = _textDocument.LastContentModifiedTime > _editorContext.LastBuildTime.ToUniversalTime();
                _resultMapping = new LineMapping(_textView.TextSnapshot.LineCount, isModified);
                _fileResults   = await _resultProvider.GetFileResultsAsync(_textDocument.FilePath);

                UpdateAllLines();
            }
        }
Exemple #9
0
 void btnClearList_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         FileResults.Clear();
         ViewFiles.Refresh();
         FileCount = 0;
     }
     catch (Exception ex)
     {
         Utils.ShowErrorMessage(ex);
     }
 }
        /// <summary>
        /// Save a Replay File result
        /// </summary>
        /// <param name="fileResult"></param>
        public ReplayPreview AddReplay(FileResult file)
        {
            var previewModel = CreateReplayPreview(file);

            App.Current.Dispatcher.Invoke((Action) delegate
            {
                PreviewReplays.Add(previewModel);
            });

            FileResults.Add(file.FileInfo.Path, file);

            return(previewModel);
        }
Exemple #11
0
        public List <FileResults> Scan(ICompress file, bool testcrc, bool deepScan)
        {
            List <FileResults> lstFileResults = new List <FileResults>();
            int fileCount = file.LocalFilesCount();

            for (int i = 0; i < fileCount; i++)
            {
                FileResults fileResults = new FileResults();
                if (file.IsDirectory(i))
                {
                    fileResults.HeaderFileType = HeaderFileType.Nothing;
                    fileResults.FileStatus     = ZipReturn.ZipGood;
                    fileResults.Size           = 0;
                    fileResults.CRC            = new byte[] { 0, 0, 0, 0 };

                    lstFileResults.Add(fileResults);
                    continue;
                }

                ZipReturn zr = file.ZipFileOpenReadStream(i, out Stream fStream, out fileResults.Size);
                if (zr != ZipReturn.ZipGood)
                {
                    fileResults.FileStatus = zr;
                }
                else
                {
                    int res = CheckSumRead(fStream, fileResults, file.UncompressedSize(i), testcrc, deepScan);
                    if (res != 0)
                    {
                        fileResults.FileStatus = ZipReturn.ZipDecodeError;
                    }
                    else
                    {
                        if (!testcrc)
                        {
                            fileResults.CRC = file.CRC32(i);
                        }
                        // if we are not testcrc'ing or deepScan'ing then we did not verify the data stream
                        // so we assume it is good.
                        fileResults.FileStatus =
                            !(testcrc || deepScan) || ByteArrCompare(file.CRC32(i), fileResults.CRC)
                                ? ZipReturn.ZipGood
                                : ZipReturn.ZipCRCDecodeError;
                    }
                }

                lstFileResults.Add(fileResults);
            }
            file.ZipFileCloseReadStream();
            return(lstFileResults);
        }
Exemple #12
0
        void ReleaseDesignerOutlets()
        {
            if (EntitySizes != null)
            {
                EntitySizes.Dispose();
                EntitySizes = null;
            }

            if (FileResults != null)
            {
                FileResults.Dispose();
                FileResults = null;
            }

            if (IsAppWorking != null)
            {
                IsAppWorking.Dispose();
                IsAppWorking = null;
            }

            if (SearchButton != null)
            {
                SearchButton.Dispose();
                SearchButton = null;
            }

            if (SearchParameter != null)
            {
                SearchParameter.Dispose();
                SearchParameter = null;
            }

            if (SelectableActions != null)
            {
                SelectableActions.Dispose();
                SelectableActions = null;
            }

            if (TrashCanIcon != null)
            {
                TrashCanIcon.Dispose();
                TrashCanIcon = null;
            }

            if (SearchField != null)
            {
                SearchField.Dispose();
                SearchField = null;
            }
        }
Exemple #13
0
        public void DelAction()
        {
            var trashedFile = Path.GetTempFileName();

            var removeRows = new Dictionary <nuint, Entity> ();

            foreach (var row in FileResults.SelectedRows.ToArray())
            {
                int converted;

                if (false == Int32.TryParse(row.ToString(), out converted))
                {
                    continue;
                }

                var path = ((EntityDataSource)FileResults.DataSource).Entities [converted].Path;

                removeRows [row] = ((EntityDataSource)FileResults.DataSource).Entities [converted];

                System.IO.File.AppendAllText(trashedFile, path + '\n');
            }

            AppDelegate.Debug(trashedFile);

            var process = Process.Start("/usr/bin/osascript", NSBundle.MainBundle.ResourcePath + "/santas_helper.scpt " + trashedFile);

            process.WaitForExit();

            var rowsToVanish = new NSMutableIndexSet();

            foreach (var key in removeRows.Keys)
            {
                // Maybe they hit cancel when authenticating
                if (Directory.Exists(removeRows[key].Path) || File.Exists(removeRows[key].Path))
                {
                    continue;
                }

                rowsToVanish.Add(key);

                ((EntityDataSource)FileResults.DataSource)._entities.Remove(removeRows[key]);
            }

            BeginInvokeOnMainThread(() => FileResults.RemoveRows(rowsToVanish, NSTableViewAnimation.Fade));
        }
        /// <summary>
        /// Get replays from database and load to display
        /// </summary>
        public void LoadReplays()
        {
            _log.Information("Loading replays from database...");
            var databaseResults = _fileManager.GetReplays(SortParameters, SettingsManager.Settings.ItemsPerPage, PreviewReplays.Count);

            _log.Information($"Retrieved {databaseResults.Count} replays");
            foreach (var file in databaseResults)
            {
                var previewModel = CreateReplayPreview(file);

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    PreviewReplays.Add(previewModel);
                });

                FileResults.Add(file.FileInfo.Path, file);
            }
        }
        /// <summary>
        /// The function to call to refresh the list
        /// </summary>
        /// <returns></returns>
        public async Task ReloadReplayList()
        {
            _log.Information($"Refreshing replay list...");

            FileResults.Clear();
            PreviewReplays.Clear();

            StatusBarModel.StatusMessage   = Application.Current.TryFindResource("LoadingMessageReplay") as string;
            StatusBarModel.Color           = Brushes.White;
            StatusBarModel.Visible         = true;
            StatusBarModel.ShowProgressBar = true;
            await _fileManager.InitialLoadAsync().ConfigureAwait(true);

            LoadReplays();
            StatusBarModel.StatusMessage = Application.Current.TryFindResource("LoadingMessageThumbnails") as string;
            await LoadPreviewPlayerThumbnails().ConfigureAwait(true);

            StatusBarModel.Visible = false;
        }
        public void OpenReplayContainingFolder(string location)
        {
            _log.Information($"Opening replay file location {location}");

            if (String.IsNullOrEmpty(location))
            {
                throw new ArgumentNullException(nameof(location));
            }

            FileResults.TryGetValue(location, out FileResult match);
            if (match == null)
            {
                throw new ArgumentException($"{location} does not match any known replays");
            }

            string selectArg = $"/select, \"{match.FileInfo.Path}\"";

            Process.Start("explorer.exe", selectArg);
        }
        /// <summary>
        /// The function to call to refresh the list
        /// </summary>
        /// <returns></returns>
        public async Task ReloadReplayList()
        {
            _log.Information($"Refreshing replay list...");

            FileResults.Clear();
            PreviewReplays.Clear();
            ValidateReplayStorage();
            StatusBarModel.StatusMessage   = Application.Current.TryFindResource("LoadingMessageReplay") as string;
            StatusBarModel.Visible         = true;
            StatusBarModel.ShowProgressBar = true;

            // Discover and load replays into database
            await _fileManager.InitialLoadAsync().ConfigureAwait(true);

            // Load from database into our viewmodel
            LoadReplaysFromDatabase();

            StatusBarModel.StatusMessage = Application.Current.TryFindResource("LoadingMessageThumbnails") as string;
            await LoadPreviewPlayerThumbnails().ConfigureAwait(true);

            StatusBarModel.Visible = false;
        }
Exemple #18
0
        private int CheckSumRead(Stream inStream, FileResults fileResults, ulong totalSize, bool testcrc, bool testDeep)
        {
            if (_buffer0 == null)
            {
                _buffer0 = new byte[Buffersize];
                _buffer1 = new byte[Buffersize];
            }

            fileResults.MD5  = null;
            fileResults.SHA1 = null;
            fileResults.CRC  = null;

            ThreadReadBuffer lbuffer = null;

            ThreadCRC  tcrc32 = null;
            ThreadMD5  tmd5   = null;
            ThreadSHA1 tsha1  = null;

            ThreadCRC  altCrc32 = null;
            ThreadMD5  altMd5   = null;
            ThreadSHA1 altSha1  = null;

            try
            {
                int  maxHeaderSize = 128;
                long sizetogo      = (long)totalSize;
                int  sizenow       = maxHeaderSize < sizetogo ? maxHeaderSize : (int)sizetogo;
                if (sizenow > 0)
                {
                    inStream.Read(_buffer0, 0, sizenow);
                }

                fileResults.HeaderFileType = FileHeaderReader.GetType(_buffer0, sizenow, out int actualHeaderSize);


                // if the file has no header then just use the main hash checkers.
                if (fileResults.HeaderFileType == HeaderFileType.Nothing || actualHeaderSize == 0)
                {
                    // no header found & not reading hashes.
                    if (!(testcrc || testDeep))
                    {
                        return(0);
                    }

                    // no header found so just push the initial buffer read into the hash checkers.
                    // and then continue with the rest of the file.
                    tcrc32 = new ThreadCRC();
                    if (testDeep)
                    {
                        tmd5  = new ThreadMD5();
                        tsha1 = new ThreadSHA1();
                    }
                    tcrc32.Trigger(_buffer0, sizenow);
                    tmd5?.Trigger(_buffer0, sizenow);
                    tsha1?.Trigger(_buffer0, sizenow);
                    tcrc32.Wait();
                    tmd5?.Wait();
                    tsha1?.Wait();

                    sizetogo -= sizenow;
                }
                else
                {
                    // header found
                    fileResults.AltSize = (ulong)((long)totalSize - actualHeaderSize);
                    //setup main hash checkers
                    if (testcrc || testDeep)
                    {
                        tcrc32 = new ThreadCRC();
                    }

                    altCrc32 = new ThreadCRC();
                    if (testDeep)
                    {
                        tmd5    = new ThreadMD5();
                        tsha1   = new ThreadSHA1();
                        altMd5  = new ThreadMD5();
                        altSha1 = new ThreadSHA1();
                    }

                    if (sizenow > actualHeaderSize)
                    {
                        // Already read more than the header, so we need to split what we read into the 2 hash checkers

                        // first scan the header part from what we have already read.
                        // scan what we read so far with just the main hashers
                        tcrc32?.Trigger(_buffer0, actualHeaderSize);
                        tmd5?.Trigger(_buffer0, actualHeaderSize);
                        tsha1?.Trigger(_buffer0, actualHeaderSize);
                        tcrc32?.Wait();
                        tmd5?.Wait();
                        tsha1?.Wait();

                        // put the rest of what we read into the second buffer, and scan with all hashers
                        int restSize = sizenow - actualHeaderSize;
                        for (int i = 0; i < restSize; i++)
                        {
                            _buffer1[i] = _buffer0[actualHeaderSize + i];
                        }
                        tcrc32?.Trigger(_buffer1, restSize);
                        tmd5?.Trigger(_buffer1, restSize);
                        tsha1?.Trigger(_buffer1, restSize);
                        altCrc32.Trigger(_buffer1, restSize);
                        altMd5?.Trigger(_buffer1, restSize);
                        altSha1?.Trigger(_buffer1, restSize);

                        tcrc32?.Wait();
                        tmd5?.Wait();
                        tsha1?.Wait();
                        altCrc32.Wait();
                        altMd5?.Wait();
                        altSha1?.Wait();

                        sizetogo -= sizenow;
                    }
                    else
                    {
                        // Read less than the length of the header so read the rest of the header.
                        // then continue to reader the full rest of the file.

                        // scan what we read so far
                        tcrc32?.Trigger(_buffer0, sizenow);
                        tmd5?.Trigger(_buffer0, sizenow);
                        tsha1?.Trigger(_buffer0, sizenow);
                        tcrc32?.Wait();
                        tmd5?.Wait();
                        tsha1?.Wait();

                        sizetogo -= sizenow;

                        // now read the rest of the header.
                        sizenow = actualHeaderSize - sizenow;
                        inStream.Read(_buffer0, 0, sizenow);

                        // scan the rest of the header
                        tcrc32?.Trigger(_buffer0, sizenow);
                        tmd5?.Trigger(_buffer0, sizenow);
                        tsha1?.Trigger(_buffer0, sizenow);
                        tcrc32?.Wait();
                        tmd5?.Wait();
                        tsha1?.Wait();

                        sizetogo -= sizenow;
                    }
                }

                lbuffer = new ThreadReadBuffer(inStream);

                // Pre load the first buffer0
                int sizeNext = sizetogo > Buffersize ? Buffersize : (int)sizetogo;
                if (sizeNext > 0)
                {
                    inStream.Read(_buffer0, 0, sizeNext);
                }

                int sizebuffer = sizeNext;
                sizetogo -= sizeNext;
                bool whichBuffer = true;

                while (sizebuffer > 0 && !lbuffer.errorState)
                {
                    sizeNext = sizetogo > Buffersize ? Buffersize : (int)sizetogo;

                    if (sizeNext > 0)
                    {
                        lbuffer.Trigger(whichBuffer ? _buffer1 : _buffer0, sizeNext);
                    }

                    byte[] buffer = whichBuffer ? _buffer0 : _buffer1;
                    tcrc32?.Trigger(buffer, sizebuffer);
                    tmd5?.Trigger(buffer, sizebuffer);
                    tsha1?.Trigger(buffer, sizebuffer);

                    altCrc32?.Trigger(buffer, sizebuffer);
                    altMd5?.Trigger(buffer, sizebuffer);
                    altSha1?.Trigger(buffer, sizebuffer);


                    if (sizeNext > 0)
                    {
                        lbuffer.Wait();
                    }
                    tcrc32?.Wait();
                    tmd5?.Wait();
                    tsha1?.Wait();
                    altCrc32?.Wait();
                    altMd5?.Wait();
                    altSha1?.Wait();

                    sizebuffer  = sizeNext;
                    sizetogo   -= sizeNext;
                    whichBuffer = !whichBuffer;
                }

                lbuffer.Finish();
                tcrc32?.Finish();
                tmd5?.Finish();
                tsha1?.Finish();
                altCrc32?.Finish();
                altMd5?.Finish();
                altSha1?.Finish();
            }
            catch
            {
                lbuffer?.Dispose();
                tcrc32?.Dispose();
                tmd5?.Dispose();
                tsha1?.Dispose();
                altCrc32?.Dispose();
                altMd5?.Dispose();
                altSha1?.Dispose();

                return(0x17); // need to remember what this number is for
            }

            if (lbuffer.errorState)
            {
                lbuffer.Dispose();
                tcrc32?.Dispose();
                tmd5?.Dispose();
                tsha1?.Dispose();
                altCrc32?.Dispose();
                altMd5?.Dispose();
                altSha1?.Dispose();

                return(0x17); // need to remember what this number is for
            }

            fileResults.CRC     = tcrc32?.Hash;
            fileResults.SHA1    = tsha1?.Hash;
            fileResults.MD5     = tmd5?.Hash;
            fileResults.AltCRC  = altCrc32?.Hash;
            fileResults.AltSHA1 = altSha1?.Hash;
            fileResults.AltMD5  = altMd5?.Hash;

            lbuffer.Dispose();
            tcrc32?.Dispose();
            tmd5?.Dispose();
            tsha1?.Dispose();
            altCrc32?.Dispose();
            altMd5?.Dispose();
            altSha1?.Dispose();

            return(0);
        }
Exemple #19
0
        void btnLoadFiles_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!VM_ShokoServer.Instance.ServerOnline)
                {
                    return;
                }

                ViewFiles.Refresh();

                Cursor = Cursors.Wait;
                EnableDisableControls(false);
                List <VM_VideoLocal> rawVids = new List <VM_VideoLocal>();

                if (LoadTypeIsRandom)
                {
                    rawVids = VM_ShokoServer.Instance.ShokoServices.RandomFileRenamePreview(udRandomFiles.Value.Value, VM_ShokoServer.Instance.CurrentUser.JMMUserID).CastList <VM_VideoLocal>();

                    /*List<int> testIDs = new List<int>();
                     *
                     *                  testIDs.Add(6041); // Gekijouban Bleach: Fade to Black Kimi no Na o Yobu
                     *                  testIDs.Add(6784); // Fate/Stay Night: Unlimited Blade Works
                     *                  testIDs.Add(5975); // Toaru Majutsu no Index
                     *                  testIDs.Add(7599); // Toaru Majutsu no Index II
                     *                  testIDs.Add(8694); // Gekijouban Toaru Majutsu no Index (movie)
                     *                  testIDs.Add(6071); // Quiz Magic Academy: The Original Animation
                     *                  testIDs.Add(4145); // Amaenaide yo!! Katsu!!
                     *                  testIDs.Add(2369); // Bleach
                     *                  testIDs.Add(69); // One Piece
                     *                  foreach (int animeID in testIDs)
                     *                  {
                     *                          List<JMMServerBinary.Contract_VideoLocal> raws = VM_ShokoServer.Instance.clientBinaryHTTP.GetVideoLocalsForAnime(animeID,
                     *                                  VM_ShokoServer.Instance.CurrentUser.JMMUserID.Value);
                     *
                     *                          rawVids.AddRange(raws);
                     *                  }*/
                }

                if (LoadTypeIsAll)
                {
                    rawVids = VM_ShokoServer.Instance.ShokoServices.RandomFileRenamePreview(int.MaxValue, VM_ShokoServer.Instance.CurrentUser.JMMUserID).CastList <VM_VideoLocal>();
                }


                if (LoadTypeIsSeries)
                {
                    Window wdw = Window.GetWindow(this);
                    SelectGroupSeriesForm frm = new SelectGroupSeriesForm();
                    frm.Owner = wdw;
                    frm.Init();

                    bool?result = frm.ShowDialog();
                    if (result.HasValue && result.Value == true)
                    {
                        if (frm.SelectedObject.GetType() == typeof(VM_AnimeGroup_User))
                        {
                            VM_AnimeGroup_User grp = frm.SelectedObject as VM_AnimeGroup_User;
                            foreach (VM_AnimeSeries_User ser in grp.AllAnimeSeries)
                            {
                                rawVids.AddRange(VM_ShokoServer.Instance.ShokoServices.GetVideoLocalsForAnime(ser.AniDB_ID,
                                                                                                              VM_ShokoServer.Instance.CurrentUser.JMMUserID).Cast <VM_VideoLocal>());
                            }
                        }
                        if (frm.SelectedObject.GetType() == typeof(VM_AnimeSeries_User))
                        {
                            VM_AnimeSeries_User ser = frm.SelectedObject as VM_AnimeSeries_User;
                            rawVids.AddRange(VM_ShokoServer.Instance.ShokoServices.GetVideoLocalsForAnime(ser.AniDB_ID,
                                                                                                          VM_ShokoServer.Instance.CurrentUser.JMMUserID).Cast <VM_VideoLocal>());
                        }
                    }
                }

                foreach (VM_VideoLocal vid in rawVids)
                {
                    VM_VideoLocal_Renamed ren = new VM_VideoLocal_Renamed();
                    ren.VideoLocalID = vid.VideoLocalID;
                    ren.VideoLocal   = vid;
                    ren.Success      = false;
                    FileResults.Add(ren);
                }

                FileCount = FileResults.Count;

                Cursor = Cursors.Arrow;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
            finally
            {
                Cursor = Cursors.Arrow;
                EnableDisableControls(true);
            }
        }
        void btnLoadFiles_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!VM_ShokoServer.Instance.ServerOnline)
                {
                    return;
                }

                ViewFiles.Refresh();

                Cursor = Cursors.Wait;
                EnableDisableControls(false);
                List <VM_VideoLocal> rawVids = new List <VM_VideoLocal>();

                if (LoadTypeIsRandom)
                {
                    rawVids = VM_ShokoServer.Instance.ShokoServices
                              .RandomFileRenamePreview(udRandomFiles.Value.Value,
                                                       VM_ShokoServer.Instance.CurrentUser.JMMUserID)
                              .CastList <VM_VideoLocal>();
                }
                else if (LoadTypeIsAll)
                {
                    rawVids = VM_ShokoServer.Instance.ShokoServices
                              .RandomFileRenamePreview(int.MaxValue, VM_ShokoServer.Instance.CurrentUser.JMMUserID)
                              .CastList <VM_VideoLocal>();
                }
                else if (LoadTypeIsSeries)
                {
                    Window wdw = Window.GetWindow(this);
                    SelectGroupSeriesForm frm = new SelectGroupSeriesForm();
                    frm.Owner = wdw;
                    frm.Init();

                    bool?result = frm.ShowDialog();
                    if (result.HasValue && result.Value == true)
                    {
                        if (frm.SelectedObject.GetType() == typeof(VM_AnimeGroup_User))
                        {
                            VM_AnimeGroup_User grp = frm.SelectedObject as VM_AnimeGroup_User;
                            foreach (VM_AnimeSeries_User ser in grp.AllAnimeSeries)
                            {
                                rawVids.AddRange(VM_ShokoServer.Instance.ShokoServices
                                                 .GetVideoLocalsForAnime(ser.AniDB_ID, VM_ShokoServer.Instance.CurrentUser.JMMUserID)
                                                 .Cast <VM_VideoLocal>());
                            }
                        }
                        if (frm.SelectedObject.GetType() == typeof(VM_AnimeSeries_User))
                        {
                            VM_AnimeSeries_User ser = frm.SelectedObject as VM_AnimeSeries_User;
                            rawVids.AddRange(VM_ShokoServer.Instance.ShokoServices
                                             .GetVideoLocalsForAnime(ser.AniDB_ID, VM_ShokoServer.Instance.CurrentUser.JMMUserID)
                                             .Cast <VM_VideoLocal>());
                        }
                    }
                }
                else if (LoadTypeIsLast)
                {
                    int number = udRandomFiles.Value.Value;
                    rawVids = VM_ShokoServer.Instance.ShokoServices
                              .SearchForFiles((int)FileSearchCriteria.LastOneHundred, number.ToString(),
                                              VM_ShokoServer.Instance.CurrentUser.JMMUserID)
                              .OrderByDescending(a => a.DateTimeCreated)
                              .CastList <VM_VideoLocal>();
                }

                foreach (VM_VideoLocal vid in rawVids)
                {
                    VM_VideoLocal_Renamed ren = new VM_VideoLocal_Renamed();
                    ren.VideoLocalID = vid.VideoLocalID;
                    ren.VideoLocal   = vid;
                    ren.Success      = false;
                    FileResults.Add(ren);
                }

                FileCount = FileResults.Count;

                Cursor = Cursors.Arrow;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
            finally
            {
                Cursor = Cursors.Arrow;
                EnableDisableControls(true);
            }
        }
Exemple #21
0
 public void SetResults(FileResults results)
 {
     _results = results;
 }