Added better filtration when scanning remotes, only update the affected protocols. Closes #88
This commit is contained in:
parent
8e377a12bc
commit
2d17564de3
5 changed files with 45 additions and 3 deletions
|
@ -21,3 +21,17 @@ DeviceSetting::DeviceSetting(Device *device, QWidget *parent)
|
|||
DeviceSetting::~DeviceSetting()
|
||||
{
|
||||
}
|
||||
|
||||
void DeviceSetting::addProtocolMatch( const QString &protocol, const QString &model ){
|
||||
QString protocolmodel; //concat to one string
|
||||
protocolmodel.append(protocol).append(model);
|
||||
acceptedProtocolModel << protocolmodel;
|
||||
}
|
||||
|
||||
void DeviceSetting::setProtocolValue( const QString &name, const QString &value, const QString &protocol, const QString &model ){
|
||||
QString protocolmodel; //concat to one string
|
||||
protocolmodel.append(protocol).append(model);
|
||||
if(acceptedProtocolModel.contains(protocolmodel)){ //protocol not set yet, or equal
|
||||
this->setValue(name, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,10 +29,18 @@ public:
|
|||
|
||||
public slots:
|
||||
virtual void saveParameters() = 0;
|
||||
void addProtocolMatch( const QString &protocol, const QString &model );
|
||||
|
||||
private slots:
|
||||
void setProtocolValue( const QString &name, const QString &value, const QString &protocol, const QString &model );
|
||||
virtual void setValue( const QString &name, const QString &value ) = 0;
|
||||
|
||||
protected:
|
||||
Device *p_device;
|
||||
|
||||
private:
|
||||
QList<QString> acceptedProtocolModel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -173,10 +173,30 @@ EditDeviceDialog::EditDeviceDialog(Device *device, QWidget *parent, Qt::WFlags f
|
|||
((DeviceSettingArctechSelflearning *)d->deviceSettings[9])->setUnitMinMax(1,15);
|
||||
|
||||
foreach( DeviceSetting *s, d->deviceSettings ) {
|
||||
connect(d->filteredModel, SIGNAL(setParameter(const QString&, const QString&)), s, SLOT(setValue(const QString&, const QString&)));
|
||||
connect(d->filteredModel, SIGNAL(setParameter(const QString&, const QString&, const QString&, const QString&)), s, SLOT(setProtocolValue(const QString&, const QString&, const QString&, const QString&)));
|
||||
d->settingsLayout->addWidget( s );
|
||||
}
|
||||
|
||||
for (int i=0; i<d->model->rowCount(QModelIndex()); ++i){
|
||||
QModelIndex index = d->model->index(i, 0, QModelIndex());
|
||||
VendorDeviceTreeItem *typeitem = d->model->item(index);
|
||||
|
||||
for(int j=0; j<typeitem->childCount(); ++j){
|
||||
VendorDeviceTreeItem *branditem = typeitem->child(j); //d->model->item(index);
|
||||
|
||||
for(int k=0; k<branditem->childCount(); ++k){
|
||||
VendorDeviceTreeItem *deviceitem = branditem->child(k); //d->model->item(index);
|
||||
|
||||
int widget = deviceitem->widget();
|
||||
QString strModel = deviceitem->deviceModel().section(':', 0, 0);
|
||||
if (strModel.startsWith("selflearning-")) {
|
||||
strModel = "selflearning";
|
||||
}
|
||||
d->deviceSettings[widget]->addProtocolMatch(deviceitem->deviceProtocol(), strModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expandNodes(deviceView);
|
||||
QModelIndex index = d->filteredModel->mapFromSource(d->model->index( device ));
|
||||
if (index.isValid()) {
|
||||
|
|
|
@ -54,7 +54,7 @@ void FilteredDeviceProxyModel::addFilter( const QString &filter ) {
|
|||
return; //don't scan sensors here
|
||||
}
|
||||
else {
|
||||
emit setParameter(name, value);
|
||||
emit setParameter(name, value, protocol, model);
|
||||
}
|
||||
}
|
||||
//Make sure we don't add a duplicate
|
||||
|
|
|
@ -17,7 +17,7 @@ public:
|
|||
void addFilter( const QString & );
|
||||
|
||||
signals:
|
||||
void setParameter(const QString &name, const QString &value);
|
||||
void setParameter(const QString &name, const QString &value, const QString &protocol, const QString &model);
|
||||
|
||||
protected:
|
||||
virtual bool filterAcceptsRow ( int source_row, const QModelIndex & source_parent ) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue