Handle font and palette changes in Dolphin list views.

Also update the font of the meta data widget in InformationPanelContent (smallest readable font).

BUG: 329186
BUG: 315061
FIXED-IN: 4.13
REVIEW: 115958
This commit is contained in:
Emmanuel Pescosta 2014-02-24 14:17:03 +01:00
parent c2887688f1
commit 0d37038b40
5 changed files with 66 additions and 22 deletions

View file

@ -893,11 +893,23 @@ void KItemListView::onTransactionEnd()
bool KItemListView::event(QEvent* event)
{
// Forward all events to the controller and handle them there
if (!m_editingRole && m_controller && m_controller->processEvent(event, transform())) {
event->accept();
return true;
switch (event->type()) {
case QEvent::PaletteChange:
updatePalette();
break;
case QEvent::FontChange:
updateFont();
break;
default:
// Forward all other events to the controller and handle them there
if (!m_editingRole && m_controller && m_controller->processEvent(event, transform())) {
event->accept();
return true;
}
}
return QGraphicsWidget::event(event);
}
@ -950,6 +962,27 @@ QList<KItemListWidget*> KItemListView::visibleItemListWidgets() const
return m_visibleItems.values();
}
void KItemListView::updateFont()
{
if (scene() && !scene()->views().isEmpty()) {
KItemListStyleOption option = styleOption();
option.font = scene()->views().first()->font();
option.fontMetrics = QFontMetrics(option.font);
setStyleOption(option);
}
}
void KItemListView::updatePalette()
{
if (scene() && !scene()->views().isEmpty()) {
KItemListStyleOption option = styleOption();
option.palette = scene()->views().first()->palette();
setStyleOption(option);
}
}
void KItemListView::slotItemsInserted(const KItemRangeList& itemRanges)
{
if (m_itemSize.isEmpty()) {

View file

@ -388,6 +388,9 @@ protected:
QList<KItemListWidget*> visibleItemListWidgets() const;
virtual void updateFont();
virtual void updatePalette();
protected slots:
virtual void slotItemsInserted(const KItemRangeList& itemRanges);
virtual void slotItemsRemoved(const KItemRangeList& itemRanges);

View file

@ -271,6 +271,10 @@ bool InformationPanelContent::eventFilter(QObject* obj, QEvent* event)
adjustWidgetSizes(parentWidget()->width());
break;
case QEvent::FontChange:
m_metaDataWidget->setFont(KGlobalSettings::smallestReadableFont());
break;
default:
break;
}

View file

@ -144,6 +144,26 @@ void DolphinItemListView::onVisibleRolesChanged(const QList<QByteArray>& current
updateGridSize();
}
void DolphinItemListView::updateFont()
{
const ViewModeSettings settings(viewMode());
if (settings.useSystemFont()) {
KItemListView::updateFont();
} else {
QFont font(settings.fontFamily(), qRound(settings.fontSize()));
font.setItalic(settings.italicFont());
font.setWeight(settings.fontWeight());
font.setPointSizeF(settings.fontSize());
KItemListStyleOption option = styleOption();
option.font = font;
option.fontMetrics = QFontMetrics(font);
setStyleOption(option);
}
}
void DolphinItemListView::updateGridSize()
{
const ViewModeSettings settings(viewMode());
@ -231,23 +251,6 @@ void DolphinItemListView::updateGridSize()
endTransaction();
}
void DolphinItemListView::updateFont()
{
KItemListStyleOption option = styleOption();
const ViewModeSettings settings(viewMode());
QFont font(settings.fontFamily(), qRound(settings.fontSize()));
font.setItalic(settings.italicFont());
font.setWeight(settings.fontWeight());
font.setPointSizeF(settings.fontSize());
option.font = font;
option.fontMetrics = QFontMetrics(font);
setStyleOption(option);
}
ViewModeSettings::ViewMode DolphinItemListView::viewMode() const
{
ViewModeSettings::ViewMode mode;

View file

@ -56,9 +56,10 @@ protected:
virtual void onVisibleRolesChanged(const QList<QByteArray>& current,
const QList<QByteArray>& previous);
virtual void updateFont();
private:
void updateGridSize();
void updateFont();
ViewModeSettings::ViewMode viewMode() const;