9#include "ui_imagingplanner.h"
10#include "catalogsdb.h"
15#include <QFutureWatcher>
17#include <QNetworkAccessManager>
19#include <QSortFilterProxyModel>
23class ImagingPlannerPopup;
27class ImagingPlannerDBEntry
41 ImagingPlannerDBEntry() {};
42 ImagingPlannerDBEntry(
const QString &name,
int flags,
const QString ¬es);
43 ImagingPlannerDBEntry(
const QString &name,
bool picked,
bool imaged,
bool ignored,
const QString ¬es);
44 void setFlags(
bool picked,
bool imaged,
bool ignored);
45 void getFlags(
bool *picked,
bool *imaged,
bool *ignored);
46 QString name() {
return m_Name; }
49class ImagingPlannerUI :
public QFrame,
public Ui::ImagingPlanner
63 CatalogImageInfo(
const QString &csv);
64 QString m_Name, m_Filename, m_Author, m_Link, m_License;
72 bool filterAcceptsRow(
int row,
const QModelIndex &
parent)
const override;
73 bool lessThan (
const QModelIndex & left,
const QModelIndex & right )
const override;
74 void setMinHours(
double hours);
75 void setImagedConstraints(
bool enabled,
bool required);
76 void setPickedConstraints(
bool enabled,
bool required);
77 void setIgnoredConstraints(
bool enabled,
bool required);
78 void setKeywordConstraints(
bool enabled,
bool required,
const QString &keyword);
79 void setSortColumn(
int column);
82 double m_MinHours = 0;
83 bool m_ImagedConstraintsEnabled =
false;
84 bool m_ImagedRequired =
false;
85 bool m_PickedConstraintsEnabled =
false;
86 bool m_PickedRequired =
false;
87 bool m_IgnoredConstraintsEnabled =
false;
88 bool m_IgnoredRequired =
false;
89 bool m_KeywordConstraintsEnabled =
false;
90 bool m_KeywordRequired =
false;
92 QRegularExpression m_KeywordRE;
94 bool m_ReverseSort =
false;
97class ImagingPlanner :
public QDialog
103 virtual ~ImagingPlanner()
override =
default;
108 void selectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected);
109 void setSelection(
int flag,
bool enabled);
111 void setSelectionIgnored();
112 void setSelectionNotIgnored();
114 void setSelectionImaged();
115 void setSelectionNotImaged();
117 void setSelectionPicked();
118 void setSelectionNotPicked();
120 void centerOnSkymap();
121 void reallyCenterOnSkymap();
125 void searchAstrobin();
126 void searchWikipedia();
128 void searchSpecialWebPageImages();
131 void sorry(
const QString &message);
134 void popupSorry(
const QString &message);
135 void addRow(QList<QStandardItem *> itemList);
138 void showEvent(QShowEvent *)
override;
141 void userNotesEditFinished();
142 void keywordEditFinished();
143 void loadImagedFile();
145 void loadCatalogViaMenu();
147 void openOptionsMenu();
148 void addRowSlot(QList<QStandardItem *> itemList);
153 void catalogLoaded();
154 void loadCatalog(
const QString &path);
155 void installEventFilters();
156 void removeEventFilters();
160 void setupHideButtons(
bool(*option)(),
void(*setOption)(
bool),
161 QPushButton *hideButton, QPushButton *showButton,
162 QFrame *widget, QFrame *hiddenWidget);
163 void setupFilterButton(QCheckBox *checkbox,
bool(*option)(),
void(*setOption)(
bool));
164 void setupFilter2Buttons(
165 QCheckBox *yes, QCheckBox *no, QCheckBox *dontCare,
166 bool(*yesOption)(),
bool(*noOption)(),
bool(*dontCareOption)(),
167 void(*setYesOption)(
bool),
void(*setNoOption)(
bool),
void(*setDontCareOption)(
bool));
169 void updateSortConstraints();
171 GeoLocation *getGeo();
172 QDate getDate()
const;
174 void loadInitialCatalog();
175 QString defaultDirectory()
const;
176 QString findDefaultCatalog()
const;
177 bool getKStarsCatalogObject(
const QString &name, CatalogObject *catObject);
178 bool internetNameSearch(
const QString &name,
bool abellPlanetary,
int abellNumber, CatalogObject * catObject);
180 bool addCatalogItem(
const KSAlmanac &ksal,
const QString &name,
int flags = 0);
181 QUrl getAstrobinUrl(
const QString &target,
bool requireAwards,
bool requireSomeFilters,
double minRadius,
double maxRadius);
182 void popupAstrobin(
const QString &target);
183 void plotAltitudeGraph(
const QDate &date,
const dms &ra,
const dms &dec);
185 void moveBackOneDay();
186 void moveForwardOneDay();
187 bool scrollToName(
const QString &name);
189 void setStatus(
const QString &message);
192 void updateDetails(
const CatalogObject &
object,
int flags);
193 void updateNotes(
const QString ¬es);
194 void initUserNotes();
195 void disableUserNotes();
196 void setupNotesLinks(
const QString ¬es);
198 void setDefaultImage();
200 QString currentObjectName()
const;
201 int currentObjectFlags();
202 QString currentObjectNotes();
203 void setCurrentObjectNotes(
const QString ¬es);
205 CatalogObject *currentCatalogObject();
206 CatalogObject *getObject(
const QString &name);
207 CatalogObject *addObject(
const QString &name);
210 void loadCatalogFromFile(QString filename =
"",
bool reset=
true);
211 bool findCatalogImageInfo(
const QString &name, CatalogImageInfo *info);
212 void addCatalogImageInfo(
const CatalogImageInfo &info);
214 void objectDetails();
215 void updateDisplays();
221 void saveToDB(
const QString &name,
bool picked,
bool imaged,
bool ignored,
const QString ¬es);
222 void saveToDB(
const QString &name,
int flags,
const QString ¬es);
225 void highlightImagedObject(
const QModelIndex &index,
bool imaged);
226 void highlightPickedObject(
const QModelIndex &index,
bool picked);
229 void adjustWindowSize();
232 void checkTargets(
bool justCheckCurrentCatalog =
false);
233 void checkTargets2(
bool backwards =
false);
235 void adjustSpecialWebPageButton(
const QString &name);
236 bool checkIfPageExists(
const QString &urlString);
237 QNetworkAccessManager m_networkManager;
239 ImagingPlannerUI *ui {
nullptr };
241 bool m_initialShow {
false };
242 bool m_InitialLoad =
true;
244 CatalogsDB::DBManager m_manager;
245 QPointer<QStandardItemModel> m_CatalogModel;
246 QPointer<CatalogFilter> m_CatalogSortModel;
248 QFuture<void> m_LoadCatalogs;
249 QFutureWatcher<void> *m_LoadCatalogsWatcher;
251 QHash<QString, CatalogObject> m_CatalogHash;
252 QPixmap m_NoImagePixmap;
254 QPointer<ImagingPlannerPopup> m_PopupMenu;
256 double m_MinMoon = 30.0;
257 double m_MaxMoonAltitude = 90.0;
258 double m_MinAltitude = 30.0;
259 double m_MinHours = 0;
260 bool m_UseArtificialHorizon =
true;
263 int m_numWithImage = 0;
264 int m_numMissingImage = 0;
265 bool m_loadingCatalog =
false;
267 QMap<QString, CatalogImageInfo> m_CatalogImageInfoMap;
270class ImagingPlannerPopup :
public QMenu
274 ImagingPlannerPopup();
275 virtual ~ImagingPlannerPopup()
override =
default;
277 void init(ImagingPlanner *planner,
const QStringList &names,
278 const bool *imaged,
const bool *picked,
const bool *ignored);
Provides necessary information about the Moon.
virtual QModelIndex parent(const QModelIndex &index) const const=0
virtual bool event(QEvent *e)
QObject * parent() const const