DocumentaryTranslationDialogViewModel.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using ComPDFKitViewer;
  2. using ComPDFKitViewer.PdfViewer;
  3. using Microsoft.Win32;
  4. using PDF_Master.CustomControl;
  5. using PDF_Master.Helper;
  6. using PDF_Master.Model;
  7. using Prism.Commands;
  8. using Prism.Mvvm;
  9. using Prism.Regions;
  10. using Prism.Services.Dialogs;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.IO;
  14. using System.Linq;
  15. using System.Threading.Tasks;
  16. using System.Windows;
  17. namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
  18. {
  19. public class DocumentaryTranslationDialogViewModel : BindableBase, IDialogAware
  20. {
  21. public IRegionManager regionManager;
  22. public CPDFViewer PDFViewer;
  23. public ViewContentViewModel viewContentViewModel;
  24. private CPDFViewer pdfViewer = null;
  25. private string fromlanguage = "";
  26. private string tolanguage = "";
  27. private int fromlanguageIndex = 0;
  28. public int FromlanguageIndex
  29. {
  30. get { return fromlanguageIndex; }
  31. set
  32. {
  33. SetProperty(ref fromlanguageIndex, value);
  34. fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(value);
  35. }
  36. }
  37. private int tolanguageIndex = 0;
  38. public int TolanguageIndex
  39. {
  40. get { return tolanguageIndex; }
  41. set
  42. {
  43. SetProperty(ref tolanguageIndex, value);
  44. tolanguage = ChatGTPAIHelper.UpdateLanguagebType(value + 1);
  45. }
  46. }
  47. private Visibility progressVisible = Visibility.Collapsed;
  48. public Visibility ProgressVisible
  49. {
  50. get
  51. {
  52. return progressVisible;
  53. }
  54. set
  55. {
  56. SetProperty(ref progressVisible, value);
  57. }
  58. }
  59. private double processvalue = 0;
  60. /// <summary>
  61. /// 进度条当前值
  62. /// </summary>
  63. public double Value
  64. {
  65. get { return processvalue; }
  66. set
  67. {
  68. SetProperty(ref processvalue, value);
  69. }
  70. }
  71. private double maxValue = 10;
  72. /// <summary>
  73. /// 进度条最大值
  74. /// </summary>
  75. public double MaxValue
  76. {
  77. get { return maxValue; }
  78. set
  79. {
  80. SetProperty(ref maxValue, value);
  81. }
  82. }
  83. public static List<string> FromlanguageFamily { set; get; } = new List<string>();
  84. public string ViewerRegionName { get; set; }
  85. private void GetFromlanguageOrigin()
  86. {
  87. FromlanguageFamily.Clear();
  88. FromlanguageFamily = ChatGTPAIHelper.SetFromlanguageOrigin();
  89. }
  90. public List<string> TolanguageFamily { set; get; } = new List<string>();
  91. private void GetTolanguageOrigin()
  92. {
  93. TolanguageFamily.Clear();
  94. TolanguageFamily = ChatGTPAIHelper.SetTolanguageOrigin();
  95. }
  96. public DelegateCommand TranslateCommand { get; set; }
  97. public DelegateCommand CancelCommand { get; set; }
  98. public DocumentaryTranslationDialogViewModel(IRegionManager regionManager)
  99. {
  100. this.regionManager = regionManager;
  101. CancelCommand = new DelegateCommand(cancel);
  102. TranslateCommand = new DelegateCommand(translate);
  103. ViewerRegionName = Guid.NewGuid().ToString();
  104. init();
  105. }
  106. private void init()
  107. {
  108. GetFromlanguageOrigin();
  109. GetTolanguageOrigin();
  110. }
  111. private void cancel()
  112. {
  113. RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
  114. }
  115. public async void translate()
  116. {
  117. //添加付费拦截锁
  118. if (!ServiceHelper.IAPBeforeFunction())
  119. {
  120. return;
  121. }
  122. ProgressVisible = Visibility.Visible;
  123. Value = 1;
  124. string newfile = "";
  125. FileInfo fileInfo = new FileInfo(pdfViewer.Document.FilePath);
  126. Value = 3;
  127. if ((((float)fileInfo.Length) / 1024 / 1024) > 30)
  128. {
  129. Value = 9;
  130. AlertsMessage alertsMessage = new AlertsMessage();
  131. alertsMessage.ShowDialog("", "The uploaded file cannot exceed 10MB", App.ServiceLoader.GetString("Text_ok"));
  132. ProgressVisible = Visibility.Collapsed;
  133. return;
  134. }
  135. Value = 4;
  136. await Task.Run(async delegate
  137. {
  138. newfile = await ChatGTPAIHelper.fileTranslate(pdfViewer.Document.FilePath, fromlanguage, tolanguage,false);
  139. });
  140. Value = 8;
  141. if (!string.IsNullOrEmpty(newfile))
  142. {
  143. if (File.Exists(newfile))
  144. {
  145. if (viewContentViewModel != null)
  146. {
  147. viewContentViewModel.OpenFile(new string[] { newfile });
  148. RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
  149. }
  150. }
  151. else
  152. {
  153. //newfile code
  154. AlertsMessage alertsMessage = new AlertsMessage();
  155. alertsMessage.ShowDialog("", newfile, App.ServiceLoader.GetString("Text_ok"));
  156. }
  157. }
  158. Value = 9;
  159. ProgressVisible = Visibility.Collapsed;
  160. }
  161. public string Title => "";
  162. public event Action<IDialogResult> RequestClose;
  163. public bool CanCloseDialog()
  164. {
  165. return true;
  166. }
  167. public void OnDialogClosed()
  168. {
  169. }
  170. public void OnDialogOpened(IDialogParameters parameters)
  171. {
  172. parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
  173. parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel);
  174. if (pdfViewer != null)
  175. {
  176. if (!regionManager.Regions[ViewerRegionName].Views.Contains(pdfViewer))
  177. {
  178. PDFViewer = new CPDFViewer();
  179. PDFViewer.InitDocument(pdfViewer.Document);
  180. regionManager.AddToRegion(ViewerRegionName, PDFViewer);
  181. PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
  182. PDFViewer.Load();
  183. PDFViewer.ChangeViewMode(ViewMode.SingleContinuous);
  184. PDFViewer.ChangeFitMode(FitMode.FitHeight);
  185. PDFViewer.SetMouseMode(MouseModes.PanTool);
  186. PDFViewer.Document.ReleasePages();
  187. PDFViewer.ReloadDocument();
  188. fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0);
  189. tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1);
  190. //PageRangeNumber = PDFViewer.Document.PageCount;
  191. //PDFViewer.Zoom(0.1);
  192. }
  193. }
  194. }
  195. }
  196. }