jak w tytule i oto kawałek kodu - jakby co, to ten Agent to wzorzec projektowy "Mediator" - nazwałem go tak, bo bardziej mi pasuje ale do rzeczy
Agent::Agent(QObject *parent): AbstractAgent{parent}
{
this->setObjectName(QString("Agent"));
QObject::connect(this, &Agent::registerNewWindow, this, &Agent::isRegisteredWindow);
}
void Agent::registerWindow(QWidget *ptrWidget)
{
bool isRegister = false;
if(ptrWidget){
ptrChildWindowSettings = ptrWidget;
isRegister = true;
emit registerNewWindow(isRegister);
} else {
//obsłuż ten błąd w jakimś oknie -> Errors::RuntimeErrors::NullPointer;
}
}
void Agent::isRegisteredWindow(bool isRegister)
{
if(isRegister){
window = qobject_cast<WindowSettings*>(ptrChildWindowSettings);
if(window){
page1 = window->findChild<Page1*>(); //QWidget, który ma kontrolki np QLineEdit
page2 = window->findChild<Page2*>(); //QWidget, który ma kontrolki np QLineEdit
if(page1){
QObject::connect(page1, &Page1::ipAddress, this, &Agent::receivedIPAddress);
//.... itp
} else {
//obsłuż ten błąd w jakimś oknie -> Errors::RuntimeErrors::NullPointer;
}
} else {
qInfo()<< "blad uzyskania wskaznika window";
//obsłuż ten błąd w jakimś oknie -> Errors::RuntimeErrors::NullPointer;
}
} else {
//obsłuż ten błąd w jakimś oknie -> Errors::RuntimeErrors::NullPointer;
}
}
więc pytanie jest takie - czy w tej funkcji isRegisteredWindow jest sens zagnieżdżać warunki w taki sposób jak pokazałem w kodzie?
Bo załóżmy, że w przyszłości dojdzie jeszcze kilka okien i "agent" będzie musiał jakoś wszystkich ze sobą skomunikować albo obsłużyć ich błędy - no wszystkich to przesada ale na pewno te, które będą musiały ze sobą się wymienić jakimiś informacjami
trochę opisu do kodu
tutaj chodzi o to, że agent musi dostać się do metod publicznych jakichś klas aby uzyskać to, co wpisuje użytkownik i np obsłużyć jakiś błąd, bądź to co wpisze user przekazać to do innego obiektu okna - w tym przypadku zbieram dane od usera i chcę to zrzucić do pliku