From fba74aaf5fb38582dfbfca35096513dc023cd350 Mon Sep 17 00:00:00 2001 From: IonutMuthi Date: Thu, 24 Apr 2025 11:01:47 +0300 Subject: [PATCH 1/3] IIOWidgets: added info icon Signed-off-by: IonutMuthi --- gui/include/gui/widgets/infoiconwidget.h | 46 +++++++++++++++ gui/res/icons/info.svg | 5 ++ gui/res/resources.qrc | 1 + gui/src/widgets/infoiconwidget.cpp | 56 +++++++++++++++++++ .../guistrategy/comboguistrategy.h | 3 + .../guistrategy/editableguistrategy.h | 3 + .../guistrategy/guistrategyinterface.h | 4 ++ .../include/iio-widgets/iiowidgetbuilder.h | 7 +++ .../include/iio-widgets/iiowidgetdata.h | 1 + .../src/guistrategy/comboguistrategy.cpp | 9 +++ .../src/guistrategy/editableguistrategy.cpp | 16 +++++- iio-widgets/src/iiowidgetbuilder.cpp | 8 +++ 12 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 gui/include/gui/widgets/infoiconwidget.h create mode 100644 gui/res/icons/info.svg create mode 100644 gui/src/widgets/infoiconwidget.cpp diff --git a/gui/include/gui/widgets/infoiconwidget.h b/gui/include/gui/widgets/infoiconwidget.h new file mode 100644 index 0000000000..ab7e6a4d3f --- /dev/null +++ b/gui/include/gui/widgets/infoiconwidget.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2025 Analog Devices Inc. + * + * This file is part of Scopy + * (see https://www.github.com/analogdevicesinc/scopy). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#ifndef INFOICONWIDGET_H +#define INFOICONWIDGET_H + +#include +#include +#include +#include + +namespace scopy { +class SCOPY_GUI_EXPORT InfoIconWidget : public QWidget +{ + Q_OBJECT +public: + explicit InfoIconWidget(QString infoMessage, QWidget *parent = nullptr); + + void setInfoMessage(QString infoMessage); + QString getInfoMessage(); + +private: + QVBoxLayout *m_layout; + QLabel *m_infoIcon; +}; +} // namespace scopy + +#endif // INFOICONWIDGET_H diff --git a/gui/res/icons/info.svg b/gui/res/icons/info.svg new file mode 100644 index 0000000000..0f5441b8f8 --- /dev/null +++ b/gui/res/icons/info.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/gui/res/resources.qrc b/gui/res/resources.qrc index ea983dc7d1..f5bb18704d 100644 --- a/gui/res/resources.qrc +++ b/gui/res/resources.qrc @@ -176,6 +176,7 @@ icons/circle_led.svg icons/device-shapes/square.svg icons/device-shapes/rounded_square.svg + icons/info.svg icons/scopy-default/icons/search.svg diff --git a/gui/src/widgets/infoiconwidget.cpp b/gui/src/widgets/infoiconwidget.cpp new file mode 100644 index 0000000000..a7fc8968dc --- /dev/null +++ b/gui/src/widgets/infoiconwidget.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2025 Analog Devices Inc. + * + * This file is part of Scopy + * (see https://www.github.com/analogdevicesinc/scopy). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "infoiconwidget.h" + +using namespace scopy; + +InfoIconWidget::InfoIconWidget(QString infoMessage, QWidget *parent) + : QWidget{parent} +{ + m_layout = new QVBoxLayout(this); + m_layout->setMargin(0); + m_layout->setSpacing(0); + this->setLayout(m_layout); + + m_infoIcon = new QLabel(this); + QPixmap pixmap(":/gui/icons/info.svg"); + m_infoIcon->setPixmap(pixmap); + m_layout->addWidget(m_infoIcon); + + m_infoIcon->setVisible(false); + + setInfoMessage(infoMessage); +} + +void InfoIconWidget::setInfoMessage(QString infoMessage) +{ + if(!infoMessage.isEmpty()) { + m_infoIcon->setVisible(true); + m_infoIcon->setToolTip(infoMessage); + } else { + m_infoIcon->setVisible(false); + } +} + +QString InfoIconWidget::getInfoMessage() { return m_infoIcon->toolTip(); } + +#include "moc_infoiconwidget.cpp" diff --git a/iio-widgets/include/iio-widgets/guistrategy/comboguistrategy.h b/iio-widgets/include/iio-widgets/guistrategy/comboguistrategy.h index 39a55dec4f..3697ec44a4 100644 --- a/iio-widgets/include/iio-widgets/guistrategy/comboguistrategy.h +++ b/iio-widgets/include/iio-widgets/guistrategy/comboguistrategy.h @@ -23,6 +23,7 @@ #include #include +#include #include #include "guistrategy/guistrategyinterface.h" #include "iiowidgetdata.h" @@ -48,6 +49,7 @@ class SCOPY_IIO_WIDGETS_EXPORT ComboAttrUi : public QObject, public GuiStrategyI bool isValid() final; void setCustomTitle(QString title) override; + void setInfoMessage(QString infoMessage); public Q_SLOTS: void receiveData(QString currentData, QString optionalData) override; @@ -62,6 +64,7 @@ public Q_SLOTS: QComboBox *m_comboWidget; bool m_isCompact; QLabel *m_title; + InfoIconWidget *m_infoIcon; MenuCombo *m_comboMenuWidget; }; } // namespace scopy diff --git a/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h b/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h index 55a2525a69..08399997cb 100644 --- a/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h +++ b/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h @@ -23,6 +23,7 @@ #include #include +#include #include "guistrategy/guistrategyinterface.h" #include #include "iiowidgetdata.h" @@ -49,6 +50,7 @@ class SCOPY_IIO_WIDGETS_EXPORT EditableGuiStrategy : public QObject, public GuiS bool isValid() override; void setCustomTitle(QString title) override; + void setInfoMessage(QString infoMessage); public Q_SLOTS: void receiveData(QString currentData, QString optionalData) override; @@ -63,6 +65,7 @@ public Q_SLOTS: MenuLineEdit *m_lineEdit; QString m_lastEmittedText; QLabel *m_title; + InfoIconWidget *m_infoIcon; }; } // namespace scopy diff --git a/iio-widgets/include/iio-widgets/guistrategy/guistrategyinterface.h b/iio-widgets/include/iio-widgets/guistrategy/guistrategyinterface.h index ba87312fed..add8c68f3b 100644 --- a/iio-widgets/include/iio-widgets/guistrategy/guistrategyinterface.h +++ b/iio-widgets/include/iio-widgets/guistrategy/guistrategyinterface.h @@ -50,6 +50,10 @@ class SCOPY_IIO_WIDGETS_EXPORT GuiStrategyInterface * */ virtual bool isValid() = 0; + /** + * @brief Allows user to set custom title + * @param title + * */ virtual void setCustomTitle(QString title) = 0; public Q_SLOTS: diff --git a/iio-widgets/include/iio-widgets/iiowidgetbuilder.h b/iio-widgets/include/iio-widgets/iiowidgetbuilder.h index af8246422c..9786c51804 100644 --- a/iio-widgets/include/iio-widgets/iiowidgetbuilder.h +++ b/iio-widgets/include/iio-widgets/iiowidgetbuilder.h @@ -178,6 +178,12 @@ class SCOPY_IIO_WIDGETS_EXPORT IIOWidgetBuilder : public QObject */ IIOWidgetBuilder &title(QString title); + /** + * @brief Sets a info message for the IIOWidget + * @param infoMessage + */ + IIOWidgetBuilder &infoMessage(QString infoMessage); + private: DataStrategyInterface *createDS(); GuiStrategyInterface *createUIS(); @@ -193,6 +199,7 @@ class SCOPY_IIO_WIDGETS_EXPORT IIOWidgetBuilder : public QObject QString m_optionsAttribute; QString m_optionsValues; QString m_title; + QString m_infoMessage; IIOWidgetBuilder::DS m_dataStrategy; IIOWidgetBuilder::UIS m_uiStrategy; QWidget *m_widgetParent; diff --git a/iio-widgets/include/iio-widgets/iiowidgetdata.h b/iio-widgets/include/iio-widgets/iiowidgetdata.h index 66685b0cb0..c5c15e6915 100644 --- a/iio-widgets/include/iio-widgets/iiowidgetdata.h +++ b/iio-widgets/include/iio-widgets/iiowidgetdata.h @@ -35,6 +35,7 @@ struct SCOPY_IIO_WIDGETS_EXPORT IIOWidgetFactoryRecipe QString data = ""; // the name of the 'main' attribute that will be changed in the iio channel QString iioDataOptions = ""; // the IIO attribute that describes what values can the attribute take QString constDataOptions = ""; // the set of constant data that will populate an entry (e.g. combo box, range) + QString infoMessage = ""; // the message that will show when the "i" icon is hovered }; #endif // SCOPY_IIOWIDGETDATA_H diff --git a/iio-widgets/src/guistrategy/comboguistrategy.cpp b/iio-widgets/src/guistrategy/comboguistrategy.cpp index 4d6012363e..c05989804c 100644 --- a/iio-widgets/src/guistrategy/comboguistrategy.cpp +++ b/iio-widgets/src/guistrategy/comboguistrategy.cpp @@ -37,12 +37,14 @@ ComboAttrUi::ComboAttrUi(IIOWidgetFactoryRecipe recipe, bool isCompact, QWidget m_ui->layout()->setContentsMargins(0, 0, 0, 0); m_title = new QLabel(recipe.data, m_ui); + m_infoIcon = new InfoIconWidget(recipe.infoMessage, m_ui); m_comboWidget = new QComboBox(m_ui); m_comboWidget->setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy::AdjustToContents); m_comboWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); m_ui->layout()->addWidget(m_title); + m_ui->layout()->addWidget(m_infoIcon); m_ui->layout()->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Preferred)); m_ui->layout()->addWidget(m_comboWidget); } else { @@ -86,6 +88,13 @@ void ComboAttrUi::setCustomTitle(QString title) } } +void ComboAttrUi::setInfoMessage(QString infoMessage) +{ + if(!m_isCompact) { + m_infoIcon->setInfoMessage(infoMessage); + } +} + void ComboAttrUi::receiveData(QString currentData, QString optionalData) { QSignalBlocker blocker(m_comboWidget); diff --git a/iio-widgets/src/guistrategy/editableguistrategy.cpp b/iio-widgets/src/guistrategy/editableguistrategy.cpp index 41786bd53a..6976a19157 100644 --- a/iio-widgets/src/guistrategy/editableguistrategy.cpp +++ b/iio-widgets/src/guistrategy/editableguistrategy.cpp @@ -30,6 +30,7 @@ EditableGuiStrategy::EditableGuiStrategy(IIOWidgetFactoryRecipe recipe, bool isC { m_recipe = recipe; m_title = new QLabel(recipe.data, m_ui); + m_infoIcon = new InfoIconWidget(recipe.infoMessage, m_ui); if(isCompact) { m_ui->setLayout(new QHBoxLayout(m_ui)); @@ -42,7 +43,18 @@ EditableGuiStrategy::EditableGuiStrategy(IIOWidgetFactoryRecipe recipe, bool isC Style::setStyle(m_lineEdit->edit(), style::properties::iiowidgets::lineEdit, true, true); m_lineEdit->edit()->setCursorPosition(0); m_ui->layout()->setContentsMargins(0, 0, 0, 0); - m_ui->layout()->addWidget(m_title); + + QHBoxLayout *titleLayout = new QHBoxLayout(); + titleLayout->setContentsMargins(0, 0, 0, 0); + titleLayout->setMargin(0); + titleLayout->setSpacing(5); + + titleLayout->addWidget(m_title); + titleLayout->addWidget(m_infoIcon); + titleLayout->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Preferred)); + + m_ui->layout()->addItem(titleLayout); + m_ui->layout()->addWidget(m_lineEdit); m_ui->layout()->setSpacing(0); @@ -71,6 +83,8 @@ bool EditableGuiStrategy::isValid() void EditableGuiStrategy::setCustomTitle(QString title) { m_title->setText(title); } +void EditableGuiStrategy::setInfoMessage(QString infoMessage) { m_infoIcon->setInfoMessage(infoMessage); } + void EditableGuiStrategy::receiveData(QString currentData, QString optionalData) { QSignalBlocker blocker(m_lineEdit); diff --git a/iio-widgets/src/iiowidgetbuilder.cpp b/iio-widgets/src/iiowidgetbuilder.cpp index 4a2215ac2f..c83bd0c93b 100644 --- a/iio-widgets/src/iiowidgetbuilder.cpp +++ b/iio-widgets/src/iiowidgetbuilder.cpp @@ -101,6 +101,8 @@ IIOWidget *IIOWidgetBuilder::buildSingle() .data = m_attribute, .iioDataOptions = m_optionsAttribute, .constDataOptions = m_optionsValues, + .infoMessage = m_infoMessage, + }; ds = createDS(); @@ -325,6 +327,12 @@ IIOWidgetBuilder &IIOWidgetBuilder::title(QString title) return *this; } +IIOWidgetBuilder &IIOWidgetBuilder::infoMessage(QString infoMessage) +{ + m_infoMessage = infoMessage; + return *this; +} + DataStrategyInterface *IIOWidgetBuilder::createDS() { DataStrategyInterface *ds = nullptr; From 25776a0a4ad71adc7d0568988970c3b4e0456f10 Mon Sep 17 00:00:00 2001 From: IonutMuthi Date: Thu, 24 Apr 2025 11:53:46 +0300 Subject: [PATCH 2/3] IIOWidget: apply text style for compact combobox Signed-off-by: IonutMuthi --- iio-widgets/src/guistrategy/comboguistrategy.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/iio-widgets/src/guistrategy/comboguistrategy.cpp b/iio-widgets/src/guistrategy/comboguistrategy.cpp index c05989804c..e20ce4f9e5 100644 --- a/iio-widgets/src/guistrategy/comboguistrategy.cpp +++ b/iio-widgets/src/guistrategy/comboguistrategy.cpp @@ -37,6 +37,7 @@ ComboAttrUi::ComboAttrUi(IIOWidgetFactoryRecipe recipe, bool isCompact, QWidget m_ui->layout()->setContentsMargins(0, 0, 0, 0); m_title = new QLabel(recipe.data, m_ui); + Style::setStyle(m_title, style::properties::label::subtle); m_infoIcon = new InfoIconWidget(recipe.infoMessage, m_ui); m_comboWidget = new QComboBox(m_ui); m_comboWidget->setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy::AdjustToContents); From 4011c70afb1aef9b1473ce10b89506460877fdcc Mon Sep 17 00:00:00 2001 From: IonutMuthi Date: Wed, 30 Apr 2025 10:59:11 +0300 Subject: [PATCH 3/3] iiowidgets: add info icon for iiowidgets Signed-off-by: IonutMuthi --- gui/include/gui/widgets/menucombo.h | 5 +++++ gui/include/gui/widgets/menuspinbox.h | 3 +++ gui/src/widgets/menucombo.cpp | 16 +++++++++++++++- gui/src/widgets/menuspinbox.cpp | 14 +++++++++++++- .../guistrategy/checkboxguistrategy.h | 2 ++ .../guistrategy/editableguistrategy.h | 2 +- .../iio-widgets/guistrategy/rangeguistrategy.h | 2 ++ .../src/guistrategy/checkboxguistrategy.cpp | 4 +++- iio-widgets/src/guistrategy/comboguistrategy.cpp | 3 +++ .../src/guistrategy/editableguistrategy.cpp | 2 -- iio-widgets/src/guistrategy/rangeguistrategy.cpp | 4 ++++ 11 files changed, 51 insertions(+), 6 deletions(-) diff --git a/gui/include/gui/widgets/menucombo.h b/gui/include/gui/widgets/menucombo.h index eb462fd8fb..dbf6fcfa37 100644 --- a/gui/include/gui/widgets/menucombo.h +++ b/gui/include/gui/widgets/menucombo.h @@ -22,6 +22,8 @@ #ifndef MENUCOMBO_H #define MENUCOMBO_H +#include "infoiconwidget.h" + #include #include #include @@ -45,9 +47,11 @@ class SCOPY_GUI_EXPORT MenuCombo : public QWidget QString title() const; void setTitle(const QString &newTitle); + void setInfoMessage(QString infoMessage); private: QLabel *m_label; + InfoIconWidget *m_infoIcon; QComboBox *m_combo; MouseWheelWidgetGuard *m_mouseWheelGuard; }; @@ -64,6 +68,7 @@ class SCOPY_GUI_EXPORT MenuComboWidget : public QWidget QString title() const; void setTitle(const QString &newTitle); + void setInfoMessage(QString infoMessage); private: MenuCombo *m_combo; diff --git a/gui/include/gui/widgets/menuspinbox.h b/gui/include/gui/widgets/menuspinbox.h index 3d3fa1a9b1..2bbed6e4b7 100644 --- a/gui/include/gui/widgets/menuspinbox.h +++ b/gui/include/gui/widgets/menuspinbox.h @@ -33,6 +33,7 @@ #include #include #include +#include namespace scopy { namespace gui { @@ -161,6 +162,7 @@ class SCOPY_GUI_EXPORT MenuSpinbox : public QWidget public Q_SLOTS: void setName(const QString &newName); + void setInfoMessage(QString infoMessage); void setUnit(const QString &newUnit); void setMinValue(double); void setMaxValue(double); @@ -186,6 +188,7 @@ private Q_SLOTS: double clamp(double val, double min, double max); QLabel *m_label; + InfoIconWidget *m_infoIcon; QLineEdit *m_edit; QComboBox *m_scaleCb; QPushButton *m_plus; diff --git a/gui/src/widgets/menucombo.cpp b/gui/src/widgets/menucombo.cpp index b8449a8e07..110252df34 100644 --- a/gui/src/widgets/menucombo.cpp +++ b/gui/src/widgets/menucombo.cpp @@ -49,6 +49,8 @@ QString MenuComboWidget::title() const { return m_combo->title(); } void MenuComboWidget::setTitle(const QString &newTitle) { m_combo->setTitle(newTitle); } +void MenuComboWidget::setInfoMessage(QString infoMessage) { m_combo->setInfoMessage(infoMessage); } + MenuCombo::MenuCombo(QString title, QWidget *parent) : QWidget(parent) { @@ -63,9 +65,19 @@ MenuCombo::MenuCombo(QString title, QWidget *parent) m_label = new QLabel(title, this); Style::setStyle(m_label, style::properties::label::subtle); + m_infoIcon = new InfoIconWidget("", parent); + m_combo = new QComboBox(this); - lay->addWidget(m_label); + QHBoxLayout *labelLayout = new QHBoxLayout(); + labelLayout->setContentsMargins(0, 0, 0, 0); + labelLayout->setSpacing(5); + + labelLayout->addWidget(m_label); + labelLayout->addWidget(m_infoIcon); + labelLayout->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Preferred)); + + lay->addLayout(labelLayout); lay->addWidget(m_combo); m_mouseWheelGuard->installEventRecursively(this); } @@ -77,4 +89,6 @@ QString MenuCombo::title() const { return m_label->text(); } void MenuCombo::setTitle(const QString &newTitle) { m_label->setText(newTitle); } +void MenuCombo::setInfoMessage(QString infoMessage) { m_infoIcon->setInfoMessage(infoMessage); } + #include "moc_menucombo.cpp" diff --git a/gui/src/widgets/menuspinbox.cpp b/gui/src/widgets/menuspinbox.cpp index a5a27eb361..e03b219e97 100644 --- a/gui/src/widgets/menuspinbox.cpp +++ b/gui/src/widgets/menuspinbox.cpp @@ -34,6 +34,8 @@ MenuSpinbox::MenuSpinbox(QString name, double val, QString unit, double min, dou m_label = new QLabel(name, parent); Style::setStyle(m_label, style::properties::label::subtle); + m_infoIcon = new InfoIconWidget("", parent); + m_edit = new QLineEdit("0", parent); m_scaleCb = new QComboBox(parent); m_plus = new QPushButton("", parent); @@ -110,7 +112,14 @@ void MenuSpinbox::layoutVertically(bool left) btnLay->addWidget(m_plus); btnLay->addWidget(m_minus); - editLay->addWidget(m_label); + QHBoxLayout *labelLayout = new QHBoxLayout(); + labelLayout->setContentsMargins(0, 0, 0, 0); + labelLayout->setSpacing(2); + labelLayout->addWidget(m_label); + labelLayout->addWidget(m_infoIcon); + labelLayout->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Preferred)); + + editLay->addItem(labelLayout); editLay->addWidget(m_edit); editLay->addWidget(m_scaleCb); @@ -170,6 +179,7 @@ void MenuSpinbox::layoutHorizontally(bool left) btnLay->addWidget(m_plus); editLay->addWidget(m_label); + editLay->addWidget(m_infoIcon); editLay->addWidget(m_edit); editLay->addWidget(m_scaleCb); @@ -376,6 +386,8 @@ void MenuSpinbox::setName(const QString &newName) Q_EMIT nameChanged(newName); } +void MenuSpinbox::setInfoMessage(QString infoMessage) { m_infoIcon->setInfoMessage(infoMessage); } + double MenuSpinbox::getScaleForPrefix(QString prefix, Qt::CaseSensitivity s) { for(int i = 0; i < m_scales.count(); i++) { diff --git a/iio-widgets/include/iio-widgets/guistrategy/checkboxguistrategy.h b/iio-widgets/include/iio-widgets/guistrategy/checkboxguistrategy.h index c6618d827f..d7f128afbe 100644 --- a/iio-widgets/include/iio-widgets/guistrategy/checkboxguistrategy.h +++ b/iio-widgets/include/iio-widgets/guistrategy/checkboxguistrategy.h @@ -48,6 +48,7 @@ class SCOPY_IIO_WIDGETS_EXPORT CheckBoxAttrUi : public QObject, public GuiStrate bool isValid() final; void setCustomTitle(QString title) override; + void setInfoMessage(QString infoMessage) { m_infoIcon->setInfoMessage(infoMessage); } public Q_SLOTS: void receiveData(QString currentData, QString optionalData) override; @@ -62,6 +63,7 @@ public Q_SLOTS: MenuOnOffSwitch *m_menuOnOffSwitch; bool m_isCompact; QLabel *m_title; + InfoIconWidget *m_infoIcon; }; } // namespace scopy diff --git a/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h b/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h index 08399997cb..11506fbc28 100644 --- a/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h +++ b/iio-widgets/include/iio-widgets/guistrategy/editableguistrategy.h @@ -50,7 +50,7 @@ class SCOPY_IIO_WIDGETS_EXPORT EditableGuiStrategy : public QObject, public GuiS bool isValid() override; void setCustomTitle(QString title) override; - void setInfoMessage(QString infoMessage); + void setInfoMessage(QString infoMessage) { m_infoIcon->setInfoMessage(infoMessage); } public Q_SLOTS: void receiveData(QString currentData, QString optionalData) override; diff --git a/iio-widgets/include/iio-widgets/guistrategy/rangeguistrategy.h b/iio-widgets/include/iio-widgets/guistrategy/rangeguistrategy.h index 7370507a16..c10be8dd08 100644 --- a/iio-widgets/include/iio-widgets/guistrategy/rangeguistrategy.h +++ b/iio-widgets/include/iio-widgets/guistrategy/rangeguistrategy.h @@ -52,6 +52,8 @@ class SCOPY_IIO_WIDGETS_EXPORT RangeAttrUi : public QObject, public GuiStrategyI void setCustomTitle(QString title) override; + void setInfoMessage(QString infoMessage); + public Q_SLOTS: void receiveData(QString currentData, QString optionalData) override; diff --git a/iio-widgets/src/guistrategy/checkboxguistrategy.cpp b/iio-widgets/src/guistrategy/checkboxguistrategy.cpp index bcc6a0f8d2..7bb43792f7 100644 --- a/iio-widgets/src/guistrategy/checkboxguistrategy.cpp +++ b/iio-widgets/src/guistrategy/checkboxguistrategy.cpp @@ -39,10 +39,12 @@ CheckBoxAttrUi::CheckBoxAttrUi(IIOWidgetFactoryRecipe recipe, bool isCompact, QW if(!m_isCompact) { m_title = new QLabel(recipe.data, m_ui); m_title->setWordWrap(true); - m_title->setFixedWidth(m_menuOnOffSwitch->width()); Style::setStyle(m_title, style::properties::label::subtle); m_ui->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); m_ui->layout()->addWidget(m_title); + + m_infoIcon = new InfoIconWidget(recipe.infoMessage, m_ui); + m_ui->layout()->addWidget(m_infoIcon); } m_ui->layout()->addWidget(m_menuOnOffSwitch); diff --git a/iio-widgets/src/guistrategy/comboguistrategy.cpp b/iio-widgets/src/guistrategy/comboguistrategy.cpp index e20ce4f9e5..bf64bb6a19 100644 --- a/iio-widgets/src/guistrategy/comboguistrategy.cpp +++ b/iio-widgets/src/guistrategy/comboguistrategy.cpp @@ -54,6 +54,7 @@ ComboAttrUi::ComboAttrUi(IIOWidgetFactoryRecipe recipe, bool isCompact, QWidget m_comboMenuWidget = new MenuCombo(recipe.data, m_ui); m_comboWidget = m_comboMenuWidget->combo(); + m_comboMenuWidget->setInfoMessage(recipe.infoMessage); m_ui->layout()->addWidget(m_comboMenuWidget); } @@ -93,6 +94,8 @@ void ComboAttrUi::setInfoMessage(QString infoMessage) { if(!m_isCompact) { m_infoIcon->setInfoMessage(infoMessage); + } else { + m_comboMenuWidget->setInfoMessage(infoMessage); } } diff --git a/iio-widgets/src/guistrategy/editableguistrategy.cpp b/iio-widgets/src/guistrategy/editableguistrategy.cpp index 6976a19157..58fe182d8d 100644 --- a/iio-widgets/src/guistrategy/editableguistrategy.cpp +++ b/iio-widgets/src/guistrategy/editableguistrategy.cpp @@ -83,8 +83,6 @@ bool EditableGuiStrategy::isValid() void EditableGuiStrategy::setCustomTitle(QString title) { m_title->setText(title); } -void EditableGuiStrategy::setInfoMessage(QString infoMessage) { m_infoIcon->setInfoMessage(infoMessage); } - void EditableGuiStrategy::receiveData(QString currentData, QString optionalData) { QSignalBlocker blocker(m_lineEdit); diff --git a/iio-widgets/src/guistrategy/rangeguistrategy.cpp b/iio-widgets/src/guistrategy/rangeguistrategy.cpp index bfce1c745a..4ab0c41864 100644 --- a/iio-widgets/src/guistrategy/rangeguistrategy.cpp +++ b/iio-widgets/src/guistrategy/rangeguistrategy.cpp @@ -44,6 +44,8 @@ RangeAttrUi::RangeAttrUi(IIOWidgetFactoryRecipe recipe, bool isCompact, QWidget m_spinBox->setScalingEnabled(false); m_ui->layout()->addWidget(m_spinBox); + setInfoMessage(recipe.infoMessage); + connect(m_spinBox, &gui::MenuSpinbox::valueChanged, this, [&](double value) { Q_EMIT emitData(Util::doubleToQString(value)); }); Q_EMIT requestData(); @@ -64,6 +66,8 @@ bool RangeAttrUi::isValid() void RangeAttrUi::setCustomTitle(QString title) { m_spinBox->setName(title); } +void RangeAttrUi::setInfoMessage(QString infoMessage) { m_spinBox->setInfoMessage(infoMessage); } + void RangeAttrUi::receiveData(QString currentData, QString optionalData) { QSignalBlocker blocker(m_spinBox);