Skip to content
Snippets Groups Projects
SkillDetailsGroupBox.h 1.88 KiB
#ifndef SKILLDETAILGROUPBOX_H
#define SKILLDETAILGROUPBOX_H

#include <QGroupBox>
#include <QPushButton>
#include <QSplitter>
#include <QVBoxLayout>

#include "RobotAPI/libraries/skills_gui/aron_tree_widget/AronTreeWidgetController.h"
#include "RobotAPI/libraries/skills_gui/aron_tree_widget/widgets/SkillDescriptionWidget.h"

#include "../aron_tree_widget/widgets/SkillDescriptionWidget.h"
#include "../memory/MemoryCommunicatorBase.h"
#include "ProfileMenuWidget.h"
#include "SkillDetailsTreeWidget.h"

namespace armarx::skills::gui
{
    class SkillDetailGroupBox : public QGroupBox, public MemoryCommunicatorBase
    {
        Q_OBJECT
    public:
        static const constexpr char* EXECUTE_SKILL_BUTTON_TEXT = " Request Execution";
        static const constexpr char* GROUP_BOX_TITLE = "Skill Description";

        SkillDetailGroupBox(std::shared_ptr<SkillManagerWrapper> _memory,
                            QWidget* parent = nullptr) :
            QGroupBox(parent), MemoryCommunicatorBase(_memory)
        {
            setupUi();
        }

    signals:
        void disconnectGui();

    public slots:
        /**
         * @brief Notify subwidgets of an updated skill selection.
         * @param skillId
         */
        void updateSkillDetails(skills::SkillID& skillId);

        void connectGui(std::string observerName);

    private slots:
        void handleExecutionRequest();
        void resizeEvent(QResizeEvent* event) override;

    private:
        void setupUi();
        void connectSignals();

        QVBoxLayout* layout = nullptr;
        QSplitter* splitter = nullptr;
        QPushButton* executeSkillButton = nullptr;
        SkillDetailsTreeWidget* skillDetailsTreeWidget = nullptr;
        SkillDescriptionWidget* skillDescriptionWidget = nullptr;

        ProfileMenuWidget* profileMenuWidget = nullptr;
    };
} // namespace armarx::skills::gui

#endif // SKILLDETAILGROUPBOX_H