[Marble-commits] KDE/kdeedu/marble/src/plugins/render/navigation

Jens-Michael Hoffmann jensmh at gmx.de
Fri Mar 26 16:55:51 CET 2010


SVN commit 1107717 by jmhoffmann:

NavigationFloatItem: move include directives for generated ui header to source file.

This made the nice side effects possible that
- only one of the navigation widgets (either Ui::Navigation or
  Ui::NavigationSmall) is created,
- the navigation widget is lazily created (only when plugin is used).

 M  +39 -31    NavigationFloatItem.cpp  
 M  +7 -6      NavigationFloatItem.h  


--- trunk/KDE/kdeedu/marble/src/plugins/render/navigation/NavigationFloatItem.cpp #1107716:1107717
@@ -17,6 +17,8 @@
 #include <QtGui/QSlider>
 #include <QtGui/QWidget>
 
+#include "ui_navigation.h"
+#include "ui_navigation_small.h"
 #include "ViewportParams.h"
 #include "MarbleDebug.h"
 #include "MarbleWidget.h"
@@ -33,6 +35,8 @@
     : AbstractFloatItem( point ),
       m_marbleWidget( 0 ),
       m_widgetItem( 0 ),
+      m_navigationWidgetSmall( 0 ),
+      m_navigationWidget( 0 ),
       m_profiles( MarbleGlobal::getInstance()->profiles() ),
       m_oldViewportRadius( 0 )
 {
@@ -54,6 +58,8 @@
 
 NavigationFloatItem::~NavigationFloatItem()
 {
+    delete m_navigationWidgetSmall;
+    delete m_navigationWidget;
 }
 
 QStringList NavigationFloatItem::backendTypes() const
@@ -91,10 +97,12 @@
     QWidget *navigationParent = new QWidget( 0 );
     
     if( m_profiles && MarbleGlobal::SmallScreen ) {
-        m_navigationWidgetSmall.setupUi( navigationParent );
+        m_navigationWidgetSmall = new Ui::NavigationSmall;
+        m_navigationWidgetSmall->setupUi( navigationParent );
     }
     else {
-        m_navigationWidget.setupUi( navigationParent );
+        m_navigationWidget = new Ui::Navigation;
+        m_navigationWidget->setupUi( navigationParent );
     }
     
     m_widgetItem = new WidgetGraphicsItem( this );
@@ -106,11 +114,11 @@
     setLayout( layout );
 
     if( !( m_profiles && MarbleGlobal::SmallScreen ) ) {
-        connect( m_navigationWidget.zoomSlider,  SIGNAL( sliderPressed() ),
+        connect( m_navigationWidget->zoomSlider,  SIGNAL( sliderPressed() ),
                  this, SLOT( adjustForAnimation() ) );
-        connect( m_navigationWidget.zoomSlider,  SIGNAL( sliderReleased() ),
+        connect( m_navigationWidget->zoomSlider,  SIGNAL( sliderReleased() ),
                  this, SLOT( adjustForStill() ) );
-        connect( m_navigationWidget.zoomSlider, SIGNAL( valueChanged( int ) ),
+        connect( m_navigationWidget->zoomSlider, SIGNAL( valueChanged( int ) ),
                  this, SLOT( updateButtons( int ) ) );
         // Other signal/slot connections will be initialized when the marble widget is known
     }
@@ -146,39 +154,39 @@
         m_marbleWidget = widget;
         int minZoom = m_marbleWidget->map()->minimumZoom();
         int maxZoom = m_marbleWidget->map()->maximumZoom();
-        //m_navigationWidget.zoomSlider->setRange(minZoom, maxZoom);
+        //m_navigationWidget->zoomSlider->setRange(minZoom, maxZoom);
         
         if( m_profiles && MarbleGlobal::SmallScreen ) {
-            connect( m_navigationWidgetSmall.zoomInButton, SIGNAL( clicked() ),
+            connect( m_navigationWidgetSmall->zoomInButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( zoomIn() ) );
-            connect( m_navigationWidgetSmall.zoomOutButton, SIGNAL( clicked() ),
+            connect( m_navigationWidgetSmall->zoomOutButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( zoomOut() ) );
-            connect( m_navigationWidgetSmall.goHomeButton, SIGNAL( clicked() ),
+            connect( m_navigationWidgetSmall->goHomeButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( goHome() ) );
         }
         else {
-            m_navigationWidget.zoomSlider->setMinimum(minZoom);
-            m_navigationWidget.zoomSlider->setMaximum(maxZoom);
-            m_navigationWidget.zoomSlider->setValue(m_marbleWidget->map()->zoom());
-            m_navigationWidget.zoomSlider->setTickInterval((maxZoom - minZoom) / 15);
+            m_navigationWidget->zoomSlider->setMinimum(minZoom);
+            m_navigationWidget->zoomSlider->setMaximum(maxZoom);
+            m_navigationWidget->zoomSlider->setValue(m_marbleWidget->map()->zoom());
+            m_navigationWidget->zoomSlider->setTickInterval((maxZoom - minZoom) / 15);
         
-            connect( m_navigationWidget.zoomInButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->zoomInButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( zoomIn() ) );
-            connect( m_navigationWidget.zoomOutButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->zoomOutButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( zoomOut() ) );
         
-            connect( m_navigationWidget.zoomSlider, SIGNAL(sliderMoved(int)),
+            connect( m_navigationWidget->zoomSlider, SIGNAL(sliderMoved(int)),
                      m_marbleWidget, SLOT(zoomView(int)));
-            connect( m_navigationWidget.moveLeftButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->moveLeftButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( moveLeft() ) );
-            connect( m_navigationWidget.moveRightButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->moveRightButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( moveRight() ) );
-            connect( m_navigationWidget.moveUpButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->moveUpButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( moveUp() ) );
-            connect( m_navigationWidget.moveDownButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->moveDownButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( moveDown() ) );
         
-            connect( m_navigationWidget.goHomeButton, SIGNAL( clicked() ),
+            connect( m_navigationWidget->goHomeButton, SIGNAL( clicked() ),
                      m_marbleWidget, SLOT( goHome() ) );
         }
         
@@ -196,7 +204,7 @@
 void NavigationFloatItem::zoomChanged(int level)
 {
     if( !( m_profiles && MarbleGlobal::SmallScreen ) ) {
-        m_navigationWidget.zoomSlider->setValue(level);
+        m_navigationWidget->zoomSlider->setValue(level);
     }
 }
 
@@ -211,9 +219,9 @@
         else {
             int minZoom = m_marbleWidget->map()->minimumZoom();
             int maxZoom = m_marbleWidget->map()->maximumZoom();
-            m_navigationWidget.zoomSlider->setRange( minZoom, maxZoom );
-            m_navigationWidget.zoomSlider->setValue( m_marbleWidget->map()->zoom() );
-            updateButtons( m_navigationWidget.zoomSlider->value() );
+            m_navigationWidget->zoomSlider->setRange( minZoom, maxZoom );
+            m_navigationWidget->zoomSlider->setValue( m_marbleWidget->map()->zoom() );
+            updateButtons( m_navigationWidget->zoomSlider->value() );
         }
     }
 }
@@ -254,15 +262,15 @@
             maxZoom = m_marbleWidget->map()->maximumZoom();
         }
         
-        zoomInButton = m_navigationWidgetSmall.zoomInButton;
-        zoomOutButton = m_navigationWidgetSmall.zoomOutButton;
+        zoomInButton = m_navigationWidgetSmall->zoomInButton;
+        zoomOutButton = m_navigationWidgetSmall->zoomOutButton;
     }
     else {
-        minZoom = m_navigationWidget.zoomSlider->minimum();
-        maxZoom = m_navigationWidget.zoomSlider->maximum();
+        minZoom = m_navigationWidget->zoomSlider->minimum();
+        maxZoom = m_navigationWidget->zoomSlider->maximum();
         
-        zoomInButton = m_navigationWidget.zoomInButton;
-        zoomOutButton = m_navigationWidget.zoomOutButton;
+        zoomInButton = m_navigationWidget->zoomInButton;
+        zoomOutButton = m_navigationWidget->zoomOutButton;
     }
     
     if ( value <= minZoom ) {
--- trunk/KDE/kdeedu/marble/src/plugins/render/navigation/NavigationFloatItem.h #1107716:1107717
@@ -15,12 +15,13 @@
 
 #include "global.h"
 
-// forward declarations
-
 #include "AbstractFloatItem.h"
 
-#include "ui_navigation_small.h"
-#include "ui_navigation.h"
+namespace Ui
+{
+    class Navigation;
+    class NavigationSmall;
+}
 
 namespace Marble
 {
@@ -87,8 +88,8 @@
     WidgetGraphicsItem *m_widgetItem;
 
     /** Navigation controls */
-    Ui::NavigationSmall m_navigationWidgetSmall;
-    Ui::Navigation m_navigationWidget;
+    Ui::NavigationSmall *m_navigationWidgetSmall;
+    Ui::Navigation *m_navigationWidget;
     
     /** Used Profile */
     MarbleGlobal::Profiles m_profiles;


More information about the Marble-commits mailing list