SatellitesComponent::SatellitesComponent( SkyComposite *parent ) : SkyComponent( parent ) { KSFileReader fileReader; QString line; QStringList group_infos; if ( ! fileReader.open( "satellites.dat" ) ) return; emitProgressText( i18n("Loading satellites" ) ); while ( fileReader.hasMoreLines() ) { line = fileReader.readLine(); if ( line.trimmed().isEmpty() || line.at( 0 ) == '#' ) continue; group_infos = line.split( ';' ); m_groups.append( new SatelliteGroup( group_infos.at( 0 ), group_infos.at( 1 ), QUrl( group_infos.at( 2 ) ) ) ); } objectNames(SkyObject::SATELLITE).clear(); foreach( SatelliteGroup *group, m_groups ) { for ( int i=0; i<group->size(); i++ ) { Satellite *sat = group->at( i ); if ( sat->selected() && nameHash.contains(sat->name().toLower()) == false) { objectNames(SkyObject::SATELLITE).append(sat->name()); nameHash[sat->name().toLower()] = sat; } } } }
void SatellitesComponent::draw( SkyPainter *skyp ) { // Return if satellites must not be draw if( ! selected() ) return; bool hideLabels = (!Options::showSatellitesLabels() || ( SkyMap::Instance()->isSlewing() && Options::hideLabels() )); foreach( SatelliteGroup *group, m_groups ) { for ( int i=0; i<group->size(); i++ ) { Satellite *sat = group->at( i ); if ( sat->selected() ) { bool drawn = false; if ( Options::showVisibleSatellites() ) { if ( sat->isVisible() ) drawn = skyp->drawSatellite( sat ); } else { drawn = skyp->drawSatellite( sat ); } if (drawn && !hideLabels) SkyLabeler::AddLabel( sat, SkyLabeler::SATELLITE_LABEL ); } } } }
void SatellitesItem::update() { if( ! m_satComp->selected() ) { hide(); return; } QSGNode *n = firstChild(); while(n != 0) { SatelliteNode *satNode = static_cast<SatelliteNode *>(n); Satellite *sat = satNode->sat(); if ( sat->selected() ) { if ( Options::showVisibleSatellites() ) { if ( sat->isVisible() ) { satNode->update(); } else { satNode->hide(); } } else { satNode->update(); } } else { satNode->hide(); } n = n->nextSibling(); } }
void SatelliteGroup::updateSatellitesPos() { for ( int i=0; i<size(); i++ ) { Satellite *sat = at( i ); if ( sat->selected() ) sat->updatePos(); } }
void SatellitesComponent::draw( SkyPainter *skyp ) { // Return if satellites must not be draw if( ! selected() ) return; foreach( SatelliteGroup *group, m_groups ) { for ( int i=0; i<group->size(); i++ ) { Satellite *sat = group->at( i ); if ( sat->selected() ) { if ( Options::showVisibleSatellites() ) { if ( sat->isVisible() ) skyp->drawSatellite( sat ); } else { skyp->drawSatellite( sat ); } } } } }