diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5b256a103..59517dcc1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -673,7 +673,6 @@ set(SOURCE_FILES widgets/listview/GenericListModel.hpp widgets/listview/GenericListView.cpp widgets/listview/GenericListView.hpp - widgets/listview/ImagePtrItemDelegate.hpp widgets/settingspages/AboutPage.cpp widgets/settingspages/AboutPage.hpp diff --git a/src/widgets/listview/ImagePtrItemDelegate.hpp b/src/widgets/listview/ImagePtrItemDelegate.hpp deleted file mode 100644 index aa4b3e6b6..000000000 --- a/src/widgets/listview/ImagePtrItemDelegate.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#pragma once - -#include "common/QLogging.hpp" -#include "messages/Image.hpp" -#include "messages/ImageSet.hpp" - -#include -#include -#include -#include -#include - -namespace chatterino { -class ImagePtrItemDelegate : public QStyledItemDelegate -{ - std::map ownedImages_; - QTableView *view_; - -public: - ImagePtrItemDelegate(QTableView *view) - : view_(view) - { - } - static constexpr auto IMAGE_URL_ROLE = Qt::UserRole + 1; - - void paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index) const override - { - auto url = index.data(IMAGE_URL_ROLE).toString(); - if (auto it = this->ownedImages_.find(url); - it != this->ownedImages_.end()) - { - auto img = it->second; - auto opt = img->pixmapOrLoad(); - if (!opt) // wait for next time - { - if (img->isEmpty()) - { - painter->drawText(option.rect, "[Error]"); - } - else - { - painter->drawText(option.rect, "Loading"); - } - return; - } - auto pixmap = *opt; - double aspectRatio = - double(pixmap.width()) / double(pixmap.height()); - int width = int(option.rect.height() * aspectRatio); - auto outputRect = QRect(option.rect.topLeft(), - QSize(width, option.rect.height())); - if (option.rect.width() < width) - { - // too wide? - - double revAspectRatio = - double(pixmap.height()) / double(pixmap.width()); - int height = int(option.rect.width() * revAspectRatio); - - outputRect = QRect(option.rect.topLeft(), - QSize(option.rect.width(), height)); - if (option.rect.height() < height) - { - // give up and squish the image - outputRect = option.rect; - } - } - - painter->drawPixmap(outputRect, pixmap, pixmap.rect()); - } - auto img = Image::fromUrl(Url{url}); - - img->pixmapOrLoad([this, index]() { - // wait for it to parse - QTimer::singleShot(100, [this, index]() { - this->view_->repaint(); - this->view_->update(index); - }); - }); - - // You cannot stop me, clang-tidy - auto *bleh = const_cast(this); - bleh->ownedImages_[url] = img; - } - QSize sizeHint(const QStyleOptionViewItem &option, - const QModelIndex &index) const override - { - return {32, 32}; - } -}; -} // namespace chatterino diff --git a/src/widgets/settingspages/ImageUploaderPage.cpp b/src/widgets/settingspages/ImageUploaderPage.cpp index 83c582c23..442a352d0 100644 --- a/src/widgets/settingspages/ImageUploaderPage.cpp +++ b/src/widgets/settingspages/ImageUploaderPage.cpp @@ -41,9 +41,6 @@ ImageUploaderPage::ImageUploaderPage() auto *view = layout.emplace().getElement(); view->setModel(model); - this->imgDelegate_ = new ImagePtrItemDelegate(view); - - view->setItemDelegateForColumn(0, this->imgDelegate_); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setSelectionBehavior(QAbstractItemView::SelectRows); @@ -131,9 +128,4 @@ ImageUploaderPage::ImageUploaderPage() } } -ImageUploaderPage::~ImageUploaderPage() -{ - delete this->imgDelegate_; -} - } // namespace chatterino diff --git a/src/widgets/settingspages/ImageUploaderPage.hpp b/src/widgets/settingspages/ImageUploaderPage.hpp index d0953f42d..1d0a04211 100644 --- a/src/widgets/settingspages/ImageUploaderPage.hpp +++ b/src/widgets/settingspages/ImageUploaderPage.hpp @@ -8,17 +8,8 @@ class ImagePtrItemDelegate; class ImageUploaderPage : public SettingsPage { - ImagePtrItemDelegate *imgDelegate_; - public: ImageUploaderPage(); - ~ImageUploaderPage() override; - - ImageUploaderPage(ImageUploaderPage &cpy) = delete; - ImageUploaderPage(ImageUploaderPage &&move) = delete; - ImageUploaderPage &operator=(const ImageUploaderPage ©Assign) = delete; - ImageUploaderPage &&operator=(const ImageUploaderPage &&moveAssign) = - delete; }; } // namespace chatterino