]>
cloud.milkyroute.net Git - dolphin.git/blob - src/selectionmode/actionwithwidget.cpp
2 This file is part of the KDE project
3 SPDX-FileCopyrightText: 2022 Felix Ernst <felixernst@kde.org>
5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
8 #include "actionwithwidget.h"
10 #include <QAbstractButton>
12 #include <QPushButton>
13 #include <QToolButton>
15 using namespace SelectionMode
;
17 ActionWithWidget::ActionWithWidget(QAction
*action
)
22 ActionWithWidget::ActionWithWidget(QAction
*action
, QAbstractButton
*button
)
26 copyActionDataToButton(button
, action
);
29 QWidget
*ActionWithWidget::newWidget(QWidget
*parent
)
31 Q_CHECK_PTR(m_action
);
34 if (m_action
->isSeparator()) {
35 auto line
= new QFrame(parent
);
36 line
->setFrameShape(QFrame::VLine
);
37 line
->setFrameShadow(QFrame::Sunken
);
41 m_widget
= newButtonForAction(m_action
, parent
);
46 QAbstractButton
*SelectionMode::newButtonForAction(QAction
*action
, QWidget
*parent
)
49 Q_ASSERT(!action
->isSeparator());
51 if (action
->priority() == QAction::LowPriority
) {
52 // We don't want the low priority actions to be displayed icon-only so we need trickery.
53 auto button
= new QPushButton(parent
);
54 copyActionDataToButton(static_cast<QAbstractButton
*>(button
), action
);
55 button
->setMinimumWidth(0);
59 auto *toolButton
= new QToolButton(parent
);
60 toolButton
->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonTextBesideIcon
);
61 toolButton
->setDefaultAction(action
);
62 toolButton
->setPopupMode(QToolButton::ToolButtonPopupMode::InstantPopup
);
63 toolButton
->setSizePolicy(QSizePolicy::Preferred
, QSizePolicy::Fixed
);
64 toolButton
->setMinimumWidth(0);
68 void SelectionMode::copyActionDataToButton(QAbstractButton
*button
, QAction
*action
)
70 button
->setText(action
->text());
71 button
->setIcon(action
->icon());
72 button
->setToolTip(action
->toolTip());
73 button
->setWhatsThis(action
->whatsThis());
75 button
->setVisible(action
->isVisible());
76 button
->setEnabled(action
->isEnabled());
78 QObject::connect(button
, &QAbstractButton::clicked
, action
, &QAction::trigger
);