PageRenderTime 47ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/JMMClient/JMMClient/UserControls/FileRenameControl.xaml.cs

https://bitbucket.org/gibwar/jmm-test
C# | 737 lines | 545 code | 135 blank | 57 comment | 59 complexity | ffc45de69a70952f8210d28a639c59ad MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Navigation;
  13. using System.Windows.Shapes;
  14. using System.ComponentModel;
  15. using System.Collections.ObjectModel;
  16. using JMMClient.ViewModel;
  17. using System.Threading;
  18. using JMMClient.Forms;
  19. namespace JMMClient.UserControls
  20. {
  21. /// <summary>
  22. /// Interaction logic for FileRenameControl.xaml
  23. /// </summary>
  24. public partial class FileRenameControl : UserControl
  25. {
  26. public ICollectionView ViewFiles { get; set; }
  27. public ObservableCollection<VideoLocalRenamedVM> FileResults { get; set; }
  28. public ICollectionView ViewTags { get; set; }
  29. public ObservableCollection<RenameTag> RenameTags { get; set; }
  30. public ICollectionView ViewTests { get; set; }
  31. public ObservableCollection<RenameTest> RenameTests { get; set; }
  32. //public ICollectionView ViewScripts { get; set; }
  33. public ObservableCollection<RenameScriptVM> RenameScripts { get; set; }
  34. public static readonly DependencyProperty FileCountProperty = DependencyProperty.Register("FileCount",
  35. typeof(int), typeof(FileRenameControl), new UIPropertyMetadata(0, null));
  36. public int FileCount
  37. {
  38. get { return (int)GetValue(FileCountProperty); }
  39. set
  40. {
  41. SetValue(FileCountProperty, value);
  42. FileCountStatus = string.Format("{0} Files", value);
  43. }
  44. }
  45. public static readonly DependencyProperty FileCountStatusProperty = DependencyProperty.Register("FileCountStatus",
  46. typeof(string), typeof(FileRenameControl), new UIPropertyMetadata("", null));
  47. public string FileCountStatus
  48. {
  49. get { return (string)GetValue(FileCountStatusProperty); }
  50. set { SetValue(FileCountStatusProperty, value); }
  51. }
  52. public static readonly DependencyProperty LoadTypeIsRandomProperty = DependencyProperty.Register("LoadTypeIsRandom",
  53. typeof(bool), typeof(FileRenameControl), new UIPropertyMetadata(true, null));
  54. public bool LoadTypeIsRandom
  55. {
  56. get { return (bool)GetValue(LoadTypeIsRandomProperty); }
  57. set { SetValue(LoadTypeIsRandomProperty, value); }
  58. }
  59. public static readonly DependencyProperty LoadTypeIsSeriesProperty = DependencyProperty.Register("LoadTypeIsSeries",
  60. typeof(bool), typeof(FileRenameControl), new UIPropertyMetadata(false, null));
  61. public bool LoadTypeIsSeries
  62. {
  63. get { return (bool)GetValue(LoadTypeIsSeriesProperty); }
  64. set { SetValue(LoadTypeIsSeriesProperty, value); }
  65. }
  66. public static readonly DependencyProperty LoadTypeIsAllProperty = DependencyProperty.Register("LoadTypeIsAll",
  67. typeof(bool), typeof(FileRenameControl), new UIPropertyMetadata(false, null));
  68. public bool LoadTypeIsAll
  69. {
  70. get { return (bool)GetValue(LoadTypeIsAllProperty); }
  71. set { SetValue(LoadTypeIsAllProperty, value); }
  72. }
  73. public static readonly DependencyProperty WorkerRunningProperty = DependencyProperty.Register("WorkerRunning",
  74. typeof(bool), typeof(FileRenameControl), new UIPropertyMetadata(false, null));
  75. public bool WorkerRunning
  76. {
  77. get { return (bool)GetValue(WorkerRunningProperty); }
  78. set { SetValue(WorkerRunningProperty, value); }
  79. }
  80. public static readonly DependencyProperty WorkerNotRunningProperty = DependencyProperty.Register("WorkerNotRunning",
  81. typeof(bool), typeof(FileRenameControl), new UIPropertyMetadata(true, null));
  82. public bool WorkerNotRunning
  83. {
  84. get { return (bool)GetValue(WorkerNotRunningProperty); }
  85. set { SetValue(WorkerNotRunningProperty, value); }
  86. }
  87. public static readonly DependencyProperty WorkerStatusProperty = DependencyProperty.Register("WorkerStatus",
  88. typeof(string), typeof(FileRenameControl), new UIPropertyMetadata("", null));
  89. public string WorkerStatus
  90. {
  91. get { return (string)GetValue(WorkerStatusProperty); }
  92. set { SetValue(WorkerStatusProperty, value); }
  93. }
  94. private readonly string LoadTypeRandom = "Random";
  95. private readonly string LoadTypeSeries = "Series";
  96. private readonly string LoadTypeAll = "Entire Collection";
  97. private readonly string FilterTypeAll = "All";
  98. private readonly string FilterTypeFailed = "Failed";
  99. private readonly string FilterTypePassed = "Passed";
  100. private int? defaultScriptID = null;
  101. BackgroundWorker previewWorker = new BackgroundWorker();
  102. BackgroundWorker renameWorker = new BackgroundWorker();
  103. private bool stopWorker = false;
  104. public FileRenameControl()
  105. {
  106. InitializeComponent();
  107. FileResults = new ObservableCollection<VideoLocalRenamedVM>();
  108. ViewFiles = CollectionViewSource.GetDefaultView(FileResults);
  109. RenameTags = new ObservableCollection<RenameTag>();
  110. foreach (RenameTag tag in RenameHelper.GetAllTags())
  111. RenameTags.Add(tag);
  112. ViewTags = CollectionViewSource.GetDefaultView(RenameTags);
  113. cboTagType.SelectedIndex = 0;
  114. RenameTests = new ObservableCollection<RenameTest>();
  115. foreach (RenameTest test in RenameHelper.GetAllTests())
  116. RenameTests.Add(test);
  117. ViewTests = CollectionViewSource.GetDefaultView(RenameTests);
  118. cboTestType.SelectedIndex = 0;
  119. RenameScripts = new ObservableCollection<RenameScriptVM>();
  120. //ViewScripts = CollectionViewSource.GetDefaultView(RenameScripts);
  121. /*string testScript = "IF A(69),A(1),A(2) DO FAIL" + Environment.NewLine + //Do not rename file if it is Naruto
  122. //// Group Name
  123. "DO ADD '[%grp] '" + Environment.NewLine + //sub group name short
  124. //// Anime Name
  125. "IF I(eng) DO ADD '%eng - '" + Environment.NewLine + // if the anime has an official/main title english add it to the string
  126. "IF I(ann);I(!eng) DO ADD '%ann - '" + Environment.NewLine + //If the anime has a romaji title but not an english title add the romaji anime title
  127. //// Episode Number
  128. "DO ADD '%enr - '" + Environment.NewLine + //Add the base, same for all files
  129. //// FILE Version
  130. "IF F(!1) DO ADD ' [v%ver]'" + Environment.NewLine + //If the episode has an english title add to string
  131. //// Episode Title
  132. "IF I(epr) DO ADD '%epr'" + Environment.NewLine + //If the episode has an english title add to string
  133. "IF I(epn);I(!epr) DO ADD '%epn'" + Environment.NewLine + //If the episode has an romaji title but not an english title add the romaji episode title
  134. //// Codecs
  135. "DO ADD ' [%vid/%aud]'" + Environment.NewLine +
  136. //// video depth
  137. "IF Z(10) DO ADD '[%bitbit]'" + Environment.NewLine +
  138. //// Blu-ray and DVD
  139. "IF R(Blu-ray),R(DVD) DO ADD '[%src]'" + Environment.NewLine +
  140. //// CRC
  141. "DO ADD '[%CRC]'" + Environment.NewLine;
  142. txtRenameScript.Text = testScript;*/
  143. btnLoadFiles.Click += new RoutedEventHandler(btnLoadFiles_Click);
  144. btnPreviewFiles.Click += new RoutedEventHandler(btnPreviewFiles_Click);
  145. btnRenameFiles.Click += new RoutedEventHandler(btnRenameFiles_Click);
  146. btnPreviewStop.Click += new RoutedEventHandler(btnPreviewStop_Click);
  147. btnClearList.Click += new RoutedEventHandler(btnClearList_Click);
  148. btnAddTag.Click += new RoutedEventHandler(btnAddTag_Click);
  149. btnAddTest.Click += new RoutedEventHandler(btnAddTest_Click);
  150. btnNewScript.Click += new RoutedEventHandler(btnNewScript_Click);
  151. btnSaveScript.Click += new RoutedEventHandler(btnSaveScript_Click);
  152. btnDeleteScript.Click += new RoutedEventHandler(btnDeleteScript_Click);
  153. cboLoadType.Items.Clear();
  154. cboLoadType.Items.Add(LoadTypeRandom);
  155. cboLoadType.Items.Add(LoadTypeSeries);
  156. cboLoadType.Items.Add(LoadTypeAll);
  157. cboLoadType.SelectedIndex = 0;
  158. cboLoadType.SelectionChanged += new SelectionChangedEventHandler(cboLoadType_SelectionChanged);
  159. cboFilterType.Items.Clear();
  160. cboFilterType.Items.Add(FilterTypeAll);
  161. cboFilterType.Items.Add(FilterTypeFailed);
  162. cboFilterType.Items.Add(FilterTypePassed);
  163. cboFilterType.SelectionChanged += new SelectionChangedEventHandler(cboFilterType_SelectionChanged);
  164. cboFilterType.SelectedIndex = 0;
  165. cboScript.SelectionChanged += new SelectionChangedEventHandler(cboScript_SelectionChanged);
  166. previewWorker.DoWork += new DoWorkEventHandler(previewWorker_DoWork);
  167. previewWorker.WorkerSupportsCancellation = true;
  168. previewWorker.WorkerReportsProgress = true;
  169. previewWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(previewWorker_RunWorkerCompleted);
  170. previewWorker.ProgressChanged += new ProgressChangedEventHandler(previewWorker_ProgressChanged);
  171. renameWorker.DoWork += new DoWorkEventHandler(renameWorker_DoWork);
  172. renameWorker.WorkerSupportsCancellation = true;
  173. renameWorker.WorkerReportsProgress = true;
  174. renameWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(renameWorker_RunWorkerCompleted);
  175. renameWorker.ProgressChanged += new ProgressChangedEventHandler(renameWorker_ProgressChanged);
  176. txtRenameScript.LostFocus += new RoutedEventHandler(txtRenameScript_LostFocus);
  177. ViewTags.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
  178. ViewTests.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
  179. //ViewScripts.SortDescriptions.Add(new SortDescription("ScriptName", ListSortDirection.Ascending));
  180. }
  181. void btnDeleteScript_Click(object sender, RoutedEventArgs e)
  182. {
  183. try
  184. {
  185. if (cboScript.Items.Count == 0) return;
  186. if (cboScript.SelectedItem == null) return;
  187. RenameScriptVM script = cboScript.SelectedItem as RenameScriptVM;
  188. string msg = string.Format("Are you sure you want to delete the script: {0}", script.ScriptName);
  189. MessageBoxResult res = MessageBox.Show(msg, "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Warning);
  190. if (res == MessageBoxResult.Yes)
  191. {
  192. this.Cursor = Cursors.Wait;
  193. string errorMsg = JMMServerVM.Instance.clientBinaryHTTP.DeleteRenameScript(script.RenameScriptID.Value);
  194. if (!string.IsNullOrEmpty(errorMsg))
  195. {
  196. Utils.ShowErrorMessage(errorMsg);
  197. }
  198. else
  199. defaultScriptID = null;
  200. // refresh data
  201. RefreshScripts();
  202. }
  203. }
  204. catch (Exception ex)
  205. {
  206. Utils.ShowErrorMessage(ex);
  207. }
  208. this.Cursor = Cursors.Arrow;
  209. }
  210. void btnSaveScript_Click(object sender, RoutedEventArgs e)
  211. {
  212. try
  213. {
  214. if (cboScript.Items.Count == 0) return;
  215. if (cboScript.SelectedItem == null) return;
  216. RenameScriptVM script = cboScript.SelectedItem as RenameScriptVM;
  217. script.IsEnabledOnImport = chkIsUsedForImports.IsChecked.Value ? 1 : 0;
  218. script.Script = txtRenameScript.Text;
  219. if (script.Save())
  220. {
  221. defaultScriptID = script.RenameScriptID;
  222. // refresh data
  223. RefreshScripts();
  224. }
  225. }
  226. catch (Exception ex)
  227. {
  228. Utils.ShowErrorMessage(ex);
  229. }
  230. }
  231. void btnNewScript_Click(object sender, RoutedEventArgs e)
  232. {
  233. try
  234. {
  235. DialogText dlg = new DialogText();
  236. dlg.Init("Enter script name: ", "");
  237. dlg.Owner = Window.GetWindow(this);
  238. bool? res = dlg.ShowDialog();
  239. if (res.HasValue && res.Value)
  240. {
  241. if (string.IsNullOrEmpty(dlg.EnteredText))
  242. {
  243. Utils.ShowErrorMessage("Please enter a script name");
  244. return;
  245. }
  246. JMMServerBinary.Contract_RenameScript script = new JMMServerBinary.Contract_RenameScript();
  247. script.IsEnabledOnImport = 0;
  248. script.Script = "";
  249. script.ScriptName = dlg.EnteredText;
  250. JMMServerBinary.Contract_RenameScript_SaveResponse resp = JMMServerVM.Instance.clientBinaryHTTP.SaveRenameScript(script);
  251. if (!string.IsNullOrEmpty(resp.ErrorMessage))
  252. {
  253. Utils.ShowErrorMessage(resp.ErrorMessage);
  254. return;
  255. }
  256. RenameScriptVM plRet = new RenameScriptVM(resp.RenameScript);
  257. defaultScriptID = plRet.RenameScriptID;
  258. // refresh data
  259. RefreshScripts();
  260. }
  261. }
  262. catch (Exception ex)
  263. {
  264. Utils.ShowErrorMessage(ex);
  265. }
  266. }
  267. void cboScript_SelectionChanged(object sender, SelectionChangedEventArgs e)
  268. {
  269. if (cboScript.Items.Count == 0) return;
  270. if (cboScript.SelectedItem == null) return;
  271. RenameScriptVM script = cboScript.SelectedItem as RenameScriptVM;
  272. txtRenameScript.Text = script.Script;
  273. chkIsUsedForImports.IsChecked = script.IsEnabledOnImportBool;
  274. }
  275. public void RefreshScripts()
  276. {
  277. try
  278. {
  279. RenameScripts.Clear();
  280. List<RenameScriptVM> scripts = new List<RenameScriptVM>();
  281. foreach (JMMServerBinary.Contract_RenameScript raw in JMMServerVM.Instance.clientBinaryHTTP.GetAllRenameScripts())
  282. scripts.Add(new RenameScriptVM(raw));
  283. // sort by scrit name
  284. List<SortPropOrFieldAndDirection> sortCriteria = new List<SortPropOrFieldAndDirection>();
  285. sortCriteria.Add(new SortPropOrFieldAndDirection("ScriptName", false, SortType.eString));
  286. scripts = Sorting.MultiSort<RenameScriptVM>(scripts, sortCriteria);
  287. if (scripts.Count > 0)
  288. {
  289. int idx = 0;
  290. if (defaultScriptID.HasValue)
  291. {
  292. foreach (RenameScriptVM scr in scripts)
  293. {
  294. if (scr.RenameScriptID.Value == defaultScriptID.Value) break;
  295. idx++;
  296. }
  297. }
  298. foreach (RenameScriptVM scr in scripts)
  299. RenameScripts.Add(scr);
  300. cboScript.SelectedIndex = idx;
  301. }
  302. else
  303. defaultScriptID = null;
  304. }
  305. catch (Exception ex)
  306. {
  307. Utils.ShowErrorMessage(ex);
  308. }
  309. }
  310. void cboFilterType_SelectionChanged(object sender, SelectionChangedEventArgs e)
  311. {
  312. ViewFiles.Filter = FileFilter;
  313. }
  314. private bool FileFilter(object obj)
  315. {
  316. VideoLocalRenamedVM vid = obj as VideoLocalRenamedVM;
  317. if (vid == null) return false;
  318. string filterType = cboFilterType.SelectedItem.ToString();
  319. if (filterType.Equals(FilterTypeAll)) return true;
  320. if (filterType.Equals(FilterTypeFailed) && !vid.Success) return true;
  321. if (filterType.Equals(FilterTypePassed) && vid.Success) return true;
  322. return false;
  323. }
  324. void txtRenameScript_LostFocus(object sender, RoutedEventArgs e)
  325. {
  326. e.Handled = true;
  327. }
  328. void btnAddTag_Click(object sender, RoutedEventArgs e)
  329. {
  330. try
  331. {
  332. if (cboTagType.SelectedItem == null) return;
  333. RenameTag tag = cboTagType.SelectedItem as RenameTag;
  334. txtRenameScript.Text = txtRenameScript.Text.Insert(txtRenameScript.CaretIndex, tag.Tag);
  335. }
  336. catch { }
  337. }
  338. void btnAddTest_Click(object sender, RoutedEventArgs e)
  339. {
  340. try
  341. {
  342. if (cboTestType.SelectedItem == null) return;
  343. RenameTest test = cboTestType.SelectedItem as RenameTest;
  344. txtRenameScript.Text = txtRenameScript.Text.Insert(txtRenameScript.CaretIndex, test.Test);
  345. }
  346. catch { }
  347. }
  348. void btnClearList_Click(object sender, RoutedEventArgs e)
  349. {
  350. try
  351. {
  352. FileResults.Clear();
  353. ViewFiles.Refresh();
  354. FileCount = 0;
  355. }
  356. catch (Exception ex)
  357. {
  358. Utils.ShowErrorMessage(ex);
  359. }
  360. }
  361. void btnPreviewStop_Click(object sender, RoutedEventArgs e)
  362. {
  363. stopWorker = true;
  364. }
  365. void renameWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
  366. {
  367. ViewFiles.Refresh();
  368. WorkerStatusContainer status = e.UserState as WorkerStatusContainer;
  369. WorkerStatus = string.Format("{0} of {1}", status.CurrentFile, status.TotalFileCount);
  370. }
  371. void renameWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  372. {
  373. ViewFiles.Refresh();
  374. WorkerRunning = false;
  375. WorkerNotRunning = true;
  376. stopWorker = false;
  377. EnableDisableControls(true);
  378. }
  379. void renameWorker_DoWork(object sender, DoWorkEventArgs e)
  380. {
  381. WorkerJob job = e.Argument as WorkerJob;
  382. BackgroundWorker worker = sender as BackgroundWorker;
  383. foreach (VideoLocalRenamedVM ren in job.FileResults)
  384. {
  385. if (stopWorker) return;
  386. ren.NewFileName = "";
  387. }
  388. int curFile = 0;
  389. int delay = 0;
  390. foreach (VideoLocalRenamedVM ren in job.FileResults)
  391. {
  392. if (stopWorker) return;
  393. curFile++;
  394. delay++;
  395. JMMServerBinary.Contract_VideoLocalRenamed raw = JMMServerVM.Instance.clientBinaryHTTP.RenameFile(
  396. ren.VideoLocalID, job.RenameScript);
  397. ren.NewFileName = raw.NewFileName;
  398. ren.Success = raw.Success;
  399. // do this so we don't lock the UI
  400. if (delay == 20)
  401. {
  402. renameWorker.ReportProgress(0, new WorkerStatusContainer(job.FileResults.Count, curFile));
  403. delay = 0;
  404. }
  405. }
  406. }
  407. void btnRenameFiles_Click(object sender, RoutedEventArgs e)
  408. {
  409. string msg = string.Format("Are you sure you want to rename the files below?");
  410. MessageBoxResult res = MessageBox.Show(msg, "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Warning);
  411. if (res != MessageBoxResult.Yes) return;
  412. EnableDisableControls(false);
  413. WorkerRunning = true;
  414. WorkerNotRunning = false;
  415. stopWorker = false;
  416. WorkerJob job = new WorkerJob();
  417. job.RenameScript = txtRenameScript.Text;
  418. job.FileResults = FileResults;
  419. renameWorker.RunWorkerAsync(job);
  420. }
  421. void previewWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
  422. {
  423. ViewFiles.Refresh();
  424. WorkerStatusContainer status = e.UserState as WorkerStatusContainer;
  425. WorkerStatus = string.Format("{0} of {1}", status.CurrentFile, status.TotalFileCount);
  426. }
  427. void previewWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  428. {
  429. ViewFiles.Refresh();
  430. WorkerRunning = false;
  431. WorkerNotRunning = true;
  432. stopWorker = false;
  433. EnableDisableControls(true);
  434. //HideShowControls(System.Windows.Visibility.Visible);
  435. }
  436. void previewWorker_DoWork(object sender, DoWorkEventArgs e)
  437. {
  438. WorkerJob job = e.Argument as WorkerJob;
  439. BackgroundWorker worker = sender as BackgroundWorker;
  440. foreach (VideoLocalRenamedVM ren in job.FileResults)
  441. {
  442. if (stopWorker) return;
  443. ren.NewFileName = "";
  444. }
  445. int curFile = 0;
  446. int delay = 0;
  447. foreach (VideoLocalRenamedVM ren in job.FileResults)
  448. {
  449. if (stopWorker) return;
  450. curFile++;
  451. delay++;
  452. JMMServerBinary.Contract_VideoLocalRenamed raw = JMMServerVM.Instance.clientBinaryHTTP.RenameFilePreview(
  453. ren.VideoLocalID, job.RenameScript);
  454. ren.NewFileName = raw.NewFileName;
  455. ren.Success = raw.Success;
  456. // do this so we don't lock the UI
  457. if (delay == 20)
  458. {
  459. previewWorker.ReportProgress(0, new WorkerStatusContainer(job.FileResults.Count, curFile));
  460. delay = 0;
  461. }
  462. }
  463. }
  464. void btnPreviewFiles_Click(object sender, RoutedEventArgs e)
  465. {
  466. EnableDisableControls(false);
  467. //HideShowControls(System.Windows.Visibility.Hidden);
  468. WorkerRunning = true;
  469. WorkerNotRunning = false;
  470. stopWorker = false;
  471. WorkerJob job = new WorkerJob();
  472. job.RenameScript = txtRenameScript.Text;
  473. job.FileResults = FileResults;
  474. previewWorker.RunWorkerAsync(job);
  475. }
  476. void cboLoadType_SelectionChanged(object sender, SelectionChangedEventArgs e)
  477. {
  478. LoadTypeIsRandom = (cboLoadType.SelectedItem.ToString() == LoadTypeRandom);
  479. LoadTypeIsSeries = (cboLoadType.SelectedItem.ToString() == LoadTypeSeries);
  480. LoadTypeIsAll = (cboLoadType.SelectedItem.ToString() == LoadTypeAll);
  481. }
  482. void btnLoadFiles_Click(object sender, RoutedEventArgs e)
  483. {
  484. try
  485. {
  486. if (!JMMServerVM.Instance.ServerOnline) return;
  487. ViewFiles.Refresh();
  488. this.Cursor = Cursors.Wait;
  489. EnableDisableControls(false);
  490. List<JMMServerBinary.Contract_VideoLocal> rawVids = new List<JMMServerBinary.Contract_VideoLocal>();
  491. if (LoadTypeIsRandom)
  492. {
  493. rawVids = JMMServerVM.Instance.clientBinaryHTTP.RandomFileRenamePreview(udRandomFiles.Value.Value, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
  494. /*List<int> testIDs = new List<int>();
  495. testIDs.Add(6041); // Gekijouban Bleach: Fade to Black Kimi no Na o Yobu
  496. testIDs.Add(6784); // Fate/Stay Night: Unlimited Blade Works
  497. testIDs.Add(5975); // Toaru Majutsu no Index
  498. testIDs.Add(7599); // Toaru Majutsu no Index II
  499. testIDs.Add(8694); // Gekijouban Toaru Majutsu no Index (movie)
  500. testIDs.Add(6071); // Quiz Magic Academy: The Original Animation
  501. testIDs.Add(4145); // Amaenaide yo!! Katsu!!
  502. testIDs.Add(2369); // Bleach
  503. testIDs.Add(69); // One Piece
  504. foreach (int animeID in testIDs)
  505. {
  506. List<JMMServerBinary.Contract_VideoLocal> raws = JMMServerVM.Instance.clientBinaryHTTP.GetVideoLocalsForAnime(animeID,
  507. JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
  508. rawVids.AddRange(raws);
  509. }*/
  510. }
  511. if (LoadTypeIsAll)
  512. {
  513. rawVids = JMMServerVM.Instance.clientBinaryHTTP.RandomFileRenamePreview(int.MaxValue, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
  514. }
  515. if (LoadTypeIsSeries)
  516. {
  517. Window wdw = Window.GetWindow(this);
  518. SelectGroupSeriesForm frm = new SelectGroupSeriesForm();
  519. frm.Owner = wdw;
  520. frm.Init();
  521. bool? result = frm.ShowDialog();
  522. if (result.HasValue && result.Value == true)
  523. {
  524. if (frm.SelectedObject.GetType() == typeof(AnimeGroupVM))
  525. {
  526. AnimeGroupVM grp = frm.SelectedObject as AnimeGroupVM;
  527. foreach (AnimeSeriesVM ser in grp.AllAnimeSeries)
  528. {
  529. List<JMMServerBinary.Contract_VideoLocal> raws = JMMServerVM.Instance.clientBinaryHTTP.GetVideoLocalsForAnime(ser.AniDB_ID,
  530. JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
  531. rawVids.AddRange(raws);
  532. }
  533. }
  534. if (frm.SelectedObject.GetType() == typeof(AnimeSeriesVM))
  535. {
  536. AnimeSeriesVM ser = frm.SelectedObject as AnimeSeriesVM;
  537. List<JMMServerBinary.Contract_VideoLocal> raws = JMMServerVM.Instance.clientBinaryHTTP.GetVideoLocalsForAnime(ser.AniDB_ID,
  538. JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
  539. rawVids.AddRange(raws);
  540. }
  541. }
  542. }
  543. foreach (JMMServerBinary.Contract_VideoLocal raw in rawVids)
  544. {
  545. VideoLocalVM vid = new VideoLocalVM(raw);
  546. VideoLocalRenamedVM ren = new VideoLocalRenamedVM();
  547. ren.VideoLocalID = vid.VideoLocalID;
  548. ren.VideoLocal = vid;
  549. ren.Success = false;
  550. FileResults.Add(ren);
  551. }
  552. FileCount = FileResults.Count;
  553. this.Cursor = Cursors.Arrow;
  554. }
  555. catch (Exception ex)
  556. {
  557. Utils.ShowErrorMessage(ex);
  558. }
  559. finally
  560. {
  561. this.Cursor = Cursors.Arrow;
  562. EnableDisableControls(true);
  563. }
  564. }
  565. private void EnableDisableControls(bool val)
  566. {
  567. btnLoadFiles.IsEnabled = val;
  568. btnPreviewFiles.IsEnabled = val;
  569. cboLoadType.IsEnabled = val;
  570. }
  571. private void HideShowControls(System.Windows.Visibility val)
  572. {
  573. btnLoadFiles.Visibility = val;
  574. btnPreviewFiles.Visibility = val;
  575. cboLoadType.Visibility = val;
  576. }
  577. }
  578. public class WorkerJob
  579. {
  580. public string RenameScript { get; set; }
  581. public int MaxFiles { get; set; }
  582. public ObservableCollection<VideoLocalRenamedVM> FileResults { get; set; }
  583. }
  584. public class WorkerStatusContainer
  585. {
  586. public int TotalFileCount { get; set; }
  587. public int CurrentFile { get; set; }
  588. public WorkerStatusContainer()
  589. {
  590. }
  591. public WorkerStatusContainer(int totalFileCount, int currentFile)
  592. {
  593. TotalFileCount = totalFileCount;
  594. CurrentFile = currentFile;
  595. }
  596. }
  597. }