123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #include "gui\processdialog.h"
- #include "ui_processdialog.h"
- #include <QPixmap>
- #include <QBitmap>
- #include <QMouseEvent>
- #include "legacyapp.h"
- #include <QTextCodec>
- using namespace LOTRO_DAT;
- ProcessDialog::ProcessDialog(LegacyApp *app_, QWidget *parent) :
- QDialog(parent),
- ui(new Ui::ProcessDialog), app(app_)
- {
- ui->setupUi(this);
- setModal(true);
- setWindowTitle("Выполнение операции...");
- QPixmap background(":/assets/backgrounds/process_dialog.png");
- QPixmap current_bg = background.scaled(width(), height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- QBitmap current_mask = current_bg.mask();
- setMask(current_mask);
- QPalette palette;
- palette.setBrush(QPalette::Window, current_bg);
- setPalette(palette);
- loader.setFileName(":/assets/backgrounds/loading-gear.gif");
- ui->loader->setMovie(&loader);
- loader.setScaledSize(ui->loader->size());
- loader.start();
- uiUpdateTimer.setInterval(30);
- connect(&uiUpdateTimer, &QTimer::timeout, this, &ProcessDialog::updateUI);
- uiUpdateTimer.start();
- }
- void ProcessDialog::mousePressEvent(QMouseEvent *event)
- {
- if (event->button() == Qt::LeftButton) {
- dragPosition = event->globalPos() - frameGeometry().topLeft();
- event->accept();
- }
- }
- void ProcessDialog::updateUI()
- {
- if (!qApp)
- return;
- std::string debug_msg = app->client_local_dat.GetStatusModule().GetDebugMessage();
- QTextCodec *codec = QTextCodec::codecForName("UTF8");
- QByteArray ba(debug_msg.c_str());
- QString dmsg = codec->toUnicode(ba);
- int percentage = app->client_local_dat.GetStatusModule().GetPercentage();
- DatStatus::DAT_STATUS status = app->client_local_dat.GetStatusModule().GetStatus();
- QString title = "";
- switch (status) {
- case DatStatus::E_INITIALISING:
- title = "Инициализация";
- break;
- case DatStatus::E_EXTRACTING:
- title = "Извлечение данных";
- break;
- case DatStatus::E_PATCHING:
- title = "Применение патча";
- break;
- case DatStatus::E_COMMITING:
- title = "Фиксация данных";
- break;
- case DatStatus::E_BACKUP_CREATING:
- title = "Создание резервной копии";
- break;
- case DatStatus::E_BACKUP_REMOVING:
- title = "Удаление резервной копии";
- break;
- case DatStatus::E_GATHERING_INFO:
- title = "Сбор информации ядра";
- break;
- case DatStatus::E_FREE:
- title = "Свободен";
- break;
- default:
- title = "Неизвестная операция";
- break;
- }
- if (status == DatStatus::E_FREE)
- hide();
- else
- show();
- ui->title->setText(title);
- ui->progressBar->setValue(percentage);
- ui->debug_info->setText(dmsg);
- }
- void ProcessDialog::mouseMoveEvent(QMouseEvent *event)
- {
- if (event->buttons() & Qt::LeftButton) {
- move(event->globalPos() - dragPosition);
- app->window.move(event->globalPos() - dragPosition +
- QPoint((width() - app->window.width()) / 2, (height() - app->window.height()) / 2)
- );
- event->accept();
- }
- }
- ProcessDialog::~ProcessDialog()
- {
- delete ui;
- }
|