File indexing completed on 2024-04-14 14:11:39

0001 /*
0002     SPDX-FileCopyrightText: 2002 Pablo de Vicente <vicente@oan.es>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "ui_modcalcdaylength.h"
0010 
0011 #include <QFrame>
0012 
0013 class QDate;
0014 class QTextStream;
0015 class QTime;
0016 
0017 class GeoLocation;
0018 
0019 /**
0020  * Module to compute the equatorial coordinates for a given date and time
0021  * from a given epoch or equinox
0022  *
0023  * @author Pablo de Vicente
0024  */
0025 class modCalcDayLength : public QFrame, public Ui::modCalcDayLengthDlg
0026 {
0027     Q_OBJECT
0028 
0029   public:
0030     explicit modCalcDayLength(QWidget *p);
0031 
0032     virtual ~modCalcDayLength() override = default;
0033 
0034   public slots:
0035     void slotLocation();
0036     void slotLocationBatch();
0037     void slotComputeAlmanac();
0038     void slotRunBatch();
0039     void slotViewBatch();
0040     void slotCheckFiles();
0041 
0042   private:
0043     void updateAlmanac(const QDate &d, GeoLocation *geo);
0044     QTime lengthOfDay(const QTime &setQTime, const QTime &riseQTime);
0045 
0046     void showCurrentDate();
0047     void initGeo();
0048     void processLines(QTextStream &istream);
0049 
0050     GeoLocation *geoPlace { nullptr };
0051     GeoLocation *geoBatch { nullptr };
0052     QString srTimeString, stTimeString, ssTimeString;
0053     QString mrTimeString, mtTimeString, msTimeString;
0054     QString srAzString, stAltString, ssAzString;
0055     QString mrAzString, mtAltString, msAzString;
0056     QString daylengthString, lunarphaseString;
0057 };