Skip to content

Commit ea16d7a

Browse files
mbernasocchipka
authored andcommitted
Elevation Layers are now saved in the project file instead of in QSettings
1 parent c82072c commit ea16d7a

File tree

3 files changed

+32
-31
lines changed

3 files changed

+32
-31
lines changed

src/plugins/globe/globe_plugin.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ void GlobePlugin::run()
158158

159159
void GlobePlugin::settings()
160160
{
161+
mSettingsDialog.readElevationDatasources();
161162
if( mSettingsDialog.exec() )
162163
{
163164
//viewer stereo settings set by mSettingsDialog and stored in QSettings

src/plugins/globe/globe_plugin_dialog.cpp

+29-30
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "globe_plugin.h"
2121

2222
#include <qgsapplication.h>
23+
#include <qgsproject.h>
2324
#include <qgslogger.h>
2425
#include <qgscontexthelp.h>
2526
#include <QtAlgorithms>
@@ -47,7 +48,6 @@ QgsGlobePluginDialog::QgsGlobePluginDialog( QWidget* parent, Qt::WFlags fl )
4748
updateStereoDialog(); //update the dialog gui
4849

4950
elevationPath->setText( QDir::homePath() );
50-
readElevationDatasourcesFromSettings();
5151
}
5252

5353
//destructor
@@ -149,29 +149,29 @@ void QgsGlobePluginDialog::on_buttonBox_rejected()
149149
{
150150
loadStereoConfig();
151151
setStereoConfig();
152-
readElevationDatasourcesFromSettings();
152+
readElevationDatasources();
153153
reject();
154154
}
155155

156156
//ELEVATION
157157
void QgsGlobePluginDialog::on_elevationCombo_currentIndexChanged(QString type)
158158
{
159+
elevationPath->setEnabled(true);
159160
if("Raster" == type)
160161
{
161162
elevationActions->setCurrentIndex(0);
162163
elevationPath->setText( QDir::homePath() );
163164
}
164-
else
165+
else if ( "Worldwind" == type )
165166
{
166167
elevationActions->setCurrentIndex(1);
167-
if ( "Worldwind" == type )
168-
{
169-
elevationPath->setText("http://tileservice.worldwindcentral.com/getTile?");
170-
}
171-
if ( "TMS" == type )
172-
{
173-
elevationPath->setText("http://");
174-
}
168+
elevationPath->setText("http://tileservice.worldwindcentral.com/getTile?bmng.topo.bathy.200401");
169+
elevationPath->setEnabled(false);
170+
}
171+
else if ( "TMS" == type )
172+
{
173+
elevationActions->setCurrentIndex(1);
174+
elevationPath->setText("http://tilecache.osgeo.org/wms-c/Basic.py/1.0.0/linktothepast/");
175175
}
176176
}
177177

@@ -264,41 +264,40 @@ void QgsGlobePluginDialog::setRow(QTableWidget* widget, int row, const QList<QTa
264264
}
265265
}
266266

267-
void QgsGlobePluginDialog::readElevationDatasourcesFromSettings()
267+
void QgsGlobePluginDialog::readElevationDatasources()
268268
{
269+
// clear the widget
269270
elevationDatasourcesWidget->clearContents();
270-
settings.beginGroup("Plugin-Globe");
271-
int size = settings.beginReadArray("ElevationsDatasources");
272-
for (int i = 0; i < size; ++i) {
273-
settings.setArrayIndex(i);
274-
QTableWidgetItem *type = new QTableWidgetItem(settings.value("type").toString());
275-
QTableWidgetItem *uri = new QTableWidgetItem(settings.value("uri").toString());
271+
int keysCount = QgsProject::instance()->subkeyList("Globe-Plugin", "/elevationDatasources/").count();
272+
for (int i = 0; i < keysCount; ++i) {
273+
QString iNum;
274+
iNum.setNum(i);
275+
QTableWidgetItem *type = new QTableWidgetItem(
276+
QgsProject::instance()->readEntry("Globe-Plugin", "/elevationDatasources/L"+iNum+"/type"));
277+
QTableWidgetItem *uri = new QTableWidgetItem(
278+
QgsProject::instance()->readEntry("Globe-Plugin", "/elevationDatasources/L"+iNum+"/uri"));
279+
276280
elevationDatasourcesWidget->setRowCount(1+i);
277281
elevationDatasourcesWidget->setItem(i, 0, type);
278282
elevationDatasourcesWidget->setItem(i, 1, uri);
279283
}
280-
settings.endArray();
281-
settings.endGroup();
282284
}
283285

284286
void QgsGlobePluginDialog::saveElevationDatasources()
285287
{
286-
settings.beginGroup("Plugin-Globe");
287-
settings.remove("ElevationsDatasources");
288-
settings.beginWriteArray("ElevationsDatasources");
289-
288+
QgsProject::instance()->removeEntry("Globe-Plugin", "/elevationDatasources/");
290289
for(int i = 0; i < elevationDatasourcesWidget->rowCount(); ++i)
291290
{
292291
QString type = elevationDatasourcesWidget->item(i, 0)->text();
293292
QString uri = elevationDatasourcesWidget->item(i, 1)->text();
293+
bool cache = true; //elevationDatasourcesWidget->item(i, 1)->isChecked();
294+
QString iNum;
295+
iNum.setNum(i);
294296

295-
settings.setArrayIndex(i);
296-
settings.setValue("type", type);
297-
settings.setValue("uri", uri);
297+
QgsProject::instance()->writeEntry("Globe-Plugin", "/elevationDatasources/L"+iNum+"/type", type);
298+
QgsProject::instance()->writeEntry("Globe-Plugin", "/elevationDatasources/L"+iNum+"/uri", uri);
299+
QgsProject::instance()->writeEntry("Globe-Plugin", "/elevationDatasources/L"+iNum+"/cache", cache);
298300
}
299-
300-
settings.endArray();
301-
settings.endGroup();
302301
}
303302
//END ELEVATION
304303

src/plugins/globe/globe_plugin_dialog.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <QDialog>
2323
#include <QSettings>
2424
#include "qgscontexthelp.h"
25+
#include <qgsproject.h>
2526

2627
class QgsGlobePluginDialog:public QDialog, private Ui::QgsGlobePluginDialogGuiBase
2728
{
@@ -30,6 +31,7 @@ class QgsGlobePluginDialog:public QDialog, private Ui::QgsGlobePluginDialogGuiBa
3031
public:
3132
QgsGlobePluginDialog( QWidget * parent = 0, Qt::WFlags fl = 0 );
3233
~QgsGlobePluginDialog();
34+
void readElevationDatasources();
3335

3436
private:
3537
QSettings settings;
@@ -38,7 +40,6 @@ class QgsGlobePluginDialog:public QDialog, private Ui::QgsGlobePluginDialogGuiBa
3840
void restartGlobe();
3941
bool globeRunning();
4042
bool validateResource( QString type, QString uri, QString& error);
41-
void readElevationDatasourcesFromSettings();
4243
void saveElevationDatasources();
4344
void moveRow( QTableWidget* widget, bool up);
4445
QList<QTableWidgetItem*> takeRow( QTableWidget* widget, int row);

0 commit comments

Comments
 (0)