PageRenderTime 1089ms CodeModel.GetById 36ms RepoModel.GetById 1ms app.codeStats 0ms

/src/ThemeManager/themewidget.cpp

https://github.com/pkexp-martin/pokemon-online
C++ | 86 lines | 72 code | 14 blank | 0 comment | 4 complexity | 24f561acc7f292ca4ea51c5f32a9de59 MD5 | raw file
  1. #include "themewidget.h"
  2. #include "ui_themewidget.h"
  3. #include <QDesktopServices>
  4. #include <QUrl>
  5. #include <QDebug>
  6. #include <QDialog>
  7. ThemeWidget::ThemeWidget(QString name, QString author, QString version, QString _downloadUrl, QString _forumId) :
  8. QWidget(0),
  9. downloadUrl(_downloadUrl),
  10. forumId(_forumId),
  11. ui(new Ui::ThemeWidget)
  12. {
  13. ui->setupUi(this);
  14. ui->themeName->setText(name);
  15. ui->author->setText(author);
  16. ui->version->setText(version);
  17. ui->themeName->adjustSize();
  18. ui->author->adjustSize();
  19. ui->version->adjustSize();
  20. if (downloadUrl.isEmpty()) {
  21. ui->downloadButton->setDisabled(true);
  22. }
  23. if (forumId.isEmpty()) {
  24. ui->forumButton->setDisabled(true);
  25. }
  26. connect(&manager, SIGNAL(finished(QNetworkReply*)),
  27. SLOT(downloadFinished(QNetworkReply*)));
  28. connect(ui->downloadButton, SIGNAL(clicked()), SLOT(downloadButtonClicked()));
  29. connect(ui->forumButton, SIGNAL(clicked()), SLOT(forumThreadButtonClicked()));
  30. connect(ui->image, SIGNAL(clicked()), SLOT(imageClicked()));
  31. }
  32. ThemeWidget::~ThemeWidget()
  33. {
  34. delete ui;
  35. }
  36. void ThemeWidget::setThemeImage(QString image)
  37. {
  38. QNetworkRequest request;
  39. request.setUrl(QUrl(image));
  40. request.setRawHeader("User-Agent", "Pokemon-Online Theme Manager");
  41. manager.get(request);
  42. }
  43. void ThemeWidget::downloadFinished(QNetworkReply *reply)
  44. {
  45. im.loadFromData(reply->readAll());
  46. if (im.width() > im.height()) {
  47. ui->image->setPixmap(im.scaledToWidth(120));
  48. } else {
  49. ui->image->setPixmap(im.scaledToHeight(120));
  50. }
  51. }
  52. void ThemeWidget::downloadButtonClicked()
  53. {
  54. qDebug() << "Opening url" << downloadUrl;
  55. QDesktopServices::openUrl(QUrl(downloadUrl));
  56. }
  57. void ThemeWidget::forumThreadButtonClicked()
  58. {
  59. QUrl url = "http://pokemon-online.eu/forums/showthread.php?" + forumId;
  60. QDesktopServices::openUrl(url);
  61. }
  62. void ThemeWidget::imageClicked()
  63. {
  64. QLabel *l = new QLabel;
  65. QHBoxLayout *layout = new QHBoxLayout;
  66. layout->addWidget(l);
  67. l->setPixmap(im);
  68. QDialog d(this);
  69. d.setLayout(layout);
  70. d.setModal(true);
  71. d.exec();
  72. }