//----------------------------------------------------------------------------- void QGCCacheWorker::_getTileSets(QGCMapTask* mtask) { if(!_valid) { mtask->setError("No Cache Database"); return; } QGCFetchTileSetTask* task = static_cast<QGCFetchTileSetTask*>(mtask); QSqlQuery query(*_db); QString s = QString("SELECT * FROM TileSets ORDER BY defaultSet DESC, name ASC"); if(query.exec(s)) { while(query.next()) { QString name = query.value("name").toString(); QString desc = query.value("description").toString(); QGCCachedTileSet* set = new QGCCachedTileSet(name, desc); set->setId(query.value("setID").toULongLong()); set->setMapTypeStr(query.value("typeStr").toString()); set->setTopleftLat(query.value("topleftLat").toDouble()); set->setTopleftLon(query.value("topleftLon").toDouble()); set->setBottomRightLat(query.value("bottomRightLat").toDouble()); set->setBottomRightLon(query.value("bottomRightLon").toDouble()); set->setMinZoom(query.value("minZoom").toInt()); set->setMaxZoom(query.value("maxZoom").toInt()); set->setType((UrlFactory::MapType)query.value("type").toInt()); set->setNumTiles(query.value("numTiles").toUInt()); set->setTilesSize(query.value("tilesSize").toULongLong()); set->setDefaultSet(query.value("defaultSet").toInt() != 0); set->setCreationDate(QDateTime::fromTime_t(query.value("date").toUInt())); //-- Load thumbnail (if not default set) if(!set->defaultSet()) { int w = query.value("thumbW").toInt(); int h = query.value("thumbH").toInt(); if(w && h) { QByteArray ba = query.value("thumbNail").toByteArray(); set->setThumbNail(QImage((uchar*)(void*)ba.data(), w, h, QImage::Format_RGB32)); } } _updateSetTotals(set); //-- Object created here must be moved to app thread to be used there set->moveToThread(QApplication::instance()->thread()); task->tileSetFetched(set); } } else { task->setError("No tile set in database"); } }