using ComPDFKitViewer.PdfViewer;
using PDF_Master.Model;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using PDF_Master.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
using static System.Resources.ResXFileRef;
using static System.Net.Mime.MediaTypeNames;
using System.Windows.Forms;
using Microsoft.Office.Core;
using System.Threading.Tasks;
using System.Windows;
namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
{
public class SelectedTranslationDialogViewModel : BindableBase, IDialogAware
{
public string Title => "";
private string selectedText;
public string SelectedText
{
get { return selectedText; }
set
{
SetProperty(ref selectedText, value);
}
}
private string translateText;
public string TranslateText
{
get { return translateText; }
set
{
SetProperty(ref translateText, value);
}
}
private string errorTipText;
public string ErrorTipText
{
get { return errorTipText; }
set
{
SetProperty(ref errorTipText, value);
}
}
private Visibility errorVisible = Visibility.Collapsed;
public Visibility ErrorVisible
{
get
{
return errorVisible;
}
set
{
SetProperty(ref errorVisible, value);
}
}
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);
}
}
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);
}
}
public static List FromlanguageFamily { set; get; } = new List();
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 CopyCommand { get; set; }
public SelectedTranslationDialogViewModel()
{
TranslateCommand = new DelegateCommand(translate);
CopyCommand = new DelegateCommand(copy);
init();
}
private void init()
{
GetFromlanguageOrigin();
GetTolanguageOrigin();
}
public async void translate()
{
//添加付费拦截锁
if (!ServiceHelper.IAPBeforeFunction())
{
return;
}
ErrorVisible = Visibility.Collapsed;
ProgressVisible = Visibility.Visible;
Value = 1;
string translatetext = "";
string Code = "";
Value = 4;
await Task.Run( delegate
{
Code=ChatGTPAIHelper.textTranslate(SelectedText, fromlanguage, tolanguage, ref translatetext);
});
Value = 7;
if (Code != "200") {
ErrorTipText = Code;
ErrorVisible = Visibility.Visible;
}
Value = 9;
ProgressVisible = Visibility.Collapsed;
TranslateText = translatetext;
}
public void copy()
{
try
{
System.Windows.Forms.Clipboard.SetText(TranslateText);
}
catch { }
}
public event Action RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
CPDFViewer pdfViewer = null;
parameters.TryGetValue(ParameterNames.PDFViewer, out pdfViewer);
if (pdfViewer != null)
{
SelectedText = pdfViewer.GetSelectedText();
fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0);
tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1);
}
}
}
}