From 186d2f17373877ab8ed62d1f3ad5d2db907f5146 Mon Sep 17 00:00:00 2001 From: Christoph Pohl <christoph.pohl@kit.edu> Date: Fri, 24 May 2024 10:22:24 +0200 Subject: [PATCH] remove comboboxbutton --- .../ScenarioManager/CMakeLists.txt | 4 +- .../ScenarioManagerWidgetController.cpp | 2 +- .../controller/ScenarioListController.cpp | 9 +- .../ScenarioManager/gui/buttondelegate.cpp | 99 +------------------ .../ScenarioManager/gui/buttondelegate.h | 4 - .../ScenarioManager/gui/comboboxbutton.cpp | 77 --------------- .../ScenarioManager/gui/comboboxbutton.h | 32 ------ .../ScenarioManager/gui/scenariolistview.cpp | 8 -- .../ScenarioManager/gui/scenariolistview.h | 1 - 9 files changed, 9 insertions(+), 227 deletions(-) delete mode 100644 source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.cpp delete mode 100644 source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.h diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/CMakeLists.txt b/source/ArmarXGui/gui-plugins/ScenarioManager/CMakeLists.txt index 7d5bf44f..4608ef1a 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/CMakeLists.txt +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/CMakeLists.txt @@ -17,9 +17,8 @@ set(SOURCES ./gui/OptionalPropertyManager.cpp ./gui/OptionalPropertyFactory.cpp ./gui/OptionalEdit.cpp -./gui/comboboxbutton.cpp -./controller/openscenariocontroller.cpp + ./controller/openscenariocontroller.cpp ./controller/ApplicationDatabaseController.cpp ./controller/SettingsController.cpp ./controller/DetailedApplicationController.cpp ./controller/ScenarioListController.cpp ) @@ -34,7 +33,6 @@ set (MOC_HEADERS ./gui/settingsview.h ./gui/treemodel.h ./gui/createpropertyview.h - ./gui/comboboxbutton.h ./controller/ApplicationDatabaseController.h ./controller/SettingsController.h ./controller/DetailedApplicationController.h diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp index ec954128..e8837039 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/ScenarioManagerWidgetController.cpp @@ -394,7 +394,7 @@ ScenarioManagerWidgetController::reparsePackages() QStringList openedScenarios = settings.value("scenarios").toStringList(); // remove duplicates - openedScenarios = openedScenarios.toSet().toList(); + openedScenarios = openedScenarios.toSet().values(); StringList openedList; for (const QString& it : openedScenarios) diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp index 379b60f2..24da4930 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp @@ -679,7 +679,7 @@ QModelIndex ScenarioListController::findApplicationModelIndex(ScenarioManager::D return QModelIndex(); } int count = 0; - QModelIndex appIndex = subScenarioModelIndex.child(0, 0); + QModelIndex appIndex = subScenarioModelIndex.model()->index(0, 0); while (true) { appIndex = appIndex.sibling(count, 0); @@ -732,7 +732,7 @@ QModelIndex ScenarioListController::findSubScenarioModelIndex(std::string scenar count = 0; while (true) { - QModelIndex currentSubPackageIndex = scenarioIndex.child(count, 0); + QModelIndex currentSubPackageIndex = scenarioIndex.model()->index(count, 0); if (!currentSubPackageIndex.isValid()) { return QModelIndex(); @@ -752,7 +752,7 @@ QModelIndex ScenarioListController::findSubScenarioModelIndexByScenarioIndex(QMo int count = 0; while (true) { - QModelIndex currentSubPackageIndex = scenarioIndex.child(count, 0); + QModelIndex currentSubPackageIndex = scenarioIndex.model()->index(count, 0); if (packageName == currentSubPackageIndex.data().toString().toStdString()) { return currentSubPackageIndex; @@ -809,9 +809,6 @@ void ScenarioListController::fetchStati() bool ScenarioListController::StartScenario(ScenarioPtr scenario, ExecutorPtr executor, IceGrid::AdminPrx iceAdmin) { - StatusManager statusManager; - StopStrategyFactory stopStrategyFactory; - // Make sure all required data files are generated when launching scenario const ApplicationInstanceVectorPtr applications = scenario->getApplications(); ARMARX_CHECK_NOT_NULL(applications); diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.cpp index d55d38c0..527744ec 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.cpp @@ -27,7 +27,6 @@ #include "filterabletreemodelsortfilterproxymodel.h" #include "treeitem.h" -#include "comboboxbutton.h" #include "scenarioitem.h" #include <ArmarXCore/util/ScenarioManagerCommon/parser/StatusManager.h> #include <ArmarXCore/core/logging/Logging.h> @@ -48,84 +47,14 @@ ButtonDelegate::ButtonDelegate(QWidget* parent) : QStyledItemDelegate(parent), { } -QWidget* ButtonDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const -{ - // Create the combobox and populate it - auto model = index.model(); - ARMARX_CHECK_EXPRESSION(model); - ComboBoxButton* cb = new ComboBoxButton(model, index.model()->index(index.row(), 0).data().toString(), parent); - cb->setFrame(true); - int size = appIconSize; - //int row = index.row(); - if (!index.parent().isValid()) - { - size = scenarioIconSize; - } -// if (index.data().toString().compare("Start") == 0) -// { -// cb->addItem(startPixmap, "Start"); -// cb->setIconSize(QSize(size, size)); -// cb->setToolTip("Start"); -// } -// else if (index.data().toString().compare("Stop") == 0) -// { -// cb->addItem(stopPixmap, "Stop"); -// cb->setIconSize(QSize(size, size)); -// cb->setToolTip("Stop"); -// } -// else if (index.data().toString().compare("Restart") == 0) -// { -// cb->addItem(restartPixmap, "Restart"); -// cb->setIconSize(QSize(size, size)); -// cb->setToolTip("Restart"); -// } -// else -// { -// cb->addItem(index.data().toString()); -// } - - if (index.data().toString().compare("HIDE") == 0) - { - const_cast<ButtonDelegate*>(this)->buttonStates[index] = 0; - cb->setVisible(false); - } - - QObject::connect(cb, SIGNAL(released(QString, const QAbstractItemModel*, QString)), this, - SLOT(onComboBoxRelease(QString, const QAbstractItemModel*, QString))); - - return cb; -} - void ButtonDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const { - if (QComboBox* cb = qobject_cast<QComboBox*>(editor)) - { - // get the index of the text in the combobox that matches the current value of the item - QString currentText = index.data(Qt::EditRole).toString(); - int cbIndex = cb->findText(currentText); - // if it is valid, adjust the combobox - if (cbIndex >= 0) - { - cb->setCurrentIndex(cbIndex); - } - } - else - { - QStyledItemDelegate::setEditorData(editor, index); - } + QStyledItemDelegate::setEditorData(editor, index); } void ButtonDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const { - if (ComboBoxButton* cb = qobject_cast<ComboBoxButton*>(editor)) - { - model->setData(index, cb->currentText(), Qt::EditRole); - // cb->setScenarioIndex(index); - } - else - { - QStyledItemDelegate::setModelData(editor, model, index); - } + QStyledItemDelegate::setModelData(editor, model, index); } void ButtonDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const @@ -164,7 +93,7 @@ void ButtonDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option if (index.data().toString().compare("HIDE") == 0) { - const_cast<ButtonDelegate*>(this)->buttonStates[index] = 0; + const_cast<ButtonDelegate*>(this)->buttonStates[index] = {}; return; } @@ -179,17 +108,6 @@ void ButtonDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option } QApplication::style()->drawControl(QStyle::CE_PushButton, &button, painter, 0); - - //Draw 'Combobox' arrow if it is an Scenario Button - // if (!index.parent().isValid()) - // { - // QStyleOptionHeader arrow; - // arrow.iconAlignment = Qt::AlignRight; - // arrow.rect = option.rect; - // arrow.rect.setLeft(arrow.rect.left() + arrow.rect.width() * 0.7); - // arrow.state = QStyle::State_DownArrow; - // QApplication::style()->drawPrimitive(QStyle::PE_IndicatorHeaderArrow, &arrow, painter); - // } } bool ButtonDelegate::editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) @@ -246,13 +164,4 @@ QSize ButtonDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelI } return QSize(option.rect.width(), option.rect.height() + size + 6); //QItemDelegate::sizeHint(option,index); -} - -void ButtonDelegate::onComboBoxRelease(QString text, const QAbstractItemModel* model, const QString& scenarioName) -{ - // find current row of scenario (might have changed due to reordering or insertion) - int currentScenarioIndex = ScenarioModel::FindScenarioIndex(model, scenarioName); - ARMARX_CHECK_GREATER(currentScenarioIndex, -1); - auto index = model->index(currentScenarioIndex, 1); - emit comboBoxButtonClicked(currentScenarioIndex, index.column(), index.parent(), text); -} +} \ No newline at end of file diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.h b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.h index d7708b22..4c3f3ac3 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.h +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/buttondelegate.h @@ -46,7 +46,6 @@ public: */ ButtonDelegate(QWidget* parent = 0); - virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const; virtual void setEditorData(QWidget* editor, const QModelIndex& index) const; virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const; @@ -74,13 +73,10 @@ public: signals: void buttonClicked(int row, int column, QModelIndex parent); - void comboBoxButtonClicked(int row, int column, QModelIndex parent, QString text); protected: bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) override; -private slots: - void onComboBoxRelease(QString text, const QAbstractItemModel* model, const QString& scenarioName); private: std::map<const QModelIndex, QFlags<QStyle::StateFlag>> buttonStates; diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.cpp deleted file mode 100644 index ddffe8ed..00000000 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "comboboxbutton.h" -#include "scenariomodel.h" -#include <QMouseEvent> -#include <QStylePainter> -#include <ArmarXCore/core/logging/Logging.h> -#include <ArmarXCore/core/exceptions/local/ExpressionException.h> -#include <ArmarXCore/util/ScenarioManagerCommon/parser/StatusManager.h> -#include <ArmarXGui/gui-plugins/ScenarioManager/gui/scenarioitem.h> - - -ComboBoxButton::ComboBoxButton(const QAbstractItemModel* model, const QString& scenarioName, QWidget* parent) : - QComboBox(parent), model(model), buttonPress(false), scenarioName(scenarioName) -{ -} - -ComboBoxButton::~ComboBoxButton() -{ -} - - -void ComboBoxButton::setIceStatesActive(bool active) -{ - if (active) - { - QObject::connect(this, SIGNAL(currentIndexChanged(QString)), this, SLOT(onIndexChange(QString))); - } - else - { - QObject::disconnect(this, SIGNAL(currentIndexChanged(QString)), this, SLOT(onIndexChange(QString))); - } -} - -void ComboBoxButton::paintEvent(QPaintEvent* e) -{ - if (buttonPress) - { - QStylePainter painter(this); - QStyleOptionComboBox opt; - opt.rect = e->rect(); - opt.currentIcon = itemIcon(currentIndex()); - opt.currentText = currentText(); - opt.iconSize = iconSize(); - opt.state |= QStyle::State_Sunken; - painter.drawComplexControl(QStyle::CC_ComboBox, opt); - painter.drawControl(QStyle::CE_ComboBoxLabel, opt); - } - else - { - QComboBox::paintEvent(e); - } -} - - -void ComboBoxButton::mousePressEvent(QMouseEvent* e) -{ - if (e->x() < this->width() - 20) - { - buttonPress = true; - } - else - { - QComboBox::mousePressEvent(e); - } -} - -void ComboBoxButton::mouseReleaseEvent(QMouseEvent* e) -{ - if (e->x() < this->width() - 20) - { - emit released(this->currentText(), model, scenarioName); - } - else - { - QComboBox::mouseReleaseEvent(e); - } - buttonPress = false; -} diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.h b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.h deleted file mode 100644 index 378faa20..00000000 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/comboboxbutton.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef COMBOBOXBUTTON_H -#define COMBOBOXBUTTON_H - - -#include <QComboBox> - -class ComboBoxButton : public QComboBox -{ - Q_OBJECT - -public: - explicit ComboBoxButton(const QAbstractItemModel* model, const QString& scenarioName, QWidget* parent = 0); - ~ComboBoxButton(); - void setIceStatesActive(bool active); - -signals: - void released(QString, const QAbstractItemModel*, QString); - - -protected: - virtual void mouseReleaseEvent(QMouseEvent* e); - virtual void mousePressEvent(QMouseEvent* e); - virtual void paintEvent(QPaintEvent* e); - - -private: - const QAbstractItemModel* model; - bool buttonPress; - QString scenarioName; -}; - -#endif // COMBOBOXBUTTON_H diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.cpp index cb4ce428..fc2c07ba 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.cpp +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.cpp @@ -27,7 +27,6 @@ #include <ArmarXGui/gui-plugins/ScenarioManager/gui/ui_scenariolistview.h> #include "scenarioitem.h" #include "treeitem.h" -#include "comboboxbutton.h" #include <ArmarXCore/core/logging/Logging.h> @@ -69,8 +68,6 @@ ScenarioListView::ScenarioListView(QWidget* parent) : QObject::connect(&removeAction, SIGNAL(triggered()), this, SLOT(removeItemTriggered())); - QObject::connect(&startButtonDelegate, SIGNAL(comboBoxButtonClicked(int, int, QModelIndex, QString)), - this, SLOT(startComboBoxClicked(int, int, QModelIndex, QString))); QObject::connect(&startButtonDelegate, SIGNAL(buttonClicked(int, int, QModelIndex)), this, SLOT(startButtonClicked(int, int, QModelIndex))); @@ -105,11 +102,6 @@ void ScenarioListView::on_searchBar_textEdited(const QString& text) ui->treeView->expandAll(); } -void ScenarioListView::startComboBoxClicked(int row, int column, QModelIndex parent, QString text) -{ - emit startApplication(row, column, parent); -} - void ScenarioListView::startButtonClicked(int row, int column, QModelIndex parent) { emit startApplication(row, column, parent); diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.h b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.h index b3d15c12..ff1195a6 100644 --- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.h +++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/scenariolistview.h @@ -80,7 +80,6 @@ public slots: private slots: void on_searchBar_textEdited(const QString& text); - void startComboBoxClicked(int row, int column, QModelIndex parent, QString text); void startButtonClicked(int row, int column, QModelIndex parent); void stopButtonClicked(int row, int column, QModelIndex parent); -- GitLab