示例#1
0
        static void ClearCallBack(object sender)
        {
            ScanAction action = (ScanAction)sender;

            action.ClearArchive();
            Console.WriteLine("清理文件");
        }
示例#2
0
        static void ActionCallback(object sender)
        {
            ScanAction action = (ScanAction)sender;

            ScanAction.ActionResult result = action.ActionDo();
            Console.WriteLine("扫描次数: {0}", result.ScanTime);
            foreach (string file in result.SuccessList)
            {
                Console.WriteLine("   ==> 成功文件: {0}", file);
            }
            foreach (string file in result.FailureList)
            {
                Console.WriteLine("   ==> 失败文件: {0}", file);
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            ScanAction action = ScanAction.Singleton();

            new Timer(ActionCallback, action, 3000, 15000);
            new Timer(ClearCallBack, action, 5000, 15000);
            //Console.WriteLine(System.AppDomain.CurrentDomain.GetData("APP_CONFIG_FILE"));

            while (true)
            {
                string input = Console.ReadLine().ToLower();
                if (input == "quit" || input == "exit")
                {
                    break;
                }
            }
        }
示例#4
0
    private void MatchAllArtists(ScanAction aScanAction)
    {
      try
      {
        listBoxFolders.Items.Clear();
        artistPaths = Directory.GetDirectories(textBoxArtistRootFolder.Text, "*", System.IO.SearchOption.TopDirectoryOnly);
        thumbFiles = Directory.GetFiles(textBoxArtistThumbFolder.Text, "*.jpg", SearchOption.TopDirectoryOnly);
        Dictionary<string, string> allArtistThumbs = new Dictionary<string, string>(thumbFiles.Length);
        for (int i = 0; i < thumbFiles.Length; i++)
        {
          int dirPos = thumbFiles[i].LastIndexOf('\\');
          if (dirPos > 1)
          {
            string thumbPath = thumbFiles[i].Substring(dirPos + 1).ToLowerInvariant();
            allArtistThumbs[thumbPath] = thumbFiles[i];
          }
        }

        List<string> allThumbs = new List<string>(thumbFiles);
        foreach (string currentartistpath in artistPaths)
        {
          //string thumbName = GetLocalFolderThumbForDir(ArtistPath);
          //string displayString = string.Format("{0} : ({1} -> {2})", Path.GetFileName(thumbName), ArtistPath, thumbName);

          int dirPos = currentartistpath.LastIndexOf('\\');
          if (dirPos > 1)
          {
            string artistName = currentartistpath.Substring(dirPos + 1);
            string displayString = artistName;
            string highResPath = string.Format("{0}{1}", artistName, "L.jpg").ToLowerInvariant();
            string target = string.Format("{0}\\{1}.jpg", currentartistpath, artistName);
            if (allArtistThumbs.ContainsKey(highResPath))
            {
              displayString += string.Format(" <-- {0} --> {1}\\{2}.jpg", allArtistThumbs[highResPath], currentartistpath, artistName);

              if (aScanAction == ScanAction.Save)
              {
                try
                {
                  string source = allArtistThumbs[highResPath];
                  
                  if (!File.Exists(target))
                    File.Move(source, target);
                }
                catch (Exception exm)
                {
                  MessageBox.Show(string.Format("Could not move thumbnail - {0}", exm.Message));
                }
              }
            }
            else
            {
              displayString += " <-- (missing) --X";
            }
            if (aScanAction == ScanAction.Lookup)
            {
              if (!File.Exists(target))
                listBoxFolders.Items.Add(displayString);
            }

          }
        }
      }
      catch (Exception ex)
      {
        MessageBox.Show(string.Format("Doh! ({0})", ex.Message));
      }
    }
        private void MatchAllArtists(ScanAction aScanAction)
        {
            try
            {
                listBoxFolders.Items.Clear();
                artistPaths = Directory.GetDirectories(textBoxArtistRootFolder.Text, "*", System.IO.SearchOption.TopDirectoryOnly);
                thumbFiles  = Directory.GetFiles(textBoxArtistThumbFolder.Text, "*.jpg", SearchOption.TopDirectoryOnly);
                Dictionary <string, string> allArtistThumbs = new Dictionary <string, string>(thumbFiles.Length);
                for (int i = 0; i < thumbFiles.Length; i++)
                {
                    int dirPos = thumbFiles[i].LastIndexOf('\\');
                    if (dirPos > 1)
                    {
                        string thumbPath = thumbFiles[i].Substring(dirPos + 1).ToLowerInvariant();
                        allArtistThumbs[thumbPath] = thumbFiles[i];
                    }
                }

                List <string> allThumbs = new List <string>(thumbFiles);
                foreach (string currentartistpath in artistPaths)
                {
                    //string thumbName = GetLocalFolderThumbForDir(ArtistPath);
                    //string displayString = string.Format("{0} : ({1} -> {2})", Path.GetFileName(thumbName), ArtistPath, thumbName);

                    int dirPos = currentartistpath.LastIndexOf('\\');
                    if (dirPos > 1)
                    {
                        string artistName    = currentartistpath.Substring(dirPos + 1);
                        string displayString = artistName;
                        string highResPath   = string.Format("{0}{1}", artistName, "L.jpg").ToLowerInvariant();
                        string target        = string.Format("{0}\\{1}.jpg", currentartistpath, artistName);
                        if (allArtistThumbs.ContainsKey(highResPath))
                        {
                            displayString += string.Format(" <-- {0} --> {1}\\{2}.jpg", allArtistThumbs[highResPath], currentartistpath, artistName);

                            if (aScanAction == ScanAction.Save)
                            {
                                try
                                {
                                    string source = allArtistThumbs[highResPath];

                                    if (!File.Exists(target))
                                    {
                                        File.Move(source, target);
                                    }
                                }
                                catch (Exception exm)
                                {
                                    MessageBox.Show(string.Format("Could not move thumbnail - {0}", exm.Message));
                                }
                            }
                        }
                        else
                        {
                            displayString += " <-- (missing) --X";
                        }
                        if (aScanAction == ScanAction.Lookup)
                        {
                            if (!File.Exists(target))
                            {
                                listBoxFolders.Items.Add(displayString);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Doh! ({0})", ex.Message));
            }
        }
示例#6
0
        /// <summary>
        /// Raises the <see cref="E:System.Windows.Application.Startup"/> event.
        /// </summary>
        /// <param name="e">A <see cref="T:System.Windows.StartupEventArgs"/> that contains the event data.</param>
        protected override void OnStartup(StartupEventArgs e)
        {
            FrameworkElement.LanguageProperty.OverrideMetadata(
                typeof(FrameworkElement),
                new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            Thread.CurrentThread.Name = "MainThread";

            base.OnStartup(e);

            // Init logger
            log4net.Config.XmlConfigurator.Configure();

            // Register handler for unhandled exceptions
            this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(this.App_DispatcherUnhandledException);

            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(this.CurrentDomain_UnhandledException);

            // Build
            var mainViewModel = new MainViewModel();

            this.startViewModel = new StartViewModel();
            var scanViewModel               = new ScanViewModel();
            var previewViewModel            = new PreviewViewModel();
            var previewNoFilesViewModel     = new PreviewNoFilesViewModel();
            var synchronizeViewModel        = new SynchronizeViewModel();
            var synchronizeNoFilesViewModel = new SynchronizeNoFilesViewModel();
            var resultViewModel             = new ResultViewModel();

            var synchronizer = new Synchronizer(new FileLogger());

            var startAction              = new StartAction();
            var scanAction               = new ScanAction(synchronizer);
            var previewAction            = new PreviewAction();
            var previewNoFilesAction     = new PreviewNoFilesAction();
            var synchronizeNoFilesAction = new SynchronizeNoFilesAction();
            var synchronizeAction        = new SynchronizeAction(synchronizer);
            var resultAction             = new ResultAction();

            var mainWindow = new MainWindow();

            // Bind
            startAction.Synchronize += scanAction.Process;

            scanAction.Preview        += previewAction.Process;
            scanAction.PreviewNoFiles += previewNoFilesAction.Process;
            scanAction.Canceled       += startAction.Process;

            previewAction.Synchronize        += synchronizeAction.Process;
            previewAction.SynchronizeNoFiles += synchronizeNoFilesAction.Process;
            previewAction.Canceled           += startAction.Process;

            previewNoFilesAction.Ok += startAction.Process;

            synchronizeAction.Result += resultAction.Process;

            synchronizeNoFilesAction.Ok += startAction.Process;

            resultAction.Ok += startAction.Process;

            // Inject
            startAction.Inject(mainViewModel);
            startAction.Inject(this.startViewModel);
            scanAction.Inject(mainViewModel);
            scanAction.Inject(scanViewModel);
            previewAction.Inject(mainViewModel);
            previewAction.Inject(previewViewModel);
            previewNoFilesAction.Inject(mainViewModel);
            previewNoFilesAction.Inject(previewNoFilesViewModel);
            synchronizeNoFilesAction.Inject(mainViewModel);
            synchronizeNoFilesAction.Inject(synchronizeNoFilesViewModel);
            synchronizeAction.Inject(mainViewModel);
            synchronizeAction.Inject(synchronizeViewModel);
            resultAction.Inject(mainViewModel);
            resultAction.Inject(this.startViewModel);
            resultAction.Inject(resultViewModel);

            mainWindow.Inject(mainViewModel);

            // Run
            this.startViewModel.LoadDefaultJobList();

            this.MainWindow = mainWindow;
            startAction.Process();
            this.MainWindow.Show();
        }