24#include "moc_qgsmultiedittoolbutton.cpp"
26using namespace Qt::StringLiterals;
29 : QToolButton( parent )
31 setFocusPolicy( Qt::StrongFocus );
34 setStyleSheet( u
"QToolButton{ background: none; border: 1px solid rgba(0, 0, 0, 0%);} QToolButton:focus { border: 1px solid palette(highlight); }"_s );
37 setIconSize( QSize( iconSize, iconSize ) );
39 setFixedSize( 2 *
static_cast<int>( 1.25 * iconSize / 2.0 ), 2 *
static_cast<int>( iconSize * 1.1 / 2.0 ) );
41 setPopupMode( QToolButton::InstantPopup );
43 mMenu =
new QMenu(
this );
44 connect( mMenu, &QMenu::aboutToShow,
this, &QgsMultiEditToolButton::aboutToShowMenu );
51void QgsMultiEditToolButton::aboutToShowMenu()
59 QAction *noAction = mMenu->addAction( tr(
"No Changes to Commit" ) );
60 noAction->setEnabled(
false );
65 const QString title = !mField.name().isEmpty() ? tr(
"Set %1 for All Selected Features" ).arg( mField.name() )
66 : tr(
"Set field for all selected features" );
67 QAction *setFieldAction = mMenu->addAction( title );
68 connect( setFieldAction, &QAction::triggered,
this, &QgsMultiEditToolButton::setFieldTriggered );
73 QAction *resetFieldAction = mMenu->addAction( tr(
"Reset to Original Values" ) );
74 connect( resetFieldAction, &QAction::triggered,
this, &QgsMultiEditToolButton::resetFieldTriggered );
80void QgsMultiEditToolButton::setFieldTriggered()
87void QgsMultiEditToolButton::resetFieldTriggered()
94void QgsMultiEditToolButton::updateState()
99 else if ( mIsMixedValues )
110 tooltip = tr(
"All features in selection have equal value for '%1'" ).arg( mField.name() );
114 tooltip = tr(
"Some features in selection have different values for '%1'" ).arg( mField.name() );
118 tooltip = tr(
"Values for '%1' have unsaved changes" ).arg( mField.name() );
123 setToolTip( tooltip );
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...