Skip to content

Commit 0890ca4

Browse files
committed
V2.0.2
1 parent dc7895f commit 0890ca4

13 files changed

+392
-103
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
*.user
17.5 KB
Loading
17.5 KB
Loading

srun-3k-ui/mainwindow.cpp

+166-16
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
#include "ui_mainwindow.h"
33
//#include "QDebug"
44

5+
MainWindow *singleton;
6+
57
MainWindow::MainWindow(QWidget *parent) :
68
QMainWindow(parent),
79
ui(new Ui::MainWindow)
810
{
911
ui->setupUi(this);
12+
singleton = this;
1013
setWindowFlags(Qt::FramelessWindowHint);
1114
setAttribute(Qt::WA_TranslucentBackground);
1215
mLocation = this->geometry();
@@ -51,6 +54,7 @@ MainWindow::MainWindow(QWidget *parent) :
5154
ui->usernameLineEdit->setAttribute(Qt::WA_InputMethodEnabled, false);
5255
ui->passwordLineEdit->setAttribute(Qt::WA_InputMethodEnabled, false);
5356
ui->stackedWidget->setCurrentIndex(2);
57+
ui->stackedWidgetBottom->setCurrentIndex(0);
5458
AboutButton->hide();//在获取公告前隐藏这两个按钮
5559
AdvancedButton->hide();
5660
n=new network();
@@ -91,7 +95,6 @@ MainWindow::MainWindow(QWidget *parent) :
9195
ui->autoLoginCheckBox->setCheckState(Qt::Checked);
9296
}
9397
}
94-
9598
}
9699

97100
void MainWindow::showMessage(void)
@@ -434,14 +437,13 @@ void MainWindow::on_checkUpdateButton_clicked()
434437
{
435438
ui->enterButtonInAboutPage->setEnabled(false);
436439
ui->checkUpdateButton->setEnabled(false);
437-
QStringList list;
438440
ui->statusBar->setText("检查更新中...");
439441
setStyleSheet("QWidget#centralWidget{color:black;background:white;border:1px solid #3498DB;}");
440442
ui->widgetBottom->setStyleSheet("QLabel#statusBar{color:white;padding:5px 0px 5px;}"
441443
"QWidget#widgetBottom{background:#3498DB;}");
442444
if(isOnline)
443445
{
444-
int c=checkVersion(list,n);
446+
int c=checkVersion(updateInfo,n);
445447
if(c!=-1)
446448
{
447449
ui->statusBar->setText("检查更新中...成功!");
@@ -475,12 +477,10 @@ void MainWindow::on_checkUpdateButton_clicked()
475477
QString v;
476478
v.sprintf("%s",version);
477479
QString ehaut=ui->eHautIco->text();
478-
QString url=QString("<a href = \"%1\">%2</a>").arg(list.at(4)).arg(ehaut);
479-
s=s+" "+v+" 。最新版本 "+list.at(0)+" ,发布于 "+list.at(1)+" 。<br><br> &#60;===================== <br>&nbsp;&nbsp;&nbsp;&nbsp;点击左边蜗牛下载最新版!<br><br>备用地址:"+QString("<a href = \"%1\">%2</a>").arg(list.at(4)).arg("点我下载!");
480-
481-
ui->eHautIco->setText(url);
482-
ui->eHautIco->setOpenExternalLinks(true);
483-
ui->aboutBox->setHtml(s);
480+
QString url=QString("<a href = \"%1\">%2</a>").arg(updateInfo.at(4)).arg(ehaut);
481+
s=s+" "+v+" 。最新版本 "+updateInfo.at(0)+" ,发布于 "+updateInfo.at(1)+" 。<br><br> &#60;===================== <br>&nbsp;&nbsp;&nbsp;&nbsp;点击左边蜗牛下载最新版!<br><br>备用地址:"+QString("<a href = \"%1\">%2</a>").arg(updateInfo.at(4)).arg("点我下载!");
482+
ui->aboutBox->setText(s);
483+
ui->eHautIco->setEnabled(true);
484484
}
485485
}
486486
else
@@ -737,8 +737,7 @@ void MainWindow::on_loginButton_clicked(bool showmode)
737737
}
738738
ui->stackedWidget->setCurrentIndex(3);
739739
getUserInfo(false);
740-
QStringList list;
741-
int c=checkVersion(list,n);
740+
int c=checkVersion(updateInfo,n);
742741
if(c==1)
743742
{
744743

@@ -749,20 +748,18 @@ void MainWindow::on_loginButton_clicked(bool showmode)
749748
list[3] sha1
750749
list[4] url
751750
*/
752-
753751
QString s="当前版本";
754752
QString v;
755753
v.sprintf("%s",version);
756754
QString ehaut=ui->eHautIco->text();
757-
QString url=QString("<a href = \"%1\">%2</a>").arg(list.at(4)).arg(ehaut);
758-
s=s+" "+v+" 。最新版本 "+list.at(0)+" ,发布于 "+list.at(1)+" 。<br><br> &#60;===================== <br>&nbsp;&nbsp;&nbsp;&nbsp;点击左边蜗牛下载最新版!<br><br>备用地址:"+QString("<a href = \"%1\">%2</a>").arg(list.at(4)).arg("点我下载!");
755+
s=s+" "+v+" 。最新版本 "+updateInfo.at(0)+" ,发布于 "+updateInfo.at(1)+" 。<br><br> &#60;===================== <br>&nbsp;&nbsp;&nbsp;&nbsp;点击左边蜗牛下载最新版!<br><br>备用地址:"+QString("<a href = \"%1\">%2</a>").arg(updateInfo.at(4)).arg("点我下载!");
759756

760757
AboutButton->setStyleSheet("QPushButton {border-image: url(:/titleButtons/about_alert);}"
761758
"QPushButton:hover {border-image: url(:/titleButtons/about_alert_hover);}"
762759
"QPushButton:pressed {border-image: url(:/titleButtons/about_alert_pressed);}");
763-
ui->eHautIco->setText(url);
764-
ui->eHautIco->setOpenExternalLinks(true);
760+
765761
ui->aboutBox->setHtml(s);
762+
ui->eHautIco->setEnabled(true);
766763
}
767764

768765
}
@@ -814,3 +811,156 @@ void MainWindow::on_loginButton_clicked(bool showmode)
814811
}
815812
ui->loginButton->setEnabled(true);
816813
}
814+
815+
void MainWindow::on_eHautIco_clicked()
816+
{
817+
ui->eHautIco->setEnabled(false);
818+
ui->enterButtonInAboutPage->setEnabled(false);
819+
ui->checkUpdateButton->setEnabled(false);
820+
setStyleSheet("QWidget#centralWidget{color:black;background:white;border:1px solid #1aad18;}");
821+
ui->widgetBottom->setStyleSheet("QLabel#statusBar{color:white;padding:5px 0px 5px;}"
822+
"QWidget#widgetBottom{background:#1aad18;}");
823+
info="检查是否存在老版本更新包...";
824+
ui->aboutBox->setHtml(info);
825+
bool isUpdateProgramExist=s->checkUpdateProgramisExist("update.exe");
826+
if(isUpdateProgramExist)
827+
{
828+
info=info+"删除成功!<br>";
829+
}
830+
else
831+
{
832+
info=info+"无需删除!<br>";
833+
}
834+
info=info+"下载更新包中...";
835+
ui->aboutBox->setHtml(info);
836+
ui->stackedWidgetBottom->setCurrentIndex(1);
837+
ui->downloadBar->setMaximum(100);
838+
ui->downloadBar->setValue(0);
839+
QString downloadUrl=updateInfo.at(4);
840+
static int retry=1;
841+
static bool isTrue=false;
842+
QString path=QCoreApplication::applicationDirPath()+"/update.exe";
843+
FILE* fp = nullptr;
844+
while(retry<=3)
845+
{
846+
if(retry>1)
847+
{
848+
Sleep(5000);
849+
info=info+"尝试第 "+QString::number(retry)+" 次下载:<br>";
850+
info=info+"下载更新包中...";
851+
ui->aboutBox->setHtml(info);
852+
}
853+
CURL* curl = curl_easy_init();
854+
if(!(curl))
855+
{//如果非正常初始化
856+
exit(-1);
857+
}
858+
fp=fopen(path.toStdString().c_str(), "wb");
859+
rewind(fp);
860+
curl_easy_setopt(curl, CURLOPT_URL,downloadUrl.toStdString().c_str());
861+
//设置接收数据的回调
862+
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,false);//设定为不验证证书和HOST
863+
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYHOST,false);
864+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, storage::saveDataTodisk);
865+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
866+
// 设置重定向的最大次数
867+
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 5);
868+
// 设置301、302跳转跟随location
869+
//curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
870+
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
871+
//设置进度回调函数
872+
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, MainWindow::progressUpdate);
873+
//设置超时
874+
curl_easy_setopt(curl,CURLOPT_CONNECTTIMEOUT,3L);
875+
//开始执行请求
876+
CURLcode retcCode = curl_easy_perform(curl);
877+
if(retcCode!=CURLE_OK)
878+
{
879+
info=info+"下载失败!<br>";
880+
ui->aboutBox->setHtml(info);
881+
retry++;
882+
}
883+
else
884+
{
885+
info=info+"下载成功!<br>";
886+
isTrue=true;
887+
ui->aboutBox->setHtml(info);
888+
break;
889+
}
890+
curl_easy_cleanup(curl);
891+
}
892+
if(fp!=nullptr)
893+
fclose(fp);
894+
if(isTrue)
895+
{
896+
info=info+"校验下载值中...";
897+
ui->aboutBox->setHtml(info);
898+
QString sha1;
899+
sha1.prepend(s->fileChecksum("update.exe"));
900+
//qDebug()<<sha1<<" "<<updateInfo.at(3);
901+
if(updateInfo.at(3).compare(sha1)==0)
902+
{
903+
info=info+"校验成功!<br>";
904+
ui->aboutBox->setHtml(info);
905+
ui->downloadBar->setMaximum(100);
906+
ui->downloadBar->setValue(100);
907+
info=info+"5s后尝试启动自动更新程序!<br>";
908+
ui->aboutBox->setHtml(info);
909+
QTimer::singleShot(5000, this, SLOT(startUpdate()));
910+
}
911+
else
912+
{
913+
info=info+"校验失败!<br>";
914+
ui->statusBar->setText("自动更新失败!请重试!");
915+
setStyleSheet("QWidget#centralWidget{color:black;background:white;border:1px solid #E05D6F;}");
916+
ui->widgetBottom->setStyleSheet("QLabel#statusBar{color:white;padding:5px 0px 5px;}"
917+
"QWidget#widgetBottom{background:#E05D6F;}");
918+
ui->stackedWidgetBottom->setCurrentIndex(0);
919+
info=info+"正在删除更新包...";
920+
ui->aboutBox->setHtml(info);
921+
bool isDelete=s->checkUpdateProgramisExist("update.exe");
922+
if(isDelete)
923+
{
924+
info=info+"删除成功!<br>请您重试自动更新!";
925+
ui->aboutBox->setHtml(info);
926+
}
927+
else
928+
{
929+
info=info+"不可预知的错误!<br>";
930+
ui->aboutBox->setHtml(info);
931+
}
932+
}
933+
}
934+
935+
ui->enterButtonInAboutPage->setEnabled(true);
936+
ui->checkUpdateButton->setEnabled(true);
937+
ui->eHautIco->setEnabled(true);
938+
}
939+
940+
void MainWindow::startUpdate()
941+
{
942+
QString path=QCoreApplication::applicationDirPath()+"/update.exe";
943+
QProcess process(this);
944+
bool isStart=process.startDetached(path);\
945+
if(isStart)
946+
qApp->exit(0);
947+
else
948+
{
949+
info=info+"调用失败请重试!<br>";
950+
ui->statusBar->setText("自动更新失败!请重试!");
951+
setStyleSheet("QWidget#centralWidget{color:black;background:white;border:1px solid #E05D6F;}");
952+
ui->widgetBottom->setStyleSheet("QLabel#statusBar{color:white;padding:5px 0px 5px;}"
953+
"QWidget#widgetBottom{background:#E05D6F;}");
954+
ui->stackedWidgetBottom->setCurrentIndex(0);
955+
}
956+
}
957+
958+
int MainWindow::progressUpdate(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
959+
{
960+
if ( dltotal > -0.1 && dltotal < 0.1 )
961+
return 0;
962+
int nPos = (int) ( (dlnow/dltotal)*90.0 );
963+
//ui->downloadBar->setValue(nPos);
964+
singleton->ui->downloadBar->setValue(nPos);
965+
return 0;
966+
}

srun-3k-ui/mainwindow.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <QDesktopServices>
1313
#include <QTimer>
1414
#include <QSettings>
15+
#include <QProcess>
1516
#include "network.h"
1617
#include "version.h"
1718
#include "storage.h"
@@ -61,7 +62,9 @@ private slots:
6162
void on_autoStartCheckBox_clicked();
6263
void on_autoLoginCheckBox_clicked();
6364
void on_loginButton_clicked(bool);
64-
65+
void on_eHautIco_clicked();
66+
static int progressUpdate(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow);
67+
void startUpdate();
6568
private:
6669
bool mDrag;
6770
bool isUserinfoExists=false;
@@ -87,6 +90,8 @@ private slots:
8790
QTimer *meTimer=nullptr;
8891
QString logoutname;
8992
bool set=false;
93+
QStringList updateInfo;
94+
QString info;
9095
};
9196

9297
#endif // MAINWINDOW_H

srun-3k-ui/mainwindow.qrc

+6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@
2020
<file alias="advanced">Resouces/titleButtons/setting.png</file>
2121
<file alias="advanced_hover">Resouces/titleButtons/setting_horver.png</file>
2222
<file alias="advanced_pressed">Resouces/titleButtons/setting_press.png</file>
23+
2324
</qresource>
25+
<qresource prefix="/png">
26+
<file alias="radius_back">Resouces/png/radius_back.png</file>
27+
<file alias="radius_front">Resouces/png/radius_front.png</file>
28+
</qresource>
29+
2430
<qresource prefix="/Ico">
2531
<file alias="R">Resouces/Ico/new.png</file>
2632
<file alias="SysIcon">Resouces/Ico/myappSysTrayIcon.png</file>

0 commit comments

Comments
 (0)