]>
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 <fe.a.ernst@gmail.com>
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 ActionWithWidget::ActionWithWidget(QAction
*action
) :
19 ActionWithWidget::ActionWithWidget(QAction
*action
, QAbstractButton
*button
) :
23 copyActionDataToButton(button
, action
);
26 QWidget
*ActionWithWidget::newWidget(QWidget
*parent
)
28 Q_CHECK_PTR(m_action
);
31 if (m_action
->isSeparator()) {
32 auto line
= new QFrame(parent
);
33 line
->setFrameShape(QFrame::VLine
);
34 line
->setFrameShadow(QFrame::Sunken
);
38 m_widget
= newButtonForAction(m_action
, parent
);
43 QAbstractButton
*newButtonForAction(QAction
*action
, QWidget
*parent
)
46 Q_ASSERT(!action
->isSeparator());
48 if (action
->priority() == QAction::LowPriority
) {
49 // We don't want the low priority actions to be displayed icon-only so we need trickery.
50 auto button
= new QPushButton(parent
);
51 copyActionDataToButton(static_cast<QAbstractButton
*>(button
), action
);
52 button
->setMinimumWidth(0);
56 auto *toolButton
= new QToolButton(parent
);
57 toolButton
->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonTextBesideIcon
);
58 toolButton
->setDefaultAction(action
);
59 toolButton
->setPopupMode(QToolButton::ToolButtonPopupMode::InstantPopup
);
60 toolButton
->setSizePolicy(QSizePolicy::Preferred
, QSizePolicy::Fixed
);
61 toolButton
->setMinimumWidth(0);
65 void copyActionDataToButton(QAbstractButton
*button
, QAction
*action
)
67 button
->setText(action
->text());
68 button
->setIcon(action
->icon());
69 button
->setToolTip(action
->toolTip());
70 button
->setWhatsThis(action
->whatsThis());
72 button
->setVisible(action
->isVisible());
73 button
->setEnabled(action
->isEnabled());
75 QObject::connect(button
, &QAbstractButton::clicked
, action
, &QAction::trigger
);