File indexing completed on 2024-04-21 14:46:52

0001 /*
0002     SPDX-FileCopyrightText: 2009 Jerome SONRIER <jsid@emor3j.fr.eu.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "ui_flagmanager.h"
0010 
0011 #include <QAbstractTableModel>
0012 #include <QDialog>
0013 
0014 class QSortFilterProxyModel;
0015 class QStandardItemModel;
0016 class KStars;
0017 
0018 class FlagManagerUI : public QFrame, public Ui::FlagManager
0019 {
0020     Q_OBJECT
0021 
0022   public:
0023     /** @short Constructor */
0024     explicit FlagManagerUI(QWidget *parent);
0025 };
0026 
0027 /**
0028  * @class FlagManager
0029  * @short Flag manager
0030  * Dialog box to add and remove flags
0031  *
0032  * @version 1.1
0033  * @author Jerome SONRIER
0034  */
0035 class FlagManager : public QDialog
0036 {
0037     Q_OBJECT
0038   public:
0039     explicit FlagManager(QWidget *ks);
0040 
0041     virtual ~FlagManager() override = default;
0042 
0043     void setRaDec(const dms &ra, const dms &dec);
0044     void clearFields();
0045     void showFlag(const int flagIdx);
0046 
0047     bool validatePoint();
0048 
0049     void deleteFlagItem(int flagIdx);
0050 
0051   public slots:
0052     /** @short Verify coordinates and add a flag */
0053     void slotAddFlag();
0054 
0055     /** @short Delete a flag */
0056     void slotDeleteFlag();
0057 
0058     /** @short Center the selected flag in the display */
0059     void slotCenterFlag();
0060 
0061     /** @brief Center the selected flag in the telescope. */
0062     void slotCenterTelescope();
0063 
0064   private slots:
0065     void slotSaveChanges();
0066     void slotSetShownFlag(QModelIndex idx);
0067 
0068   private:
0069     void insertFlag(bool isNew, int row = 0);
0070 
0071     KStars *m_Ks { nullptr };
0072     FlagManagerUI *ui { nullptr };
0073     QStandardItemModel *m_Model { nullptr };
0074     QSortFilterProxyModel *m_SortModel { nullptr };
0075 };