Kstars

indielement.h
1 /*
2  SPDX-FileCopyrightText: 2003 Jasem Mutlaq <[email protected]>
3 
4  SPDX-License-Identifier: GPL-2.0-or-later
5 
6  2004-01-15 INDI element is the most basic unit of the INDI KStars client.
7 */
8 
9 #pragma once
10 
11 #include "indicommon.h"
12 
13 #include <indiproperty.h>
14 
15 #include <QDialog>
16 #include <QHBoxLayout>
17 
18 /* Forward declaration */
19 class QLineEdit;
20 class QDoubleSpinBox;
21 class QPushButton;
22 
23 class QHBoxLayout;
24 class QSpacerItem;
25 class QCheckBox;
26 class QButtonGroup;
27 class QSlider;
28 
29 class KLed;
30 class KSqueezedTextLabel;
31 
32 class INDI_P;
33 
34 /**
35  * @class INDI_E
36  * INDI_E represents an INDI GUI element (Number, Text, Switch, Light, or BLOB) within an INDI property.
37  * It is the most basic GUI representation of property elements.
38  *
39  * @author Jasem Mutlaq
40  */
41 class INDI_E : public QWidget
42 {
43  Q_OBJECT
44  public:
45  INDI_E(INDI_P *gProp, INDI::Property dProp);
46 
47  const QString &getLabel()
48  {
49  return label;
50  }
51  const QString &getName()
52  {
53  return name;
54  }
55 
56  QString getWriteField();
57  QString getReadField();
58 
59  void buildSwitch(QButtonGroup *groupB, ISwitch *sw);
60  void buildMenuItem(ISwitch *sw);
61  void buildText(IText *itp);
62  void buildNumber(INumber *inp);
63  void buildLight(ILight *ilp);
64  void buildBLOB(IBLOB *ibp);
65 
66  // Updates GUI from data in INDI properties
67  void syncSwitch();
68  void syncText();
69  void syncNumber();
70  void syncLight();
71 
72  // Save GUI data in INDI properties
73  void updateTP();
74  void updateNP();
75 
76  void setText(const QString &newText);
77  void setValue(double value);
78 
79  void setMin();
80  void setMax();
81 
82  void setupElementLabel();
83  void setupElementRead(int length);
84  void setupElementWrite(int length);
85  void setupElementScale(int length);
86  void setupBrowseButton();
87 
88  bool getBLOBDirty()
89  {
90  return blobDirty;
91  }
92  void setBLOBDirty(bool isDirty)
93  {
94  blobDirty = isDirty;
95  }
96 
97  public slots:
98  void spinChanged(double value);
99  void sliderChanged(int value);
100  void browseBlob();
101 
102  private:
103  /// Name
104  QString name;
105  /// Label is the name by default, unless specified
106  QString label;
107  /// Parent GUI property
108  INDI_P *guiProp { nullptr };
109  /// Parent DATA property
110  INDI::Property dataProp;
111  /// Horizontal layout
112  QHBoxLayout *EHBox { nullptr };
113  /// Label widget
114  KSqueezedTextLabel *label_w { nullptr };
115  /// Read field widget
116  QLineEdit *read_w { nullptr };
117  /// Write field widget
118  QLineEdit *write_w { nullptr };
119  /// Light led widget
120  KLed *led_w { nullptr };
121  /// Spinbox widget
122  QDoubleSpinBox *spin_w { nullptr };
123  /// Slider widget
124  QSlider *slider_w { nullptr };
125  /// Push button widget
126  QPushButton *push_w { nullptr };
127  /// Browse button widget
128  QPushButton *browse_w { nullptr };
129  /// Check box widget
130  QCheckBox *check_w { nullptr };
131  /// Horizontal spacer widget
132  QSpacerItem *hSpacer { nullptr };
133 
134  ISwitch *sp { nullptr };
135  INumber *np { nullptr };
136  IText *tp { nullptr };
137  ILight *lp { nullptr };
138  IBLOB *bp { nullptr };
139 
140  bool blobDirty { false };
141  /// Current text
142  QString text;
143 };
Q_OBJECTQ_OBJECT
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Thu Oct 6 2022 04:14:03 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.