weeklycodewidget.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include "widgets/weeklycodewidget.h"
  2. #include "ui_weeklycodewidget.h"
  3. #include "weeklycodewidget.h"
  4. #include <QApplication>
  5. #include <QtConcurrent/QtConcurrent>
  6. #include <QPainter>
  7. #include <QPaintEvent>
  8. #include <QClipboard>
  9. #include "constants.h"
  10. WeeklyCodeWidget::WeeklyCodeWidget(QWidget *parent) :
  11. QWidget(parent), ui(new Ui::WeeklyCodeWidget)
  12. {
  13. setAttribute(Qt::WA_Hover);
  14. setMouseTracking(true);
  15. ui->setupUi(this);
  16. ui->code->setText("загрузка...");
  17. code_data = "";
  18. code_downloader.targetBytearray = &code_data;
  19. code_downloader.setUrl(QUrl("http://translate.lotros.ru/coupon.txt"));
  20. connect(&code_update_timer, &QTimer::timeout, &code_downloader, &Downloader::start);
  21. connect(&code_downloader, &Downloader::downloadFinished, this, &WeeklyCodeWidget::updateCode, Qt::QueuedConnection);
  22. code_downloader.start();
  23. code_update_timer.setInterval(1000 * 60); // 1 minute;
  24. code_update_timer.start();
  25. }
  26. WeeklyCodeWidget::~WeeklyCodeWidget()
  27. {
  28. delete ui;
  29. }
  30. void WeeklyCodeWidget::updateFontsSizes()
  31. {
  32. QFont font9pt = QFont(ui->title->font());
  33. QFont font10pt = QFont(ui->code->font());
  34. font9pt.setPixelSize(pixels_in_9_pt);
  35. font10pt.setPixelSize(pixels_in_10_pt);
  36. ui->title->setFont(font9pt);
  37. ui->code->setFont(font10pt);
  38. }
  39. void WeeklyCodeWidget::resizeEvent(QResizeEvent *event)
  40. {
  41. updateFontsSizes();
  42. }
  43. void WeeklyCodeWidget::enterEvent(QEvent * event)
  44. {
  45. QWidget::enterEvent(event);
  46. event->ignore();
  47. if (QApplication::clipboard()->text() == ui->code->text())
  48. emit showCompletedTooltip();
  49. else
  50. emit showHelpTooltip();
  51. }
  52. void WeeklyCodeWidget::mousePressEvent(QMouseEvent *ev)
  53. {
  54. ui->code->setStyleSheet("color: rgb(255, 150, 0);");
  55. ev->ignore();
  56. }
  57. void WeeklyCodeWidget::mouseReleaseEvent(QMouseEvent *ev)
  58. {
  59. ui->code->setStyleSheet("color: rgb(255, 180, 0);");
  60. if (ui->code->text() != "загрузка...") {
  61. QApplication::clipboard()->setText(ui->code->text());
  62. emit showCompletedTooltip();
  63. }
  64. ev->ignore();
  65. }
  66. void WeeklyCodeWidget::updateCode()
  67. {
  68. qDebug() << "New code: " << code_data;
  69. if (code_data.isEmpty())
  70. return;
  71. ui->code->setText(code_data);
  72. repaint();
  73. code_data = "";
  74. }
  75. void WeeklyCodeWidget::leaveEvent(QEvent * event)
  76. {
  77. // qDebug() << Q_FUNC_INFO << this->objectName();
  78. emit showNoTooltip();
  79. }