#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), bottomRightPosition(QRect(530,506,250,40)), offlinePosition(240,350,300,40) { ui->setupUi(this); setAttribute(Qt::WA_TranslucentBackground); setWindowFlags(windowFlags() | Qt::FramelessWindowHint); background.load(":/resource/SSJ_backgroundDarkSM.png"); timer = new QTimer; } void MainWindow::paintEvent(QPaintEvent*) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); QPainterPath path; path.addRoundedRect(rect(), 8, 8); painter.setClipPath(path); if (!background.isNull()) { int x = (width() - background.width()) / 2; int y = (height() - background.height()) / 2; painter.drawPixmap(x, y, background); } } void MainWindow::initialize(ResourceManager *resourceManager) { bindConnection(); this->resourceManager = resourceManager; ui->LanguageWidget->hide(); ui->offlineStartButton->setGeometry(offlinePosition); ui->offlineStartButton->hide(); } void MainWindow::setStartState() { show(); setInlineDebug(tr("Инициализация...")); QString title = tr("Тренажер процедур технического обслуживания самолета RRJ-95NEW-100"); ui->headerLabel->setText(title); ui->versionLayoutWidget->hide(); setUpUi(); } void MainWindow::updateInitInformation(QString fullSize,QString currentSize) { QString info = tr("Инициализация..."); info.append(currentSize); info.append("/"); info.append(fullSize); setInlineDebug(info); } void MainWindow::bindConnection() { connect(timer,&QTimer::timeout,this,&MainWindow::slotDisableNotify); } void MainWindow::loadCompleteState() { ui->inlineTextDebug->setText(tr("Обновление завершено")); ui->autostartCheckBox->hide(); } bool MainWindow::getIsAutoStart() { return ui->autostartCheckBox->isChecked(); } void MainWindow::setLastVersionState() { setInlineDebug(tr("Установлена последняя версия")); ui->unsafeChangingButton->hide(); ui->offlineStartButton->setEnabled(true); } void MainWindow::setNeedUpdateState(const QString& notifyText) { setInlineDebug(notifyText); ui->autostartCheckBox->show(); } void MainWindow::showError(ErrorsEnum errorNum) { if (errorNum == ErrorsEnum::BLOCKED) { serverNotifyShow(tr("Сервер заблокирован")); } else if (errorNum == ErrorsEnum::DISABLE) { showConnectionEmpty(); } else if (errorNum == ErrorsEnum::LOGIN_OR_PASS) { serverNotifyShow(tr("Неверный логин/пароль")); } else if (errorNum == ErrorsEnum::ARCHIVED) { serverNotifyShow(tr("Пользователь в архиве")); } else if (errorNum == ErrorsEnum::ALREADYLOGIN) { serverNotifyShow(tr("Пользователь уже в сети")); } } void MainWindow::serverNotifyShow(QString text, int durationMS) { ui->notificationLabel->setText(text); ui->notificationLabel->show(); timer->start(durationMS); } void MainWindow::setLoginSuccessState() { ui->settingsButton->hide(); ui->versionLayoutWidget->show(); } void MainWindow::setClientVersionName(const QString& versionName) { ui->valueClientVersion->setText(versionName); } void MainWindow::showConnectionEmpty() { QPalette palette = ui->notificationLabel->palette(); palette.setColor(ui->notificationLabel->foregroundRole(),Qt::red); ui->notificationLabel->setText(tr("Соединение отсутсвует")); ui->settingsButton->show(); ui->unsafeChangingButton->hide(); } void MainWindow::disableUnsaveButton(bool flag) { if(!flag) ui->unsafeChangingButton->show(); else ui->unsafeChangingButton->hide(); } void MainWindow::slotConnectionState(bool flag) { ui->notificationLabel->show(); QPalette palette = ui->notificationLabel->palette(); ui->versionLayoutWidget->hide(); setInlineDebug(""); if(flag) { palette.setColor(ui->notificationLabel->foregroundRole(),Qt::green); ui->notificationLabel->setText(tr("Соединение установлено")); } else { showConnectionEmpty(); } ui->notificationLabel->setPalette(palette); timer->start(3000); } void MainWindow::slotServerDisconnect() { checkApp(); ui->autostartCheckBox->hide(); ui->inlineTextDebug->setText(""); slotConnectionState(false); } void MainWindow::checkApp() { bool isAvailable = emit sigAppAvailable(); if (isAvailable) ui->offlineStartButton->show(); else ui->offlineStartButton->hide(); } void MainWindow::slotDisableNotify() { ui->notificationLabel->hide(); QPalette palette = ui->notificationLabel->palette(); palette.setColor(ui->notificationLabel->foregroundRole(), Qt::black); ui->notificationLabel->setPalette(palette); timer->stop(); } void MainWindow::on_settingsButton_clicked() { emit sigShowSettings(true); ui->offlineStartButton->hide(); } void MainWindow::on_languageComboBox_activated(const QString &arg1) { emit sigChangeLanguage(arg1); ui->retranslateUi(this); } void MainWindow::loadToServer() { ui->mainFrame->show(); ui->inlineTextDebug->setText(tr("Отправка файлов...")); //ui->offlineStartButton->setEnabled(false); ui->unsafeChangingButton->hide(); } void MainWindow::undoCurrentChanges() { ui->mainFrame->show(); //ui->offlineStartButton->setEnabled(false); ui->unsafeChangingButton->hide(); } void MainWindow::on_unsafeChangingButton_clicked() { emit sigShowUpdateInfo(); } void MainWindow::on_exitButton_clicked() { emit sigExit(); delete ui; exit(0); } void MainWindow::slotShowUpdateInfo() { ui->unsafeChangingButton->show(); //ui->offlineStartButton->setGeometry(bottomRightPosition); //ui->offlineStartButton->setParent(ui->changeButtonGroup->widget()); } void MainWindow::setUpUi() { ui->notificationLabel->hide(); ui->unsafeChangingButton->hide(); //ui->offlineStartButton->show(); //ui->offlineStartButton->setEnabled(false); //ui->offlineStartButton->setGeometry(bottomRightPosition); //ui->offlineStartButton->setParent(ui->changeButtonGroup->widget()); ui->settingsButton->setIcon(*resourceManager->getSettingsIcon()); QSize cautionIconSize(30,30); ui->unsafeChangingButton->setIcon(*resourceManager->getUnsavedIcon()); ui->unsafeChangingButton->setIconSize(cautionIconSize); QSize iconSize(20,20); ui->exitButton->setIcon(*resourceManager->getCloseIcon()); ui->exitButton->setIconSize(iconSize); ui->displayGroupWidget->show(); ui->autostartCheckBox->hide(); } void MainWindow::slotCommonWidgetState() { disableUnsaveButton(true); setInlineDebug(tr("Загрузка...")); } void MainWindow::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { if (!entryWidget->getLoginWidgetIsHidden()) { emit sigTryLogin(); } } } void MainWindow::showMainFrame(bool flag) { if (flag) ui->mainFrame->show(); else ui->mainFrame->hide(); } void MainWindow::setInlineDebug(QString value) { ui->inlineTextDebug->setText(value); } void MainWindow::setServerVersion(StreamingVersionData *version) { ui->valueServerVersion->setText(version->getViewName()); } QHBoxLayout *MainWindow::getDisplayLayout() const { return ui->displayLayout; } QPushButton *MainWindow::getStartOfflineButton() const { return ui->offlineStartButton; } void MainWindow::addWidgetToChangeGroup(CommonButtonGroupWidget *commonWidgetGroup) { ui->changeButtonGroup->addWidget(commonWidgetGroup); } void MainWindow::addWidgetToInteractiveGroup(EntryWidget *entryWidget) { ui->interactiveGroup->addWidget(entryWidget); this->entryWidget = entryWidget; } void MainWindow::setLoadSettings(Settings *serverSettings) { ui->retranslateUi(this); ui->languageComboBox->setCurrentText(serverSettings->Language); ui->autostartCheckBox->setChecked(serverSettings->isAutoStart); } void MainWindow::on_offlineStartButton_clicked() { emit sigStartOffline(); }