• 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
modelmanager.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  modelmanager.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 #include "ksfilereader.h"
19 #include "modelmanager.h"
20 #include "kstarsdatetime.h"
21 #include "skymapcomposite.h"
22 #include "skyobject.h"
23 
24 ModelManager::ModelManager(ObsConditions *obs)
25 {
26  m_ObsConditions = obs;
27  m_PlanetsModel = new SkyObjListModel();
28  m_StarsModel = new SkyObjListModel();
29  m_GalModel = new SkyObjListModel();
30  m_ConModel = new SkyObjListModel();
31  m_ClustModel = new SkyObjListModel();
32  m_NebModel = new SkyObjListModel();
33 
34  m_InitObjects[Star_Model] = QList<SkyObject *>();
35  m_InitObjects[Galaxy_Model] = QList<SkyObject *>();
36  m_InitObjects[Constellation_Model] = QList<SkyObject *>();
37  m_InitObjects[Cluster_Model] = QList<SkyObject *>();
38  m_InitObjects[Nebula_Model] = QList<SkyObject *>();
39  updateModels(obs);
40 }
41 
42 ModelManager::~ModelManager()
43 {
44  delete m_PlanetsModel;
45  delete m_StarsModel;
46  delete m_GalModel;
47  delete m_ConModel;
48  delete m_ClustModel;
49  delete m_NebModel;
50 }
51 
52 void ModelManager::updateModels(ObsConditions *obs)
53 {
54  m_ObsConditions = obs;
55  m_InitObjects.clear();
56  resetModels();
57 
58  KStarsData *data = KStarsData::Instance();
59 
60  KSFileReader fileReader;
61  if (!fileReader.open("Interesting.dat")) return;
62 
63  while (fileReader.hasMoreLines())
64  {
65  QString line = fileReader.readLine();
66 
67  if (line.length() == 0 || line[0] == '#')
68  continue;
69 
70  SkyObject *o;
71  if ((o = data->skyComposite()->findByName(line)))
72  {
73  //kDebug()<<o->longname()<<o->typeName();
74  switch(o->type())
75  {
76  case SkyObject::OPEN_CLUSTER:
77  case SkyObject::GLOBULAR_CLUSTER:
78  case SkyObject::GALAXY_CLUSTER:
79  m_InitObjects[Cluster_Model].append(o);
80  break;
81  case SkyObject::PLANETARY_NEBULA:
82  case SkyObject::DARK_NEBULA:
83  case SkyObject::GASEOUS_NEBULA:
84  m_InitObjects[Nebula_Model].append(o);
85  break;
86  case SkyObject::STAR:
87  m_InitObjects[Star_Model].append(o);
88  break;
89  case SkyObject::CONSTELLATION:
90  m_InitObjects[Constellation_Model].append(o);
91  break;
92  case SkyObject::GALAXY:
93  m_InitObjects[Galaxy_Model].append(o);
94  break;
95  }
96  }
97  }
98 
99  foreach (SkyObject *so, m_InitObjects.value(Star_Model))
100  {
101  //kDebug()<<so->longname()<<so->typeName();
102  if (m_ObsConditions->isVisible(data->geo(), data->lst(), so))
103  {
104  m_StarsModel->addSkyObject(new SkyObjItem(so));
105  }
106  }
107 
108  foreach (SkyObject *so, m_InitObjects.value(Galaxy_Model))
109  {
110  //kDebug()<<so->longname()<<so->typeName();
111  if (m_ObsConditions->isVisible(data->geo(), data->lst(), so))
112  {
113  m_GalModel->addSkyObject(new SkyObjItem(so));
114  }
115  }
116 
117  foreach (SkyObject *so, m_InitObjects.value(Constellation_Model))
118  {
119  if (m_ObsConditions->isVisible(data->geo(), data->lst(), so))
120  {
121  m_ConModel->addSkyObject(new SkyObjItem(so));
122  }
123  }
124 
125  foreach (SkyObject *so, m_InitObjects.value(Cluster_Model))
126  {
127  if (m_ObsConditions->isVisible(data->geo(), data->lst(), so))
128  {
129  m_ClustModel->addSkyObject(new SkyObjItem(so));
130  }
131  }
132 
133  foreach (SkyObject *so, m_InitObjects.value(Nebula_Model))
134  {
135  if (m_ObsConditions->isVisible(data->geo(), data->lst(), so))
136  {
137  m_NebModel->addSkyObject(new SkyObjItem(so));
138  }
139  }
140 
141  foreach (const QString &name, data->skyComposite()->objectNames(SkyObject::PLANET))
142  {
143  SkyObject *so = data->skyComposite()->findByName(name);
144  //kDebug()<<so->name()<<so->mag();
145  if (m_ObsConditions->isVisible(data->geo(), data->lst(), so))
146  {
147  if (so->name() == "Sun") continue;
148  m_PlanetsModel->addSkyObject(new SkyObjItem(so));
149  }
150  }
151 }
152 
153 void ModelManager::resetModels()
154 {
155  m_PlanetsModel->resetModel();
156  m_StarsModel->resetModel();
157  m_ConModel->resetModel();
158  m_GalModel->resetModel();
159  m_ClustModel->resetModel();
160  m_NebModel->resetModel();
161 }
162 
163 SkyObjListModel* ModelManager::returnModel(int type)
164 {
165  switch(type)
166  {
167  case 0: //Planet type
168  return m_PlanetsModel;
169  case 1: //Star type
170  return m_StarsModel;
171  case 2: //Constellation type
172  return m_ConModel;
173  case 3: //Galaxy Type
174  return m_GalModel;
175  case 4: //Cluster type
176  return m_ClustModel;
177  case 5: //Nebula type
178  return m_NebModel;
179  default:
180  return 0;
181  }
182 }
KSFileReader::hasMoreLines
bool hasMoreLines()
Definition: ksfilereader.h:108
SkyObjListModel::addSkyObject
void addSkyObject(SkyObjItem *sobj)
Add a sky-object to the model.
Definition: skyobjlistmodel.cpp:25
KStarsData
KStarsData is the backbone of KStars.
Definition: kstarsdata.h:66
SkyObject::DARK_NEBULA
Definition: skyobject.h:111
SkyObjItem
Represents an item in the list of interesting sky-objects.
Definition: skyobjitem.h:29
ModelManager::Star_Model
Definition: modelmanager.h:37
skyobject.h
SkyObject::PLANET
Definition: skyobject.h:108
KStarsData::lst
dms * lst()
Definition: kstarsdata.h:161
KStarsData::Instance
static KStarsData * Instance()
Definition: kstarsdata.h:92
SkyObjListModel::resetModel
void resetModel()
Erase all data in model.
Definition: skyobjlistmodel.cpp:57
SkyObject::GALAXY
Definition: skyobject.h:109
SkyObjListModel
Represents a model for the list of interesting sky-objects to be displayed in the QML interface...
Definition: skyobjlistmodel.h:30
KStarsData::geo
GeoLocation * geo()
Definition: kstarsdata.h:164
ModelManager::~ModelManager
~ModelManager()
Destructor.
Definition: modelmanager.cpp:42
KSFileReader::open
bool open(const QString &fname)
Definition: ksfilereader.cpp:46
ModelManager::returnModel
SkyObjListModel * returnModel(int type)
Returns model of given type.
Definition: modelmanager.cpp:163
SkyObject::GALAXY_CLUSTER
Definition: skyobject.h:111
skymapcomposite.h
ModelManager::ModelManager
ModelManager(ObsConditions *obs)
Constructor - Creates models for different sky-object types.
Definition: modelmanager.cpp:24
ModelManager::updateModels
void updateModels(ObsConditions *obs)
Updates sky-object list models.
Definition: modelmanager.cpp:52
KStarsData::skyComposite
SkyMapComposite * skyComposite()
Definition: kstarsdata.h:146
modelmanager.h
ModelManager::resetModels
void resetModels()
Clears all sky-objects list models.
Definition: modelmanager.cpp:153
ModelManager::Galaxy_Model
Definition: modelmanager.h:37
ObsConditions::isVisible
bool isVisible(GeoLocation *geo, dms *lst, SkyObject *so)
Evaluate visibility of sky-object based on current observing conditions.
Definition: obsconditions.cpp:96
ksfilereader.h
KSFileReader::readLine
QString readLine()
Definition: ksfilereader.h:113
KSFileReader
Definition: ksfilereader.h:65
SkyObject::type
int type(void) const
Definition: skyobject.h:164
SkyObject::CONSTELLATION
Definition: skyobject.h:110
SkyObject::PLANETARY_NEBULA
Definition: skyobject.h:109
ObsConditions
This class deals with the observing conditions of the night sky.
Definition: obsconditions.h:31
SkyMapComposite::findByName
virtual SkyObject * findByName(const QString &name)
Search the children of this SkyMapComposite for a SkyObject whose name matches the argument...
Definition: skymapcomposite.cpp:426
kstarsdatetime.h
SkyObject::GASEOUS_NEBULA
Definition: skyobject.h:109
ModelManager::Cluster_Model
Definition: modelmanager.h:37
SkyObject::name
virtual QString name(void) const
Definition: skyobject.h:124
SkyObject::GLOBULAR_CLUSTER
Definition: skyobject.h:108
ModelManager::Constellation_Model
Definition: modelmanager.h:37
SkyComponent::objectNames
QHash< int, QStringList > & objectNames()
Definition: skycomponent.h:127
SkyObject::STAR
Definition: skyobject.h:108
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
SkyObject::OPEN_CLUSTER
Definition: skyobject.h:108
QList
ModelManager::Nebula_Model
Definition: modelmanager.h:37
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:36:20 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