| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include <QActionGroup> |
| | #include "lc_actionfactorybase.h" |
| |
|
| | #include "lc_actiongroup.h" |
| | #include "lc_actiongroupmanager.h" |
| | #include "lc_shortcutinfo.h" |
| | #include "qc_applicationwindow.h" |
| | #include "qg_actionhandler.h" |
| |
|
| | LC_ActionFactoryBase::LC_ActionFactoryBase(QC_ApplicationWindow* parent, QG_ActionHandler* a_handler): |
| | QObject(parent), LC_AppWindowAware(parent),m_actionHandler(a_handler){ |
| | } |
| |
|
| | QAction* LC_ActionFactoryBase::createAction_MW(const char* name, void (QC_ApplicationWindow::*slotPtr)(), |
| | void (QC_ApplicationWindow::*slotBoolPtr)(bool), const QString& text, |
| | const char* iconName, const char* themeIconName, |
| | QActionGroup* parent, QMap<QString, QAction*>& a_map, |
| | bool useToggled) const { |
| | QAction* action = justCreateAction(a_map, name, text, iconName, themeIconName, parent); |
| | if (slotPtr != nullptr) { |
| | if (useToggled) { |
| | connect(action, &QAction::toggled, m_appWin, slotPtr); |
| | } else { |
| | connect(action, &QAction::triggered, m_appWin, slotPtr); |
| | } |
| | }else if (slotBoolPtr != nullptr) { |
| | if (useToggled) { |
| | connect(action, &QAction::toggled, m_appWin, slotBoolPtr); |
| | } else { |
| | connect(action, &QAction::triggered, m_appWin, slotBoolPtr); |
| | } |
| | } |
| | return action; |
| | } |
| |
|
| | QAction * LC_ActionFactoryBase::createAction_AH(const char* name, RS2::ActionType actionType, const QString &text, |
| | const char *iconName, const char *themeIconName, |
| | QActionGroup *parent, |
| | QMap<QString, QAction *> &a_map) const{ |
| | QAction *action = justCreateAction(a_map, name, text, iconName, themeIconName, parent); |
| | |
| | |
| | QG_ActionHandler* capturedHandler = m_actionHandler; |
| | connect(action, &QAction::triggered, capturedHandler, [ capturedHandler, actionType](bool){ |
| | |
| | capturedHandler->setCurrentAction(actionType); |
| | }); |
| | LC_ActionGroupManager::associateQActionWithActionType(action, actionType); |
| | return action; |
| | } |
| |
|
| | QAction *LC_ActionFactoryBase::justCreateAction(QMap<QString, QAction *> &a_map, const char* name, const QString& text, const char *iconName, const char *themeIconName, |
| | QActionGroup *parent) const { |
| | auto* action = new QAction(text, parent); |
| | if (iconName != nullptr) { |
| | QIcon icon = QIcon(iconName); |
| | if (m_usingTheme && themeIconName != nullptr) |
| | action->setIcon(QIcon::fromTheme(themeIconName, icon)); |
| | else |
| | action->setIcon(icon); |
| | } |
| | action->setObjectName(name); |
| | action->setIconVisibleInMenu(true); |
| | action->setActionGroup(parent); |
| | a_map.insert(name, action); |
| | return action; |
| | } |
| |
|
| | void LC_ActionFactoryBase::createActions(QMap<QString, QAction *> &map, QActionGroup *group, const std::vector<ActionInfo> &actionList) const { |
| | for (const LC_ActionFactoryBase::ActionInfo &a: actionList){ |
| | justCreateAction(map, a.key, a.text, a.iconName,a.themeIconName, group); |
| | } |
| | } |
| |
|
| | void LC_ActionFactoryBase::createActionHandlerActions(QMap<QString, QAction *> &map, QActionGroup *group, const std::vector<ActionInfo> &actionList) const { |
| | for (const LC_ActionFactoryBase::ActionInfo &a: actionList){ |
| | createAction_AH(a.key, a.actionType, a.text, a.iconName,a.themeIconName, group, map); |
| | } |
| | } |
| |
|
| | void LC_ActionFactoryBase::createMainWindowActions(QMap<QString, QAction *> &map, QActionGroup *group, const std::vector<ActionInfo> &actionList, bool useToggled) const { |
| | for (const LC_ActionFactoryBase::ActionInfo &a: actionList){ |
| | createAction_MW(a.key, a.slotPtr, a.slotPtrBool, a.text, a.iconName, a.themeIconName, group, map, useToggled); |
| | } |
| | } |
| |
|
| | void LC_ActionFactoryBase::makeActionsShortcutsNonEditable(const QMap<QString, QAction *> &map, |
| | const std::vector<const char *> &actionNames) { |
| | for (auto name: actionNames){ |
| | if (map.contains(name)) { |
| | QAction* action = map[name]; |
| | if (action != nullptr){ |
| | action ->setProperty(LC_ShortcutInfo::PROPERTY_ACTION_SHORTCUT_CONFIGURABLE, false); |
| | } |
| | } |
| | } |
| | } |
| |
|
| | void LC_ActionFactoryBase::addActionsToMainWindow(const QMap<QString, QAction *> &map) const{ |
| | |
| | |
| | for (const auto &a: map) { |
| | m_appWin->addAction(a); |
| | } |
| | } |
| |
|
| | void LC_ActionFactoryBase::createActionGroups(const std::vector<ActionGroupInfo>& actionGroups,LC_ActionGroupManager* actionGroupManager) const { |
| | for (const ActionGroupInfo& groupInfo : actionGroups) { |
| | auto group = new LC_ActionGroup(actionGroupManager, groupInfo.name, groupInfo.title, groupInfo.description, groupInfo.iconName); |
| | actionGroupManager->addActionGroup(groupInfo.name, group, groupInfo.isToolGroup); |
| | } |
| | } |
| |
|
| | void LC_ActionFactoryBase::fillActionsList(QList<QAction *> &list, const std::vector<const char *> &actionNames, const QMap<QString, QAction*> &map) const { |
| | for (const char* actionName: actionNames){ |
| | if (map.contains(actionName)) { |
| | auto action = map.value(actionName); |
| | list << action; |
| | } |
| | } |
| | } |
| |
|