diff options
| author | 2015-10-04 04:48:23 +0200 | |
|---|---|---|
| committer | 2015-10-04 04:48:23 +0200 | |
| commit | 31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6 (patch) | |
| tree | cb36b687e10bcb821872f734bf26333583a0823c | |
| parent | Merge branch 'master' of https://github.com/kvirc/KVIrc (diff) | |
| download | KVIrc-31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6.tar.gz KVIrc-31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6.tar.bz2 KVIrc-31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6.zip | |
Make the theme images in the theme management dialog bigger. Maybe needs more polishing
| -rw-r--r-- | src/kvilib/tal/KviTalIconAndRichTextItemDelegate.cpp | 54 | ||||
| -rw-r--r-- | src/kvilib/tal/KviTalIconAndRichTextItemDelegate.h | 17 | ||||
| -rw-r--r-- | src/modules/theme/ThemeManagementDialog.cpp | 11 |
3 files changed, 59 insertions, 23 deletions
diff --git a/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.cpp b/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.cpp index 5e91bc2c8..05c82d00c 100644 --- a/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.cpp +++ b/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.cpp @@ -29,8 +29,12 @@ #include <QApplication> #include <QAbstractTextDocumentLayout> + +#define LVI_AFTER_ICON (LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING) + + KviTalIconAndRichTextItemDelegate::KviTalIconAndRichTextItemDelegate(QAbstractItemView * pWidget) -: QStyledItemDelegate(pWidget), m_pParent(pWidget), m_pDefaultPix(0), m_oMinimumSize(0,0) +: QStyledItemDelegate(pWidget), m_pParent(pWidget), m_oMinimumSize(0,0), m_oIconSize(LVI_ICON_SIZE,LVI_ICON_SIZE) { } @@ -53,27 +57,42 @@ void KviTalIconAndRichTextItemDelegate::paint(QPainter * pPainter, const QStyleO QVariant value = index.data(Qt::DecorationRole); QIcon ico; + + QPixmap pix; + if(value.canConvert<QIcon>()) { ico = QIcon(value.value<QIcon>()); - if(ico.isNull()) - { - if(m_pDefaultPix) - pPainter->drawPixmap(opt.rect.x()+LVI_BORDER,opt.rect.y()+LVI_BORDER,*m_pDefaultPix); - } else { - pPainter->drawPixmap(opt.rect.x()+LVI_BORDER,opt.rect.y()+LVI_BORDER,ico.pixmap(LVI_ICON_SIZE,LVI_ICON_SIZE)); - } + if(!ico.isNull()) + pix = ico.pixmap(m_oIconSize); + else + pix = m_oDefaultPix; } else { - if(m_pDefaultPix) - pPainter->drawPixmap(opt.rect.x()+LVI_BORDER,opt.rect.y()+LVI_BORDER,*m_pDefaultPix); + pix = m_oDefaultPix; + } + + if(!pix.isNull()) + { + int x = opt.rect.x()+LVI_BORDER; + int y = opt.rect.y()+LVI_BORDER; + int w = m_oIconSize.width(); + + pPainter->drawPixmap( + x + ((w - pix.width()) / 2), + y, + pix + ); } QTextDocument doc; doc.setHtml(szText); doc.setDefaultFont(opt.font); - pPainter->translate(opt.rect.x()+LVI_AFTER_ICON,opt.rect.y()+LVI_BORDER); - doc.setTextWidth(opt.rect.width()-LVI_AFTER_ICON-LVI_BORDER); - QRect cliprect = QRect(QPoint(0,0),QSize(opt.rect.width()-LVI_AFTER_ICON,opt.rect.height())); + + int iIconAndSpace = LVI_BORDER + m_oIconSize.width() + LVI_SPACING; + + pPainter->translate(opt.rect.x() + iIconAndSpace,opt.rect.y()+LVI_BORDER); + doc.setTextWidth(opt.rect.width() - iIconAndSpace - LVI_BORDER); + QRect cliprect = QRect(QPoint(0,0),QSize(opt.rect.width()-iIconAndSpace,opt.rect.height())); doc.drawContents(pPainter,cliprect); pPainter->restore(); } @@ -86,15 +105,20 @@ QSize KviTalIconAndRichTextItemDelegate::sizeHint(const QStyleOptionViewItem &op doc.setDefaultFont(option.font); doc.setTextWidth(((QListWidget *)parent())->viewport()->width()-LVI_AFTER_ICON-LVI_BORDER); int iHeight = doc.documentLayout()->documentSize().toSize().height(); - if(iHeight < (LVI_ICON_SIZE+(2 * LVI_BORDER))) - iHeight = LVI_ICON_SIZE; //qDebug("Size hint (%d,%d)",((QListWidget *)parent())->minimumWidth(), iHeight + (2 * LVI_BORDER)); + + int iIconWidth = m_oIconSize.width() + (2 * LVI_BORDER); + int iIconHeight = m_oIconSize.height() + (2 * LVI_BORDER); int w = ((QListWidget *)parent())->minimumWidth(); + if(w < iIconWidth) + w = iIconWidth; if(w < m_oMinimumSize.width()) w = m_oMinimumSize.width(); int h = iHeight + (2 * LVI_BORDER); + if(h < iIconHeight) + h = iIconHeight; if(h < m_oMinimumSize.height()) h = m_oMinimumSize.height(); diff --git a/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.h b/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.h index da95f2300..83aa8dd3a 100644 --- a/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.h +++ b/src/kvilib/tal/KviTalIconAndRichTextItemDelegate.h @@ -42,9 +42,10 @@ #define LVI_BORDER 4 #define LVI_SPACING 8 #define LVI_MINIMUM_TEXT_WIDTH 300 + #define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER) -#define LVI_AFTER_ICON (LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING) + /** * \class KviTalIconAndRichTextItemDelegate * \brief Toolkit Abstraction Layer: itemdelegate class @@ -65,8 +66,9 @@ public: ~KviTalIconAndRichTextItemDelegate(); protected: QAbstractItemView * m_pParent; - QPixmap * m_pDefaultPix; + QPixmap m_oDefaultPix; QSize m_oMinimumSize; + QSize m_oIconSize; public: /** * \brief Set the absolute minimum size of the items. Should be set in the view constructor as @@ -78,6 +80,14 @@ public: } /** + * \brief Set the size of the icons. Should be set in the view constructor. + */ + void setIconSize(const QSize &s) + { + m_oIconSize = s; + } + + /** * \brief Returns the size hint for the view * \param option The style options for the item * \param index The model index for the item @@ -99,7 +109,8 @@ public: * \param pPix The icon pixmap * \return void */ - void setDefaultIcon(QPixmap * pPix){ m_pDefaultPix = pPix; }; + void setDefaultIcon(QPixmap * pPix){ m_oDefaultPix = *pPix; }; + void setDefaultIcon(const QPixmap &oPix){ m_oDefaultPix = oPix; }; }; #endif // _KVI_TAL_LISTWIDGET_H_ diff --git a/src/modules/theme/ThemeManagementDialog.cpp b/src/modules/theme/ThemeManagementDialog.cpp index 8d19b7b86..a20c2f7fd 100644 --- a/src/modules/theme/ThemeManagementDialog.cpp +++ b/src/modules/theme/ThemeManagementDialog.cpp @@ -181,11 +181,12 @@ ThemeManagementDialog::ThemeManagementDialog(QWidget * parent) m_pListWidget = new KviTalListWidget(this); m_pListWidget->setContextMenuPolicy(Qt::CustomContextMenu); m_pItemDelegate = new KviTalIconAndRichTextItemDelegate(m_pListWidget); - m_pItemDelegate->setDefaultIcon(g_pIconManager->getBigIcon(QString(KVI_BIGICON_THEME))); - m_pItemDelegate->setMinimumSize(QSize(300,60)); + m_pItemDelegate->setDefaultIcon(g_pIconManager->getBigIcon(QString(KVI_BIGICON_THEME))->scaled(200,180,Qt::KeepAspectRatio)); // FIXME! + m_pItemDelegate->setMinimumSize(QSize(400,60)); + m_pItemDelegate->setIconSize(QSize(200,180)); m_pListWidget->setItemDelegate(m_pItemDelegate); m_pListWidget->setMinimumHeight(400); - m_pListWidget->setMinimumWidth(420); + m_pListWidget->setMinimumWidth(520); m_pListWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); m_pListWidget->setSortingEnabled(true); @@ -213,7 +214,7 @@ ThemeManagementDialog::ThemeManagementDialog(QWidget * parent) pSep = new QFrame(this); pSep->setFrameStyle(QFrame::HLine | QFrame::Sunken); - pSep->setMinimumWidth(300); + pSep->setMinimumWidth(400); // g->addWidget(pSep,3,0); pVBox->addWidget(pSep); @@ -477,7 +478,7 @@ void ThemeManagementDialog::fillThemeBox(bool bBuiltin) QPixmap pixmap=inf->smallScreenshot(); if(!pixmap.isNull()) - it->setIcon(pixmap.scaled(32,32)); + it->setIcon(pixmap.scaled(200,180,Qt::KeepAspectRatio)); } else { delete inf; } |
