Kstars

opssolarsystem.cpp
1 /*
2  SPDX-FileCopyrightText: 2004 Jason Harris <[email protected]>
3 
4  SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "opssolarsystem.h"
8 
9 #include "kstars.h"
10 #include "kstarsdata.h"
11 #include "skymap.h"
12 
13 #include <KActionCollection>
14 #include <KConfigDialog>
15 
16 OpsSolarSystem::OpsSolarSystem() : QFrame(KStars::Instance())
17 {
18  setupUi(this);
19 
20  connect(kcfg_ShowSolarSystem, SIGNAL(toggled(bool)), SLOT(slotAllWidgets(bool)));
21  connect(kcfg_ShowAsteroids, SIGNAL(toggled(bool)), SLOT(slotAsteroidWidgets(bool)));
22  connect(kcfg_MagLimitAsteroidDownload, SIGNAL(valueChanged(double)), this, SLOT(slotChangeMagDownload(double)));
23  connect(kcfg_ShowComets, SIGNAL(toggled(bool)), SLOT(slotCometWidgets(bool)));
24 
25  connect(ClearAllTrails, SIGNAL(clicked()), KStars::Instance(), SLOT(slotClearAllTrails()));
26  connect(showAllPlanets, SIGNAL(clicked()), this, SLOT(slotSelectPlanets()));
27  connect(showNonePlanets, SIGNAL(clicked()), this, SLOT(slotSelectPlanets()));
28 
29  MagLimitAsteroidDownloadWarning->setVisible(false);
30 
31  kcfg_MagLimitAsteroid->setMinimum(0.0);
32  kcfg_MagLimitAsteroid->setMaximum(30.0);
33  kcfg_MaxRadCometName->setMaximum(100.0);
34  kcfg_MagLimitAsteroidDownload->setMinimum(0.0);
35  kcfg_MagLimitAsteroidDownload->setMaximum(30.0);
36 
37  slotAsteroidWidgets(kcfg_ShowAsteroids->isChecked());
38  slotCometWidgets(kcfg_ShowComets->isChecked());
39 
40  //Get a pointer to the KConfigDialog
41  m_ConfigDialog = KConfigDialog::exists("settings");
42 
43  connect(m_ConfigDialog->button(QDialogButtonBox::Apply), SIGNAL(clicked()), SLOT(slotApply()));
44  connect(m_ConfigDialog->button(QDialogButtonBox::Ok), SIGNAL(clicked()), SLOT(slotApply()));
45  //connect( m_ConfigDialog->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), SLOT(slotCancel()) );
46 
47  #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
48  connect(solarButtonGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonPressed), this,
49  [&]() { isDirty = true; });
50  #else
51  connect(solarButtonGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::idPressed), this,
52  [&]() { isDirty = true; });
53  #endif
54 }
55 
56 void OpsSolarSystem::slotChangeMagDownload(double mag)
57 {
58  if (mag > 12)
59  MagLimitAsteroidDownloadWarning->setVisible(true);
60  else
61  MagLimitAsteroidDownloadWarning->setVisible(false);
62 }
63 
64 void OpsSolarSystem::slotAllWidgets(bool on)
65 {
66  MajorBodiesBox->setEnabled(on);
67  MinorBodiesBox->setEnabled(on);
68  TrailsBox->setEnabled(on);
69 }
70 
71 void OpsSolarSystem::slotAsteroidWidgets(bool on)
72 {
73  kcfg_MagLimitAsteroid->setEnabled(on);
74  kcfg_ShowAsteroidNames->setEnabled(on);
75  kcfg_AsteroidLabelDensity->setEnabled(on);
76  textLabel3->setEnabled(on);
77  textLabel6->setEnabled(on);
78  LabelDensity->setEnabled(on);
79 }
80 
81 void OpsSolarSystem::slotCometWidgets(bool on)
82 {
83  kcfg_ShowCometNames->setEnabled(on);
84  kcfg_MaxRadCometName->setEnabled(on);
85  textLabel4->setEnabled(on);
86  kcfg_ShowCometComas->setEnabled(on);
87 }
88 
89 void OpsSolarSystem::slotSelectPlanets()
90 {
91  bool b = true;
92  if (QString(sender()->objectName()) == "showNonePlanets")
93  b = false;
94 
95  kcfg_ShowSun->setChecked(b);
96  kcfg_ShowMoon->setChecked(b);
97  kcfg_ShowMercury->setChecked(b);
98  kcfg_ShowVenus->setChecked(b);
99  kcfg_ShowMars->setChecked(b);
100  kcfg_ShowJupiter->setChecked(b);
101  kcfg_ShowSaturn->setChecked(b);
102  kcfg_ShowUranus->setChecked(b);
103  kcfg_ShowNeptune->setChecked(b);
104  //kcfg_ShowPluto->setChecked( b );
105 }
106 
107 void OpsSolarSystem::slotApply()
108 {
109  if (isDirty == false)
110  return;
111 
112  isDirty = false;
113 
114  // update time for all objects because they might be not initialized
115  // it's needed when using horizontal coordinates
119 }
void updateTime(const bool automaticDSTchange=true)
Update time-dependent data and (possibly) repaint the sky map.
Definition: kstars.cpp:567
SkyMap * map() const
Definition: kstars.h:143
void setFullTimeUpdate()
The Sky is updated more frequently than the moon, which is updated more frequently than the planets.
Definition: kstarsdata.cpp:313
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
static KStars * Instance()
Definition: kstars.h:125
static KConfigDialog * exists(const QString &name)
This is the main window for KStars. In addition to the GUI elements, the class contains the program c...
Definition: kstars.h:92
void setupUi(QWidget *widget)
void buttonPressed(QAbstractButton *button)
void idPressed(int id)
KStarsData * data() const
Definition: kstars.h:137
void forceUpdate(bool now=false)
Recalculates the positions of objects in the sky, and then repaints the sky map.
Definition: skymap.cpp:1186
QPushButton * button(QDialogButtonBox::StandardButton which) const
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Tue Aug 16 2022 04:00:57 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.