KIO

kfileitemselectionemblem.cpp
1/*
2 SPDX-FileCopyrightText: 2025 Akseli Lahtinen <akselmo@akselmo.dev>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "kfileitemselectionemblem.h"
8#include "kfileitemdelegate.h"
9
10#include <QAbstractItemDelegate>
11#include <QAbstractItemView>
12#include <QApplication>
13#include <QModelIndex>
14#include <QPoint>
15
16KFileItemSelectionEmblem::KFileItemSelectionEmblem(QAbstractItemView *itemView, QModelIndex index, KDirOperator *dirOperator)
17{
18 m_itemView = itemView;
19 m_index = index;
20 m_fileItemDelegate = fileItemDelegate();
21 m_dirOperator = dirOperator;
22 m_fileItem = m_fileItemDelegate->fileItem(m_index);
23}
24
25KFileItemSelectionEmblem::~KFileItemSelectionEmblem()
26{
27}
28
29bool KFileItemSelectionEmblem::isEmblemEnabled()
30{
31 if (m_itemView->selectionMode() == QAbstractItemView::ExtendedSelection && qApp->style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick)) {
32 if (m_fileItem.isDir()) {
33 return m_dirOperator->isSelected(m_fileItem);
34 }
35 return true;
36 }
37 return false;
38}
39
40KFileItemDelegate *KFileItemSelectionEmblem::fileItemDelegate()
41{
42 auto itemDelegate = m_itemView->itemDelegateForIndex(m_index);
43 if (itemDelegate) {
44 return qobject_cast<KFileItemDelegate *>(itemDelegate);
45 }
46 return nullptr;
47}
48
49void KFileItemSelectionEmblem::updateSelectionEmblemRectForIndex(const int iconSize)
50{
51 if (isEmblemEnabled() && m_fileItemDelegate) {
52 m_fileItemDelegate->setSelectionEmblemRect(m_itemView->visualRect(m_index), iconSize);
53 }
54}
55
56bool KFileItemSelectionEmblem::handleMousePressEvent(const QPoint mousePos)
57{
58 if (isEmblemEnabled() && m_fileItemDelegate && m_fileItemDelegate->selectionEmblemRect().contains(mousePos)) {
59 m_itemView->selectionModel()->select(m_index, QItemSelectionModel::Toggle);
60 return true;
61 }
62 return false;
63}
This widget works as a network transparent filebrowser.
KFileItemDelegate is intended to be used to provide a KDE file system view, when using one of the sta...
SH_ItemView_ActivateItemOnSingleClick
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 18 2025 12:11:32 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.