9#include "ui_imagingplanner.h"
10#include "catalogsdb.h"
15#include <QFutureWatcher>
17#include <QNetworkAccessManager>
19#include <QSortFilterProxyModel>
23class ImagingPlannerPopup;
29class ImagingPlannerDBEntry
43 ImagingPlannerDBEntry() {};
44 ImagingPlannerDBEntry(
const QString &name,
int flags,
const QString ¬es);
45 ImagingPlannerDBEntry(
const QString &name,
bool picked,
bool imaged,
bool ignored,
const QString ¬es);
46 void setFlags(
bool picked,
bool imaged,
bool ignored);
47 void getFlags(
bool *picked,
bool *imaged,
bool *ignored);
48 QString name() {
return m_Name; }
51class ImagingPlannerUI :
public QFrame,
public Ui::ImagingPlanner
65 CatalogImageInfo(
const QString &csv);
66 QString m_Name, m_Filename, m_Author, m_Link, m_License;
74 bool filterAcceptsRow(
int row,
const QModelIndex &
parent)
const override;
75 bool lessThan (
const QModelIndex & left,
const QModelIndex & right )
const override;
76 void setMinHours(
double hours);
77 void setImagedConstraints(
bool enabled,
bool required);
78 void setPickedConstraints(
bool enabled,
bool required);
79 void setIgnoredConstraints(
bool enabled,
bool required);
80 void setKeywordConstraints(
bool enabled,
bool required,
const QString &keyword);
81 void setSortColumn(
int column);
84 double m_MinHours = 0;
85 bool m_ImagedConstraintsEnabled =
false;
86 bool m_ImagedRequired =
false;
87 bool m_PickedConstraintsEnabled =
false;
88 bool m_PickedRequired =
false;
89 bool m_IgnoredConstraintsEnabled =
false;
90 bool m_IgnoredRequired =
false;
91 bool m_KeywordConstraintsEnabled =
false;
92 bool m_KeywordRequired =
false;
94 QRegularExpression m_KeywordRE;
96 bool m_ReverseSort =
false;
99class ImagingPlanner :
public QDialog
105 virtual ~ImagingPlanner()
override =
default;
110 void selectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected);
111 void setSelection(
int flag,
bool enabled);
113 void setSelectionIgnored();
114 void setSelectionNotIgnored();
116 void setSelectionImaged();
117 void setSelectionNotImaged();
119 void setSelectionPicked();
120 void setSelectionNotPicked();
122 void centerOnSkymap();
123 void reallyCenterOnSkymap();
124 void takeScreenshot();
128 void searchAstrobin();
129 void searchWikipedia();
131 void searchSpecialWebPageImages();
134 void sorry(
const QString &message);
137 void popupSorry(
const QString &message);
138 void addRow(QList<QStandardItem *> itemList);
141 void showEvent(QShowEvent *)
override;
144 void userNotesEditFinished();
145 void keywordEditFinished();
146 void loadImagedFile();
148 void loadCatalogViaMenu();
150 void openOptionsMenu();
151 void addRowSlot(QList<QStandardItem *> itemList);
156 void catalogLoaded();
157 void loadCatalog(
const QString &path);
158 void installEventFilters();
159 void removeEventFilters();
163 void setupHideButtons(
bool(*option)(),
void(*setOption)(
bool),
164 QPushButton *hideButton, QPushButton *showButton,
165 QFrame *widget, QFrame *hiddenWidget);
166 void setupFilterButton(QCheckBox *checkbox,
bool(*option)(),
void(*setOption)(
bool));
167 void setupFilter2Buttons(
168 QCheckBox *yes, QCheckBox *no, QCheckBox *dontCare,
169 bool(*yesOption)(),
bool(*noOption)(),
bool(*dontCareOption)(),
170 void(*setYesOption)(
bool),
void(*setNoOption)(
bool),
void(*setDontCareOption)(
bool));
172 void updateSortConstraints();
174 GeoLocation *getGeo();
175 QDate getDate()
const;
177 void loadInitialCatalog();
178 QString defaultDirectory()
const;
179 QString findDefaultCatalog()
const;
180 bool getKStarsCatalogObject(
const QString &name, CatalogObject *catObject);
181 bool internetNameSearch(
const QString &name,
bool abellPlanetary,
int abellNumber, CatalogObject * catObject);
183 bool addCatalogItem(
const KSAlmanac &ksal,
const QString &name,
int flags = 0);
184 QUrl getAstrobinUrl(
const QString &target,
bool requireAwards,
bool requireSomeFilters,
double minRadius,
double maxRadius);
185 void popupAstrobin(
const QString &target);
186 void plotAltitudeGraph(
const QDate &date,
const dms &ra,
const dms &dec);
188 void moveBackOneDay();
189 void moveForwardOneDay();
190 bool scrollToName(
const QString &name);
192 void setStatus(
const QString &message);
195 void updateDetails(
const CatalogObject &
object,
int flags);
196 void updateNotes(
const QString ¬es);
197 void initUserNotes();
198 void disableUserNotes();
199 void setupNotesLinks(
const QString ¬es);
201 void setDefaultImage();
203 QString currentObjectName()
const;
204 int currentObjectFlags();
205 QString currentObjectNotes();
206 void setCurrentObjectNotes(
const QString ¬es);
208 CatalogObject *currentCatalogObject();
209 CatalogObject *getObject(
const QString &name);
210 CatalogObject *addObject(
const QString &name);
213 void loadCatalogFromFile(QString filename =
"",
bool reset=
true);
214 bool findCatalogImageInfo(
const QString &name, CatalogImageInfo *info);
215 void addCatalogImageInfo(
const CatalogImageInfo &info);
217 void objectDetails();
218 void updateDisplays();
224 void saveToDB(
const QString &name,
bool picked,
bool imaged,
bool ignored,
const QString ¬es);
225 void saveToDB(
const QString &name,
int flags,
const QString ¬es);
228 void highlightImagedObject(
const QModelIndex &index,
bool imaged);
229 void highlightPickedObject(
const QModelIndex &index,
bool picked);
232 void adjustWindowSize();
235 void checkTargets(
bool justCheckCurrentCatalog =
false);
236 void checkTargets2(
bool backwards =
false);
238 void adjustSpecialWebPageButton(
const QString &name);
239 bool checkIfPageExists(
const QString &urlString);
240 QNetworkAccessManager m_networkManager;
242 ImagingPlannerUI *ui {
nullptr };
244 bool m_initialShow {
false };
245 bool m_InitialLoad =
true;
247 CatalogsDB::DBManager m_manager;
248 QPointer<QStandardItemModel> m_CatalogModel;
249 QPointer<CatalogFilter> m_CatalogSortModel;
251 QFuture<void> m_LoadCatalogs;
252 QFutureWatcher<void> *m_LoadCatalogsWatcher;
254 QHash<QString, CatalogObject> m_CatalogHash;
255 QPixmap m_NoImagePixmap;
257 QPointer<ImagingPlannerPopup> m_PopupMenu;
259 double m_MinMoon = 30.0;
260 double m_MaxMoonAltitude = 90.0;
261 double m_MinAltitude = 30.0;
262 double m_MinHours = 0;
263 bool m_UseArtificialHorizon =
true;
266 int m_numWithImage = 0;
267 int m_numMissingImage = 0;
268 bool m_loadingCatalog =
false;
270 QMap<QString, CatalogImageInfo> m_CatalogImageInfoMap;
272 QSharedPointer<PlateSolve> m_PlateSolve;
273 QSharedPointer<ScreenCapture> m_CaptureWidget;
274 QString m_ScreenShotFilename;
275 QImage m_ScreenShotImage;
279 void captureRegion(
const QImage &screenshot);
283class ImagingPlannerPopup :
public QMenu
287 ImagingPlannerPopup();
288 virtual ~ImagingPlannerPopup()
override =
default;
290 void init(ImagingPlanner *planner,
const QStringList &names,
291 const bool *imaged,
const bool *picked,
const bool *ignored);
Provides necessary information about the Moon.
virtual QModelIndex parent(const QModelIndex &index) const const=0
QObject * parent() const const