void QGeoTiledMappingManagerEngine::engineTileError(const QGeoTileSpec &spec, const QString &errorString) { Q_D(QGeoTiledMappingManagerEngine); QSet<QGeoTiledMapData *> maps = d->tileHash_.value(spec); typedef QSet<QGeoTiledMapData *>::const_iterator map_iter; map_iter map = maps.constBegin(); map_iter mapEnd = maps.constEnd(); for (; map != mapEnd; ++map) { QSet<QGeoTileSpec> tileSet = d->mapHash_.value(*map); tileSet.remove(spec); if (tileSet.isEmpty()) d->mapHash_.remove(*map); else d->mapHash_.insert(*map, tileSet); } d->tileHash_.remove(spec); for (map = maps.constBegin(); map != mapEnd; ++map) { (*map)->getRequestManager()->tileError(spec, errorString); } emit tileError(spec, errorString); }
void QGeoTileFetcher::handleReply(QGeoTiledMapReply *reply, const QGeoTileSpec &spec) { Q_D(QGeoTileFetcher); if (d->stopped_) { reply->deleteLater(); return; } if (reply->error() == QGeoTiledMapReply::NoError) { emit tileFinished(spec, reply->mapImageData(), reply->mapImageFormat()); } else { emit tileError(spec, reply->errorString()); } reply->deleteLater(); }
void QGeoTiledMappingManagerEngine::setTileFetcher(QGeoTileFetcher *fetcher) { Q_D(QGeoTiledMappingManagerEngine); d->fetcher_ = fetcher; d->fetcher_->init(); d->thread_ = new QThread; qRegisterMetaType<QGeoTileSpec>(); connect(d->fetcher_, SIGNAL(tileFinished(QGeoTileSpec,QByteArray,QString)), this, SLOT(engineTileFinished(QGeoTileSpec,QByteArray,QString)), Qt::QueuedConnection); connect(d->fetcher_, SIGNAL(tileError(QGeoTileSpec,QString)), this, SLOT(engineTileError(QGeoTileSpec,QString)), Qt::QueuedConnection); d->fetcher_->moveToThread(d_ptr->thread_); connect(d->thread_, SIGNAL(started()), d->fetcher_, SLOT(threadStarted())); connect(d->thread_, SIGNAL(finished()), d->fetcher_, SLOT(threadFinished())); connect(d->fetcher_, SIGNAL(destroyed()), d->thread_, SLOT(deleteLater())); engineInitialized(); QTimer::singleShot(0, d->thread_, SLOT(start())); }
void TDeskTop::cascade( const TRect &r ) { TPoint min, max; cascadeNum = 0; forEach( doCount, 0 ); if( cascadeNum > 0 ) { lastView->sizeLimits( min, max ); if( (min.x > r.b.x - r.a.x - cascadeNum) || (min.y > r.b.y - r.a.y - cascadeNum) ) tileError(); else { cascadeNum--; lock(); forEach( doCascade, (void *)&r ); unlock(); } } }
void TDeskTop::tile( const TRect& r ) { numTileable = 0; forEach( doCountTileable, 0 ); if( numTileable > 0 ) { mostEqualDivisors( numTileable, numCols, numRows ); if( ( (r.b.x - r.a.x)/numCols == 0 ) || ( (r.b.y - r.a.y)/numRows == 0) ) tileError(); else { leftOver = numTileable % numCols; tileNum = numTileable - 1; lock(); forEach( doTile, (void *)&r ); unlock(); } } }
void QGeoTiledMappingManagerEngine::setTileFetcher(QGeoTileFetcher *fetcher) { Q_D(QGeoTiledMappingManagerEngine); d->fetcher_ = fetcher; qRegisterMetaType<QGeoTileSpec>(); connect(d->fetcher_, SIGNAL(tileFinished(QGeoTileSpec,QByteArray,QString)), this, SLOT(engineTileFinished(QGeoTileSpec,QByteArray,QString)), Qt::QueuedConnection); connect(d->fetcher_, SIGNAL(tileError(QGeoTileSpec,QString)), this, SLOT(engineTileError(QGeoTileSpec,QString)), Qt::QueuedConnection); engineInitialized(); }