File indexing completed on 2025-01-19 09:45:51
0001 /* 0002 SPDX-FileCopyrightText: 2009 Prakash Mohan <prakash.mohan@kdemail.net> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "oal/oal.h" 0010 0011 #include <QString> 0012 #include <QXmlStreamReader> 0013 #include <QXmlStreamWriter> 0014 0015 #include "dms.h" 0016 #include "skyobjects/skyobject.h" 0017 #include "oal/observer.h" 0018 #include "oal/site.h" 0019 #include "oal/session.h" 0020 #include "oal/scope.h" 0021 #include "oal/dslrlens.h" 0022 #include "oal/eyepiece.h" 0023 #include "oal/filter.h" 0024 #include "oal/lens.h" 0025 #include "oal/observation.h" 0026 0027 /** 0028 * @class Log 0029 * 0030 * Implementation of <a href="https://code.google.com/p/openastronomylog/">Open Astronomy Log</a> (OAL) XML specifications to record observation logs. 0031 */ 0032 class OAL::Log 0033 { 0034 public: 0035 ~Log(); 0036 QString writeLog(bool native = true); 0037 void writeBegin(); 0038 void writeGeoDate(); 0039 void writeObservers(); 0040 void writeSites(); 0041 void writeSessions(); 0042 void writeTargets(); 0043 void writeScopes(); 0044 void writeDSLRLenses(); 0045 void writeEyepieces(); 0046 void writeLenses(); 0047 void writeFilters(); 0048 void writeImagers(); 0049 void writeObservations(); 0050 inline QList<QSharedPointer<SkyObject>> &targetList() 0051 { 0052 return m_targetList; 0053 } 0054 inline QList<OAL::Scope *> *scopeList() 0055 { 0056 return &m_scopeList; 0057 } 0058 inline QList<OAL::DSLRLens *> *dslrLensList() 0059 { 0060 return &m_dslrLensList; 0061 } 0062 inline QList<OAL::Site *> *siteList() 0063 { 0064 return &m_siteList; 0065 } 0066 inline QList<OAL::Session *> *sessionList() 0067 { 0068 return &m_sessionList; 0069 } 0070 inline QList<OAL::Eyepiece *> *eyepieceList() 0071 { 0072 return &m_eyepieceList; 0073 } 0074 inline QList<OAL::Lens *> *lensList() 0075 { 0076 return &m_lensList; 0077 } 0078 inline QList<OAL::Filter *> *filterList() 0079 { 0080 return &m_filterList; 0081 } 0082 inline QList<OAL::Observation *> *observationList() 0083 { 0084 return &m_observationList; 0085 } 0086 inline QList<OAL::Observer *> *observerList() 0087 { 0088 return &m_observerList; 0089 } 0090 void writeObserver(OAL::Observer *o); 0091 void writeSite(OAL::Site *s); 0092 void writeSession(OAL::Session *s); 0093 void writeTarget(SkyObject *o); 0094 void writeScope(OAL::Scope *s); 0095 void writeDSLRLenses(OAL::DSLRLens *s); 0096 void writeEyepiece(OAL::Eyepiece *ep); 0097 void writeLens(OAL::Lens *l); 0098 void writeFilter(OAL::Filter *f); 0099 void writeObservation(OAL::Observation *o); 0100 // void writeImager(); 0101 void writeEnd(); 0102 void readBegin(QString input); 0103 void readLog(); 0104 void readUnknownElement(); 0105 void readTargets(); 0106 void readObservers(); 0107 void readSites(); 0108 void readSessions(); 0109 void readScopes(); 0110 void readDSLRLenses(); 0111 void readEyepieces(); 0112 void readLenses(); 0113 void readFilters(); 0114 void readObservation(const QString &id); 0115 void readTarget(); 0116 void readSite(const QString &id); 0117 void readSession(const QString &id, const QString &lang); 0118 void readAll(); 0119 SkyPoint readPosition(bool &Ok); 0120 void readGeoDate(); 0121 QString readResult(); 0122 OAL::Observer *findObserverByName(const QString &name); 0123 OAL::Observer *findObserverById(const QString &id); 0124 OAL::Site *findSiteByName(const QString &name); 0125 OAL::Site *findSiteById(const QString &id); 0126 OAL::Session *findSessionByName(const QString &id); 0127 OAL::Scope *findScopeByName(const QString &name); 0128 OAL::Scope *findScopeById(const QString &id); 0129 OAL::DSLRLens *findDSLRLensByName(const QString &name); 0130 OAL::DSLRLens *findDSLRLensById(const QString &id); 0131 OAL::Eyepiece *findEyepieceById(const QString &id); 0132 OAL::Lens *findLensById(const QString &id); 0133 OAL::Filter *findFilterById(const QString &id); 0134 OAL::Eyepiece *findEyepieceByName(const QString &name); 0135 OAL::Lens *findLensByName(const QString &name); 0136 OAL::Filter *findFilterByName(const QString &name); 0137 OAL::Observation *findObservationByName(const QString &name); 0138 QHash<QString, QTime> timeHash() const 0139 { 0140 return TimeHash; 0141 } 0142 KStarsDateTime dateTime() const 0143 { 0144 return dt; 0145 } 0146 GeoLocation *geoLocation() 0147 { 0148 return geo; 0149 } 0150 inline QString writtenOutput() const 0151 { 0152 return output; 0153 } 0154 0155 private: 0156 QList<QSharedPointer<SkyObject>> m_targetList; 0157 QList<OAL::Observer *> m_observerList; 0158 QList<OAL::Eyepiece *> m_eyepieceList; 0159 QList<OAL::Lens *> m_lensList; 0160 QList<OAL::Filter *> m_filterList; 0161 QList<OAL::Site *> m_siteList; 0162 QList<OAL::Session *> m_sessionList; 0163 QList<OAL::Scope *> m_scopeList; 0164 QList<OAL::DSLRLens *> m_dslrLensList; 0165 QList<OAL::Observation *> m_observationList; 0166 QString output; 0167 bool native { false }; 0168 dms ra, dec; 0169 QXmlStreamWriter *writer { nullptr }; 0170 QXmlStreamReader *reader { nullptr }; 0171 QHash<QString, QTime> TimeHash; 0172 KStarsDateTime dt; 0173 GeoLocation *geo { nullptr }; 0174 };