-
Notifications
You must be signed in to change notification settings - Fork 4
/
apidialog.cpp
74 lines (62 loc) · 1.88 KB
/
apidialog.cpp
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
#include "apidialog.h"
APIDialog::APIDialog(const QString &_oldUrl, QWidget *parent)
: QDialog(parent), oldUrl(_oldUrl)
{
// Window
setWindowTitle("更换API源");
setFixedSize(QSize(300,150));
setWindowFlag(Qt::Dialog);
// Init UI
mainLay = new QVBoxLayout(this);
info = new QLabel;
edit = new QLineEdit;
qDebug()<<oldUrl;
info->setText("当前API地址:\n" + _oldUrl);
QHBoxLayout *hlay_btns = new QHBoxLayout;
btn_ok = new QPushButton("确认");
btn_cancel = new QPushButton("取消");
hlay_btns->addStretch();
hlay_btns->addWidget(btn_cancel);
hlay_btns->addStretch();
hlay_btns->addWidget(btn_ok);
hlay_btns->addStretch();
mainLay->addWidget(info);
mainLay->addWidget(edit);
mainLay->addLayout(hlay_btns);
// 连接按钮信号与槽
connect(btn_cancel, &QPushButton::clicked, [=](){
close();
});
connect(btn_ok, &QPushButton::clicked, this, &APIDialog::checkValid);
}
// 验证API接口是否有效
void APIDialog::checkValid()
{
if(edit->text().isEmpty())
{
QMessageBox::critical(this, "错误", "请填写API地址!");
return;
}
newUrl = edit->text();
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkRequest request;
request.setUrl(QUrl(newUrl+"/?do=check"));
QNetworkReply *reply = manager->get(request);
connect(reply, &QNetworkReply::finished, [=](){
// 获取所有返回
QByteArray buf = reply->readAll();
// 转化为JSON
QJsonDocument doc = QJsonDocument::fromJson(buf);
int code = doc.object().value("code").toInt();
if(code != 301)
{
QMessageBox::critical(this, "错误", "API验证未通过!");
return;
}
else
{
emit updateAPIUrl(newUrl);
close();
}
});
}