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; using PDF_Master.Properties; using PDF_Master.CustomControl; using DialogResult = Prism.Services.Dialogs.DialogResult; namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs { public class SelectedTranslationDialogViewModel : BindableBase, IDialogAware { #region 文案 private string T_title; public string T_Title { get { return T_title; } set { SetProperty(ref T_title, value); } } private string T_limitTip; public string T_LimitTip { get { return T_limitTip; } set { SetProperty(ref T_limitTip, value); } } private string T_textBoxWatermark; public string T_TextBoxWatermark { get { return T_textBoxWatermark; } set { SetProperty(ref T_textBoxWatermark, value); } } private string T_copy; public string T_Copy { get { return T_copy; } set { SetProperty(ref T_copy, value); } } private string T_result; public string T_Result { get { return T_result; } set { SetProperty(ref T_result, value); } } private string T_translationBtn; public string T_TranslationBtn { get { return T_translationBtn; } set { SetProperty(ref T_translationBtn, value); } } private string T_translationLanguage; public string T_TranslationLanguage { get { return T_translationLanguage; } set { SetProperty(ref T_translationLanguage, value); } } private string T_copied; public string T_Copied { get { return T_copied; } set { SetProperty(ref T_copied, value); } } private void InitString() { T_Title = App.HomePageLoader.GetString("ViewRightMenuText_AITranslationTitle"); T_LimitTip = App.HomePageLoader.GetString("AISelectTranslationBtn_LimitTip"); T_TextBoxWatermark = App.HomePageLoader.GetString("ChatGTPAI_TextBoxWatermark"); T_TranslationLanguage = App.HomePageLoader.GetString("AITranslationBtn_TranslationLanguage"); T_Copy = App.HomePageLoader.GetString("ChatGTPAI_Copy"); T_Result = App.HomePageLoader.GetString("ChatGTPAI_Result"); T_TranslationBtn = App.HomePageLoader.GetString("ViewRightMenuText_AITranslationBtn"); T_Copied = App.HomePageLoader.GetString("ChatGTPAI_Copied"); } #endregion #region 参数和属性 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 Visibility showTip = Visibility.Collapsed; public Visibility ShowTip { get { return showTip; } set { SetProperty(ref showTip, 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(); } #endregion #region 委托声明 public DelegateCommand TranslateCommand { get; set; } public DelegateCommand CopyCommand { get; set; } public DelegateCommand textBoxEnterCharactersTextChangedCommad { get; set; } public IDialogService dialogs; #endregion public SelectedTranslationDialogViewModel(IDialogService dialogService) { dialogs = dialogService; TranslateCommand = new DelegateCommand(translate); CopyCommand = new DelegateCommand(copy); textBoxEnterCharactersTextChangedCommad = new DelegateCommand(textBoxEnterCharactersTextChanged); init(); InitString(); } #region 逻辑函数 /// /// 初始化下拉列表,或其他 /// private void init() { GetFromlanguageOrigin(); GetTolanguageOrigin(); } /// /// 检查文字是否超出范围 /// /// private void textBoxEnterCharactersTextChanged(object e) { var ConverterPreview = e as TextBoxEx; if (ConverterPreview != null) { //结果置空 TranslateText = ""; if (ConverterPreview.Text.Length > 150) { ErrorTipText = App.HomePageLoader.GetString("ChatGTPLimit150"); ; ErrorVisible = Visibility.Visible; } else { ErrorVisible = Visibility.Collapsed; } } } /// /// 文本翻译 /// public async void translate() { //添加付费拦截锁 if (!ServiceHelper.IAPBeforeFunction()) { return; } #region 权益弹窗暂时关闭 //bool flg = false; ////权益弹窗 //if (!App.IsLogin || Settings.Default.UserDate.subscribestatus != 1) //{ // DialogParameters value = new DialogParameters(); // value.Add(ParameterNames.Open, "AI"); // dialogs.ShowDialog(DialogNames.SubscriptionDialog, value, dialogResult => // { // if (dialogResult.Result == ButtonResult.OK) // { // flg = true; // } // else // { // flg = false; // } // }); // if (flg == false) // { // return; // } //} #endregion 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 = ChatGTPAIHelper.GetBaiduTranslationCode(Code); ErrorVisible = Visibility.Visible; } Value = 9; ProgressVisible = Visibility.Collapsed; TranslateText = translatetext; } /// /// 复制到剪切板 /// public void copy() { try { System.Windows.Forms.Clipboard.SetText(TranslateText); ShowTip = Visibility.Visible; } catch { } } #endregion #region 构架行为 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(); if (SelectedText.Length > 150) { ErrorTipText = App.HomePageLoader.GetString("ChatGTPLimit150"); ; ErrorVisible = Visibility.Visible; } fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0); tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1); } } #endregion } }