aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2015-10-04 04:48:23 +0200
committerGravatar Szymon Tomasz Stefanek2015-10-04 04:48:23 +0200
commit31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6 (patch)
treecb36b687e10bcb821872f734bf26333583a0823c /src
parentMerge branch 'master' of https://github.com/kvirc/KVIrc (diff)
downloadKVIrc-31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6.tar.gz
KVIrc-31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6.tar.bz2
KVIrc-31135fb0bbcd9a12b5a19990c28e5ccdcf4b06f6.zip
Make the theme images in the theme management dialog bigger. Maybe needs more polishing
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/tal/KviTalIconAndRichTextItemDelegate.cpp54
-rw-r--r--src/kvilib/tal/KviTalIconAndRichTextItemDelegate.h17
-rw-r--r--src/modules/theme/ThemeManagementDialog.cpp11
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;
}