Skip to content

Commit

Permalink
adc: create common channel attributes iio-widgets - wip
Browse files Browse the repository at this point in the history
Signed-off-by: Adrian Suciu <[email protected]>
  • Loading branch information
adisuciu committed Aug 21, 2024
1 parent 50785c7 commit 32d9fe0
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
67 changes: 67 additions & 0 deletions plugins/adc/src/grdevicecomponent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,69 @@ GRDeviceComponent::GRDeviceComponent(GRIIODeviceSourceNode *node, QWidget *paren
createMenuControlButton();
}

QWidget *GRDeviceComponent::createChCommonAttrMenu(QWidget *parent) {
const struct iio_device *dev = m_src->iioDev();

QList<IIOWidget *> attrWidgets;
const struct iio_context *ctx = iio_device_get_context(dev);

int chCount = iio_device_get_channels_count(dev);
if(chCount < 2) {
return nullptr;
}

const struct iio_channel *ch = iio_device_get_channel(dev,0);

int attrCount = iio_channel_get_attrs_count(ch);

for(int i = 0; i < attrCount;i++) {
bool createAttr = true;
const char *attrName = iio_channel_get_attr(ch,i);
for(int j = 1; j < chCount; j++) {
const struct iio_channel *ch1 = iio_device_get_channel(dev,j);
const char *attr1Name = iio_channel_find_attr(ch1,attrName);
if(strcmp(attrName,attr1Name) != 0) {
createAttr = false;
break;
}
}
if(createAttr) {
qInfo()<<"common "<<attrName;
/*IIOWidget *w = IIOWidgetBuilder().context(const_cast<iio_context *>(ctx))
.device(const_cast<iio_device*>(dev))
.channel(const_cast<iio_channel*>(ch))
createMultiDataStrategy
Add rest of data strategies
attrWidgets.append(w);
*/

}
}


if(attrWidgets.count() == 0) {
return nullptr;
}

MenuSectionCollapseWidget *attr =
new MenuSectionCollapseWidget("COMMON CHANNEL ATTRIBUTES", MenuCollapseSection::MHCW_NONE, parent);


auto layout = new QVBoxLayout();
layout->setSpacing(10);
layout->setContentsMargins(0, 0, 0, 10); // bottom margin
layout->setMargin(0);

for(auto w : attrWidgets) {
layout->addWidget(w);
}

attr->contentLayout()->addLayout(layout);
attr->setCollapsed(true);
return attr;
}

QWidget *GRDeviceComponent::createAttrMenu(QWidget *parent)
{
MenuSectionCollapseWidget *attr =
Expand Down Expand Up @@ -83,10 +146,14 @@ QWidget *GRDeviceComponent::createMenu(QWidget *parent)

MenuHeaderWidget *header = new MenuHeaderWidget(name, m_pen, w);
QWidget *attrMenu = createAttrMenu(w);
QWidget *chcommonattrMenu = createChCommonAttrMenu(w);

lay->addWidget(header);
lay->addWidget(scroll);
layScroll->addWidget(attrMenu);
if(chcommonattrMenu) {
layScroll->addWidget(chcommonattrMenu);
}

layScroll->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
return w;
Expand Down
1 change: 1 addition & 0 deletions plugins/adc/src/grdevicecomponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public Q_SLOTS:
CollapsableMenuControlButton *m_ctrl;
QPen m_pen;
// QList<GRTimeChannelAddon *> m_channels;
QWidget *createChCommonAttrMenu(QWidget *parent);
QWidget *createAttrMenu(QWidget *parent);
QWidget *createMenu(QWidget *parent = nullptr);
void createMenuControlButton(QWidget * = nullptr);
Expand Down

0 comments on commit 32d9fe0

Please sign in to comment.