Skip to content

Commit 2e214cb

Browse files
Marco Bernasocchipka
Marco Bernasocchi
authored andcommitted
refactoring
TODO: Call QgsGLWidgetAdapter::setStereoMode(QString stereoMode) from GlobePlugin::settings() instead of code duplication in GlobePluginDialog::setStereoMode()
1 parent 4e3e0e1 commit 2e214cb

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed

src/plugins/globe/globe_plugin.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "../qgisplugin.h"
2323
#include "qgsosgviewer.h"
2424
#include "qgsosgearthtilesource.h"
25+
#include "globe_plugin_dialog.h"
2526
#include "Controls"
2627
#include <QObject>
2728
#include <QDockWidget>
@@ -105,9 +106,10 @@ class GlobePlugin : public QObject, public QgisPlugin
105106
osgEarthUtil::ElevationManager* mElevationManager;
106107
//! Object placer
107108
osgEarthUtil::ObjectPlacer* mObjectPlacer;
109+
//! Settings Dialog
110+
QgsGlobePluginDialog* settingsDialog;
108111
};
109112

110-
111113
class FlyToExtentHandler : public osgGA::GUIEventHandler
112114
{
113115
public:

src/plugins/globe/globe_plugin_dialog.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ class QgsGlobePluginDialog:public QDialog, private Ui::QgsGlobePluginDialogGuiBa
2828
Q_OBJECT
2929

3030
public:
31+
QString stereoMode;
3132
QgsGlobePluginDialog( QWidget * parent = 0, Qt::WFlags fl = 0 );
3233
~QgsGlobePluginDialog();
3334

3435
private:
35-
QString stereoMode;
3636
QString earthFile;
3737
QString openFile();
3838
QSettings settings;

src/plugins/globe/qgsosgviewer.cpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121
#include <osgViewer/ViewerEventHandlers>
2222

2323
#include <QString>
24+
#include <QMessageBox>
25+
2426

2527
QgsGLWidgetAdapter::QgsGLWidgetAdapter( QWidget * parent, const char * name, const QGLWidget * shareWidget, WindowFlags f):
2628
QGLWidget(parent, shareWidget, f)
2729
{
2830
_gw = new osgViewer::GraphicsWindowEmbedded(0,0,width(),height());
29-
setStereoMode();
31+
//setStereoMode();
3032
setFocusPolicy(Qt::ClickFocus);
3133
setMouseTracking ( true );
3234
}
@@ -87,13 +89,12 @@ void QgsGLWidgetAdapter::wheelEvent(QWheelEvent *event)
8789

8890
void QgsGLWidgetAdapter::setStereoMode()
8991
{
90-
//TODO: maybe consolidate this method somewhere else since it is repeated in globe_plugin_dialog.cpp
91-
92-
//osg::DisplaySettings::instance()->setStereo( (bool) settings.value( "/Plugin-Globe/stereo", 0 ).toInt() );
93-
//osg::DisplaySettings::instance()->setStereoMode( (osg::DisplaySettings::StereoMode) settings.value( "/Plugin-Globe/stereoMode", 1 ).toInt());
94-
95-
QString stereoMode;
96-
stereoMode = settings.value( "/Plugin-Globe/stereoMode", "OFF" ).toString();
92+
setStereoMode(settings.value( "/Plugin-Globe/stereoMode", "OFF" ).toString());
93+
}
94+
95+
void QgsGLWidgetAdapter::setStereoMode(QString stereoMode)
96+
{
97+
settings.setValue( "/Plugin-Globe/stereoMode", stereoMode );
9798

9899
if("OFF" == stereoMode)
99100
{
@@ -115,9 +116,20 @@ void QgsGLWidgetAdapter::setStereoMode()
115116
{
116117
osg::DisplaySettings::instance()->setStereoMode( osg::DisplaySettings::VERTICAL_SPLIT );
117118
}
119+
else if("HORIZONTAL_SPLIT" == stereoMode)
120+
{
121+
osg::DisplaySettings::instance()->setStereoMode( osg::DisplaySettings::HORIZONTAL_SPLIT );
122+
}
123+
else if("QUAD_BUFFER" == stereoMode)
124+
{
125+
osg::DisplaySettings::instance()->setStereoMode( osg::DisplaySettings::QUAD_BUFFER );
126+
}
118127
else
119128
{
120129
//should never get here
130+
QMessageBox msgBox;
131+
msgBox.setText("This stereo mode has not been implemented yet. Defaulting to ANAGLYPHIC");
132+
msgBox.exec();
121133
}
122134
}
123135
}

src/plugins/globe/qgsosgviewer.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ class QgsGLWidgetAdapter : public QGLWidget
3939

4040
osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); }
4141
const osgViewer::GraphicsWindow* getGraphicsWindow() const { return _gw.get(); }
42+
43+
void setStereoMode();
44+
void setStereoMode(QString stereoMode);
4245

4346
protected:
4447

@@ -56,7 +59,6 @@ class QgsGLWidgetAdapter : public QGLWidget
5659
private:
5760

5861
QSettings settings;
59-
void setStereoMode();
6062
};
6163

6264

@@ -76,7 +78,7 @@ class QgsOsgViewer : public osgViewer::Viewer, public QgsGLWidgetAdapter
7678
connect(&_timer, SIGNAL(timeout()), this, SLOT(updateGL()));
7779
_timer.start(10);
7880
}
79-
81+
8082
virtual void paintGL()
8183
{
8284
frame();

0 commit comments

Comments
 (0)