diff options
Diffstat (limited to 'controller.cxx')
-rw-r--r-- | controller.cxx | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/controller.cxx b/controller.cxx index c1dd2ca..d0be5fb 100644 --- a/controller.cxx +++ b/controller.cxx @@ -17,11 +17,9 @@ extern "C" { Controller::Controller(QObject* parent) : QObject{parent} { - controller = this; engine = qobject_cast<QQmlApplicationEngine*>(parent); engine->load(QUrl{QStringLiteral("qrc:/main.qml")}); - auto window = engine->rootObjects()[0]; - connect(window, SIGNAL(signUp(QString)), this, SLOT(signUp(QString))); + connect(engine->rootObjects()[0], SIGNAL(signUp(QString)), this, SLOT(signUp(QString))); } void Controller::signUp(QString const& brand) @@ -33,45 +31,47 @@ void Controller::signUp(QString const& brand) }.absolutePath() % certAsset.remove(0, certAsset.lastIndexOf("/"))}; QFile{"assets:" % certAsset}.copy(*certFile); #endif + controller = this; sign_up(brand.toLatin1().constData(), certFile ? certFile->toLatin1().constData() : nullptr, [](icclient_response* response) { const_cast<char*>(response->data)[response->numBytes] = '\0'; QString brand{response->data}; icclient_free_response(response); - auto window = engine->rootObjects()[0]; - QMetaObject::invokeMethod(window, "push", Q_ARG(QVariant, "Link"), Q_ARG(QVariant, brand)); - controller->connect(window, SIGNAL(pushed()), controller, SIGNAL(pushed())); - controller->connect(controller, &Controller::pushed, [window]() { - controller->connect(window->findChild<QObject*>("link"), SIGNAL(catalog(QString)), - controller, SLOT(catalog(QString))); - }); + shop = new Client{QString{QString{SECURE_SERVER} % "/" % brand}.toLatin1().constData(), + QString{"/" % brand % "/images"}.toLatin1().constData(), + certFile ? certFile->toLatin1().constData() : nullptr}; + if (certFile) delete certFile; + controller->link(brand); }); } -void Controller::catalog(QString const& brand) +void Controller::link(QString const& brand) +{ + auto window = engine->rootObjects()[0]; + QMetaObject::invokeMethod(window, "push", Q_ARG(QVariant, "Link"), Q_ARG(QVariant, brand)); + connect(window, SIGNAL(pushed()), controller, SIGNAL(pushed())); + connect(this, &Controller::pushed, [this,window]() { + connect(window->findChild<QObject*>("link"), SIGNAL(activated(QString)), + this, SLOT(allProducts(QString))); + }); +} + +void Controller::allProducts(QString const& brand) { - QString sampleUrl{QString{SECURE_SERVER} % "/" % brand}; - QString imageDir{"/" % brand % "/images"}; - shop = new Client{sampleUrl.toLatin1().constData(), imageDir.toLatin1().constData(), - certFile ? certFile->toLatin1().constData() : nullptr}; - if (certFile) { - delete certFile; - certFile = nullptr; - } - connect(shop, &Client::gotCatalog, [sampleUrl,imageDir](QString const& response) { - allProducts = new Catalog{::catalog(response.toLatin1().constData(), - imageDir.toLatin1().constData())}; - engine->rootContext()->setContextProperty("catalog", allProducts); + connect(shop, &Client::gotCatalog, [brand](QString const& response) { + ::allProducts = new Catalog{catalog(response.toLatin1().constData(), + QString{"/" % brand % "/images"}.toLatin1().constData())}; + engine->rootContext()->setContextProperty("catalog", ::allProducts); QMetaObject::invokeMethod(engine->rootObjects()[0]->findChild<QObject*>("link"), "push", Q_ARG(QVariant, "Catalog"), - Q_ARG(QVariant, QString{sampleUrl % "/images/"})); + Q_ARG(QVariant, + QString{QString{SECURE_SERVER} % "/" % brand % "/images/"})); }); shop->allProducts(); } Controller::~Controller() { - if (certFile) delete certFile; - if (allProducts) delete allProducts; + if (::allProducts) delete ::allProducts; if (shop) delete shop; } |