Merge branch 'map' into integration
[situare] / src / map / mapscene.cpp
index 5c0fb59..a379286 100644 (file)
@@ -29,6 +29,8 @@ MapScene::MapScene(QObject *parent)
     , m_isRemoveStackedTilesRunning(false)
     , m_viewRect(QRect(0, 0, 0, 0))
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     const int maxTilesPerSide = (1 << MAX_MAP_ZOOM_LEVEL);
     const int maxPixelsX = maxTilesPerSide * TILE_SIZE_X;
     const int maxPixelsY = maxTilesPerSide * TILE_SIZE_Y;
@@ -37,17 +39,12 @@ MapScene::MapScene(QObject *parent)
 
 void MapScene::addTile(MapTile *mapTile, QString hashKey)
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     m_mapTilesInScene.insert(hashKey, mapTile);
     addItem(mapTile);
 }
 
-void MapScene::debugItemsCount()
-{
-#ifndef Q_WS_MAEMO_5
-    qDebug() << __PRETTY_FUNCTION__ << "ITEM ADDED:" << items().count();
-#endif // Q_WS_MAEMO_5
-}
-
 void MapScene::enqueueRemoveStackedTiles(MapTile *newTile)
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -61,6 +58,8 @@ void MapScene::enqueueRemoveStackedTiles(MapTile *newTile)
 
 bool MapScene::isTileInScene(QString hashKey)
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     return m_mapTilesInScene.contains(hashKey);
 }
 
@@ -74,15 +73,10 @@ void MapScene::runNextStackedTilesRemoval()
     }
 
     // schedule removal of the next tile if the list is not empty
-    if (!m_removeStackedTilesList.isEmpty()) {
+    if (!m_removeStackedTilesList.isEmpty())
         QTimer::singleShot(0, this, SLOT(runNextStackedTilesRemoval()));
-    }
-    else {
+    else
         m_isRemoveStackedTilesRunning = false;
-#ifndef Q_WS_MAEMO_5
-    qDebug() << __PRETTY_FUNCTION__ << "STACKED END:" << items().count();
-#endif // Q_WS_MAEMO_5
-    }
 }
 
 void MapScene::removeOutOfViewTiles()
@@ -92,30 +86,16 @@ void MapScene::removeOutOfViewTiles()
     QList<QGraphicsItem *> viewTiles = items(m_viewRect, Qt::IntersectsItemBoundingRect);
     QList<QGraphicsItem *> allTiles = items();
 
-#ifndef Q_WS_MAEMO_5
-    qDebug() << __PRETTY_FUNCTION__ << "OUT OF VIEW START:" << items().count();
-#endif // Q_WS_MAEMO_5
-
-
-    qDebug() << __PRETTY_FUNCTION__ << "All tiles:" << allTiles.count();
-    qDebug() << __PRETTY_FUNCTION__ << "Tiles in view area:" << viewTiles.count();
-
     //Remove tiles which are in view from allTiles
     foreach (QGraphicsItem *tile, viewTiles)
         allTiles.removeOne(tile);
 
-
     //Remove tiles out of view
     foreach (QGraphicsItem *tile, allTiles) {
         MapTile *tileToRemove = dynamic_cast<MapTile *>(tile);
         if (tileToRemove)
             removeTile(tileToRemove);
     }
-
-#ifndef Q_WS_MAEMO_5
-    qDebug() << __PRETTY_FUNCTION__ << "OUT OF VIEW END:" << items().count();
-#endif // Q_WS_MAEMO_5
-
 }
 
 void MapScene::removeStackedTiles(MapTile *newTile)
@@ -129,10 +109,12 @@ void MapScene::removeStackedTiles(MapTile *newTile)
     foreach (QGraphicsItem *collidingItem, collidingItems) {
         MapTile *collidingTile = dynamic_cast<MapTile *>(collidingItem);
         if (collidingTile) {
-             // remove tile if it is fully obscured by new tile
-            QRectF collidingTileSceneRect = collidingTile->sceneBoundingRect();
-            if (newTileSceneRect.contains(collidingTileSceneRect))
-                removeTile(collidingTile);
+            if (newTile->zValue() > collidingTile->zValue()) {
+                // remove tile if it is fully obscured by new tile
+                QRectF collidingTileSceneRect = collidingTile->sceneBoundingRect();
+                if (newTileSceneRect.contains(collidingTileSceneRect))
+                    removeTile(collidingTile);
+            }
         }
     }
 }
@@ -141,14 +123,12 @@ void MapScene::removeTile(MapTile *tile)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if (tile) {
-        m_mapTilesInScene.remove(MapEngine::tilePath(tile->zoomLevel(),
-                                                     tile->tileNumber().x(),
-                                                     tile->tileNumber().y()));
-        removeItem(tile);
-        m_removeStackedTilesList.removeAll(tile);
-        delete tile;
-    }
+    m_mapTilesInScene.remove(MapEngine::tilePath(tile->zoomLevel(),
+                                                 tile->tileNumber().x(),
+                                                 tile->tileNumber().y()));
+    removeItem(tile);
+    m_removeStackedTilesList.removeAll(tile);
+    delete tile;
 }
 
 void MapScene::setTilesDrawingLevels(int zoomLevel)
@@ -166,5 +146,7 @@ void MapScene::setTilesDrawingLevels(int zoomLevel)
 
 void MapScene::viewRectUpdated(QRect viewRect)
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     m_viewRect = viewRect;
 }