lotroprocessdialog.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "lotroprocessdialog.h"
  2. #include "ui_processdialog.h"
  3. #include <QPixmap>
  4. #include <QBitmap>
  5. #include <QMouseEvent>
  6. #include "models/lotromanager.h"
  7. #include <QTextCodec>
  8. using namespace LOTRO_DAT;
  9. LotroProcessDialog::LotroProcessDialog(LotroManager* mgr, QWidget *parent) :
  10. QDialog(parent),
  11. ui(new Ui::ProcessDialog), lotro_manager(mgr)
  12. {
  13. ui->setupUi(this);
  14. setModal(true);
  15. setWindowTitle("Выполнение операции...");
  16. QPixmap background(":/assets/backgrounds/process_dialog.png");
  17. QPixmap current_bg = background.scaled(width(), height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
  18. QBitmap current_mask = current_bg.mask();
  19. setMask(current_mask);
  20. QPalette palette;
  21. palette.setBrush(QPalette::Window, current_bg);
  22. setPalette(palette);
  23. loader.setFileName(":/assets/backgrounds/loading-gear.gif");
  24. ui->loader->setMovie(&loader);
  25. loader.setScaledSize(ui->loader->size());
  26. loader.start();
  27. uiUpdateTimer.setInterval(30);
  28. connect(&uiUpdateTimer, &QTimer::timeout, this, &LotroProcessDialog::updateUI);
  29. uiUpdateTimer.start();
  30. }
  31. void LotroProcessDialog::mousePressEvent(QMouseEvent *event)
  32. {
  33. if (event->button() == Qt::LeftButton) {
  34. dragPosition = event->globalPos() - frameGeometry().topLeft();
  35. event->accept();
  36. }
  37. }
  38. void LotroProcessDialog::updateUI()
  39. {
  40. if (!qApp)
  41. return;
  42. // std::string debug_msg = app->client_local_dat.GetStatusModule().GetDebugMessage();
  43. // QTextCodec *codec = QTextCodec::codecForName("UTF8");
  44. // QByteArray ba(debug_msg.c_str());
  45. // QString dmsg = codec->toUnicode(ba);
  46. // int percentage = app->client_local_dat.GetStatusModule().GetPercentage();
  47. // DatStatus::DAT_STATUS status = app->client_local_dat.GetStatusModule().GetStatus();
  48. // QString title = "";
  49. // switch (status) {
  50. // case DatStatus::E_INITIALISING:
  51. // title = "Инициализация";
  52. // break;
  53. // case DatStatus::E_EXTRACTING:
  54. // title = "Извлечение данных";
  55. // break;
  56. // case DatStatus::E_PATCHING:
  57. // title = "Применение патча";
  58. // break;
  59. // case DatStatus::E_COMMITING:
  60. // title = "Фиксация данных";
  61. // break;
  62. // case DatStatus::E_BACKUP_CREATING:
  63. // title = "Создание резервной копии";
  64. // break;
  65. // case DatStatus::E_BACKUP_REMOVING:
  66. // title = "Удаление резервной копии";
  67. // break;
  68. // case DatStatus::E_GATHERING_INFO:
  69. // title = "Сбор информации ядра";
  70. // break;
  71. // case DatStatus::E_FREE:
  72. // title = "Свободен";
  73. // break;
  74. // default:
  75. // title = "Неизвестная операция";
  76. // break;
  77. // }
  78. // if (status == DatStatus::E_FREE)
  79. // hide();
  80. // else
  81. // show();
  82. // ui->title->setText(title);
  83. // ui->progressBar->setValue(percentage);
  84. // ui->debug_info->setText(dmsg);
  85. }
  86. void LotroProcessDialog::mouseMoveEvent(QMouseEvent *event)
  87. {
  88. if (event->buttons() & Qt::LeftButton) {
  89. move(event->globalPos() - dragPosition);
  90. // app->window.move(event->globalPos() - dragPosition +
  91. // QPoint((width() - app->window.width()) / 2, (height() - app->window.height()) / 2)
  92. // );
  93. event->accept();
  94. }
  95. }
  96. LotroProcessDialog::~LotroProcessDialog()
  97. {
  98. delete ui;
  99. }