• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

kstars

  • sources
  • kde-4.12
  • kdeedu
  • kstars
  • kstars
  • tools
  • whatsinteresting
wiview.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  wiview.cpp - K Desktop Planetarium
3  -------------------
4  begin : 2012/26/05
5  copyright : (C) 2012 by Samikshan Bairagya
6  email : samikshan@gmail.com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 
19 #include "QDeclarativeView"
20 #include "QGraphicsObject"
21 #include "wiview.h"
22 #include "skymap.h"
23 #include "dialogs/detaildialog.h"
24 
25 #include "kstandarddirs.h"
26 #include "kdeclarative.h"
27 
28 WIView::WIView(QWidget *parent, ObsConditions *obs) : QWidget(parent), m_Obs(obs), m_CurCategorySelected(-1)
29 {
30  m_ModManager = new ModelManager(m_Obs);
31 
32  m_BaseView = new QDeclarativeView();
33 
35  KDeclarative kd;
36  kd.setDeclarativeEngine(m_BaseView->engine());
37  kd.initialize();
38  kd.setupBindings();
39 
40  m_Ctxt = m_BaseView->rootContext();
41 
42  m_BaseView->setSource(KStandardDirs::locate("appdata","tools/whatsinteresting/qml/wiview.qml"));
43 
44  m_BaseObj = dynamic_cast<QObject *>(m_BaseView->rootObject());
45 
46  //soTypeTextObj = m_BaseObj->findChild<QObject *>("soTypeTextObj");
47 
48  m_ViewsRowObj = m_BaseObj->findChild<QObject *>("viewsRowObj");
49  connect(m_ViewsRowObj, SIGNAL(categorySelected(int)), this, SLOT(onCategorySelected(int)));
50 
51  m_SoListObj = m_BaseObj->findChild<QObject *>("soListObj");
52  connect(m_SoListObj, SIGNAL(soListItemClicked(int, QString, int)), this, SLOT(onSoListItemClicked(int, QString, int)));
53 
54  m_DetailsViewObj = m_BaseObj->findChild<QObject *>("detailsViewObj");
55 
56  m_NextObj = m_BaseObj->findChild<QObject *>("nextObj");
57  connect(m_NextObj, SIGNAL(nextObjClicked()), this, SLOT(onNextObjClicked()));
58  m_PrevObj = m_BaseObj->findChild<QObject *>("prevObj");
59  connect(m_PrevObj, SIGNAL(prevObjClicked()), this, SLOT(onPrevObjClicked()));
60 
61  m_SlewButtonObj = m_BaseObj->findChild<QObject *>("slewButtonObj");
62  connect(m_SlewButtonObj, SIGNAL(slewButtonClicked()), this, SLOT(onSlewButtonClicked()));
63 
64  m_DetailsButtonObj = m_BaseObj->findChild<QObject *>("detailsButtonObj");
65  connect(m_DetailsButtonObj, SIGNAL(detailsButtonClicked()), this, SLOT(onDetailsButtonClicked()));
66 
67  QObject *settingsIconObj = m_BaseObj->findChild<QObject *>("settingsIconObj");
68  connect(settingsIconObj, SIGNAL(settingsIconClicked()), this, SLOT(onSettingsIconClicked()));
69 
70  QObject *reloadIconObj = m_BaseObj->findChild<QObject *>("reloadIconObj");
71  connect(reloadIconObj, SIGNAL(reloadIconClicked()), this, SLOT(onReloadIconClicked()));
72 
73  m_BaseView->setResizeMode(QDeclarativeView::SizeRootObjectToView);
74  m_BaseView->show();
75 }
76 
77 WIView::~WIView()
78 {
79  delete m_ModManager;
80  delete m_CurSoItem;
81 }
82 
83 void WIView::onCategorySelected(int type)
84 {
85  m_CurCategorySelected = type;
86  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(type));
87 }
88 
89 void WIView::onSoListItemClicked(int type, QString typeName, int index)
90 {
91  SkyObjItem *soitem = m_ModManager->returnModel(type)->getSkyObjItem(index);
92 
93 // soTypeTextObj->setProperty("text", typeName);
94 // soTypeTextObj->setProperty("visible", true);
95 
96 // soListObj->setProperty("visible", false);
97 
98  loadDetailsView(soitem, index);
99 }
100 
101 void WIView::onNextObjClicked()
102 {
103  int modelSize = m_ModManager->returnModel(m_CurSoItem->getType())->rowCount();
104  SkyObjItem *nextItem = m_ModManager->returnModel(m_CurSoItem->getType())->getSkyObjItem((m_CurIndex+1)%modelSize);
105  loadDetailsView(nextItem, (m_CurIndex+1)%modelSize);
106 }
107 
108 void WIView::onPrevObjClicked()
109 {
110  int modelSize = m_ModManager->returnModel(m_CurSoItem->getType())->rowCount();
111  SkyObjItem *prevItem = m_ModManager->returnModel(m_CurSoItem->getType())->getSkyObjItem((m_CurIndex-1+modelSize)%modelSize);
112  loadDetailsView(prevItem, (m_CurIndex-1+modelSize)%modelSize);
113 }
114 
115 void WIView::onSlewButtonClicked()
116 {
118  SkyObject* so = m_CurSoItem->getSkyObject();
119  KStars* kstars = KStars::Instance();
120  if (so != 0)
121  {
122  kstars->map()->setFocusPoint(so);
123  kstars->map()->setFocusObject(so);
124  kstars->map()->setDestination(*kstars->map()->focusPoint());
125  }
126 }
127 
128 void WIView::onDetailsButtonClicked()
129 {
131  KStars *kstars = KStars::Instance();
132  SkyObject* so = m_CurSoItem->getSkyObject();
133  DetailDialog *detail = new DetailDialog(so, kstars->data()->lt(), kstars->data()->geo(), kstars);
134  detail->exec();
135  delete detail;
136 }
137 
138 void WIView::onSettingsIconClicked()
139 {
140  KStars *kstars = KStars::Instance();
141  kstars->showWISettingsUI();
142 }
143 
144 void WIView::onReloadIconClicked()
145 {
146  updateModels(m_Obs);
147 }
148 
149 void WIView::updateModels(ObsConditions* obs)
150 {
151  m_Obs = obs;
152  m_ModManager->updateModels(m_Obs);
153  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(0));
154  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(1));
155  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(2));
156  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(3));
157  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(4));
158  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(5));
159 
160  if (m_CurCategorySelected >=0 && m_CurCategorySelected <= 5)
161  m_Ctxt->setContextProperty("soListModel", m_ModManager->returnModel(m_CurCategorySelected));
162 }
163 
164 void WIView::loadDetailsView(SkyObjItem *soitem, int index)
165 {
166  m_CurSoItem = soitem;
167  m_CurIndex = index;
168 
169  int modelSize = m_ModManager->returnModel(m_CurSoItem->getType())->rowCount();
170  SkyObjItem *nextItem = m_ModManager->returnModel(m_CurSoItem->getType())->getSkyObjItem((m_CurIndex+1)%modelSize);
171  SkyObjItem *prevItem = m_ModManager->returnModel(m_CurSoItem->getType())->getSkyObjItem((m_CurIndex-1+modelSize)%modelSize);
172 
173  QObject *nextTextObj = m_NextObj->findChild<QObject *>("nextTextObj");
174  nextTextObj->setProperty("text", nextItem->getName());
175  QObject *prevTextObj = m_PrevObj->findChild<QObject *>("prevTextObj");
176  prevTextObj->setProperty("text", prevItem->getName());
177 
178  QObject *sonameObj = m_DetailsViewObj->findChild<QObject *>("sonameObj");
179  QObject *posTextObj = m_DetailsViewObj->findChild<QObject *>("posTextObj");
180  QObject *descTextObj = m_DetailsViewObj->findChild<QObject *>("descTextObj");
181  QObject *descSrcTextObj = m_DetailsViewObj->findChild<QObject *>("descSrcTextObj");
182  QObject *magTextObj = m_DetailsViewObj->findChild<QObject *>("magTextObj");
183  QObject *sbTextObj = m_DetailsViewObj->findChild<QObject *>("sbTextObj");
184  QObject *sizeTextObj = m_DetailsViewObj->findChild<QObject *>("sizeTextObj");
185 
186  sonameObj->setProperty("text", soitem->getLongName());
187  posTextObj->setProperty("text", soitem->getPosition());
188  descTextObj->setProperty("text", soitem->getDesc());
189  descSrcTextObj->setProperty("text", soitem->getDescSource());
190 
191  QString magText;
192  if (soitem->getType() == SkyObjItem::Constellation)
193  magText = i18n("Magnitude: --");
194  else
195  magText = i18n("Magnitude: %1 mag", KGlobal::locale()->formatNumber(soitem->getMagnitude(), 2));
196  magTextObj->setProperty("text", magText);
197 
198  QString sbText = i18n("Surface Brightness: %1", soitem->getSurfaceBrightness());
199  sbTextObj->setProperty("text", sbText);
200 
201  QString sizeText = i18n("Size: %1", soitem->getSize());
202  sizeTextObj->setProperty("text", sizeText);
203 }
WIView::onSettingsIconClicked
void onSettingsIconClicked()
public slot - Open WI settings dialog.
Definition: wiview.cpp:138
DetailDialog
window showing detailed information for a selected object.
Definition: detaildialog.h:88
WIView::WIView
WIView(QWidget *parent=0, ObsConditions *obs=0)
Constructor - Store QML components as QObject pointers.
Definition: wiview.cpp:28
KStars::map
SkyMap * map() const
Definition: kstars.h:134
SkyObjItem
Represents an item in the list of interesting sky-objects.
Definition: skyobjitem.h:29
SkyMap::setFocusObject
void setFocusObject(SkyObject *o)
Set the FocusObject pointer to the argument.
Definition: skymap.cpp:365
detaildialog.h
wiview.h
SkyMap::setDestination
void setDestination(const SkyPoint &f)
sets the destination point of the sky map.
Definition: skymap.cpp:812
QWidget
SkyObjItem::getDescSource
QString getDescSource()
Get source of description for the SkyObjItem.
Definition: skyobjitem.cpp:127
SkyObjItem::getDesc
QString getDesc() const
Get description for the SkyObjItem.
Definition: skyobjitem.cpp:93
KStars::Instance
static KStars * Instance()
Definition: kstars.h:125
SkyMap::focusPoint
SkyPoint * focusPoint()
retrieve the FocusPoint position.
Definition: skymap.h:140
WIView::onSlewButtonClicked
void onSlewButtonClicked()
public slot - Slew map to current sky-object in the details view.
Definition: wiview.cpp:115
SkyObjItem::getPosition
QString getPosition() const
Get current position of sky-object associated with the SkyObjItem.
Definition: skyobjitem.h:91
SkyObjItem::Constellation
Definition: skyobjitem.h:42
SkyObjListModel::getSkyObjItem
SkyObjItem * getSkyObjItem(int index)
Get sky-object item referred to by index.
Definition: skyobjlistmodel.cpp:52
KStarsData::geo
GeoLocation * geo()
Definition: kstarsdata.h:164
QObject
WIView::loadDetailsView
void loadDetailsView(SkyObjItem *soitem, int index)
Load details-view for selected sky-object.
Definition: wiview.cpp:164
KStars
This is the main window for KStars.
Definition: kstars.h:94
SkyObjItem::getSkyObject
SkyObject * getSkyObject()
Get sky-object associated with the SkyObjItem.
Definition: skyobjitem.h:97
WIView::onCategorySelected
void onCategorySelected(int type)
public slot - Act upon signal emitted when category of sky-object is selected from category selection...
Definition: wiview.cpp:83
SkyObjItem::getType
int getType() const
Get category of sky-object associated with the SkyObjItem as an integer.
Definition: skyobjitem.h:85
ModelManager::returnModel
SkyObjListModel * returnModel(int type)
Returns model of given type.
Definition: modelmanager.cpp:163
WIView::onReloadIconClicked
void onReloadIconClicked()
public slot - Reload list of visible sky-objects.
Definition: wiview.cpp:144
SkyObjItem::getName
QString getName() const
Get name of sky-object associated with the SkyObjItem.
Definition: skyobjitem.h:67
KStars::showWISettingsUI
void showWISettingsUI()
Definition: kstars.cpp:329
KStarsData::lt
const KStarsDateTime & lt() const
Definition: kstarsdata.h:137
skymap.h
WIView::onDetailsButtonClicked
void onDetailsButtonClicked()
public slot - Open Details Dialog to show more details for current sky-object.
Definition: wiview.cpp:128
WIView::onNextObjClicked
void onNextObjClicked()
public slot - Show details-view for next sky-object from list of current sky-objects's category...
Definition: wiview.cpp:101
ModelManager::updateModels
void updateModels(ObsConditions *obs)
Updates sky-object list models.
Definition: modelmanager.cpp:52
WIView::onPrevObjClicked
void onPrevObjClicked()
public slot - Show details-view for previous sky-object from list of current sky-objects's category...
Definition: wiview.cpp:108
WIView::onSoListItemClicked
void onSoListItemClicked(int type, QString typeName, int index)
public slot - Act upon signal emitted when an item is selected from list of sky-objects.
Definition: wiview.cpp:89
SkyObjItem::getLongName
QString getLongName() const
Get longname of sky-object associated with the SkyObjItem.
Definition: skyobjitem.h:73
SkyObjItem::getMagnitude
float getMagnitude() const
Get magnitude of sky-object associated with the SkyObjItem.
Definition: skyobjitem.h:115
ModelManager
Manages models for QML listviews of different types of sky-objects.
Definition: modelmanager.h:30
SkyObjItem::getSurfaceBrightness
QString getSurfaceBrightness() const
Get surface-brightness of sky-object associated with the SkyObjItem as a QString to be displayed on t...
Definition: skyobjitem.cpp:137
SkyObjItem::getSize
QString getSize() const
Get size of sky-object associated with the SkyObjItem as a QString to be displayed on the details-vie...
Definition: skyobjitem.cpp:159
ObsConditions
This class deals with the observing conditions of the night sky.
Definition: obsconditions.h:31
KStars::data
KStarsData * data() const
Definition: kstars.h:131
WIView::~WIView
~WIView()
Destructor.
Definition: wiview.cpp:77
SkyMap::setFocusPoint
void setFocusPoint(SkyPoint *f)
set the FocusPoint; the position that is to be the next Destination.
Definition: skymap.h:191
SkyObject
Provides all necessary information about an object in the sky: its coordinates, name(s), type, magnitude, and QStringLists of URLs for images and webpages regarding the object.
Definition: skyobject.h:46
WIView::updateModels
void updateModels(ObsConditions *obs)
Updates sky-object list models.
Definition: wiview.cpp:149
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:36:21 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kstars

Skip menu "kstars"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal