Kstars

telescopesymbolsitem.cpp
1/*
2 SPDX-FileCopyrightText: 2016 Artem Fedoskin <afedoskin3@gmail.com>
3 SPDX-License-Identifier: GPL-2.0-or-later
4*/
5
6#include "telescopesymbolsitem.h"
7
8#include "kstarslite.h"
9#include "labelsitem.h"
10#include "Options.h"
11#include "indi/clientmanagerlite.h"
12#include "kstarslite/skyitems/rootnode.h"
13#include "projections/projector.h"
14#include "skynodes/crosshairnode.h"
15
16#include <basedevice.h>
17
19 : SkyItem(LabelsItem::label_t::TELESCOPE_SYMBOL, rootNode)
20{
21 m_clientManager = KStarsLite::Instance()->clientManagerLite();
22 m_KStarsData = KStarsData::Instance();
23}
24
25void TelescopeSymbolsItem::addTelescope(INDI::BaseDevice *bd)
26{
27 if (!m_telescopes.value(bd))
28 {
29 CrosshairNode *crossHair = new CrosshairNode(bd, rootNode());
30 appendChildNode(crossHair);
31
32 m_telescopes.insert(bd, crossHair);
33 }
34}
35
36void TelescopeSymbolsItem::removeTelescope(INDI::BaseDevice *bd)
37{
38 CrosshairNode *crossHair = m_telescopes.value(bd);
39 if (crossHair)
40 {
41 removeChildNode(crossHair);
42 delete crossHair;
43 }
44 m_telescopes.remove(bd);
45}
46
48{
50 bool deleteAll = !m_clientManager->isConnected();
51
52 QColor color = m_KStarsData->colorScheme()->colorNamed("TargetColor");
53
54 bool show = Options::showTargetCrosshair();
55 if (!show)
56 {
57 hide();
58 }
59
60 for (i = m_telescopes.begin(); i != m_telescopes.end(); ++i)
61 {
62 CrosshairNode *crossHair = i.value();
63 INDI::BaseDevice *device = i.key();
64 if (crossHair)
65 {
66 if (deleteAll || !(device->isConnected()))
67 {
68 removeChildNode(crossHair);
69 delete crossHair;
70 m_telescopes.insert(device, nullptr);
71 }
72 else if (show)
73 {
74 if (device->isConnected())
75 {
76 crossHair->setColor(color);
77 crossHair->update();
78 }
79 else
80 {
81 crossHair->hide();
82 }
83 }
84 }
85 }
86 if (deleteAll)
87 {
88 m_telescopes.clear();
89 }
90}
ClientManagerLite * clientManagerLite() const
Definition kstarslite.h:107
static KStarsLite * Instance()
Definition kstarslite.h:77
This class is in charge of labels in SkyMapLite.
Definition labelsitem.h:53
A QSGClipNode derived class used as a container for holding pointers to nodes and for clipping.
Definition rootnode.h:60
virtual void hide() override
hides this item and corresponding labels
Definition skyitem.cpp:37
RootNode * rootNode()
Definition skyitem.h:57
SkyItem(LabelsItem::label_t labelType, RootNode *rootNode=nullptr)
Constructor, appends SkyItem to rootNode as a child in a node tree.
Definition skyitem.cpp:10
virtual void show() override
makes this node visible
Definition skyitem.cpp:23
void addTelescope(INDI::BaseDevice *bd)
Add telescope symbol for device bd.
TelescopeSymbolsItem(RootNode *rootNode)
Constructor.
void removeTelescope(INDI::BaseDevice *bd)
Remove telescope symbol of device bd.
virtual void update() override
Updates position and visibility of CrosshairNodes that represent telescope symbols If client is no mo...
void appendChildNode(QSGNode *node)
void removeChildNode(QSGNode *node)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 24 2025 11:53:02 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.