1 /*
2     SPDX-FileCopyrightText: 2002 Pablo de Vicente <vicente@oan.es>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "ui_modcalcdaylength.h"
10 
11 #include <QFrame>
12 
13 class QDate;
14 class QTextStream;
15 class QTime;
16 
17 class GeoLocation;
18 
19 /**
20  * Module to compute the equatorial coordinates for a given date and time
21  * from a given epoch or equinox
22  *
23  * @author Pablo de Vicente
24  */
25 class modCalcDayLength : public QFrame, public Ui::modCalcDayLengthDlg
26 {
27     Q_OBJECT
28 
29   public:
30     explicit modCalcDayLength(QWidget *p);
31 
32     virtual ~modCalcDayLength() override = default;
33 
34   public slots:
35     void slotLocation();
36     void slotLocationBatch();
37     void slotComputeAlmanac();
38     void slotRunBatch();
39     void slotViewBatch();
40     void slotCheckFiles();
41 
42   private:
43     void updateAlmanac(const QDate &d, GeoLocation *geo);
44     QTime lengthOfDay(const QTime &setQTime, const QTime &riseQTime);
45 
46     void showCurrentDate();
47     void initGeo();
48     void processLines(QTextStream &istream);
49 
50     GeoLocation *geoPlace { nullptr };
51     GeoLocation *geoBatch { nullptr };
52     QString srTimeString, stTimeString, ssTimeString;
53     QString mrTimeString, mtTimeString, msTimeString;
54     QString srAzString, stAltString, ssAzString;
55     QString mrAzString, mtAltString, msAzString;
56     QString daylengthString, lunarphaseString;
57 };
58