ref: segregate systems, codestyle, busy message

This commit is contained in:
semenov
2024-12-27 15:41:41 +03:00
parent 2944f2d510
commit 98264fee7a
103 changed files with 4756 additions and 2763 deletions

View File

@@ -1,6 +1,5 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "updatenotifywidget.h"
#include <QFontDatabase>
#include <QMessageBox>
@@ -8,6 +7,7 @@
#include <QPaintEvent>
#include <QPainter>
#include <QTimer>
#include <Widgets/updatenotifywidget.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@@ -16,42 +16,31 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this);
isRecovery = false;
setWindowFlag(Qt::FramelessWindowHint);
painting();
}
void MainWindow::initialize()
{
createObjects();
loadStaticData();
bindConnection();
updateWidget->initialize(this,versionContainer);
entryWidget->initialize(this);
versionSelectWidget->initialize(sendSystem,versionContainer);
hashComparer->initialize(this,versionContainer);
updateController->initialize(this,versionContainer);
sendSystem->initialize(this,dataParser);
dataParser->initialize(recognizeSystem);
recognizeSystem->initialize(updateController,dataParser,this,hashComparer,client,versionContainer);
resourceManager->painting();
commonButtonGroupWidget->initialize(this,externalExecuter,sendSystem,client);
commonButtonGroupWidget->show();
ui->notificationLabel->hide();
ui->unsafeChangingButton->hide();
ui->offlineStartButton->show();
ui->offlineStartButton->setEnabled(false);
ui->offlineStartButton->setGeometry(540,549,250,40);
ui->displayGroupWidget->show();
ui->autostartCheckBox->hide();
bindConnection();
sendSystem->initialize(this,dataParser);
dataParser->initialize(recognizeSystem);
setUpUi();
emit sigCalculateHash();
emit sigInitializeClient(this,recognizeSystem,externalExecuter,sendSystem,workerThread);
recognizeSystem->initialize(updateController,dataParser,this,hashComparer,client,versionContainer);
//emit sigRecognize(updateController,dataParser,this,hashComparer,client);
screenChecker->check();
@@ -59,7 +48,7 @@ void MainWindow::initialize()
checkAppAvailable();
//test
//post
}
@@ -73,7 +62,6 @@ void MainWindow::createObjects()
versionSelectWidget = new VersionSelectWidget;
ui->changButtonGroup->addWidget(commonButtonGroupWidget);
ui->interactiveGroup->addWidget(entryWidget);
ui->interactiveGroup->addWidget(versionSelectWidget);
@@ -102,10 +90,19 @@ void MainWindow::createObjects()
hashComparer->moveToThread(workerThread);
versionContainer = new VersionContainer;
resourceManager = new ResourceManager;
workerThread->start();
workerThread->setPriority(QThread::HighestPriority);
QVBoxLayout *layout = new QVBoxLayout();
layout->setParent(this);
movieLabel = new QLabel("MovieLabel");
layout->addWidget(movieLabel);
setLayout(layout);
movieLabel->setStyleSheet("background-color:rgba(0,0,0,90)");
timer = new QTimer;
}
@@ -118,7 +115,6 @@ void MainWindow::bindConnection()
connect(this,&MainWindow::sigSetConnect,client,&TCPClient::setConnect,Qt::AutoConnection);
connect(this,&MainWindow::sigSendCommand,client,&TCPClient::slotSendCommand,Qt::AutoConnection);
connect(this,&MainWindow::sigSendXMLAnswer,sendSystem,&SendSystem::xmlAnswer,Qt::AutoConnection);
//connect(this,&MainWindow::sigRecognize,recognizeSystem,&RecognizeSystem::initialize,Qt::AutoConnection);
connect(this,&MainWindow::sigGetConnected,client,&TCPClient::getIsConnected);
connect(this,&MainWindow::sigCalculateHash,updateController,&UpdateController::calculateCommonHash);
@@ -174,7 +170,7 @@ void MainWindow::setNeedUpdate(bool flag,quint64 size, quint64 fileCount,quint64
ui->inlineTextDebug->setText(result);
commonButtonGroupWidget->needUpdateState(flag);
ui->autostartCheckBox->show();
stopLoadingMovie();
activateLoadingAnimation(false);
}
else
{
@@ -185,14 +181,14 @@ void MainWindow::setNeedUpdate(bool flag,quint64 size, quint64 fileCount,quint64
ui->offlineStartButton->setEnabled(true);
dataParser->changeVersion(versionContainer->getServerVersion());
setTitle();
stopLoadingMovie();
activateLoadingAnimation(false);
}
}
void MainWindow::showServerListWidget(QList<StreamingVersionData *> *serverData)
{
entryWidget->hide();
stopLoadingMovie();
activateLoadingAnimation(false);
versionSelectWidget->fillView(serverData);
checkUpdate();
}
@@ -234,7 +230,7 @@ void MainWindow::checkLoginResult(ServerAuthorization *serverAuth)
ui->LanguageWidget->hide();
ui->settingsButton->hide();
ui->offlineStartButton->show();
startLoadingAnim();
activateLoadingAnimation(true);
}
else
{
@@ -327,7 +323,7 @@ void MainWindow::slotConnectionState(bool flag)
ui->notificationLabel->show();
QPalette palette = ui->notificationLabel->palette();
stopLoadingMovie();
activateLoadingAnimation(false);
if(flag)
{
@@ -390,14 +386,14 @@ void MainWindow::login()
void MainWindow::saveServerSettingsWithConnect()
{
startLoadingAnim();
activateLoadingAnimation(true);
entryWidget->settingsWidgetIsActive(false);
if(client->getIsConnected())
{
entryWidget->loginIsActive(true);
ui->offlineStartButton->show();
stopLoadingMovie();
activateLoadingAnimation(false);
return;
}
//TODO: не заполняется 2 поля (автостарт и язык)
@@ -441,7 +437,7 @@ void MainWindow::undoCurrentChanges()
ui->offlineStartButton->setEnabled(false);
updateWidget->hide();
startLoadingAnim();
activateLoadingAnimation(true);
//delay
@@ -449,18 +445,13 @@ void MainWindow::undoCurrentChanges()
while (QTime::currentTime() < dieTime)
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
startLoadingAnim();
activateLoadingAnimation(true);
emit sigSendCommand("update");
commonButtonGroupWidget->startUpdateState();
isRecovery = false;
stopLoadingMovie();
}
void MainWindow::on_updateListGuideLabel_linkActivated(const QString &)
{
updateWidget->show();
activateLoadingAnimation(false);
}
void MainWindow::on_offlineStartButton_clicked()
@@ -491,7 +482,7 @@ void MainWindow::checkUpdate()
void MainWindow::showUpdateInfo()
{
stopLoadingMovie();
activateLoadingAnimation(false);
updateWidget->showWithFill();
ui->unsafeChangingButton->show();
entryWidget->hide();
@@ -505,13 +496,13 @@ void MainWindow::showUpdateInfo()
void MainWindow::showCompleteDialogBox()
{
ui->inlineTextDebug->setText(tr("Загрузка завершена"));
startLoadingAnim();
activateLoadingAnimation(true);
QTime dieTime= QTime::currentTime().addSecs(10); //DELAY ДЛЯ ПЕРЕСЧЕТА ХЭША НА СЕРВЕРЕ
while (QTime::currentTime() < dieTime)
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
stopLoadingMovie();
activateLoadingAnimation(false);
checkUpdate();
}
@@ -526,6 +517,35 @@ void MainWindow::setCurrentVersionName(StreamingVersionData *version)
versionContainer->setLocalVersionData(version);
}
void MainWindow::setUpUi()
{
ui->notificationLabel->hide();
ui->unsafeChangingButton->hide();
ui->offlineStartButton->show();
ui->offlineStartButton->setEnabled(false);
ui->offlineStartButton->setGeometry(540,549,250,40);
ui->settingsButton->setIcon(*resourceManager->getSettingsIcon());
QSize cautionIconSize(30,30);
ui->unsafeChangingButton->setIcon(*resourceManager->getUnsavedIcon());
ui->unsafeChangingButton->setIconSize(cautionIconSize);
movieLabel->setGeometry(367,300,70,70);
movieLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
movieLabel->setMovie(resourceManager->getMovie());
QSize iconSize(30,30);
ui->exitButton->setIcon(*resourceManager->getCloseIcon());
ui->exitButton->setIconSize(iconSize);
ui->displayGroupWidget->show();
ui->autostartCheckBox->hide();
activateLoadingAnimation(true);
}
void MainWindow::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
@@ -535,77 +555,18 @@ void MainWindow::keyPressEvent(QKeyEvent *event)
}
}
void MainWindow::painting()
void MainWindow::activateLoadingAnimation(bool flag)
{
QFontDatabase::addApplicationFont(":/resource/Fonts/Kanit Cyrillic.ttf");
QFontDatabase::addApplicationFont(":/resource/Fonts/HelveticaNeue-Medium.ttf");
//settings
QPixmap settingIcon(":resource/Icons/settingWhite.png");
QPainter painter;
QColor color(45,84,130);
painter.begin(&settingIcon);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(settingIcon.rect(),color);
painter.end();
QIcon icon;
icon.addPixmap(settingIcon,QIcon::Normal,QIcon::Off);
ui->settingsButton->setIcon(icon);
//caution
QPixmap cautionIcon(":resource/Icons/caution.png");
painter.begin(&cautionIcon);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(cautionIcon.rect(),color);
painter.end();
icon.addPixmap(cautionIcon,QIcon::Normal,QIcon::Off);
QSize cautionIconSize(30,30);
ui->unsafeChangingButton->setIcon(icon);
ui->unsafeChangingButton->setIconSize(cautionIconSize);
//exit
QPixmap crossPixmap(":resource/Icons/crossInCircle.png");
QPainter painterCross;
QSize iconSize(30,30);
painter.begin(&crossPixmap);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(crossPixmap.rect(),color);
painter.end();
QIcon crossIcon;
crossIcon.addPixmap(crossPixmap,QIcon::Normal,QIcon::Off);
ui->exitButton->setIcon(crossIcon);
ui->exitButton->setIconSize(iconSize);
//loading
movie = new QMovie(":/resource/Icons/762.gif");
movieLabel = new QLabel("No movie");
movieLabel->setParent(this);
movieLabel->setGeometry(367,300,70,70);
movieLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
movieLabel->setMovie(movie);
startLoadingAnim();
}
void MainWindow::startLoadingAnim()
{
movie->start();
movieLabel->show();
}
void MainWindow::stopLoadingMovie()
{
movie->stop();
movieLabel->hide();
if (flag)
{
movieLabel->show();
resourceManager->startLoadingAnim();
}
else
{
movieLabel->hide();
resourceManager->stopLoadingMovie();
}
}
MainWindow::~MainWindow()