32     writer = 
new QXmlStreamWriter(&output);
 
   33     writer->setAutoFormatting( 
true );
 
   34     writer->writeStartDocument();
 
   35     writer->writeNamespace( 
"http://observation.sourceforge.net/openastronomylog", 
"oal" );
 
   36     writer->writeNamespace( 
"http://www.w3.org/2001/XMLSchema-instance", 
"xsi" );
 
   37     writer->writeNamespace( 
"http://observation.sourceforge.net/openastronomylog oal20.xsd", 
"schemaLocation" );
 
   38     writer->writeStartElement(
"oal:observations");
 
   39     writer->writeAttribute(
"version", 
"2.0");
 
   62     writer->writeEndDocument();
 
   67     writer->writeStartElement( 
"observers" );
 
   70     writer->writeEndElement();
 
   74     writer->writeStartElement(
"sites");
 
   77     writer->writeEndElement();
 
   81     writer->writeStartElement(
"sessions");
 
   84     writer->writeEndElement();
 
   88     writer->writeStartElement(
"targets");
 
   92     writer->writeEndElement();
 
   96     writer->writeStartElement(
"scopes");
 
   99     writer->writeEndElement();
 
  103     writer->writeStartElement(
"eyepieces");
 
  106     writer->writeEndElement();
 
  110     writer->writeStartElement(
"lenses");
 
  113     writer->writeEndElement();
 
  117     writer->writeStartElement(
"filters");
 
  120     writer->writeEndElement();
 
  124     writer->writeStartElement(
"imagers");
 
  125     writer->writeEndElement();
 
  130         writeObservation( o );
 
  134     writer->writeStartElement( 
"target" );
 
  135     writer->writeAttribute(
"id", o->
name().remove( 
' ' ) );
 
  138         writer->writeAttribute( 
"type", o->
typeName() );
 
  140         switch( o->
type() ) {
 
  141             case 0: typeString = 
"oal:starTargetType"; 
break;
 
  142             case 1: typeString = 
"oal:starTargetType"; 
break;
 
  143             case 2: typeString = 
"oal:PlanetTargetType"; 
break;
 
  144             case 3: typeString = 
"oal:deepSkyOC"; 
break;
 
  145             case 4: typeString = 
"oal:deepSkyGC"; 
break;
 
  146             case 5: typeString = 
"oal:deepSkyGN"; 
break;
 
  147             case 6: typeString = 
"oal:deepSkyPN"; 
break;
 
  148             case 8: typeString = 
"oal:deepSkyGX"; 
break;
 
  149             case 9: typeString = 
"oal:CometTargetType"; 
break;
 
  150             case 12: typeString = 
"oal:MoonTargetType"; 
break;
 
  151             case 13: typeString = 
"oal:deepSkyAS"; 
break;
 
  152             case 14: typeString = 
"oal:deepSkyCG"; 
break;
 
  153             case 15: typeString = 
"oal:deepSkyDN"; 
break;
 
  154             case 16: typeString = 
"oal:deepSkyQS"; 
break;
 
  155             case 17: typeString = 
"oal:deepSkyMS"; 
break;
 
  156             default: typeString = 
"oal:deepSkyNA"; 
break;
 
  158         writer->writeAttribute(
"xsi:type", typeString );
 
  160     writer->writeStartElement( 
"datasource" );
 
  161     writer->writeCDATA( 
"KStars" );
 
  162     writer->writeEndElement();
 
  163     writer->writeStartElement(
"name");
 
  164     writer->writeCDATA( o->
name() );
 
  165     writer->writeEndElement();
 
  166     writer->writeStartElement( 
"position" );
 
  167     writer->writeStartElement( 
"ra" );
 
  168     writer->writeAttribute(
"unit", 
"rad" );
 
  169     writer->writeCharacters( QString::number( o->
ra().radians() ) );
 
  170     writer->writeEndElement();
 
  171     writer->writeStartElement( 
"dec" );
 
  172     writer->writeAttribute(
"unit", 
"rad" );
 
  173     writer->writeCharacters( QString::number( o->
dec().radians() ) );
 
  174     writer->writeEndElement();
 
  175     writer->writeEndElement();
 
  176     if( native && ! ks->observingList()->getTime( o ).isEmpty() ) {
 
  177         writer->writeStartElement(
"time");
 
  178         writer->writeCDATA( ks->observingList()->getTime( o ) );
 
  179         writer->writeEndElement();
 
  181     writer->writeStartElement( 
"constellation" );
 
  184     writer->writeEndElement();
 
  185     writer->writeStartElement( 
"notes" );
 
  186     writer->writeCDATA( o->
notes() );
 
  187     writer->writeEndElement();
 
  188     writer->writeEndElement();
 
  192     writer->writeStartElement( 
"observer" );
 
  193     writer->writeAttribute( 
"id", o->
id() );
 
  194     writer->writeStartElement( 
"name" );
 
  195     writer->writeCDATA( o->
name() );
 
  196     writer->writeEndElement();
 
  197     writer->writeStartElement( 
"surname" );
 
  198     writer->writeCDATA( o->
surname() );
 
  199     writer->writeEndElement();
 
  200     writer->writeStartElement( 
"contact" );
 
  201     writer->writeCDATA( o->
contact() );
 
  202     writer->writeEndElement();
 
  203     writer->writeEndElement();
 
  206     writer->writeStartElement( 
"site" );
 
  207     writer->writeAttribute( 
"id", s->
id() );
 
  208     writer->writeStartElement( 
"name" );
 
  209     writer->writeCDATA( s->
name() );
 
  210     writer->writeEndElement();
 
  211     writer->writeStartElement( 
"latitude" );
 
  212     writer->writeAttribute( 
"unit",  s->
latUnit() );
 
  213     writer->writeCharacters( QString::number( s->
latitude() ) );
 
  214     writer->writeStartElement( 
"longitude" );
 
  215     writer->writeAttribute( 
"unit", s->
lonUnit() );
 
  216     writer->writeCharacters( QString::number( s->
longitude() ) );
 
  217     writer->writeEndElement();
 
  218     writer->writeEndElement();
 
  221     writer->writeStartElement( 
"session" );
 
  222     writer->writeAttribute( 
"id", s->
id() ); 
 
  223     writer->writeStartElement( 
"begin" );
 
  224     writer->writeCharacters( s->
begin().date().toString( 
"yyyy-MM-dd" ) + 
'T' + s->
begin().time().toString( 
"hh:mm:ss" ) );
 
  225     writer->writeEndElement();
 
  226     writer->writeStartElement( 
"end" );
 
  227     writer->writeCharacters( s->
end().date().toString( 
"yyyy-MM-dd" ) + 
'T' + s->
end().time().toString( 
"hh:mm:ss" ) );
 
  228     writer->writeEndElement();
 
  229     writer->writeStartElement( 
"site" );
 
  230     writer->writeCharacters( s->
site() );
 
  231     writer->writeEndElement();
 
  232     writer->writeStartElement( 
"weather" );
 
  233     writer->writeCDATA( s->
weather() );
 
  234     writer->writeEndElement();
 
  235     writer->writeStartElement( 
"equipment" );
 
  237     writer->writeEndElement();
 
  238     writer->writeStartElement( 
"comments" );
 
  239     writer->writeCDATA( s->
comments() );
 
  240     writer->writeEndElement();
 
  241     writer->writeEndElement();
 
  244     writer->writeStartElement( 
"scope" );
 
  245     writer->writeAttribute( 
"id", s->
id() ); 
 
  246     writer->writeStartElement( 
"model" );
 
  247     writer->writeCDATA( s->
model() );
 
  248     writer->writeEndElement();
 
  249     writer->writeStartElement( 
"type" );
 
  250     writer->writeCDATA( s->
type().at(0) );
 
  251     writer->writeEndElement();
 
  252     writer->writeStartElement( 
"vendor" );
 
  253     writer->writeCDATA( s->
vendor() );
 
  254     writer->writeEndElement();
 
  255     if (s->
driver() != i18n(
"None"))
 
  257         writer->writeStartElement( 
"driver" );
 
  258         writer->writeCharacters( s->
driver());
 
  259         writer->writeEndElement();
 
  261     writer->writeStartElement( 
"aperture" );
 
  262     writer->writeCharacters( QString::number( s->
aperture() ) );
 
  263     writer->writeEndElement();
 
  264     writer->writeStartElement( 
"focalLength" );
 
  265     writer->writeCharacters( QString::number( s->
focalLength() ) );
 
  266     writer->writeEndElement();
 
  267     writer->writeEndElement();
 
  272     writer->writeStartElement( 
"eyepiece" );
 
  273     writer->writeAttribute( 
"id", ep->
id() ); 
 
  274     writer->writeStartElement( 
"model" );
 
  275     writer->writeCDATA( ep->
model() );
 
  276     writer->writeEndElement();
 
  277     writer->writeStartElement( 
"vendor" );
 
  278     writer->writeCDATA( ep->
vendor() );
 
  279     writer->writeEndElement();
 
  280     writer->writeStartElement( 
"focalLength" );
 
  281     writer->writeCharacters( QString::number( ep->
focalLength() ) );
 
  282     writer->writeEndElement();
 
  283     writer->writeStartElement( 
"apparantFOV" );
 
  284     writer->writeAttribute( 
"unit", ep->
fovUnit() );
 
  285     writer->writeCharacters( QString::number( ep->
appFov() ) );
 
  286     writer->writeEndElement();
 
  287     writer->writeEndElement();
 
  290     writer->writeStartElement( 
"lens" );
 
  291     writer->writeAttribute( 
"id", l->
id() );
 
  292     writer->writeStartElement( 
"model" );
 
  293     writer->writeCDATA( l->
model() );
 
  294     writer->writeEndElement();
 
  295     writer->writeStartElement( 
"vendor" );
 
  296     writer->writeCDATA( l->
vendor() );
 
  297     writer->writeEndElement();
 
  298     writer->writeStartElement( 
"factor" );
 
  299     writer->writeCharacters( QString::number( l->
factor() ) );
 
  300     writer->writeEndElement();
 
  301     writer->writeEndElement();
 
  305     writer->writeStartElement( 
"filter" );
 
  306     writer->writeAttribute( 
"id", f->
id() );
 
  307     writer->writeStartElement( 
"model" );
 
  308     writer->writeCDATA( f->
model() );
 
  309     writer->writeEndElement();
 
  310     writer->writeStartElement( 
"vendor" );
 
  311     writer->writeCDATA( f->
vendor() );
 
  312     writer->writeEndElement();
 
  313     writer->writeStartElement( 
"type" );
 
  314     writer->writeCDATA( f->
type() );
 
  315     writer->writeEndElement();
 
  316     writer->writeStartElement( 
"color" );
 
  317     writer->writeCDATA( f->
color() );
 
  318     writer->writeEndElement();
 
  319     writer->writeEndElement();
 
  323     writer->writeStartElement( 
"observation" );
 
  324     writer->writeStartElement( 
"observer" );
 
  325     writer->writeCharacters( o->
observer() );
 
  326     writer->writeEndElement();
 
  327     writer->writeStartElement( 
"site" );
 
  328     writer->writeCharacters( o->
site() );
 
  329     writer->writeEndElement();
 
  330     writer->writeStartElement( 
"session" );
 
  331     writer->writeCharacters( o->
session() );
 
  332     writer->writeEndElement();
 
  333     writer->writeStartElement( 
"target" );
 
  334     writer->writeCharacters( o->
target().remove( 
' ' ) );
 
  335     writer->writeEndElement();
 
  336     writer->writeStartElement( 
"begin" );
 
  337     writer->writeCharacters( o->
begin().date().toString( 
"yyyy-MM-dd" ) + 
'T' + o->
begin().time().toString( 
"hh:mm:ss" ) );
 
  338     writer->writeEndElement();
 
  339     writer->writeStartElement( 
"faintestStar" );
 
  340     writer->writeCharacters( QString::number( o->
faintestStar() ) );
 
  341     writer->writeEndElement();
 
  342     writer->writeStartElement( 
"seeing" );
 
  343     writer->writeCharacters( QString::number( o->
seeing() ) );
 
  344     writer->writeEndElement();
 
  345     writer->writeStartElement( 
"scope" );
 
  346     writer->writeCharacters( o->
scope() );
 
  347     writer->writeEndElement();
 
  348     writer->writeStartElement( 
"eyepiece" );
 
  349     writer->writeCharacters( o->
eyepiece() );
 
  350     writer->writeEndElement();
 
  351     writer->writeStartElement( 
"lens" );
 
  352     writer->writeCharacters( o->
lens() );
 
  353     writer->writeEndElement();
 
  354     writer->writeStartElement( 
"filter" );
 
  355     writer->writeCharacters( o->
filter() );
 
  356     writer->writeEndElement();
 
  357     writer->writeStartElement( 
"result" );
 
  358     writer->writeAttribute( 
"xsi:type", 
"oal:findingsType" );
 
  359     writer->writeAttribute( 
"lang", o->
lang() );
 
  360     writer->writeStartElement( 
"description" );
 
  361     writer->writeCDATA( o->
result() );
 
  362     writer->writeEndElement();
 
  363     writer->writeEndElement();
 
  364     writer->writeEndElement();
 
  367     writer->writeStartElement( 
"geodate" );
 
  368     writer->writeStartElement( 
"name" );
 
  369     writer->writeCDATA( ks->observingList()->geoLocation()->name() );
 
  370     writer->writeEndElement();
 
  371     writer->writeStartElement( 
"province" );
 
  372     writer->writeCDATA( ks->observingList()->geoLocation()->province() );
 
  373     writer->writeEndElement();
 
  374     writer->writeStartElement( 
"country" );
 
  375     writer->writeCDATA( ks->observingList()->geoLocation()->country() );
 
  376     writer->writeEndElement();
 
  377     writer->writeStartElement( 
"date" );
 
  378     writer->writeCDATA( ks->observingList()->dateTime().date().toString( 
"ddMMyyyy" ) );
 
  379     writer->writeEndElement();
 
  380     writer->writeEndElement();
 
  383     reader = 
new QXmlStreamReader( input );
 
  385     while( ! reader->atEnd() ) {
 
  387         if( reader->isStartElement() ) {
 
  395     while( ! reader->atEnd() ) {
 
  398         if( reader->isEndElement() )
 
  401         if( reader->isStartElement() )
 
  402             readUnknownElement();
 
  407     while( ! reader->atEnd() ) {
 
  410         if( reader->isEndElement() )
 
  413         if( reader->isStartElement() ) {
 
  414             if( reader->name() == 
"targets" )
 
  416            else if( reader->name() == 
"sites" )
 
  418            else if( reader->name() == 
"sessions" )
 
  420            else if( reader->name() == 
"observation" )
 
  421                 readObservation( reader->attributes().value( 
"id" ).toString() );
 
  422            else if( reader->name() == 
"geodate" )
 
  425                 readUnknownElement();
 
  431     while( ! reader->atEnd() ) {
 
  434         if( reader->isEndElement() )
 
  437         if( reader->isStartElement() ) {
 
  438             if( reader->name() == 
"target" )
 
  441                 readUnknownElement();
 
  451     while( ! reader->atEnd() ) {
 
  454         if( reader->isEndElement() )
 
  457         if( reader->isStartElement() ) {
 
  458             if( reader->name() == 
"site" )
 
  459                 readSite( reader->attributes().value( 
"id" ).toString() );
 
  461                 readUnknownElement();
 
  467     while( ! reader->atEnd() ) {
 
  470         if( reader->isEndElement() )
 
  473         if( reader->isStartElement() ) {
 
  474             if( reader->name() == 
"session" )
 
  475                 readSession( reader->attributes().value( 
"id" ).toString(), reader->attributes().value( 
"lang" ).toString() );
 
  477                 readUnknownElement();
 
  500     QString name, time, notes;
 
  501     while( ! reader->atEnd() ) {
 
  504         if( reader->isEndElement() )
 
  507         if( reader->isStartElement() ) {
 
  508             if( reader->name() == 
"name" ) {
 
  509                 name = reader->readElementText();
 
  510                 if( name != 
"star" ) {
 
  511                     o = ks->data()->objectNamed( name );
 
  512                     if( ! o ) o = ks->data()->skyComposite()->findStarByGenetiveName( name );
 
  513                     if( o ) targetList()->append( o );
 
  515             } 
else if( reader->name() == 
"time" ) {
 
  516                 time = reader->readElementText();
 
  518                     TimeHash.insert( o->
name(), QTime::fromString( time, 
"h:mm:ss AP" ) );
 
  519             } 
else if( reader->name() == 
"notes" ) {
 
  520                 notes = reader->readElementText();
 
  531                 readUnknownElement();
 
  538     QString name, latUnit, lonUnit, lat, lon;
 
  539     while( ! reader->atEnd() ) {
 
  542         if( reader->isEndElement() )
 
  545         if( reader->isStartElement() ) {
 
  546             if( reader->name() == 
"name" ) {
 
  547                 name = reader->readElementText();
 
  548             } 
else if( reader->name() == 
"latitude" ) {
 
  549                 lat = reader->readElementText() ;
 
  550                 latUnit = reader->attributes().value( 
"unit" ).toString();
 
  551             } 
else if( reader->name() == 
"longitude" ) {
 
  552                 lon = reader->readElementText() ;
 
  553                 lonUnit = reader->attributes().value( 
"unit" ).toString();
 
  555                 readUnknownElement();
 
  558     OAL::Site *o= 
new OAL::Site( 
id, name, lat.toDouble(), latUnit, lon.toDouble(), lonUnit );
 
  559     m_siteList.append( o );
 
  563     QString site, weather, equipment, comments, begin, end;
 
  565     while( ! reader->atEnd() ) {
 
  568         if( reader->isEndElement() )
 
  571         if( reader->isStartElement() ) {
 
  572             if( reader->name() == 
"site" ) {
 
  573                 site = reader->readElementText();
 
  574             } 
else if( reader->name() == 
"begin" ) {
 
  575                 begin = reader->readElementText() ;
 
  577             } 
else if( reader->name() == 
"end" ) {
 
  578                 end = reader->readElementText() ;
 
  580             } 
else if( reader->name() == 
"weather" ) {
 
  581                 weather = reader->readElementText() ;
 
  582             } 
else if( reader->name() == 
"equipment" ) {
 
  583                 equipment = reader->readElementText() ;
 
  584             } 
else if( reader->name() == 
"comments" ) {
 
  585                 comments = reader->readElementText() ;
 
  587                 readUnknownElement();
 
  591     m_sessionList.append( o );
 
  596     while( ! reader->atEnd() ) {
 
  599         if( reader->isEndElement() )
 
  602         if( reader->isStartElement() ) {
 
  603             if( reader->name() == 
"ra" )
 
  604                 kDebug() << reader->readElementText() << reader->attributes().value( 
"unit" );
 
  605             else if( reader->name() == 
"dec" )
 
  606                 kDebug() << reader->readElementText() << reader->attributes().value( 
"unit" );
 
  608                 readUnknownElement();
 
  614     QString observer, site, session, target, faintestStar, seeing, scope, eyepiece, lens, filter, result, lang;
 
  616     while( ! reader->atEnd() ) {
 
  618         if( reader->isEndElement() )
 
  620         if( reader->isStartElement() ) {
 
  621             if( reader->name() == 
"observer" )
 
  622                 observer = reader->readElementText();
 
  623             else if( reader->name() == 
"site" )
 
  624                 site = reader->readElementText();
 
  625             else if( reader->name() == 
"session" )
 
  626                 session = reader->readElementText();
 
  627             else if( reader->name() == 
"target" )
 
  628                 target = reader->readElementText();
 
  629             else if( reader->name() == 
"begin" )
 
  630                 begin.
fromString( reader->readElementText() );
 
  631             else if( reader->name() == 
"faintestStar" )
 
  632                 faintestStar = reader->readElementText();
 
  633             else if( reader->name() == 
"seeing" )
 
  634                 seeing = reader->readElementText();
 
  635             else if( reader->name() == 
"scope" )
 
  636                 scope = reader->readElementText();
 
  637             else if( reader->name() == 
"eyepiece" )
 
  638                 eyepiece = reader->readElementText();
 
  639             else if( reader->name() == 
"lens" )
 
  640                 lens = reader->readElementText();
 
  641             else if( reader->name() == 
"filter" )
 
  642                 filter = reader->readElementText();
 
  643             else if( reader->name() == 
"result" ) {
 
  644                 lang = reader->attributes().value( 
"lang" ).toString();
 
  645                 result = readResult();
 
  647                 readUnknownElement();
 
  650         OAL::Observation *o = 
new OAL::Observation( 
id, observer, site, session, target, begin, faintestStar.toDouble(), seeing.toDouble(), scope, eyepiece, lens, filter, result, lang );
 
  651         m_observationList.append( o );
 
  656     while( ! reader->atEnd() ) {
 
  659         if( reader->isEndElement() )
 
  661         if( reader->isStartElement() ) {
 
  662             if( reader->name() == 
"description" )
 
  663                 result = reader->readElementText();
 
  665                 readUnknownElement();
 
  672     QString name, province, country, date;
 
  673     while( ! reader->atEnd() ) {
 
  676         if( reader->isEndElement() )
 
  679         if( reader->isStartElement() ) {
 
  680             if( reader->name() == 
"name" )
 
  681                 name = reader->readElementText();
 
  682             else if( reader->name() == 
"province" )
 
  683                 province = reader->readElementText();
 
  684             else if( reader->name() == 
"country" )
 
  685                 country = reader->readElementText();
 
  686             else if( reader->name() == 
"date" ){
 
  687                 date = reader->readElementText();
 
  689                 readUnknownElement();
 
  692     geo = ks->data()->locationNamed( name, province, country );
 
  693     dt.setDate( QDate::fromString( date, 
"ddMMyyyy" ) );
 
  698         if( QString(obs->
name() + 
' ' + obs->
surname()) == name )
 
  705         if( obs->
id() == id )
 
  726         if( s->
name()  == name )
 
  761         if( s->
name()  == name )
 
  768         if( e->
name()  == name )
 
  775         if( f->
name()  == name )
 
  782         if( l->
name()  == name )
 
void writeObservation(OAL::Observation *o)
 
QString writeLog(bool native=true)
 
static KStarsDateTime fromString(const QString &s)
 
OAL::Lens * findLensByName(QString name)
 
double faintestStar() const 
 
void readSession(QString id, QString lang)
 
KStarsDateTime begin() const 
 
static KStarsData * Instance()
 
void writeFilter(OAL::Filter *f)
 
static KStars * Instance()
 
void GetAllObservers(QList< OAL::Observer * > &observer_list)
Updates the passed reference of observer_list with all observers The original content of the list is ...
 
void writeSession(OAL::Session *s)
 
void GetAllFilters(QList< OAL::Filter * > &m_filterList)
Populate the reference passed with all filters. 
 
void GetAllScopes(QList< OAL::Scope * > &m_scopeList)
updates the scope list with all scopes from database List is cleared and then filled with content...
 
void writeTarget(SkyObject *o)
 
QString equipment() const 
 
OAL::Lens * findLensById(QString id)
 
OAL::Observer * findObserverById(QString id)
 
void readSite(QString id)
 
ObservingList * observingList() const 
 
void GetAllEyepieces(QList< OAL::Eyepiece * > &m_eyepieceList)
Populate the reference passed with all eyepieces. 
 
void GetAllLenses(QList< OAL::Lens * > &m_lensList)
Populate the reference passed with all lenses. 
 
OAL::Site * findSiteById(QString id)
 
double focalLength() const 
 
KStarsDateTime begin() const 
 
OAL::Observation * findObservationByName(QString name)
 
OAL::Site * findSiteByName(QString name)
 
Extension of KDateTime for KStars KStarsDateTime can represent the date/time as a Julian Day...
 
OAL::Session * findSessionByName(QString id)
 
void writeSite(OAL::Site *s)
 
double focalLength() const 
 
OAL::Eyepiece * findEyepieceById(QString id)
 
OAL::Scope * findScopeById(QString id)
 
void setNotes(QString _notes)
 
void writeLens(OAL::Lens *l)
 
void readUnknownElement()
 
void writeEyepiece(OAL::Eyepiece *ep)
 
OAL::Observer * findObserverByName(QString fullName)
 
KStarsData * data() const 
 
OAL::Scope * findScopeByName(QString name)
 
OAL::Eyepiece * findEyepieceByName(QString name)
 
void writeObserver(OAL::Observer *o)
 
void writeScope(OAL::Scope *s)
 
virtual QString name(void) const 
 
KStarsDateTime end() const 
 
void readBegin(QString input)
 
static QString typeName(const int t)
 
Provides all necessary information about an object in the sky: its coordinates, name(s), type, magnitude, and QStringLists of URLs for images and webpages regarding the object. 
 
OAL::Filter * findFilterByName(QString name)
 
void readObservation(QString id)
 
OAL::Filter * findFilterById(QString id)