Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Z/src/nglwidgets/nglstandardbutton.cpp
T
torstenandCopilot 7a6be7474e Qt6 migration: Fix BUILD_RTI=OFF build errors in TrainingAreaBase
- training_area_telegrams.cpp: Fixed QJsonObject initializer syntax (Qt6 requires {{}} not ({}))
- training_area_telegrams.cpp: Fixed fromJson() methods to access m_* members directly
- training_area_telegrams.cpp: Fixed brace mismatches in multiple toJson() methods
- training_area_telegrams.h: Changed Header struct to public members for consistency
- tx_mixin.cpp: Fixed getEquipmentNumber() template for direct member access
- lts_coordinate.cpp: Added missing #include <iomanip>
- MIGRATION_STATUS.md: Added migration progress tracking document

C++17 constraint enforced due to RTI Connext DDS 7.7.0 incompatibility with C++20+

Build status: BUILD_RTI=OFF successful (0 errors, warnings only)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-23 20:49:23 +02:00

337 lines
7.3 KiB
C++
Executable File

#include "nglstandardbutton.h"
#include <QtWidgets/QMenu>
#include <QtCore/QEvent>
#include <QtGui/QAction>
#include <QtGui/QKeySequence>
NGLStandardButton::NGLStandardButton(QWidget *parent)
: NGLStandardButton(NoButton, parent)
{}
NGLStandardButton::NGLStandardButton(StandardButton type, QWidget *parent)
: QPushButton(parent)
, m_type(type)
, m_layoutPriority(-1)
{
init();
}
void NGLStandardButton::init()
{
setType(m_type);
}
NGLStandardButton::StandardButton NGLStandardButton::type() const
{
return m_type;
}
void NGLStandardButton::setType(StandardButton t)
{
m_type = t;
qDeleteAll(m_actionList);
m_actionList.clear();
const char *iconName = nullptr;
QString text;
QString actionText;
QKeySequence key;
const char *objectName = nullptr;
switch (t)
{
case Ok:
iconName = ":icons/png/ok.png";
text = tr("&Ok");
objectName = "btnOk";
break;
case Send:
iconName = ":icons/svg/messages.svg";
text = tr("&Send");
key = QKeySequence(Qt::CTRL | Qt::Key_Return);
objectName = "btnSend";
break;
case New:
iconName = ":icons/png/messages_new.png";
text = tr("&New");
key = QKeySequence::New;
objectName = "btnNew";
break;
case Delete:
iconName = ":icons/png/deleteall.png";
text = tr("&Delete");
key = QKeySequence::Delete;
objectName = "btnDelete";
break;
case Save:
iconName = ":icons/png/save.png";
text = tr("Sa&ve");
key = QKeySequence::Save;
objectName = "btnSave";
break;
case Open:
iconName = ":icons/png/address_book.png";
text = tr("&Open");
key = QKeySequence::Open;
objectName = "btnOpen";
break;
case Yes:
iconName = ":icons/png/ok.png";
text = tr("&Yes");
objectName = "btnYes";
break;
case No:
iconName = ":icons/png/delete.png";
text = tr("&No");
objectName = "btnNo";
break;
case Close:
iconName = ":icons/png/delete_exercise.png";
text = tr("&Close");
objectName = "btnClose";
break;
case Cancel:
iconName = ":icons/png/delete_exercise.png";
text = tr("&Cancel");
objectName = "btnCancel";
break;
case Help:
iconName = ":icons/svg/ueb_index.svg";
text = QString();
actionText = tr("Help");
setMaximumWidth(sizeHint().height());
key = QKeySequence::HelpContents;
objectName = "btnHelp";
break;
case Apply:
iconName = ":icons/png/ok.png";
text = tr("&Apply");
objectName = "btnApply";
break;
case Reset:
iconName = ":icons/png/undo_act.png";
text = tr("Re&set");
objectName = "btnReset";
break;
case Print:
iconName = ":icons/png/printer.png";
text = QString();
actionText = tr("Print");
setMaximumWidth(sizeHint().height());
key = QKeySequence::Print;
objectName = "btnPrint";
break;
case Add:
iconName = ":icons/png/add.png";
text = tr("A&dd");
objectName = "btnAdd";
break;
case Remove:
iconName = ":icons/png/remove.png";
text = tr("Re&move");
objectName = "btnRemove";
break;
case Edit:
iconName = ":icons/png/rename_exercise.png";
text = tr("&Edit");
objectName = "btnEdit";
break;
case Modify:
iconName = ":icons/png/ok.png";
text = tr("Modify");
objectName = "btnModify";
break;
case Hide:
iconName = ":icons/png/ok.png";
text = tr("Hide");
objectName = "btnHide";
break;
case Download:
iconName = ":icons/png/download.png";
text = tr("Download");
objectName = "btnDownload";
break;
case Library:
{
iconName = ":icons/png/address_book.png";
text.clear();
setMaximumWidth(minimumSizeHint().width() * 4 / 5);
QMenu *menu = new QMenu(this);
setMenu(menu);
QAction *actionImport = menu->addAction(QIcon(QLatin1String(":icons/svg/import_docs.svg")), tr("Import from library"));
actionImport->setObjectName(QLatin1String("actionImport"));
connect(actionImport, &QAction::triggered,
this, QOverload<bool>::of(&QAbstractButton::clicked), Qt::QueuedConnection);
m_actionList += actionImport;
QAction *actionExport = menu->addAction(QIcon(QLatin1String(":icons/svg/export_docs.svg")), tr("Export to library"));
actionExport->setObjectName(QLatin1String("actionExport"));
connect(actionExport, &QAction::triggered,
this, QOverload<bool>::of(&QAbstractButton::clicked), Qt::QueuedConnection);
m_actionList += actionExport;
objectName = "btnLibrary";
break;
}
case Show:
{
iconName = ":icons/png/preview.png";
text = tr("Show");
objectName = "btnShow";
break;
}
case ZoomIn:
{
iconName = ":icons/png/zoom_in.png";
text.clear();
objectName = "btnZoomIn";
break;
}
case ZoomOut:
{
iconName = ":icons/png/zoom_out.png";
text.clear();
objectName = "btnZoomOut";
break;
}
default:
text = QLatin1String("ButtonText");
break;
};
if (!m_defaultText.isEmpty())
text = tr(m_defaultText.constData());
if (!m_defaultToolTip.isEmpty())
{
QString toolTip = tr(m_defaultToolTip.constData());
setToolTip(toolTip);
}
if (iconName)
setIcon(QIcon(QString::fromLatin1(iconName)));
setText(text);
if (!key.isEmpty())
setShortcut(key);
if (objectName)
setObjectName(QString::fromUtf8(objectName));
if (m_actionList.isEmpty())
{
QAction *action = new QAction(this);
action->setText(text.isEmpty() ? actionText : text);
action->setIcon(icon());
action->setEnabled(isEnabled());
action->setToolTip(toolTip());
action->setWhatsThis(whatsThis());
connect(action, &QAction::triggered, this,
QOverload<bool>::of(&QAbstractButton::clicked), Qt::QueuedConnection);
m_actionList += action;
}
}
void NGLStandardButton::setLayoutPriority(qint32 priority)
{
m_layoutPriority = priority;
}
qint32 NGLStandardButton::layoutPriority() const
{
if (m_layoutPriority >= 0)
return m_layoutPriority;
switch (m_type)
{
case Close:
return 10;
case Cancel:
return 11;
case Apply:
return 13;
case Ok:
return 15;
case No:
return 31;
case Yes:
return 32;
case ZoomIn:
return 36;
case ZoomOut:
return 37;
case Show:
return 38;
case Download:
return 44;
case Save:
return 45;
case Open:
return 47;
case Reset:
return 50;
case Send:
return 50;
case Modify:
return 51;
case Hide:
return 52;
case Delete:
return 55;
case Remove:
return 56;
case New:
return 60;
case Add:
return 61;
case Edit:
return 63;
case Library:
return 105;
case Print:
return 110;
case Help:
return 120;
default:
break;
};
return 50;
}
void NGLStandardButton::changeEvent(QEvent *e)
{
switch (e->type())
{
case QEvent::LanguageChange:
setType(m_type);
break;
case QEvent::EnabledChange:
{
QAction *a = findChild<QAction *>();
if (a)
a->setEnabled(isEnabled());
break;
}
default:
break;
}
QPushButton::changeEvent(e);
}
QList<QAction *> NGLStandardButton::actions() const
{
return m_actionList;
}
void NGLStandardButton::setDefaultText(const char *text)
{
m_defaultText = QByteArray(text);
if (!m_defaultText.isEmpty())
setText(tr(m_defaultText.constData()));
}
void NGLStandardButton::setDefaultToolTip(const char *toolTip)
{
m_defaultToolTip = QByteArray(toolTip);
if (!m_defaultToolTip.isEmpty())
setToolTip(tr(m_defaultToolTip.constData()));
}