drawPixmap(painter, m_pixmap);
}
- painter->setFont(itemListStyleOption.font);
+ QFont font(itemListStyleOption.font);
+ if (itemListStyleOption.state & QStyle::State_HasFocus) {
+ font.setUnderline(true);
+ }
+ painter->setFont(font);
painter->setPen(itemListStyleOption.palette.text().color());
painter->drawStaticText(m_textPos[Name], m_text[Name]);
painter->setPen(m_additionalInfoTextColor);
+ painter->setFont(itemListStyleOption.font);
for (int i = Name + 1; i < TextIdCount; ++i) {
painter->drawStaticText(m_textPos[i], m_text[i]);
}
KItemListView* oldView = m_view;
m_view = view;
+ if (oldView) {
+ disconnect(m_selectionManager, SIGNAL(currentChanged(int,int)), oldView, SLOT(currentChanged(int,int)));
+ }
+
if (m_view) {
m_view->setController(this);
m_view->setModel(m_model);
+ connect(m_selectionManager, SIGNAL(currentChanged(int,int)), m_view, SLOT(currentChanged(int,int)));
}
emit viewChanged(m_view, oldView);
}
}
+void KItemListView::currentChanged(int current, int previous)
+{
+ Q_UNUSED(previous);
+
+ QHashIterator<int, KItemListWidget*> it(m_visibleItems);
+ while (it.hasNext()) {
+ it.next();
+
+ KItemListWidget* widget = it.value();
+ KItemListStyleOption styleOption = widget->styleOption();
+ if (it.key() == current) {
+ styleOption.state |= QStyle::State_HasFocus;
+ widget->setStyleOption(styleOption);
+ }
+ else if (styleOption.state & QStyle::State_HasFocus) {
+ styleOption.state &= ~QStyle::State_HasFocus;
+ widget->setStyleOption(styleOption);
+ }
+ }
+}
+
void KItemListView::slotAnimationFinished(QGraphicsWidget* widget,
KItemListViewAnimation::AnimationType type)
{
KItemListWidget* widget = m_widgetCreator->create(this);
widget->setVisibleRoles(m_visibleRoles);
widget->setVisibleRolesSizes(m_visibleRolesSizes);
- widget->setStyleOption(m_styleOption);
+
+ KItemListStyleOption option = m_styleOption;
+ if (index == m_controller->selectionManager()->currentItem()) {
+ option.state |= QStyle::State_HasFocus;
+ }
+ widget->setStyleOption(option);
+
widget->setIndex(index);
widget->setData(m_model->data(index));
m_visibleItems.insert(index, widget);
m_visibleItems.remove(oldIndex);
widget->setVisibleRoles(m_visibleRoles);
widget->setVisibleRolesSizes(m_visibleRolesSizes);
- widget->setStyleOption(m_styleOption);
+
+ KItemListStyleOption option = m_styleOption;
+ if (index == m_controller->selectionManager()->currentItem()) {
+ option.state |= QStyle::State_HasFocus;
+ }
+ widget->setStyleOption(option);
+
widget->setIndex(index);
widget->setData(m_model->data(index));
m_visibleItems.insert(index, widget);