1 /*
2     SPDX-FileCopyrightText: 2009 Jerome SONRIER <jsid@emor3j.fr.eu.org>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "ui_flagmanager.h"
10 
11 #include <QAbstractTableModel>
12 #include <QDialog>
13 
14 class QSortFilterProxyModel;
15 class QStandardItemModel;
16 class KStars;
17 
18 class FlagManagerUI : public QFrame, public Ui::FlagManager
19 {
20     Q_OBJECT
21 
22   public:
23     /** @short Constructor */
24     explicit FlagManagerUI(QWidget *parent);
25 };
26 
27 /**
28  * @class FlagManager
29  * @short Flag manager
30  * Dialog box to add and remove flags
31  *
32  * @version 1.1
33  * @author Jerome SONRIER
34  */
35 class FlagManager : public QDialog
36 {
37     Q_OBJECT
38   public:
39     explicit FlagManager(QWidget *ks);
40 
41     virtual ~FlagManager() override = default;
42 
43     void setRaDec(const dms &ra, const dms &dec);
44     void clearFields();
45     void showFlag(const int flagIdx);
46 
47     bool validatePoint();
48 
49     void deleteFlagItem(int flagIdx);
50 
51   public slots:
52     /** @short Verify coordinates and add a flag */
53     void slotAddFlag();
54 
55     /** @short Delete a flag */
56     void slotDeleteFlag();
57 
58     /** @short Center the selected flag in the display */
59     void slotCenterFlag();
60 
61     /** @brief Center the selected flag in the telescope. */
62     void slotCenterTelescope();
63 
64   private slots:
65     void slotSaveChanges();
66     void slotSetShownFlag(QModelIndex idx);
67 
68   private:
69     void insertFlag(bool isNew, int row = 0);
70 
71     KStars *m_Ks { nullptr };
72     FlagManagerUI *ui { nullptr };
73     QStandardItemModel *m_Model { nullptr };
74     QSortFilterProxyModel *m_SortModel { nullptr };
75 };
76