Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "backend.h"
- Backend::Backend(QQuickItem *parent) : QObject(parent) {
- engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
- mainWindow = engine.rootObjects().value(0);
- lvList = mainWindow->findChild<QObject*>("lvList");
- btnRequest = mainWindow->findChild<QObject*>("btnRequest");
- engine.rootContext()->setContextProperty("backend", this);
- namRequest = new QNetworkAccessManager(this);
- connect(namRequest, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotRequestFinished(QNetworkReply*)));
- }
- void Backend::makeRequest(int id) {
- btnRequest->setProperty("enabled", "false");
- QString prepareRequest("https://api.vk.com/method/friends.get?user_id=" + QString::number(id) +
- "&order=hints&count=500&fields=photo_50");
- qDebug(prepareRequest.toUtf8());
- QNetworkRequest request(QUrl(prepareRequest.toUtf8()));
- namRequest->get(request);
- }
- void Backend::slotRequestFinished(QNetworkReply * reply) {
- if (reply->error() != QNetworkReply::NoError) {
- qDebug(reply->errorString().toUtf8());
- } else {
- QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll()); //Документ
- QJsonObject jsonObj;
- QJsonValue jsonVal;
- QJsonArray jsonArr;
- int count;
- jsonObj = jsonDoc.object();
- if (!jsonObj.isEmpty()) {
- jsonVal = jsonObj.value("count");
- if (!jsonVal.isNull()) {
- count = jsonVal.toInt();
- }
- }
- jsonArr = jsonDoc.object().value("items").toArray();
- QMetaObject::invokeMethod(lvList, "clear");
- for (int i=0; i<jsonArr.size(); i++) {
- QVariantMap map;
- QJsonObject fri;
- fri = jsonArr[i];
- QString photo50 = fri.value("photo_50").toString();
- QString name = fri.value("first_name").toString() + fri.value("last_name").toString();
- map.insert("lvImage", photo50);
- map.insert("lvLabel", name);
- QMetaObject::invokeMethod(lvList, "append", Q_ARG(QVariant, QVariant::fromValue(map)));
- }
- }
- btnRequest->setProperty("enabled", "true");
- reply->deleteLater();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement