addItem for table grid view

This commit is contained in:
georgemoralis 2023-03-09 13:09:56 +02:00
parent 0c5380d78d
commit e2181f1ed9
2 changed files with 48 additions and 2 deletions

View file

@ -37,7 +37,6 @@ game_list_grid::game_list_grid(const QSize& icon_size, QColor icon_color, const
verticalHeader()->setVisible(false); verticalHeader()->setVisible(false);
horizontalHeader()->setVisible(false); horizontalHeader()->setVisible(false);
setShowGrid(false); setShowGrid(false);
setMouseTracking(true);
} }
void game_list_grid::enableText(const bool& enabled) void game_list_grid::enableText(const bool& enabled)
@ -59,7 +58,52 @@ void game_list_grid::setIconSize(const QSize& size) const
QTableWidgetItem* game_list_grid::addItem(const game_info& app, const QString& name, const QString& movie_path, const int& row, const int& col) QTableWidgetItem* game_list_grid::addItem(const game_info& app, const QString& name, const QString& movie_path, const int& row, const int& col)
{ {
throw std::exception("TODO"); const qreal device_pixel_ratio = devicePixelRatioF();
// define size of expanded image, which is raw image size + margins
QSizeF exp_size_f;
if (m_text_enabled)
{
exp_size_f = m_icon_size + QSizeF(m_icon_size.width() * m_margin_factor * 2, m_icon_size.height() * m_margin_factor * (m_text_factor + 1));
}
else
{
exp_size_f = m_icon_size + m_icon_size * m_margin_factor * 2;
}
// define offset for raw image placement
QPoint offset(m_icon_size.width() * m_margin_factor, m_icon_size.height() * m_margin_factor);
const QSize exp_size = (exp_size_f * device_pixel_ratio).toSize();
// create empty canvas for expanded image
QImage exp_img(exp_size, QImage::Format_ARGB32);
exp_img.setDevicePixelRatio(device_pixel_ratio);
exp_img.fill(Qt::transparent);
// create background for image
QImage bg_img(app->pxmap.size(), QImage::Format_ARGB32);
bg_img.setDevicePixelRatio(device_pixel_ratio);
bg_img.fill(m_icon_color);
// place raw image inside expanded image
QPainter painter(&exp_img);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.drawImage(offset, bg_img);
painter.drawPixmap(offset, app->pxmap);
app->pxmap = {};
painter.end();
// create item with expanded image, title and position
QTableWidgetItem* item = new QTableWidgetItem();
item->setData(Qt::ItemDataRole::DecorationRole, QPixmap::fromImage(exp_img));
if (m_text_enabled)
{
item->setData(Qt::ItemDataRole::DisplayRole, name);
}
setItem(row, col, item);
return item;
} }
qreal game_list_grid::getMarginFactor() const qreal game_list_grid::getMarginFactor() const

View file

@ -7,6 +7,8 @@
struct gui_game_info struct gui_game_info
{ {
GameInfo info{}; GameInfo info{};
QPixmap icon;
QPixmap pxmap;
}; };
typedef std::shared_ptr<gui_game_info> game_info; typedef std::shared_ptr<gui_game_info> game_info;