summaryrefslogtreecommitdiffstats
path: root/kstars/kstars/detaildialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'kstars/kstars/detaildialog.h')
-rw-r--r--kstars/kstars/detaildialog.h249
1 files changed, 249 insertions, 0 deletions
diff --git a/kstars/kstars/detaildialog.h b/kstars/kstars/detaildialog.h
new file mode 100644
index 00000000..115353e2
--- /dev/null
+++ b/kstars/kstars/detaildialog.h
@@ -0,0 +1,249 @@
+/***************************************************************************
+ detaildialog.h - description
+ -------------------
+ begin : Sun May 5 2002
+ copyright : (C) 2002 by Jason Harris
+ email : kstars@30doradus.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef DETAILDIALOG_H
+#define DETAILDIALOG_H
+
+#include <qfile.h>
+#include <qlabel.h>
+#include <qptrlist.h>
+#include <kdialogbase.h>
+#include <ktextedit.h>
+
+#include "skyobject.h"
+
+class GeoLocation;
+class QHBoxLayout;
+class QLineEdit;
+class QFile;
+class QPixmap;
+class QString;
+class QStringList;
+class KStars;
+class KStarsDateTime;
+
+class DetailsDataUI;
+class DetailsPositionUI;
+class DetailsLinksUI;
+class DetailsDatabaseUI;
+class DetailsLogUI;
+
+struct ADVTreeData
+{
+ QString Name;
+ QString Link;
+ int Type;
+};
+
+/**@class LogEdit is a simple derivative of KTextEdit, that just adds a
+ *focusOut() signal, emitted when the edit loses focus.
+ *@author Jason Harris
+ *@version 1.0
+ */
+class LogEdit : public KTextEdit {
+ Q_OBJECT
+public:
+ LogEdit( QWidget *parent=0, const char *name=0 );
+ ~LogEdit() {}
+
+signals:
+ void focusOut();
+
+protected:
+ void focusOutEvent( QFocusEvent *e );
+};
+
+/**@class ClickLabel is a QLabel with a clicked() signal.
+ *@author Jason Harris
+ *@version 1.0
+ */
+class ClickLabel : public QLabel {
+ Q_OBJECT
+public:
+ ClickLabel( QWidget *parent=0, const char *name=0 );
+ ~ClickLabel() {}
+
+signals:
+ void clicked();
+
+protected:
+ void mousePressEvent( QMouseEvent *e ) { if ( e->button() == LeftButton ) emit clicked(); }
+};
+
+/**@class DetailDialog is a window showing detailed information for a selected object.
+ *The window is split into four Tabs: General, Links, Advanced and Log.
+ *The General Tab displays some type-specific data about the object, as well as its
+ *present coordinates and Rise/Set/Transit times for the current date. The Type-specific
+ *data are:
+ *@li Stars: common name, genetive name, Spectral type, magnitude, distance
+ *@li Solar System: name, object type (planet/comet/asteroid), Distance, magnitude (TBD),
+ *angular size (TBD)
+ *@li Deep Sky: Common name, other names, object type, magnitude, angular size
+ *
+ *The Links Tab allows the user to manage the list of Image and Information links
+ *listed in the object's popup menu. The Advanced Tab allows the user to query
+ *a number of professional-grade online astronomical databases for data on the object.
+ *The Log tab allows the user to attach their own text notes about the object.
+ *@author Jason Harris, Jasem Mutlaq
+ *@version 1.0
+ */
+
+class DetailDialog : public KDialogBase {
+ Q_OBJECT
+public:
+/**Constructor
+ */
+ DetailDialog(SkyObject *o, const KStarsDateTime &ut, GeoLocation *geo, QWidget *parent=0, const char *name=0);
+
+/**Destructor (empty)
+ */
+ ~DetailDialog() {}
+
+ QPixmap* thumbnail() { return Thumbnail; }
+
+public slots:
+/**@short Add this object to the observing list.
+ */
+ void addToObservingList();
+
+/**@short Center this object in the display.
+ */
+ void centerMap();
+
+/**@short Center this object in the telescope.
+ */
+ void centerTelescope();
+
+/**@short Display thumbnail image for the object
+ */
+ void showThumbnail();
+
+/**@short Update thumbnail image for the object
+ */
+ void updateThumbnail();
+
+/**@short View the selected image or info URL in the web browser.
+ */
+ void viewLink();
+
+/**@short Unselect the currently selected item in the Images list
+ *@note used when an item is selected in the Info list
+ */
+ void unselectImagesList();
+
+/**@short Unselect the currently selected item in the Info list
+ *@note used when an item is selected in the Images list
+ */
+ void unselectInfoList();
+
+/**@short Rebuild the Image and Info URL lists for this object.
+ *@note used when an item is added to either list.
+ */
+ void updateLists();
+
+/**@short Open a dialog to edit a URL in either the Images or Info lists,
+ *and update the user's *url.dat file.
+ */
+ void editLinkDialog();
+
+/**@short remove a URL entry from either the Images or Info lists, and
+ *update the user's *url.dat file.
+ */
+ void removeLinkDialog();
+
+/**Open the web browser to the selected online astronomy database,
+ *with a query to the object of this Detail Dialog.
+ */
+ void viewADVData();
+
+/**Save the User's text in the Log Tab to the userlog.dat file.
+ */
+ void saveLogData();
+
+private:
+
+/**Read in the user's customized URL file (either images or info webpages),
+ *and store the file's lines in a QStringList.
+ *@param type 0=Image URLs; 1=Info URLs
+ */
+ bool readUserFile(int type);
+
+/**Parse the QStringList containing the User's URLs.
+ *@param type 0=Image URLs; 1=Info URLs
+ */
+ bool verifyUserData(int type);
+
+/**Build the General Data Tab for the current object.
+ */
+ void createGeneralTab();
+
+/**Build the Position Tab for the current object.
+ */
+ void createPositionTab( const KStarsDateTime &ut, GeoLocation *geo );
+
+/**Build the Links Tab, populating the image and info lists with the
+ *known URLs for the current Object.
+ */
+ void createLinksTab();
+
+/**Build the Advanced Tab
+ */
+ void createAdvancedTab();
+
+/**Build the Log Tab
+ */
+ void createLogTab();
+
+
+/**Populate the TreeView of known astronomical databases in the Advanced Tab
+ */
+ void populateADVTree(QListViewItem *parent);
+
+/**For the databases TreeView
+ */
+ void forkTree(QListViewItem *parent);
+
+/**Data for the Advanced Tab TreeView is stored in the file advinterface.dat.
+ *This function parses advinterface.dat.
+ */
+ QString parseADVData(QString link);
+
+
+ SkyObject *selectedObject;
+ KStars* ksw;
+
+ // Edit Link Dialog
+ QHBoxLayout *editLinkLayout;
+ QLabel *editLinkURL;
+ QLineEdit *editLinkField;
+ QFile file;
+ QPixmap *Thumbnail;
+ int currentItemIndex;
+ QString currentItemURL, currentItemTitle;
+ QStringList dataList;
+
+ QPtrListIterator<ADVTreeData> * treeIt;
+
+ DetailsDataUI *Data;
+ DetailsPositionUI *Pos;
+ DetailsLinksUI *Links;
+ DetailsDatabaseUI *Adv;
+ DetailsLogUI *Log;
+
+};
+
+#endif