-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
121 lines (109 loc) · 3.8 KB
/
Copy pathmainwindow.cpp
File metadata and controls
121 lines (109 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "global.h"
#include "aliapi.h"
#include "readwritefile.h"
#include "curl.h"
#include <QtConcurrent/QtConcurrent>
#include <QMessageBox>
//主窗口构造函数
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//如果存在option,读取到内存
if(ReadWriteFile::isexist("option.txt")){
optionlist = ReadWriteFile::ReadCach(7,"option.txt");
}
//不存在需要初始化apioptionlist对象,不然会溢出崩溃
else{
optionlist = ReadWriteFile::InitializeOption(optionlist);
}
//创建apioption窗口对象
thisapioption = new apioption();
//创建tranoption窗口对象
thistranoption= new tranoption();
}
//主窗口关闭事件
MainWindow::~MainWindow()
{
delete ui;
ReadWriteFile::WriteCach(optionlist.join("\n"),"option.txt");
}
//api设置按钮点击事件
void MainWindow::on_apioption_triggered()
{
thisapioption->show();
}
//翻译按钮点击事件
void MainWindow::on_tranButton_clicked()
{
ui->outinfo->setText("");
//使用QT内置库进行异步访问
QtConcurrent::run([=]() {
ui->outinfo->append("启动翻译任务……");
//将文本框内容保存到目录
ui->outinfo->append("将输入写入本地");
ReadWriteFile::WriteCach(ui->inputEdit->toPlainText(),"input.txt");
ui->outinfo->append("写入本地文件成功");
//创建Aliapi对象
ui->outinfo->append("初始化阿里云api接口");
Aliapi *aliapi = new Aliapi(optionlist);
ui->outinfo->append("成功");
//上传文件到阿里云OSS
ui->outinfo->append("上传文件至阿里云OSS");
if(aliapi->pushfile("input.txt")){
ui->outinfo->append("上传成功");
//执行翻译任务
ui->outinfo->append("执行翻译任务,最大延迟:" + optionlist.at(6) + "s");
aliapi->tran(optionlist.at(6).toInt());
ui->outinfo->append("获取返回结果url成功");
ui->outinfo->append("尝试下载文件到本地");
curl outcurl = curl(outputfileurl);
if(outcurl.curldown() == 0){
ui->outinfo->append("下载成功,翻译结果在程序目录下output.txt文件中");
}
ui->outinfo->append("删除OSS缓存中");
aliapi->delfile("input.txt");
ui->outinfo->append("删除OSS缓存完成");
}
});
}
//切换为中文
void MainWindow::on_Lzh_cn_triggered()
{
int ret = QMessageBox::warning(this, tr("prompt"), tr("The language will be switched on the next startup"),
QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
switch(ret)
{
case QMessageBox::Ok:
//此处填入操作,例如msgBox.setText("you choose Save button!");
ReadWriteFile::WriteCach("zh","language.txt");
break;
case QMessageBox::Cancel:
//此处填入操作
break;
}
}
//切换为英语
void MainWindow::on_Len_us_triggered()
{
int ret = QMessageBox::warning(this, tr("prompt"), tr("The language will be switched on the next startup"),
QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
switch(ret)
{
case QMessageBox::Ok:
//此处填入操作,例如msgBox.setText("you choose Save button!");
ReadWriteFile::WriteCach("en","language.txt");
break;
case QMessageBox::Cancel:
//此处填入操作
break;
}
}
//tran option点击事件
void MainWindow::on_tran_option_triggered()
{
thistranoption->show();
}