File indexing completed on 2024-09-29 11:55:24

0001 /*
0002     SPDX-FileCopyrightText: 2003 Jason Harris <kstars@30doradus.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef FOVDIALOG_H_
0008 #define FOVDIALOG_H_
0009 
0010 #include <QPaintEvent>
0011 #include <QDialog>
0012 #include <QDoubleSpinBox>
0013 
0014 #include "fov.h"
0015 #include "ui_fovdialog.h"
0016 #include "ui_newfov.h"
0017 
0018 class FOVDialogUI : public QFrame, public Ui::FOVDialog
0019 {
0020         Q_OBJECT
0021     public:
0022         explicit FOVDialogUI(QWidget *parent = nullptr);
0023 };
0024 
0025 class NewFOVUI : public QFrame, public Ui::NewFOV
0026 {
0027         Q_OBJECT
0028     public:
0029         explicit NewFOVUI(QWidget *parent = nullptr);
0030 };
0031 
0032 /** @class FOVDialog
0033  *  FOVDialog is dialog to select a Field-of-View indicator (or create a new one)
0034     *@author Jason Harris
0035     *@version 1.0
0036     */
0037 class FOVDialog : public QDialog
0038 {
0039         Q_OBJECT
0040     public:
0041         explicit FOVDialog(QWidget *parent = nullptr);
0042         ~FOVDialog() override;
0043     private slots:
0044         void slotNewFOV();
0045         void slotEditFOV();
0046         void slotRemoveFOV();
0047         void slotSelect(int);
0048 
0049     private:
0050         /** Add new widget to list box */
0051         QListWidgetItem *addListWidget(FOV *f);
0052 
0053         unsigned int currentItem() const;
0054         FOVDialogUI *fov;
0055         static int fovID;
0056 };
0057 
0058 /** @class NewFOV
0059         * Dialog for defining a new FOV symbol
0060     *@author Jason Harris
0061     *@version 1.0
0062     */
0063 class NewFOV : public QDialog
0064 {
0065         Q_OBJECT
0066     public:
0067         /** Create new dialog
0068              * @param parent parent widget
0069              * @param fov widget to copy data from. If it's empty will create empty one.
0070              */
0071         explicit NewFOV(QWidget *parent = nullptr, const FOV *fov = nullptr);
0072         ~NewFOV() override = default;
0073         /** Return reference to FOV. */
0074         const FOV &getFOV() const
0075         {
0076             return f;
0077         }
0078 
0079     public slots:
0080         void slotBinocularFOVDistanceChanged(int index);
0081         void slotUpdateFOV();
0082         void slotComputeFOV();
0083         void slotEyepieceAFOVChanged(int index);
0084         void slotComputeTelescopeFL();
0085         void slotDetectFromINDI();
0086 
0087     private:
0088         FOV f;
0089         NewFOVUI *ui;
0090         QPushButton *okB;
0091 };
0092 
0093 /**
0094  *@class TelescopeFL
0095  *Dialog for calculating telescope focal length from f-number and diameter
0096  *@author Akarsh Simha
0097  *@version 1.0
0098  */
0099 
0100 class TelescopeFL : public QDialog
0101 {
0102         Q_OBJECT
0103     public:
0104         /**
0105              * Create a telescope focal length dialog
0106              * @param parent parent widget
0107              */
0108         explicit TelescopeFL(QWidget *parent = nullptr);
0109 
0110         ~TelescopeFL() override = default;
0111 
0112         /**
0113              * Compute and return the focal length in mm
0114              * @return focal length in mm
0115              */
0116         double computeFL() const;
0117 
0118     private:
0119         QDoubleSpinBox *aperture, *fNumber;
0120         QComboBox *apertureUnit;
0121 };
0122 
0123 #endif