MainWindowCC * mWindow;
int main(int argc, char *argv[])
{
set_qt_environment();
QGuiApplication app(argc, argv);
mWindow = new MainWindowCC (& app ,&trans1);
mWindow->start();
return app.exec();
}
MainWindowCC
::MainWindowCC(QGuiApplication
*app,
QTranslator *mtrans
)
{
gDataProp =new QQmlPropertyMap();
gDataProp->insert(mapNumOfSchObj,0);
QJsonObject paramObj ={{shcObjName,"K0"} };
QJsonObject paramIns[3];
QJsonObject paramOut[2];
paramIns[0]={{ portName,"IN0"} , { portID,1}};
paramIns[1]={{ portName,"IN1"} , { portID,2}};
paramIns[2]={{ portName,"IN2"} , { portID,3}};
paramOut[0]={{ portName,"Out0"} , { portID,1}};
paramOut[1]={{ portName,"Out1"} , { portID,2}};
GroupObject gIns [3];
GroupObject gOuts [2];
qDebug() <<paramObj;
knx1 =new InterfaceObject(app,gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
knx1->start();
paramObj[shcObjName]="Sw";
sw1 =new InterfaceObject(app,gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
sw1->start();
const QUrl url
(u
"qrc:/qt/qml/Main/main.qml"_qs
);
&engine,
&QQmlApplicationEngine::objectCreated,
app,
if (!obj && url == objUrl)
},
Qt::QueuedConnection);
engine.rootContext()->setContextProperty("gDatPr", gDataProp );
engine.rootContext()->setContextProperty("uiObjectTreeModel", &uiObjectTreeMod );
engine.addImportPath(":/");
engine.load(url);
}
InterfaceObject:: InterfaceObject(QGuiApplication *app,QQmlPropertyMap * dmap ,QJsonObject* objParams
, QJsonObject* insParam , QJsonObject* outsParam,
GroupObject *inGo ,GroupObject *outGo, uint16_t numIns , uint16_t numOuts)
{
int numOfSchObj ;
schDataMap= dmap;
interfaceData= new QJsonObject (*objParams);
numOfIns=numIns;
numOfOuts=numOuts;
qDebug()<<*interfaceData;
numOfSchObj =schDataMap->value(mapNumOfSchObj).toInt();
interfaceData->insert(shcObjID,numOfSchObj+1);
ins = new InterfacePort*[numIns];
outs = new InterfacePort*[numOuts];
for (uint16_t i=0;i<numIns;i++)
{
ins [i]=new InterfacePort(insParam[i], inGo[i]);
jsonArrayIn.push_back(ins [i]->getPortObj());
}
interfaceData->insert(shcObjIns,jsonArrayIn);
interfaceData->insert(shcObjNumOfIns,numOfIns);
qDebug()<<*interfaceData;
for (uint16_t i=0;i<numOuts;i++)
{
outsParam[i].insert(pConnectionTarObjID,-2);
outsParam[i].insert(pConnectionTarPortID,-4);
outs [i]=new InterfacePort(outsParam[i], outGo[i]);
jsonArrayIn2.push_back(outs[i]->getPortObj());
}
interfaceData->insert(shcObjOuts,jsonArrayIn2);
interfaceData->insert(shcObjNumOfOuts,numOfOuts);
schDataMap->insert(*objKey , *interfaceData);
schDataMap->insert( mapNumOfSchObj ,numOfSchObj+1);
schDataMap,
&QQmlPropertyMap::valueChanged,
this,
&InterfaceObject::updateFromGuiSlot);
}
void InterfaceObject
::updateFromGuiSlot(const QString &key,
const QVariant &value
) {
qDebug ()<<"Obj:"<<*objKey<<" before conditionhas been updated .. I am in its slot now";
if(key==*objKey)
{
qDebug ()<<"Obj:"<<*objKey<<" has been updated .. I am in its slot now";
}
}
void InterfaceObject::run()
{
while(loopActive==true)
{
//
}
}
MainWindowCC * mWindow;
QTranslator trans1;
int main(int argc, char *argv[])
{
set_qt_environment();
QGuiApplication app(argc, argv);
mWindow = new MainWindowCC (& app ,&trans1);
mWindow->start();
return app.exec();
}
MainWindowCC::MainWindowCC(QGuiApplication *app, QTranslator *mtrans)
: QThread()
{
gDataProp =new QQmlPropertyMap();
gDataProp->insert(mapNumOfSchObj,0);
QJsonObject paramObj ={{shcObjName,"K0"} };
QJsonObject paramIns[3];
QJsonObject paramOut[2];
paramIns[0]={{ portName,"IN0"} , { portID,1}};
paramIns[1]={{ portName,"IN1"} , { portID,2}};
paramIns[2]={{ portName,"IN2"} , { portID,3}};
paramOut[0]={{ portName,"Out0"} , { portID,1}};
paramOut[1]={{ portName,"Out1"} , { portID,2}};
GroupObject gIns [3];
GroupObject gOuts [2];
qDebug() <<paramObj;
knx1 =new InterfaceObject(app,gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
knx1->start();
paramObj[shcObjName]="Sw";
sw1 =new InterfaceObject(app,gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
sw1->start();
const QUrl url(u"qrc:/qt/qml/Main/main.qml"_qs);
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreated,
app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
engine.rootContext()->setContextProperty("gDatPr", gDataProp );
engine.rootContext()->setContextProperty("uiObjectTreeModel", &uiObjectTreeMod );
engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
engine.addImportPath(":/");
engine.load(url);
}
InterfaceObject:: InterfaceObject(QGuiApplication *app,QQmlPropertyMap * dmap ,QJsonObject* objParams
, QJsonObject* insParam , QJsonObject* outsParam,
GroupObject *inGo ,GroupObject *outGo, uint16_t numIns , uint16_t numOuts)
:QThread ()
{
int numOfSchObj ;
schDataMap= dmap;
interfaceData= new QJsonObject (*objParams);
numOfIns=numIns;
numOfOuts=numOuts;
qDebug()<<*interfaceData;
numOfSchObj =schDataMap->value(mapNumOfSchObj).toInt();
interfaceData->insert(shcObjID,numOfSchObj+1);
ins = new InterfacePort*[numIns];
outs = new InterfacePort*[numOuts];
for (uint16_t i=0;i<numIns;i++)
{
ins [i]=new InterfacePort(insParam[i], inGo[i]);
jsonArrayIn.push_back(ins [i]->getPortObj());
}
interfaceData->insert(shcObjIns,jsonArrayIn);
interfaceData->insert(shcObjNumOfIns,numOfIns);
qDebug()<<*interfaceData;
for (uint16_t i=0;i<numOuts;i++)
{
outsParam[i].insert(pConnectionTarObjID,-2);
outsParam[i].insert(pConnectionTarPortID,-4);
outs [i]=new InterfacePort(outsParam[i], outGo[i]);
jsonArrayIn2.push_back(outs[i]->getPortObj());
}
interfaceData->insert(shcObjOuts,jsonArrayIn2);
interfaceData->insert(shcObjNumOfOuts,numOfOuts);
objKey=new QString (mapSchObjHeader + QString::number(numOfSchObj));
schDataMap->insert(*objKey , *interfaceData);
schDataMap->insert( mapNumOfSchObj ,numOfSchObj+1);
QObject::connect(
schDataMap,
&QQmlPropertyMap::valueChanged,
this,
&InterfaceObject::updateFromGuiSlot);
}
void InterfaceObject::updateFromGuiSlot(const QString &key, const QVariant &value)
{
qDebug ()<<"Obj:"<<*objKey<<" before conditionhas been updated .. I am in its slot now";
if(key==*objKey)
{
qDebug ()<<"Obj:"<<*objKey<<" has been updated .. I am in its slot now";
}
}
void InterfaceObject::run()
{
while(loopActive==true)
{
//
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks