Commit 06accd51 authored by Matt Lowe's avatar Matt Lowe
Browse files

Fixed main chat room lag

parent 19e86c61
This diff is collapsed.
...@@ -151,7 +151,7 @@ QVariant GamesModel::data(const QModelIndex &index, int role) const ...@@ -151,7 +151,7 @@ QVariant GamesModel::data(const QModelIndex &index, int role) const
return result.join(", "); return result.join(", ");
} }
case Qt::DecorationRole:{ case Qt::DecorationRole:{
return g.with_password() ? QIcon(":/resources/lock.svg") : QVariant(); return g.with_password() ? QIcon(LockPixmapGenerator::generatePixmap(13)) : QVariant();
case Qt::TextAlignmentRole: case Qt::TextAlignmentRole:
return Qt::AlignLeft; return Qt::AlignLeft;
default: default:
......
...@@ -166,3 +166,24 @@ QPixmap UserLevelPixmapGenerator::generatePixmap(int height, UserLevelFlags user ...@@ -166,3 +166,24 @@ QPixmap UserLevelPixmapGenerator::generatePixmap(int height, UserLevelFlags user
} }
QMap<int, QPixmap> UserLevelPixmapGenerator::pmCache; QMap<int, QPixmap> UserLevelPixmapGenerator::pmCache;
QPixmap LockPixmapGenerator::generatePixmap(int height)
{
int key = height;
if (pmCache.contains(key))
return pmCache.value(key);
QSvgRenderer svg(QString(":/resources/lock.svg"));
int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height());
QPixmap pixmap(width, height);
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
svg.render(&painter, QRectF(0, 0, width, height));
pmCache.insert(key, pixmap);
return pixmap;
}
QMap<int, QPixmap> LockPixmapGenerator::pmCache;
...@@ -54,4 +54,12 @@ public: ...@@ -54,4 +54,12 @@ public:
static void clear() { pmCache.clear(); } static void clear() { pmCache.clear(); }
}; };
class LockPixmapGenerator {
private:
static QMap<int, QPixmap> pmCache;
public:
static QPixmap generatePixmap(int height);
static void clear() { pmCache.clear(); }
};
#endif #endif
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment