diff options
Diffstat (limited to 'src/plugins/coreplugin/dialogs/newdialog.cpp')
-rw-r--r-- | src/plugins/coreplugin/dialogs/newdialog.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/plugins/coreplugin/dialogs/newdialog.cpp b/src/plugins/coreplugin/dialogs/newdialog.cpp index f38a43e73b..80f8eb8d4d 100644 --- a/src/plugins/coreplugin/dialogs/newdialog.cpp +++ b/src/plugins/coreplugin/dialogs/newdialog.cpp @@ -79,7 +79,7 @@ public: invalidateFilter(); } - bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const + bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override { if (!sourceParent.isValid()) return true; @@ -91,6 +91,21 @@ public: return true; } + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override + { + if (role == Qt::DecorationRole) { + // scale too small icons to have one size for all + QIcon icon = qvariant_cast<QIcon>(QSortFilterProxyModel::data(index, role)); + if (!icon.isNull()) { + QPixmap pixmap(icon.pixmap(ICON_SIZE, ICON_SIZE)); + if (pixmap.size() != QSize(ICON_SIZE, ICON_SIZE)) + return pixmap.scaled(ICON_SIZE, ICON_SIZE, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } + } + + return QSortFilterProxyModel::data(index, role); + } + private: Core::Id m_platform; }; @@ -101,18 +116,18 @@ class TwoLevelProxyModel : public QAbstractProxyModel public: TwoLevelProxyModel(QObject *parent = 0): QAbstractProxyModel(parent) {} - QModelIndex index(int row, int column, const QModelIndex &parent) const + QModelIndex index(int row, int column, const QModelIndex &parent) const override { QModelIndex ourModelIndex = sourceModel()->index(row, column, mapToSource(parent)); return createIndex(row, column, ourModelIndex.internalPointer()); } - QModelIndex parent(const QModelIndex &index) const + QModelIndex parent(const QModelIndex &index) const override { return mapFromSource(mapToSource(index).parent()); } - int rowCount(const QModelIndex &index) const + int rowCount(const QModelIndex &index) const override { if (index.isValid() && index.parent().isValid() && !index.parent().parent().isValid()) return 0; @@ -120,19 +135,19 @@ public: return sourceModel()->rowCount(mapToSource(index)); } - int columnCount(const QModelIndex &index) const + int columnCount(const QModelIndex &index) const override { return sourceModel()->columnCount(mapToSource(index)); } - QModelIndex mapFromSource (const QModelIndex &index) const + QModelIndex mapFromSource (const QModelIndex &index) const override { if (!index.isValid()) return QModelIndex(); return createIndex(index.row(), index.column(), index.internalPointer()); } - QModelIndex mapToSource (const QModelIndex &index) const + QModelIndex mapToSource (const QModelIndex &index) const override { if (!index.isValid()) return QModelIndex(); @@ -148,7 +163,7 @@ public: FancyTopLevelDelegate(QObject *parent = 0) : QItemDelegate(parent) {} - void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect, const QString &text) const + void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect, const QString &text) const override { QStyleOptionViewItem newoption = option; if (!(option.state & QStyle::State_Enabled)) { @@ -168,11 +183,10 @@ public: QItemDelegate::drawDisplay(painter, newoption, rect, text); } - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const + QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override { QSize size = QItemDelegate::sizeHint(option, index); - size = size.expandedTo(QSize(0, ROW_HEIGHT)); return size; |