void DBTalker::parseResponseListFolders(const QByteArray& data) { //added root in list at constructor and call getfolderslist after calling list folders in dbwindow QJson::Parser parser; bool ok; QVariant result = parser.parse(data,&ok); if(!ok) { emit signalBusy(false); emit signalListAlbumsFailed(i18n("Failed to list folders")); return; } QList<QPair<QString, QString> > list; list.clear(); list.append(qMakePair(QString("/"),QString("root"))); QVariantMap rmap = result.toMap(); QList<QString> a = rmap.uniqueKeys(); for(int i=0;i<rmap.size();i++) { if(a[i] == "contents") { QVariantList qwe = rmap[a[i]].toList(); foreach(QVariant abc, qwe) { QVariantMap qwer = abc.toMap(); QList<QString> b = qwer.uniqueKeys(); QString path(""); QString isDir(""); int temp = 0; for(int i=0;i<qwer.size();i++) { if(b[i] == "is_dir") isDir = qwer[b[i]].value<QString>(); if(b[i] == "path") { path = qwer[b[i]].value<QString>(); temp = i; } } if(QString::compare(isDir, QString("true"), Qt::CaseInsensitive) == 0) { kDebug() << temp << " " << b[temp] << " : " << qwer[b[temp]] << " " << qwer[b[temp]].value<QString>() << endl; QString name = qwer[b[temp]].value<QString>().section('/',-2); kDebug() << "str " << name; list.append(qMakePair(qwer[b[temp]].value<QString>(),name)); queue.enqueue(qwer[b[temp]].value<QString>()); } } }
void DBTalker::parseResponseListFolders(const QByteArray& data) { QJsonParseError err; QJsonDocument doc = QJsonDocument::fromJson(data, &err); if (err.error != QJsonParseError::NoError) { emit signalBusy(false); emit signalListAlbumsFailed(i18n("Failed to list folders")); return; } QJsonObject jsonObject = doc.object(); QJsonArray jsonArray = jsonObject[QString::fromLatin1("contents")].toArray(); QList<QPair<QString, QString> > list; list.clear(); list.append(qMakePair(QString::fromLatin1("/"), QString::fromLatin1("root"))); foreach (const QJsonValue& value, jsonArray) { QString path(QString::fromLatin1("")); bool isDir; QJsonObject obj = value.toObject(); path = obj[QString::fromLatin1("path")].toString(); isDir = obj[QString::fromLatin1("is_dir")].toBool(); qCDebug(KIPIPLUGINS_LOG) << "Path is "<<path<<" Is Dir "<<isDir; if(isDir) { qCDebug(KIPIPLUGINS_LOG) << "Path is "<<path<<" Is Dir "<<isDir; QString name = path.section(QLatin1Char('/'), -2); qCDebug(KIPIPLUGINS_LOG) << "str " << name; list.append(qMakePair(path,name)); m_queue.enqueue(path); } }