Hi, All.

I think up new model how we may organize classes and control signals. Now we make "connect" and "disconnect" in different places, so it isn't clear sometimes and we have many dependencies to CCanvas, but we have CMap3DWidget with similar functionality. My model contains follow agreements. All objects are classified by types. One type depend on one parent type. Only parent type can make "connect" or "disconnet". Types without a direct dependency don't know one another. This model allow remove any parent class painlessly for other, parent may (de)activate our actions or influence (for exmpale when you turn 3DWidget, CCanvas can disconnect from our children (mapDB, trackDB, ...) ant it connect back after closed or hidden CMap3DWidget).

CMapGeoTiff, CMapQMAP   <- CMapDB    <- CCanvas, CMap3DWidget
Track                   <- CTrackDB  <- CCanvas, CMap3DWidget

I attached draft patch. What do you think about it?
>From 14adec2931384565b929c348868ac00c4946ed7d Mon Sep 17 00:00:00 2001
From: Adnrew <[email protected]>
Date: Tue, 10 Mar 2009 01:07:44 +0300
Subject: [PATCH] remove dependences to canvas from MapDB and maps

---
 src/CCanvas.cpp           |   28 ++++++++++++++++-
 src/CCanvas.h             |    6 ++++
 src/CCreateMapGeoTiff.cpp |    4 +-
 src/CCreateMapOSM.cpp     |    2 +-
 src/CCreateMapQMAP.cpp    |    2 +-
 src/CCreateMapWMS.cpp     |    2 +-
 src/CMainWindow.cpp       |   29 +++++++-----------
 src/CMap3DWidget.cpp      |    6 ++--
 src/CMapDB.cpp            |   54 ++++++++++++++++++++------------
 src/CMapDB.h              |    5 ++-
 src/CMapDEM.cpp           |   11 ++----
 src/CMapDEM.h             |    4 +--
 src/CMapGeoTiff.cpp       |    4 +-
 src/CMapGeoTiff.h         |    2 +-
 src/CMapNoMap.cpp         |    4 +-
 src/CMapNoMap.h           |    2 +-
 src/CMapOSM.cpp           |    6 +--
 src/CMapOSM.h             |    2 +-
 src/CMapQMAP.cpp          |    9 +----
 src/CMapQMAP.h            |    2 +-
 src/CMapRaster.cpp        |    4 +-
 src/CMapRaster.h          |    2 +-
 src/CMapSearchThread.cpp  |    2 +-
 src/CMapTDB.cpp           |   74 +--------------------------------------------
 src/CMapTDB.h             |    1 -
 src/CMapWMS.cpp           |    4 +-
 src/CMapWMS.h             |    2 +-
 src/IMap.cpp              |   10 +-----
 src/IMap.h                |    2 +-
 29 files changed, 117 insertions(+), 168 deletions(-)

diff --git a/src/CCanvas.cpp b/src/CCanvas.cpp
index 5f10ada..e17b0a5 100644
--- a/src/CCanvas.cpp
+++ b/src/CCanvas.cpp
@@ -37,6 +37,7 @@
 #include "CMouseAddDistance.h"
 #include "CMouseOverlay.h"
 #include "CMouseColorPicker.h"
+#include "CStatusDEM.h"
 
 #include "CWpt.h"
 #include "CTrack.h"
@@ -80,11 +81,26 @@ CCanvas::CCanvas(QWidget * parent)
     mouseColorPicker = new CMouseColorPicker(this);
 
     cursorFocus = false;
+
+    connect(this, SIGNAL(sigResize(const QSize&)), &CMapDB::self(), SLOT(resize(const QSize&)));
+    connect(&CMapDB::self(), SIGNAL(sigModified()), this, SLOT(slotMapChanged()));
+    connect(&CMapDB::self(), SIGNAL(sigChanged()), this, SLOT(update()));
+    connect(&CSearchDB::self(), SIGNAL(sigChanged()), this, SLOT(update()));
+    connect(&CWptDB::self(), SIGNAL(sigChanged()), this, SLOT(update()));
+    connect(&CTrackDB::self(), SIGNAL(sigChanged()), this, SLOT(update()));
+    connect(&CLiveLogDB::self(), SIGNAL(sigChanged()), this, SLOT(update()));
+    connect(&COverlayDB::self(), SIGNAL(sigChanged()), this, SLOT(update()));
+
+    status = new CStatusDEM(this);
+    theMainWindow->statusBar()->insertPermanentWidget(0, status);
+
+    emit sigResize(size());
 }
 
 
 CCanvas::~CCanvas()
 {
+    delete status;
 }
 
 
@@ -594,9 +610,17 @@ void CCanvas::raiseContextMenu(const QPoint& pos)
     menu.exec(p);
 }
 
+void CCanvas::slotMapChanged()
+{
+    /* we should not disconnect old signal,
+     * because map object has been deleted */
+    IMap& newMap = CMapDB::self().getMap();
+    connect(&newMap, SIGNAL(sigChanged()),  this, SLOT(update()));
+    emit sigResize(size());
+    update();
+}
 
 void CCanvas::showEvent ( QShowEvent * event )
 {
-    IMap& map = CMapDB::self().getMap();
-    map.resize(size());
+    emit sigResize(size());
 }
diff --git a/src/CCanvas.h b/src/CCanvas.h
index 2d89c26..f3fd86b 100644
--- a/src/CCanvas.h
+++ b/src/CCanvas.h
@@ -45,6 +45,7 @@ class QPrinter;
 class QMenu;
 class CMouseCutTrack;
 class CMouseSelTrack;
+class CStatusDEM;
 
 /// the map canvas area
 class CCanvas : public QWidget
@@ -107,6 +108,7 @@ class CCanvas : public QWidget
 
         /// get selected color from color picker cursor
         QColor getSelectedColor();
+        CStatusDEM *getStatusDEM() { return status; };
 
         signals:
         void sigResize(const QSize& size);
@@ -114,6 +116,9 @@ class CCanvas : public QWidget
     private slots:
         void slotCopyPosition();
 
+    public slots:
+        void slotMapChanged();
+
     protected:
         void paintEvent(QPaintEvent * e);
         void resizeEvent(QResizeEvent * e);
@@ -159,6 +164,7 @@ class CCanvas : public QWidget
 
         /// current mouse position
         QPoint posMouse;
+        CStatusDEM * status;
 
         QLabel * info;
 };
diff --git a/src/CCreateMapGeoTiff.cpp b/src/CCreateMapGeoTiff.cpp
index a0ba6ab..3c6376a 100644
--- a/src/CCreateMapGeoTiff.cpp
+++ b/src/CCreateMapGeoTiff.cpp
@@ -158,7 +158,7 @@ void CCreateMapGeoTiff::slotOpenFile()
     QString filename = QFileDialog::getOpenFileName(0, tr("Open map file..."),path.path(), tr("Raw bitmaps (*.tif *.png *.gif)"));
     if(filename.isEmpty()) return;
 
-    CMapDB::self().openMap(filename, true, *theMainWindow->getCanvas());
+    CMapDB::self().openMap(filename, true);
     labelInputFile->setText(filename);
 
     QFileInfo fi(filename);
@@ -212,7 +212,7 @@ void CCreateMapGeoTiff::slotReload()
     char * ptr = str;
 
     QString filename = labelInputFile->text();
-    CMapDB::self().openMap(filename, true, *theMainWindow->getCanvas());
+    CMapDB::self().openMap(filename, true);
 
     theMainWindow->getCanvas()->move(CCanvas::eMoveCenter);
 
diff --git a/src/CCreateMapOSM.cpp b/src/CCreateMapOSM.cpp
index 6d1957e..9b9dd2d 100644
--- a/src/CCreateMapOSM.cpp
+++ b/src/CCreateMapOSM.cpp
@@ -551,7 +551,7 @@ void CCreateMapOSM::getNextTile()
         finishJob();
         QString fn = QString("%1.qmap").arg(QDir(labelPath->text()).filePath(lineName->text()));
         qDebug() << fn;
-        CMapDB::self().openMap(fn, false, *theMainWindow->getCanvas());
+        CMapDB::self().openMap(fn, false);
         return;
     }
 
diff --git a/src/CCreateMapQMAP.cpp b/src/CCreateMapQMAP.cpp
index ce30d59..430499a 100644
--- a/src/CCreateMapQMAP.cpp
+++ b/src/CCreateMapQMAP.cpp
@@ -106,7 +106,7 @@ void CCreateMapQMAP::slotSaveMap()
 
     writeqmap(filename);
 
-    CMapDB::self().openMap(filename, false, *theMainWindow->getCanvas());
+    CMapDB::self().openMap(filename, false);
 }
 
 
diff --git a/src/CCreateMapWMS.cpp b/src/CCreateMapWMS.cpp
index d21c896..4255241 100644
--- a/src/CCreateMapWMS.cpp
+++ b/src/CCreateMapWMS.cpp
@@ -347,7 +347,7 @@ void CCreateMapWMS::slotSave()
 
     qDebug() << dom.toString();
 
-    CMapDB::self().openMap(filename, false, *theMainWindow->getCanvas());
+    CMapDB::self().openMap(filename, false);
 }
 
 
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index 70dccfc..1847281 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -65,11 +65,20 @@ CMainWindow::CMainWindow()
 
     setCentralWidget(mainSplitter);
 
+    tabbar = new QTabWidget(leftSplitter);
     canvasTab = new CTabWidget(this);
     rightSplitter->addWidget(canvasTab);
 
+    mapdb       = new CMapDB(tabbar, this);
+    wptdb       = new CWptDB(tabbar, this);
+    trackdb     = new CTrackDB(tabbar, this);
+    diarydb     = new CDiaryDB(canvasTab, this);
+    searchdb    = new CSearchDB(tabbar, this);
+    livelogdb   = new CLiveLogDB(tabbar, this);
+    overlaydb   = new COverlayDB(tabbar, this);
+
     canvas = new CCanvas(this);
-    canvasTab->addTab(canvas,tr("Map"));
+    canvasTab->addTab(canvas, tr("Map"));
 
     megaMenu = new CMegaMenu(canvas);
     leftSplitter->addWidget(megaMenu);
@@ -92,8 +101,6 @@ CMainWindow::CMainWindow()
     slotDeviceChanged();
 
     ltmp->addWidget(comboDevice);
-
-    tabbar = new QTabWidget(canvas);
     leftSplitter->addWidget(tabbar);
 
     leftSplitter->setCollapsible(0, false);
@@ -106,21 +113,7 @@ CMainWindow::CMainWindow()
     QSettings cfg;
     pathData = cfg.value("path/data","./").toString();
 
-    mapdb       = new CMapDB(tabbar, this);
-    wptdb       = new CWptDB(tabbar, this);
-    trackdb     = new CTrackDB(tabbar, this);
-    diarydb     = new CDiaryDB(canvasTab, this);
-    searchdb    = new CSearchDB(tabbar, this);
-    livelogdb   = new CLiveLogDB(tabbar, this);
-    overlaydb   = new COverlayDB(tabbar, this);
-
-    connect(searchdb, SIGNAL(sigChanged()), canvas, SLOT(update()));
-    connect(wptdb, SIGNAL(sigChanged()), canvas, SLOT(update()));
-    connect(trackdb, SIGNAL(sigChanged()), canvas, SLOT(update()));
-    connect(livelogdb, SIGNAL(sigChanged()), canvas, SLOT(update()));
-    connect(overlaydb, SIGNAL(sigChanged()), canvas, SLOT(update()));
     connect(tabbar, SIGNAL(currentChanged(int)), this, SLOT(slotToolBoxChanged(int)));
-    connect(mapdb, SIGNAL(sigChanged()), this, SLOT(update()));
 
     connect(mapdb, SIGNAL(sigModified()), this, SLOT(slotModified()));
     connect(wptdb, SIGNAL(sigModified()), this, SLOT(slotModified()));
@@ -323,7 +316,7 @@ void CMainWindow::slotLoadMapSet()
     if(filename.isEmpty()) return;
 
     CResources::self().pathMaps = QFileInfo(filename).absolutePath();
-    CMapDB::self().openMap(filename, false, *canvas);
+    CMapDB::self().openMap(filename, false);
 
     cfg.setValue("maps/filter",filter);
 }
diff --git a/src/CMap3DWidget.cpp b/src/CMap3DWidget.cpp
index 3c6c4e3..c2fef01 100644
--- a/src/CMap3DWidget.cpp
+++ b/src/CMap3DWidget.cpp
@@ -128,7 +128,7 @@ void CMap3DWidget::loadMap()
     mapSize = map->getSize();
     if (mapSize.width() != mapSize.height()) {
         int side = qMax(mapSize.width(), mapSize.height());
-        map->resize(QSize(side, side));
+        CMapDB::self().resize(QSize(side, side));
         mapSize = map->getSize();
     }
     connect(map, SIGNAL(destroyed()), this, SLOT(deleteLater()));
@@ -222,7 +222,7 @@ void CMap3DWidget::lightReset()
 void CMap3DWidget::showEvent ( QShowEvent * event )
 {
     //restore size
-    map->resize(mapSize);
+    CMapDB::self().resize(mapSize);
 
     qDebug() << "show event";
     connect(map, SIGNAL(sigChanged()),this,SLOT(slotChanged()));
@@ -1159,7 +1159,7 @@ void CMap3DWidget::expandMap(bool zoomIn)
 
     /*slotChanged will be executed by the operation move*/
     disconnect(map, SIGNAL(sigChanged()),this,SLOT(slotChanged()));
-    map->resize(QSize(mapSize.width() * zoomFactor, mapSize.height() * zoomFactor));
+    CMapDB::self().resize(QSize(mapSize.width() * zoomFactor, mapSize.height() * zoomFactor));
 
     /*restore coord of the center map*/
     map->convertRad2Pt(pv.u, pv.v);
diff --git a/src/CMapDB.cpp b/src/CMapDB.cpp
index 9280bd4..c4e2a36 100644
--- a/src/CMapDB.cpp
+++ b/src/CMapDB.cpp
@@ -56,7 +56,7 @@ CMapDB::CMapDB(QTabWidget * tb, QObject * parent)
 
     connect(tw, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
 
-    defaultMap = new CMapNoMap(theMainWindow->getCanvas());
+    defaultMap = new CMapNoMap();
     map_t m;
     m.description       = tr("--- No map ---");
     m.key               = "NoMap";
@@ -102,7 +102,7 @@ CMapDB::CMapDB(QTabWidget * tb, QObject * parent)
 
     maps = cfg.value("maps/visibleMaps","").toString().split("|",QString::SkipEmptyParts);
     foreach(map, maps) {
-        openMap(map, false, *theMainWindow->getCanvas());
+        openMap(map, false);
         //         QFileInfo fi(map);
         //         QString ext = fi.suffix();
         //         if(ext == "qmap") {
@@ -156,10 +156,12 @@ void CMapDB::closeVisibleMaps()
     if(!demMap.isNull()) delete demMap;
 
     theMap = defaultMap;
+    connect(theMap, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    sigModified();
 }
 
 
-void CMapDB::openMap(const QString& filename, bool asRaster, CCanvas& canvas)
+void CMapDB::openMap(const QString& filename, bool asRaster)
 {
 
     QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
@@ -182,7 +184,7 @@ void CMapDB::openMap(const QString& filename, bool asRaster, CCanvas& canvas)
         map.type        = IMap::eRaster;
 
         // create base map
-        theMap = new CMapQMAP(map.key, filename,&canvas);
+        theMap = new CMapQMAP(map.key, filename);
 
         // add map to known maps
         knownMaps[map.key] = map;
@@ -199,7 +201,7 @@ void CMapDB::openMap(const QString& filename, bool asRaster, CCanvas& canvas)
         map.key         = filename;
         map.type        = IMap::eGarmin;
 
-        theMap = maptdb = new CMapTDB(map.key, filename, &canvas);
+        theMap = maptdb = new CMapTDB(map.key, filename);
 
         map.description = maptdb->getName();
         if(map.description.isEmpty()) map.description = fi.fileName();
@@ -227,7 +229,7 @@ void CMapDB::openMap(const QString& filename, bool asRaster, CCanvas& canvas)
         file.close();
 
         if(map.description.isEmpty()) map.description = fi.fileName();
-        theMap = new CMapWMS(map.key,filename,theMainWindow->getCanvas());
+        theMap = new CMapWMS(map.key, filename);
 
         // add map to known maps
         knownMaps[map.key] = map;
@@ -238,7 +240,7 @@ void CMapDB::openMap(const QString& filename, bool asRaster, CCanvas& canvas)
     }
 #endif
     else if(filename == "OSMTileServer") {
-        theMap = new CMapOSM(theMainWindow->getCanvas());
+        theMap = new CMapOSM();
 
         // store current map filename for next session
         QSettings cfg;
@@ -247,21 +249,21 @@ void CMapDB::openMap(const QString& filename, bool asRaster, CCanvas& canvas)
     }
     else {
         if(asRaster) {
-            theMap = new CMapRaster(filename,&canvas);
+            theMap = new CMapRaster(filename);
         }
         else {
-            theMap = new CMapGeoTiff(filename,&canvas);
+            theMap = new CMapGeoTiff(filename);
             // store current map filename for next session
             QSettings cfg;
             cfg.setValue("maps/visibleMaps",theMap->getFilename());
         }
     }
 
-    connect(theMap, SIGNAL(sigChanged()),  theMainWindow->getCanvas(), SLOT(update()));
-
     QString fileDEM = cfg.value(QString("map/dem/%1").arg(theMap->getKey()),"").toString();
     if(!fileDEM.isEmpty()) openDEM(fileDEM);
 
+    connect(theMap, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    emit sigModified();
     emit sigChanged();
 
     QApplication::restoreOverrideCursor();
@@ -286,25 +288,23 @@ void CMapDB::openMap(const QString& key)
             theMap = defaultMap;
         }
         else {
-            theMap = new CMapQMAP(key,filename,theMainWindow->getCanvas());
+            theMap = new CMapQMAP(key,filename);
         }
 
     }
     else if(ext == "tdb") {
-        theMap = new CMapTDB(key,filename,theMainWindow->getCanvas());
+        theMap = new CMapTDB(key,filename);
     }
 #ifdef WMS_CLIENT
-    else if(ext == "xml" ) {
-        theMap = new CMapWMS(key,filename,theMainWindow->getCanvas());
+    else if(ext == "xml" ){
+        theMap = new CMapWMS(key,filename);
     }
 #endif
-    else if(key == "OSMTileServer") {
-        theMap = new CMapOSM(theMainWindow->getCanvas());
+    else if(key == "OSMTileServer"){
+        theMap = new CMapOSM();
         filename = key;
     }
 
-    connect(theMap, SIGNAL(sigChanged()), theMainWindow->getCanvas(), SLOT(update()));
-
     // store current map filename for next session
     QSettings cfg;
     cfg.setValue("maps/visibleMaps",filename);
@@ -312,6 +312,8 @@ void CMapDB::openMap(const QString& key)
     QString fileDEM = cfg.value(QString("map/dem/%1").arg(theMap->getKey()),"").toString();
     if(!fileDEM.isEmpty()) openDEM(fileDEM);
 
+    connect(theMap, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    emit sigModified();
     emit sigChanged();
     QApplication::restoreOverrideCursor();
 }
@@ -353,7 +355,7 @@ void CMapDB::openDEM(const QString& filename)
     try
     {
         CMapDEM * dem;
-        demMap = dem = new CMapDEM(filename, theMainWindow->getCanvas());
+        demMap = dem = new CMapDEM(filename);
         theMap->registerDEM(*dem);
     }
     catch(const QString& msg) {
@@ -454,6 +456,18 @@ void CMapDB::download()
 {
 }
 
+void CMapDB::resize(QSize size)
+{
+    if(theMap.isNull()) {
+        defaultMap->resize(size);
+    } else {
+        theMap->resize(size);
+    }
+
+    if(!demMap.isNull()) {
+        demMap->resize(size);
+    }
+}
 
 void CMapDB::draw(QPainter& p, const QRect& rect, bool& needsRedraw)
 {
diff --git a/src/CMapDB.h b/src/CMapDB.h
index 7865e55..ecfdef8 100644
--- a/src/CMapDB.h
+++ b/src/CMapDB.h
@@ -45,7 +45,7 @@ class CMapDB : public IDB
         static CMapDB& self(){return *m_self;}
 
         /// open a map collection from disc
-        void openMap(const QString& filename, bool asRaster ,CCanvas& canvas);
+        void openMap(const QString& filename, bool asRaster);
         /// open a known map by it's key
         void openMap(const QString& key);
         /// create a map object by it's key for external use (like overlays)
@@ -102,6 +102,9 @@ class CMapDB : public IDB
         */
         void select(const QRect& rect);
 
+    public slots:
+        void resize(QSize size);
+
     private:
         friend class CMainWindow;
         friend class CMapToolWidget;
diff --git a/src/CMapDEM.cpp b/src/CMapDEM.cpp
index ac59613..ed94325 100644
--- a/src/CMapDEM.cpp
+++ b/src/CMapDEM.cpp
@@ -34,8 +34,8 @@
 
 #include <QtGui>
 
-CMapDEM::CMapDEM(const QString& filename, CCanvas * parent)
-: IMap(eDEM, "",parent)
+CMapDEM::CMapDEM(const QString& filename)
+: IMap(eDEM, "")
 , old_my_xscale(0)
 , old_my_yscale(0)
 , old_overlay(IMap::eNone)
@@ -106,9 +106,6 @@ CMapDEM::CMapDEM(const QString& filename, CCanvas * parent)
         graytable1 << qRgba(255,255,255,(i - 128)/* << 1*/);
     }
 
-    status = new CStatusDEM(theMainWindow->getCanvas());
-    theMainWindow->statusBar()->insertPermanentWidget(0,status);
-
 }
 
 
@@ -116,7 +113,6 @@ CMapDEM::~CMapDEM()
 {
     if(pjsrc) pj_free(pjsrc);
     if(dataset) delete dataset;
-    delete status;
 }
 
 
@@ -413,7 +409,8 @@ void CMapDEM::draw()
 
 void CMapDEM::draw()
 {
-
+    // FIXME add argument overlayType and remove known about canvas
+    CStatusDEM * status = theMainWindow->getCanvas()->getStatusDEM();
     IMap::overlay_e overlay = status->getOverlayType();
     if(overlay == IMap::eNone) {
         old_overlay = overlay;
diff --git a/src/CMapDEM.h b/src/CMapDEM.h
index 1030b73..1267f58 100644
--- a/src/CMapDEM.h
+++ b/src/CMapDEM.h
@@ -33,7 +33,7 @@ class CMapDEM : public IMap
 {
     Q_OBJECT;
     public:
-        CMapDEM(const QString& filename, CCanvas * parent);
+        CMapDEM(const QString& filename);
         virtual ~CMapDEM();
 
         /// draw map
@@ -84,8 +84,6 @@ class CMapDEM : public IMap
         QVector<QRgb> graytable1;
         QVector<QRgb> graytable2;
 
-        CStatusDEM * status;
-
         XY old_p1;
         XY old_p2;
         float old_my_xscale;
diff --git a/src/CMapGeoTiff.cpp b/src/CMapGeoTiff.cpp
index 58f7058..106da6d 100644
--- a/src/CMapGeoTiff.cpp
+++ b/src/CMapGeoTiff.cpp
@@ -24,8 +24,8 @@
 
 #include <QtGui>
 
-CMapGeoTiff::CMapGeoTiff(const QString& fn, CCanvas * parent)
-: IMap(eRaster, "",parent)
+CMapGeoTiff::CMapGeoTiff(const QString& fn)
+: IMap(eRaster, "")
 , dataset(0)
 , xsize_px(0)
 , ysize_px(0)
diff --git a/src/CMapGeoTiff.h b/src/CMapGeoTiff.h
index e701413..814fb05 100644
--- a/src/CMapGeoTiff.h
+++ b/src/CMapGeoTiff.h
@@ -31,7 +31,7 @@ class CMapGeoTiff : public IMap
 {
     Q_OBJECT;
     public:
-        CMapGeoTiff(const QString& filename, CCanvas * parent);
+        CMapGeoTiff(const QString& filename);
         virtual ~CMapGeoTiff();
 
         void draw(QPainter& p);
diff --git a/src/CMapNoMap.cpp b/src/CMapNoMap.cpp
index f20708a..737988d 100644
--- a/src/CMapNoMap.cpp
+++ b/src/CMapNoMap.cpp
@@ -21,8 +21,8 @@
 
 #include <QtGui>
 
-CMapNoMap::CMapNoMap(CCanvas * parent)
-: IMap(eRaster, "NoMap", parent)
+CMapNoMap::CMapNoMap()
+: IMap(eRaster, "NoMap")
 , xscale( 1.0)
 , yscale(-1.0)
 , x(0)
diff --git a/src/CMapNoMap.h b/src/CMapNoMap.h
index 6a3b3e4..d261333 100644
--- a/src/CMapNoMap.h
+++ b/src/CMapNoMap.h
@@ -31,7 +31,7 @@ class CMapNoMap : public IMap
 {
     Q_OBJECT;
     public:
-        CMapNoMap(CCanvas * parent);
+        CMapNoMap();
         virtual ~CMapNoMap(){ if(pjsrc) pj_free(pjsrc);}
 
         void convertPt2M(double&, double&);
diff --git a/src/CMapOSM.cpp b/src/CMapOSM.cpp
index 24c6ec7..d599088 100644
--- a/src/CMapOSM.cpp
+++ b/src/CMapOSM.cpp
@@ -25,8 +25,8 @@
 #include "COsmTilesHash.h"
 #include <QDebug>
 
-CMapOSM::CMapOSM(CCanvas * parent)
-: IMap(eRaster, "OSMTileServer", parent)
+CMapOSM::CMapOSM()
+: IMap(eRaster, "OSMTileServer")
 , xscale( 1.19432854652)
 , yscale(-1.19432854652)
 , x(0)
@@ -67,8 +67,6 @@ CMapOSM::CMapOSM(CCanvas * parent)
     }
 
     zoom(zoomidx);
-
-    resize(parent->size());
 }
 
 
diff --git a/src/CMapOSM.h b/src/CMapOSM.h
index d6ab446..847206b 100644
--- a/src/CMapOSM.h
+++ b/src/CMapOSM.h
@@ -28,7 +28,7 @@ class CMapOSM : public IMap
 {
     Q_OBJECT;
     public:
-        CMapOSM(CCanvas * parent);
+        CMapOSM();
         virtual ~CMapOSM();
 
         void convertPt2M(double&, double&);
diff --git a/src/CMapQMAP.cpp b/src/CMapQMAP.cpp
index d9b7910..0188a6f 100644
--- a/src/CMapQMAP.cpp
+++ b/src/CMapQMAP.cpp
@@ -34,8 +34,8 @@
 #undef LP
 #endif
 
-CMapQMAP::CMapQMAP(const QString& key, const QString& fn, CCanvas * parent)
-: IMap(eRaster, key,parent)
+CMapQMAP::CMapQMAP(const QString& key, const QString& fn)
+: IMap(eRaster, key)
 , pMaplevel(0)
 , zoomFactor(1)
 , foundMap(false)
@@ -86,11 +86,6 @@ CMapQMAP::CMapQMAP(const QString& key, const QString& fn, CCanvas * parent)
     QSettings cfg;
     exportPath  = cfg.value("path/export",cfg.value("path/maps","./")).toString();
 
-    if(parent) {
-        connect(parent, SIGNAL(sigResize(const QSize&)), this, SLOT(resize(const QSize&)));
-        resize(parent->size());
-    }
-
     qDebug() << "done";
 }
 
diff --git a/src/CMapQMAP.h b/src/CMapQMAP.h
index 3e237da..d54a2d5 100644
--- a/src/CMapQMAP.h
+++ b/src/CMapQMAP.h
@@ -50,7 +50,7 @@ class CMapQMAP : public IMap
             @param filename full qualified path to a raster map definition
             @param parent   parent object for the usual Qt stuff
         */
-        CMapQMAP(const QString& key, const QString& filename, CCanvas * parent);
+        CMapQMAP(const QString& key, const QString& filename);
         virtual ~CMapQMAP();
 
         void draw(QPainter& p);
diff --git a/src/CMapRaster.cpp b/src/CMapRaster.cpp
index 44591d0..a982c44 100644
--- a/src/CMapRaster.cpp
+++ b/src/CMapRaster.cpp
@@ -23,8 +23,8 @@
 
 #include <QtGui>
 
-CMapRaster::CMapRaster(const QString& fn, CCanvas * parent)
-: IMap(eRaster, "",parent)
+CMapRaster::CMapRaster(const QString& fn)
+: IMap(eRaster, "")
 , x(0)
 , y(0)
 , zoomlevel(1)
diff --git a/src/CMapRaster.h b/src/CMapRaster.h
index 8acabc6..b1f4920 100644
--- a/src/CMapRaster.h
+++ b/src/CMapRaster.h
@@ -29,7 +29,7 @@ class CMapRaster  : public IMap
 {
     Q_OBJECT;
     public:
-        CMapRaster(const QString& filename, CCanvas * parent);
+        CMapRaster(const QString& filename);
         virtual ~CMapRaster();
 
         void draw(QPainter& p);
diff --git a/src/CMapSearchThread.cpp b/src/CMapSearchThread.cpp
index 42ab986..577f2a0 100644
--- a/src/CMapSearchThread.cpp
+++ b/src/CMapSearchThread.cpp
@@ -89,7 +89,7 @@ void CMapSearchThread::run()
         return;
     }
 
-    CMapQMAP map("", area.mapkey, 0);
+    CMapQMAP map("", area.mapkey);
     map.resize(size);
     map.zoom(zoomlevel);
 
diff --git a/src/CMapTDB.cpp b/src/CMapTDB.cpp
index 9f4a6be..616bde0 100644
--- a/src/CMapTDB.cpp
+++ b/src/CMapTDB.cpp
@@ -212,81 +212,9 @@ static quint16 order[] =
     , 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
 };
 
-CMapTDB::CMapTDB(const QString& key, const QString& filename, CCanvas * parent)
-: IMap(eGarmin, key, parent)
-, filename(filename)
-, north(-90.0)
-, east(-180.0)
-, south(90.0)
-, west(180.0)
-, baseimg(0)
-, isTransparent(false)
-, zoomFactor(0)
-, polylineProperties(0x40)
-, polygonProperties(0x80)
-, fm(CResources::self().getMapFont())
-, useTyp(true)
-, mouseOverUseTyp(false)
-, detailsFineTune(0)
-, mouseOverDecDetail(false)
-, mouseOverIncDetail(false)
-, lon_factor(+1.0)
-, lat_factor(-1.0)
-{
-    setup();
-    readTDB(filename);
-
-    //     QString str = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0";
-    QString str = QString("+proj=merc +lat_ts=%1 +ellps=WGS84").arg(int((south + (north - south) / 2) * RAD_TO_DEG));
-    pjsrc       = pj_init_plus(str.toLatin1());
-
-    char * ptr;
-    ptr = pj_get_def(pjsrc,0);
-    qDebug() << "pjsrc:\t" << ptr;
-    free(ptr);
-    ptr = pj_get_def(pjtar,0);
-    qDebug() << "pjtar:\t" << ptr;
-    free(ptr);
-
-    processPrimaryMapData();
-
-    QSettings cfg;
-    cfg.beginGroup("garmin/maps");
-    cfg.beginGroup(name);
-    QString pos     = cfg.value("topleft","").toString();
-    zoomidx         = cfg.value("zoomidx",11).toInt();
-    detailsFineTune = cfg.value("details",0).toInt();
-    cfg.endGroup();
-    cfg.endGroup();
-
-    if(pos.isEmpty()) {
-        topLeft.u = west;
-        topLeft.v = north;
-    }
-    else {
-        float u = 0;
-        float v = 0;
-        GPS_Math_Str_To_Deg(pos, u, v);
-        topLeft.u = u * DEG_TO_RAD;
-        topLeft.v = v * DEG_TO_RAD;
-    }
-    zoom(zoomidx);
-    resize(parent->size());
-
-    info = new QTextDocument(this);
-    info->setTextWidth(TEXTWIDTH);
-    info->setHtml(infotext);
-
-    parent->installEventFilter(this);
-
-    index = new CGarminIndex(this);
-    index->setDBName(name);
-    qDebug() << "CMapTDB::CMapTDB()";
-}
-
 
 CMapTDB::CMapTDB(const QString& key, const QString& filename)
-: IMap(eGarmin, key, 0)
+: IMap(eGarmin, key)
 , filename(filename)
 , north(-90.0)
 , east(-180.0)
diff --git a/src/CMapTDB.h b/src/CMapTDB.h
index ee19aec..d57d8b4 100644
--- a/src/CMapTDB.h
+++ b/src/CMapTDB.h
@@ -36,7 +36,6 @@ class CMapTDB : public IMap
 {
     Q_OBJECT;
     public:
-        CMapTDB(const QString& key, const QString& filename, CCanvas * parent);
         CMapTDB(const QString& key, const QString& filename);
         virtual ~CMapTDB();
 
diff --git a/src/CMapWMS.cpp b/src/CMapWMS.cpp
index 8cee6a8..ecda076 100644
--- a/src/CMapWMS.cpp
+++ b/src/CMapWMS.cpp
@@ -24,8 +24,8 @@
 #include <ogr_spatialref.h>
 #include <QtGui>
 
-CMapWMS::CMapWMS(const QString& key, const QString& fn, CCanvas * parent)
-: IMap(eRaster, key, parent)
+CMapWMS::CMapWMS(const QString& key, const QString& fn)
+: IMap(eRaster, key)
 , x(0)
 , y(0)
 , zoomFactor(1.0)
diff --git a/src/CMapWMS.h b/src/CMapWMS.h
index 1662c09..cfb68ab 100644
--- a/src/CMapWMS.h
+++ b/src/CMapWMS.h
@@ -29,7 +29,7 @@ class CMapWMS  : public IMap
 {
     Q_OBJECT;
     public:
-        CMapWMS(const QString& key, const QString& fn, CCanvas * parent);
+        CMapWMS(const QString& key, const QString& fn);
         virtual ~CMapWMS();
 
         void draw(QPainter& p);
diff --git a/src/IMap.cpp b/src/IMap.cpp
index 574ce5e..0908b2f 100644
--- a/src/IMap.cpp
+++ b/src/IMap.cpp
@@ -27,8 +27,8 @@
 #include <QtGui>
 #include <math.h>
 
-IMap::IMap(maptype_e type, const QString& key, CCanvas * parent)
-: QObject(parent)
+IMap::IMap(maptype_e type, const QString& key)
+: QObject()
 , maptype(type)
 , zoomidx(1)
 , pjsrc(0)
@@ -42,12 +42,6 @@ IMap::IMap(maptype_e type, const QString& key, CCanvas * parent)
     QSettings cfg;
     zoomidx = cfg.value("map/zoom",zoomidx).toUInt();
 
-    if(parent) {
-        resize(parent->size());
-        connect(parent, SIGNAL(sigResize(const QSize&)), this , SLOT(resize(const QSize&)));
-        parent->update();
-    }
-
     timerFastDraw = new QTimer(this);
     timerFastDraw->setSingleShot(true);
     connect(timerFastDraw, SIGNAL(timeout()), this, SLOT(slotResetFastDraw()));
diff --git a/src/IMap.h b/src/IMap.h
index fbfe24f..9bcf075 100644
--- a/src/IMap.h
+++ b/src/IMap.h
@@ -43,7 +43,7 @@ class IMap : public QObject
     public:
         enum maptype_e {eRaster, eGarmin, eDEM};
 
-        IMap(maptype_e type, const QString& key, CCanvas * parent);
+        IMap(maptype_e type, const QString& key);
         virtual ~IMap();
 
         enum overlay_e {eNone, eShading, eContour};
-- 
1.6.0.6

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
QLandkarte-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qlandkarte-users

Reply via email to