using ComPDFKitViewer;
using ComPDFKitViewer.PdfViewer;
using Microsoft.Win32;
using PDF_Master.CustomControl;
using PDF_Master.Helper;
using PDF_Master.Model;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
{
public class DocumentaryTranslationDialogViewModel : BindableBase, IDialogAware
{
public IRegionManager regionManager;
public CPDFViewer PDFViewer;
public ViewContentViewModel viewContentViewModel;
private CPDFViewer pdfViewer = null;
private string fromlanguage = "";
private string tolanguage = "";
private int fromlanguageIndex = 0;
public int FromlanguageIndex
{
get { return fromlanguageIndex; }
set
{
SetProperty(ref fromlanguageIndex, value);
fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(value);
}
}
private int tolanguageIndex = 0;
public int TolanguageIndex
{
get { return tolanguageIndex; }
set
{
SetProperty(ref tolanguageIndex, value);
tolanguage = ChatGTPAIHelper.UpdateLanguagebType(value + 1);
}
}
private Visibility progressVisible = Visibility.Collapsed;
public Visibility ProgressVisible
{
get
{
return progressVisible;
}
set
{
SetProperty(ref progressVisible, value);
}
}
private double processvalue = 0;
///
/// 进度条当前值
///
public double Value
{
get { return processvalue; }
set
{
SetProperty(ref processvalue, value);
}
}
private double maxValue = 10;
///
/// 进度条最大值
///
public double MaxValue
{
get { return maxValue; }
set
{
SetProperty(ref maxValue, value);
}
}
public static List FromlanguageFamily { set; get; } = new List();
public string ViewerRegionName { get; set; }
private void GetFromlanguageOrigin()
{
FromlanguageFamily.Clear();
FromlanguageFamily = ChatGTPAIHelper.SetFromlanguageOrigin();
}
public List TolanguageFamily { set; get; } = new List();
private void GetTolanguageOrigin()
{
TolanguageFamily.Clear();
TolanguageFamily = ChatGTPAIHelper.SetTolanguageOrigin();
}
public DelegateCommand TranslateCommand { get; set; }
public DelegateCommand CancelCommand { get; set; }
public DocumentaryTranslationDialogViewModel(IRegionManager regionManager)
{
this.regionManager = regionManager;
CancelCommand = new DelegateCommand(cancel);
TranslateCommand = new DelegateCommand(translate);
ViewerRegionName = Guid.NewGuid().ToString();
init();
}
private void init()
{
GetFromlanguageOrigin();
GetTolanguageOrigin();
}
private void cancel()
{
RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
}
public async void translate()
{
//添加付费拦截锁
if (!ServiceHelper.IAPBeforeFunction())
{
return;
}
ProgressVisible = Visibility.Visible;
Value = 1;
string newfile = "";
FileInfo fileInfo = new FileInfo(pdfViewer.Document.FilePath);
Value = 3;
if ((((float)fileInfo.Length) / 1024 / 1024) > 30)
{
Value = 9;
AlertsMessage alertsMessage = new AlertsMessage();
alertsMessage.ShowDialog("", "The uploaded file cannot exceed 10MB", App.ServiceLoader.GetString("Text_ok"));
ProgressVisible = Visibility.Collapsed;
return;
}
Value = 4;
await Task.Run(async delegate
{
newfile = await ChatGTPAIHelper.fileTranslate(pdfViewer.Document.FilePath, fromlanguage, tolanguage,false);
});
Value = 8;
if (!string.IsNullOrEmpty(newfile))
{
if (File.Exists(newfile))
{
if (viewContentViewModel != null)
{
viewContentViewModel.OpenFile(new string[] { newfile });
RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
}
}
else
{
//newfile code
AlertsMessage alertsMessage = new AlertsMessage();
alertsMessage.ShowDialog("", newfile, App.ServiceLoader.GetString("Text_ok"));
}
}
Value = 9;
ProgressVisible = Visibility.Collapsed;
}
public string Title => "";
public event Action RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
parameters.TryGetValue(ParameterNames.PDFViewer, out pdfViewer);
parameters.TryGetValue(ParameterNames.ViewContentViewModel, out viewContentViewModel);
if (pdfViewer != null)
{
if (!regionManager.Regions[ViewerRegionName].Views.Contains(pdfViewer))
{
PDFViewer = new CPDFViewer();
PDFViewer.InitDocument(pdfViewer.Document);
regionManager.AddToRegion(ViewerRegionName, PDFViewer);
PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
PDFViewer.Load();
PDFViewer.ChangeViewMode(ViewMode.SingleContinuous);
PDFViewer.ChangeFitMode(FitMode.FitHeight);
PDFViewer.SetMouseMode(MouseModes.PanTool);
PDFViewer.Document.ReleasePages();
PDFViewer.ReloadDocument();
fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0);
tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1);
//PageRangeNumber = PDFViewer.Document.PageCount;
//PDFViewer.Zoom(0.1);
}
}
}
}
}