7#include "collimationoverlayoptions.h"
8#include <kstars_debug.h>
10#include "kstarsdata.h"
12#include "qmetaobject.h"
15#include <QSqlTableModel>
17#include <basedevice.h>
20CollimationOverlayOptions *CollimationOverlayOptions::m_Instance =
nullptr;
22CollimationOverlayOptions *CollimationOverlayOptions::Instance(
QWidget *parent)
24 if (m_Instance ==
nullptr) {
25 m_Instance =
new CollimationOverlayOptions(
parent);
30void CollimationOverlayOptions::release()
36CollimationOverlayOptions::CollimationOverlayOptions(
QWidget *parent) :
QDialog(parent)
47 updateValue(state,
"Enabled");
101 for (
int i = 0; i <
m_metaEnum.keyCount(); i++) {
111 updateValue(value,
"SizeX");
112 if (
linkXYB->icon().name() ==
"document-encrypt") {
114 updateValue(value,
"SizeY");
121 updateValue(value,
"SizeY");
127 if (
linkXYB->icon().name() ==
"document-decrypt") {
128 sizeYSpinBox->setValue(sizeXSpinBox->value());
129 linkXYB->setIcon(QIcon::fromTheme(
"document-encrypt"));
130 sizeYSpinBox->setEnabled(false);
131 }
else if (
linkXYB->icon().name() ==
"document-encrypt") {
132 linkXYB->setIcon(QIcon::fromTheme(
"document-decrypt"));
133 sizeYSpinBox->setEnabled(true);
140 updateValue(value,
"OffsetX");
146 updateValue(value,
"OffsetY");
152 updateValue(value,
"Count");
166 updateValue(value,
"PCD");
171 [
this](
double value) {
172 updateValue(value,
"Rotation");
179 updateValue(value,
"Colour");
185 updateValue(value,
"Thickness");
189 if (
addB->icon().name() ==
"dialog-ok-apply") {
190 elementNamesList->clearSelection();
191 addB->setIcon(QIcon::fromTheme(
"list-add"));
192 selectCollimationOverlayElement(
"");
194 addElement(nameLineEdit->text());
195 m_CollimationOverlayElementsModel->select();
197 elementNamesList->clearSelection();
203 removeCollimationOverlayElement(elementNamesList->currentItem()->text());
205 elementNamesList->clearSelection();
206 addB->setIcon(QIcon::fromTheme(
"list-add"));
217 selectCollimationOverlayElement(item);
232 selectCollimationOverlayElement(
"");
238void CollimationOverlayOptions::initModel()
240 m_CollimationOverlayElements.
clear();
242 m_CollimationOverlayElementsModel =
new QSqlTableModel(
this, userdb);
244 m_CollimationOverlayElements.
clear();
245 for (
int i = 0; i < m_CollimationOverlayElementsModel->
rowCount(); ++i) {
248 for (
int j = 0;
j < record.
count();
j++)
253 m_ElementNames.
clear();
254 for (
auto &
oneElement : m_CollimationOverlayElements) {
255 m_ElementNames <<
oneElement[
"Name"].toString();
265void CollimationOverlayOptions::refreshModel()
267 m_CollimationOverlayElements.
clear();
268 KStars::Instance()->data()->userdb()->GetCollimationOverlayElements(m_CollimationOverlayElements);
269 m_ElementNames.
clear();
270 for (
auto &
oneElement : m_CollimationOverlayElements) {
271 m_ElementNames <<
oneElement[
"Name"].toString();
280 element[
"Name"] = uniqueElementName(name,
typeComboBox->currentText());
293 KStarsData::Instance()->userdb()->AddCollimationOverlayElement(element);
295 return element[
"Name"].toString();
298bool CollimationOverlayOptions::setCollimationOverlayElementValue(
const QString &name,
const QString &field,
const QVariant &value)
300 for (
auto &
oneElement : m_CollimationOverlayElements) {
308 KStarsData::Instance()->userdb()->UpdateCollimationOverlayElement(
oneElement,
oneElement[
"id"].toInt());
316void CollimationOverlayOptions::renameCollimationOverlayElement(
const QString &name)
318 if (m_CurrentElement !=
nullptr && (*m_CurrentElement)[
"Name"] != name) {
321 auto unique = uniqueElementName(name, (*m_CurrentElement)[
"Type"].
toString());
323 setCollimationOverlayElementValue((*m_CurrentElement)[
"Name"].
toString(),
"Name",
unique);
330 selectCollimationOverlayElement(
unique);
334bool CollimationOverlayOptions::setCollimationOverlayElement(
const QJsonObject &element)
336 auto oneElement = getCollimationOverlayElement(element[
"id"].toInt());
345bool CollimationOverlayOptions::removeCollimationOverlayElement(
const QString &name)
347 for (
auto &
oneElement : m_CollimationOverlayElements) {
350 KStarsData::Instance()->userdb()->DeleteCollimationOverlayElement(
id);
369bool CollimationOverlayOptions::selectCollimationOverlayElement(
QListWidgetItem *item)
371 if (item !=
nullptr && selectCollimationOverlayElement(item->
text())) {
377bool CollimationOverlayOptions::selectCollimationOverlayElement(
const QString &name)
379 for (
auto &
oneElement : m_CollimationOverlayElements) {
398 removeB->setEnabled(m_CollimationOverlayElements.
length() > 0);
426void CollimationOverlayOptions::openEditor()
432const QVariantMap CollimationOverlayOptions::getCollimationOverlayElement(uint8_t
id)
const
434 for (
auto &
oneElement : m_CollimationOverlayElements) {
438 return QVariantMap();
441bool CollimationOverlayOptions::exists(uint8_t
id)
const
443 for (
auto &
oneElement : m_CollimationOverlayElements) {
450const QVariantMap CollimationOverlayOptions::getCollimationOverlayElement(
const QString &name)
const
452 for (
auto &
oneElement : m_CollimationOverlayElements) {
457 return QVariantMap();
460void CollimationOverlayOptions::refreshElements()
466int CollimationOverlayOptions::id(
const QString &name)
const
468 for (
auto &
oneElement : m_CollimationOverlayElements) {
475QString CollimationOverlayOptions::name(
int id)
const
477 for (
auto &
oneElement : m_CollimationOverlayElements) {
484void CollimationOverlayOptions::updateValue(
QComboBox *cb,
const QString &element)
491void CollimationOverlayOptions::updateValue(
double value,
const QString &element)
494 setCollimationOverlayElementValue(
elementNamesList->currentItem()->text(), element, value);
498void CollimationOverlayOptions::updateValue(
int value,
const QString &element)
501 setCollimationOverlayElementValue(
elementNamesList->currentItem()->text(), element, value);
505void CollimationOverlayOptions::updateValue(
QColor value,
const QString &element)
508 setCollimationOverlayElementValue(
elementNamesList->currentItem()->text(), element, value);
512void CollimationOverlayOptions::updateValue(
QString value,
const QString &element)
515 setCollimationOverlayElementValue(
elementNamesList->currentItem()->text(), element, value);
static KStars * Instance()
Type type(const QSqlDatabase &db)
char * toString(const EngineQuery &query)
QString name(StandardShortcut id)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList< int > &roles)
void stateChanged(int state)
void currentIndexChanged(int index)
void valueChanged(double d)
QIcon fromTheme(const QString &name)
QVariantMap toVariantMap() const const
void append(QList< T > &&value)
bool contains(const AT &value) const const
qsizetype length() const const
QString text() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
QSqlDatabase database(const QString &connectionName, bool open)
QString fieldName(int index) const const
QVariant value(const QString &name) const const
QSqlRecord record() const const
virtual int rowCount(const QModelIndex &parent) const const override
QString arg(Args &&... args) const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)