mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-05 16:19:10 +00:00
DolphinView: Allow to have tootips on columns headers
Add events columnHovered/columnUnHovered to KItemListview and KItemListHeaderWidget.
This commit is contained in:
parent
090db6e8f4
commit
da7ccef488
|
@ -601,6 +601,8 @@ void KItemListView::setHeaderVisible(bool visible)
|
|||
connect(m_headerWidget, &KItemListHeaderWidget::columnMoved, this, &KItemListView::slotHeaderColumnMoved);
|
||||
connect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged, this, &KItemListView::sortOrderChanged);
|
||||
connect(m_headerWidget, &KItemListHeaderWidget::sortRoleChanged, this, &KItemListView::sortRoleChanged);
|
||||
connect(m_headerWidget, &KItemListHeaderWidget::columnHovered, this, &KItemListView::columnHovered);
|
||||
connect(m_headerWidget, &KItemListHeaderWidget::columnUnHovered, this, &KItemListView::columnUnHovered);
|
||||
|
||||
m_layouter->setHeaderHeight(headerSize.height());
|
||||
m_headerWidget->setVisible(true);
|
||||
|
@ -610,6 +612,8 @@ void KItemListView::setHeaderVisible(bool visible)
|
|||
disconnect(m_headerWidget, &KItemListHeaderWidget::columnMoved, this, &KItemListView::slotHeaderColumnMoved);
|
||||
disconnect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged, this, &KItemListView::sortOrderChanged);
|
||||
disconnect(m_headerWidget, &KItemListHeaderWidget::sortRoleChanged, this, &KItemListView::sortRoleChanged);
|
||||
disconnect(m_headerWidget, &KItemListHeaderWidget::columnHovered, this, &KItemListView::columnHovered);
|
||||
disconnect(m_headerWidget, &KItemListHeaderWidget::columnUnHovered, this, &KItemListView::columnUnHovered);
|
||||
|
||||
m_layouter->setHeaderHeight(0);
|
||||
m_headerWidget->setVisible(false);
|
||||
|
|
|
@ -327,6 +327,9 @@ Q_SIGNALS:
|
|||
*/
|
||||
void scrollingStopped();
|
||||
|
||||
void columnHovered(int roleIndex);
|
||||
void columnUnHovered(int roleIndex);
|
||||
|
||||
protected:
|
||||
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
|
||||
void setItemSize(const QSizeF &size);
|
||||
|
|
|
@ -372,6 +372,7 @@ void KItemListHeaderWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
|||
{
|
||||
QGraphicsWidget::hoverLeaveEvent(event);
|
||||
if (m_hoveredRoleIndex != -1) {
|
||||
Q_EMIT columnUnHovered(m_hoveredRoleIndex);
|
||||
m_hoveredRoleIndex = -1;
|
||||
update();
|
||||
}
|
||||
|
@ -488,8 +489,15 @@ void KItemListHeaderWidget::updatePressedRoleIndex(const QPointF &pos)
|
|||
void KItemListHeaderWidget::updateHoveredRoleIndex(const QPointF &pos)
|
||||
{
|
||||
const int hoverIndex = roleIndexAt(pos);
|
||||
|
||||
if (m_hoveredRoleIndex != hoverIndex) {
|
||||
if (m_hoveredRoleIndex != -1) {
|
||||
Q_EMIT columnUnHovered(m_hoveredRoleIndex);
|
||||
}
|
||||
m_hoveredRoleIndex = hoverIndex;
|
||||
if (m_hoveredRoleIndex != -1) {
|
||||
Q_EMIT columnHovered(m_hoveredRoleIndex);
|
||||
}
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,6 +93,9 @@ Q_SIGNALS:
|
|||
*/
|
||||
void sortRoleChanged(const QByteArray ¤t, const QByteArray &previous);
|
||||
|
||||
void columnUnHovered(int roleIndex);
|
||||
void columnHovered(int roleIndex);
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
|
@ -158,7 +161,8 @@ private:
|
|||
int x;
|
||||
int xDec;
|
||||
int index;
|
||||
} m_movingRole;
|
||||
};
|
||||
MovingRole m_movingRole;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -78,6 +78,7 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
|
|||
, m_assureVisibleCurrentIndex(false)
|
||||
, m_isFolderWritable(true)
|
||||
, m_dragging(false)
|
||||
, m_selectNextItem(false)
|
||||
, m_url(url)
|
||||
, m_viewPropertiesContext()
|
||||
, m_mode(DolphinView::IconsView)
|
||||
|
@ -87,7 +88,6 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
|
|||
, m_view(nullptr)
|
||||
, m_container(nullptr)
|
||||
, m_toolTipManager(nullptr)
|
||||
, m_selectNextItem(false)
|
||||
, m_selectionChangedTimer(nullptr)
|
||||
, m_currentItemUrl()
|
||||
, m_scrollToCurrentItem(false)
|
||||
|
@ -210,6 +210,14 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
|
|||
connect(m_view, &DolphinItemListView::sortRoleChanged, this, &DolphinView::slotSortRoleChangedByHeader);
|
||||
connect(m_view, &DolphinItemListView::visibleRolesChanged, this, &DolphinView::slotVisibleRolesChangedByHeader);
|
||||
connect(m_view, &DolphinItemListView::roleEditingCanceled, this, &DolphinView::slotRoleEditingCanceled);
|
||||
|
||||
connect(m_view, &DolphinItemListView::columnHovered, this, [this](int roleIndex) {
|
||||
m_hoveredColumnHearderRoleIndex = roleIndex;
|
||||
});
|
||||
connect(m_view, &DolphinItemListView::columnUnHovered, this, [this](int roleIndex) {
|
||||
Q_UNUSED(roleIndex)
|
||||
m_hoveredColumnHearderRoleIndex = -1;
|
||||
});
|
||||
connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished, this, &DolphinView::slotHeaderColumnWidthChangeFinished);
|
||||
connect(m_view->header(), &KItemListHeader::sidePaddingChanged, this, &DolphinView::slotSidePaddingWidthChanged);
|
||||
|
||||
|
@ -961,9 +969,18 @@ bool DolphinView::eventFilter(QObject *watched, QEvent *event)
|
|||
}
|
||||
break;
|
||||
|
||||
case QEvent::ToolTip:
|
||||
tryShowNameToolTip(static_cast<QHelpEvent *>(event));
|
||||
case QEvent::ToolTip: {
|
||||
const auto helpEvent = static_cast<QHelpEvent *>(event);
|
||||
if (tryShowNameToolTip(helpEvent)) {
|
||||
return true;
|
||||
|
||||
} else if (m_hoveredColumnHearderRoleIndex != -1) {
|
||||
const auto roleInfo = KFileItemModel::rolesInformation().at(m_hoveredColumnHearderRoleIndex);
|
||||
QToolTip::showText(helpEvent->globalPos(), roleInfo.tooltip, this);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -2300,13 +2317,13 @@ void DolphinView::updatePlaceholderLabel()
|
|||
m_placeholderLabel->setVisible(true);
|
||||
}
|
||||
|
||||
void DolphinView::tryShowNameToolTip(QHelpEvent *event)
|
||||
bool DolphinView::tryShowNameToolTip(QHelpEvent *event)
|
||||
{
|
||||
if (!GeneralSettings::showToolTips() && m_mode == DolphinView::IconsView) {
|
||||
const std::optional<int> index = m_view->itemAt(event->pos());
|
||||
|
||||
if (!index.has_value()) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check whether the filename has been elided
|
||||
|
@ -2317,6 +2334,8 @@ void DolphinView::tryShowNameToolTip(QHelpEvent *event)
|
|||
const QString text = item.text();
|
||||
const QPoint pos = mapToGlobal(event->pos());
|
||||
QToolTip::showText(pos, text);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -886,7 +886,7 @@ private:
|
|||
|
||||
void updatePlaceholderLabel();
|
||||
|
||||
void tryShowNameToolTip(QHelpEvent *event);
|
||||
bool tryShowNameToolTip(QHelpEvent *event);
|
||||
|
||||
private:
|
||||
void updatePalette();
|
||||
|
@ -939,6 +939,9 @@ private:
|
|||
QLabel *m_placeholderLabel;
|
||||
QTimer *m_showLoadingPlaceholderTimer;
|
||||
|
||||
/// The information roleIndex of the list column header currently hovered
|
||||
int m_hoveredColumnHearderRoleIndex;
|
||||
|
||||
/// Used for selection mode. @see setSelectionMode()
|
||||
std::unique_ptr<QProxyStyle> m_proxyStyle;
|
||||
|
||||
|
|
Loading…
Reference in a new issue