Skip to content

Commit

Permalink
refactoring
Browse files Browse the repository at this point in the history
TODO: Call QgsGLWidgetAdapter::setStereoMode(QString stereoMode) from GlobePlugin::settings() instead of code duplication in GlobePluginDialog::setStereoMode()
  • Loading branch information
Marco Bernasocchi authored and pka committed Jul 5, 2011
1 parent 4e3e0e1 commit 2e214cb
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 12 deletions.
4 changes: 3 additions & 1 deletion src/plugins/globe/globe_plugin.h
Expand Up @@ -22,6 +22,7 @@
#include "../qgisplugin.h"
#include "qgsosgviewer.h"
#include "qgsosgearthtilesource.h"
#include "globe_plugin_dialog.h"
#include "Controls"
#include <QObject>
#include <QDockWidget>
Expand Down Expand Up @@ -105,9 +106,10 @@ class GlobePlugin : public QObject, public QgisPlugin
osgEarthUtil::ElevationManager* mElevationManager;
//! Object placer
osgEarthUtil::ObjectPlacer* mObjectPlacer;
//! Settings Dialog
QgsGlobePluginDialog* settingsDialog;
};


class FlyToExtentHandler : public osgGA::GUIEventHandler
{
public:
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/globe/globe_plugin_dialog.h
Expand Up @@ -28,11 +28,11 @@ class QgsGlobePluginDialog:public QDialog, private Ui::QgsGlobePluginDialogGuiBa
Q_OBJECT

public:
QString stereoMode;
QgsGlobePluginDialog( QWidget * parent = 0, Qt::WFlags fl = 0 );
~QgsGlobePluginDialog();

private:
QString stereoMode;
QString earthFile;
QString openFile();
QSettings settings;
Expand Down
28 changes: 20 additions & 8 deletions src/plugins/globe/qgsosgviewer.cpp
Expand Up @@ -21,12 +21,14 @@
#include <osgViewer/ViewerEventHandlers>

#include <QString>
#include <QMessageBox>


QgsGLWidgetAdapter::QgsGLWidgetAdapter( QWidget * parent, const char * name, const QGLWidget * shareWidget, WindowFlags f):
QGLWidget(parent, shareWidget, f)
{
_gw = new osgViewer::GraphicsWindowEmbedded(0,0,width(),height());
setStereoMode();
//setStereoMode();
setFocusPolicy(Qt::ClickFocus);
setMouseTracking ( true );
}
Expand Down Expand Up @@ -87,13 +89,12 @@ void QgsGLWidgetAdapter::wheelEvent(QWheelEvent *event)

void QgsGLWidgetAdapter::setStereoMode()
{
//TODO: maybe consolidate this method somewhere else since it is repeated in globe_plugin_dialog.cpp

//osg::DisplaySettings::instance()->setStereo( (bool) settings.value( "/Plugin-Globe/stereo", 0 ).toInt() );
//osg::DisplaySettings::instance()->setStereoMode( (osg::DisplaySettings::StereoMode) settings.value( "/Plugin-Globe/stereoMode", 1 ).toInt());

QString stereoMode;
stereoMode = settings.value( "/Plugin-Globe/stereoMode", "OFF" ).toString();
setStereoMode(settings.value( "/Plugin-Globe/stereoMode", "OFF" ).toString());
}

void QgsGLWidgetAdapter::setStereoMode(QString stereoMode)
{
settings.setValue( "/Plugin-Globe/stereoMode", stereoMode );

if("OFF" == stereoMode)
{
Expand All @@ -115,9 +116,20 @@ void QgsGLWidgetAdapter::setStereoMode()
{
osg::DisplaySettings::instance()->setStereoMode( osg::DisplaySettings::VERTICAL_SPLIT );
}
else if("HORIZONTAL_SPLIT" == stereoMode)
{
osg::DisplaySettings::instance()->setStereoMode( osg::DisplaySettings::HORIZONTAL_SPLIT );
}
else if("QUAD_BUFFER" == stereoMode)
{
osg::DisplaySettings::instance()->setStereoMode( osg::DisplaySettings::QUAD_BUFFER );
}
else
{
//should never get here
QMessageBox msgBox;
msgBox.setText("This stereo mode has not been implemented yet. Defaulting to ANAGLYPHIC");
msgBox.exec();
}
}
}
6 changes: 4 additions & 2 deletions src/plugins/globe/qgsosgviewer.h
Expand Up @@ -39,6 +39,9 @@ class QgsGLWidgetAdapter : public QGLWidget

osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); }
const osgViewer::GraphicsWindow* getGraphicsWindow() const { return _gw.get(); }

void setStereoMode();
void setStereoMode(QString stereoMode);

protected:

Expand All @@ -56,7 +59,6 @@ class QgsGLWidgetAdapter : public QGLWidget
private:

QSettings settings;
void setStereoMode();
};


Expand All @@ -76,7 +78,7 @@ class QgsOsgViewer : public osgViewer::Viewer, public QgsGLWidgetAdapter
connect(&_timer, SIGNAL(timeout()), this, SLOT(updateGL()));
_timer.start(10);
}

virtual void paintGL()
{
frame();
Expand Down

0 comments on commit 2e214cb

Please sign in to comment.