void MainWindow::browseMapButtonClicked() { d->m_marbleWidget->setMapThemeId(QStringLiteral("earth/political/political.dgml")); /** * Now display the country names which * were removed to initiate the game */ const GeoDataTreeModel *const treeModel = d->m_marbleWidget->model()->treeModel(); for ( int i = 0; i < treeModel->rowCount(); ++i ) { QVariant const data = treeModel->data ( treeModel->index ( i, 0 ), MarblePlacemarkModel::ObjectPointerRole ); GeoDataObject *object = qvariant_cast<GeoDataObject*>( data ); Q_ASSERT_X( object, "MainWindow::browseMapButtonClicked", "failed to get valid data from treeModel for GeoDataObject" ); if ( object->nodeType() == GeoDataTypes::GeoDataDocumentType ) { GeoDataDocument *doc = static_cast<GeoDataDocument*>( object ); QFileInfo fileInfo( doc->fileName() ); QString fileName = fileInfo.fileName(); if (fileName == QLatin1String("boundaryplacemarks.cache")) { doc->setVisible( true ); d->m_marbleWidget->model()->treeModel()->updateFeature( doc ); d->m_marbleWidget->setHighlightEnabled( true ); break; } } } }
void CountryByFlag::initiateGame() { /** * First remove the GeoDataDocument, which displays * country names, from map. */ if ( !d->m_countryNames ) { const GeoDataTreeModel *const treeModel = d->m_marbleWidget->model()->treeModel(); for ( int i = 0; i < treeModel->rowCount(); ++i ) { QVariant const data = treeModel->data ( treeModel->index ( i, 0 ), MarblePlacemarkModel::ObjectPointerRole ); GeoDataObject *object = qvariant_cast<GeoDataObject*>( data ); Q_ASSERT_X( object, "CountryByFlag::initiateGame", "failed to get valid data from treeModel for GeoDataObject" ); if ( object->nodeType() == GeoDataTypes::GeoDataDocumentType ) { GeoDataDocument *doc = static_cast<GeoDataDocument*>( object ); QFileInfo fileInfo( doc->fileName() ); if ( fileInfo.fileName() == QString("boundaryplacemarks.cache") ) { d->m_countryNames = doc; break; } } } } if ( d->m_countryNames ) { d->m_countryNames->setVisible( false ); d->m_marbleWidget->model()->treeModel()->updateFeature( d->m_countryNames ); d->m_marbleWidget->centerOn( 23.0, 42.0 ); d->m_marbleWidget->setDistance( 7500 ); d->m_marbleWidget->setHighlightEnabled( false ); emit gameInitialized(); } }
void FileManagerPrivate::cleanupLoader( FileLoader* loader ) { GeoDataDocument *doc = loader->document(); m_loaderList.removeAll( loader ); if ( loader->isFinished() ) { if ( doc ) { if ( doc->name().isEmpty() && !doc->fileName().isEmpty() ) { QFileInfo file( doc->fileName() ); doc->setName( file.baseName() ); } m_treeModel->addDocument( doc ); m_fileItemHash.insert( loader->path(), doc ); emit q->fileAdded( loader->path() ); if( loader->recenter() ) { m_latLonBox |= doc->latLonAltBox(); } } if ( !loader->error().isEmpty() ) { QMessageBox errorBox; errorBox.setWindowTitle( QObject::tr("File Parsing Error")); errorBox.setText( loader->error() ); errorBox.setIcon( QMessageBox::Warning ); errorBox.exec(); qWarning() << "File Parsing error " << loader->error(); } delete loader; } if ( m_loaderList.isEmpty() ) { mDebug() << "Finished loading all placemarks " << m_timer.elapsed(); if ( !m_latLonBox.isEmpty() ) { emit q->centeredDocument( m_latLonBox ); } m_latLonBox.clear(); } }
bool TourWidgetPrivate::saveTourAs(const QString &filename) { if ( !filename.isEmpty() ) { QFile file( filename ); if ( file.open( QIODevice::WriteOnly ) ) { GeoWriter writer; writer.setDocumentType( kml::kmlTag_nameSpaceOgc22 ); if ( writer.write( &file, m_document ) ) { file.close(); m_tourUi.m_actionSaveTour->setEnabled( false ); m_isChanged = false; GeoDataDocument* document = m_document; if ( !document->fileName().isNull() ) { m_widget->model()->removeGeoData( document->fileName() ); } m_widget->model()->addGeoDataFile( filename ); m_document->setFileName( filename ); return true; } } } return false; }
void CountryByShape::initiateGame() { if ( !d->m_countryNames ) { const GeoDataTreeModel *const treeModel = d->m_marbleWidget->model()->treeModel(); for ( int i = 0; i < treeModel->rowCount(); ++i ) { QVariant const data = treeModel->data ( treeModel->index ( i, 0 ), MarblePlacemarkModel::ObjectPointerRole ); GeoDataObject *object = qvariant_cast<GeoDataObject*>( data ); Q_ASSERT_X( object, "CountryByShape::initiateGame", "failed to get valid data from treeModel for GeoDataObject" ); if ( object->nodeType() == GeoDataTypes::GeoDataDocumentType ) { GeoDataDocument *doc = static_cast<GeoDataDocument*>( object ); QFileInfo fileInfo( doc->fileName() ); if (fileInfo.fileName() == QLatin1String("boundaryplacemarks.cache")) { d->m_countryNames = doc; break; } } } } if ( !d->m_countryBoundaries ) { const GeoDataTreeModel *const treeModel = d->m_marbleWidget->model()->treeModel(); for ( int i = 0; i < treeModel->rowCount(); ++i ) { QVariant const data = treeModel->data ( treeModel->index ( i, 0 ), MarblePlacemarkModel::ObjectPointerRole ); GeoDataObject *object = qvariant_cast<GeoDataObject*>( data ); Q_ASSERT_X( object, "MainWindow::initiateGame", "failed to get valid data from treeModel for GeoDataObject" ); if ( object->nodeType() == GeoDataTypes::GeoDataDocumentType ) { GeoDataDocument *const doc = static_cast<GeoDataDocument*>( object ); QFileInfo fileInfo( doc->fileName() ); if (fileInfo.fileName() == QLatin1String("ne_50m_admin_0_countries.pn2")) { d->m_countryBoundaries = doc; break; } } } } d->m_marbleWidget->setHighlightEnabled( true ); if ( d->m_countryBoundaries && d->m_countryNames ) { d->m_countryNames->setVisible( false ); d->m_marbleWidget->model()->treeModel()->updateFeature( d->m_countryNames ); emit gameInitialized(); } }