8#include "catalogdetails.h"
9#include "detaildialog.h"
10#include "kstarsdata.h"
12#include "ui_catalogdetails.h"
13#include "catalogeditform.h"
14#include "addcatalogobject.h"
15#include "catalogcsvimport.h"
16#include "skymapcomposite.h"
17#include "catalogscomponent.h"
24 m_catalog_id{ catalog_id }, m_timer{ new
QTimer(this) }
29 ui->name_filter->setPlaceholderText(
i18n(
"Showing <= %1 entries. Enter a name (case "
30 "sensitive) to narrow down the search.",
33 m_timer->setInterval(200);
37 [&](
const auto) { m_timer->start(); });
39 ui->object_table->setModel(&m_model);
41 ui->object_table->adjustSize();
42 ui->object_table->horizontalHeader()->setSectionResizeMode(
43 QHeaderView::ResizeMode::ResizeToContents);
46 &CatalogDetails::show_object_details);
52 ui->remove_object->setEnabled(true);
53 ui->edit_object->setEnabled(true);
54 ui->object_group->setEnabled(true);
62 &CatalogDetails::remove_objects);
69CatalogDetails::~CatalogDetails()
74void CatalogDetails::reload_catalog()
76 const auto &found = m_manager.get_catalog(m_catalog_id);
80 i18n(
"Could not load the catalog with id=%1", m_catalog_id));
84 m_catalog = found.second;
86 ui->catalogInfo->setTitle(m_catalog.name);
89 ui->author->setText(m_catalog.author);
90 ui->maintainer->setText(m_catalog.maintainer);
91 ui->source->setText(m_catalog.source);
92 ui->description->setText(m_catalog.description);
94 ui->license->setText(m_catalog.license);
96 ui->edit->setEnabled(m_catalog.mut);
97 ui->add_object->setEnabled(m_catalog.mut);
98 ui->import_csv->setEnabled(m_catalog.mut);
101void CatalogDetails::reload_objects()
103 const auto objects = m_manager.find_objects_by_name(
104 m_catalog.id, ui->name_filter->displayText(),
list_size);
106 m_model.setObjects({ objects.cbegin(), objects.cend() });
110void CatalogDetails::show_object_details(
const QModelIndex &index)
112 const auto &obj = m_model.getObject(index);
117 auto *dialog =
new DetailDialog(&inserted_obj, KStarsData::Instance()->lt(),
118 KStarsData::Instance()->
geo(),
this);
123void CatalogDetails::edit_catalog_meta()
125 auto *dialog =
new CatalogEditForm(
this, m_catalog, 0,
false);
130 const auto &success = m_manager.update_catalog_meta(dialog->getCatalog());
133 i18n(
"Could not update the catalog.<br>%1", success.second));
138void CatalogDetails::add_object()
140 auto *dialog =
new AddCatalogObject(
this, {});
145 const auto &success = m_manager.add_object(m_catalog.id, dialog->get_object());
148 i18n(
"Could not add the object.<br>%1", success.second));
153void CatalogDetails::remove_objects()
155 const auto &items = ui->object_table->selectionModel()->selectedRows();
157 if (items.length() == 0 || !m_catalog.mut)
160 for (
const auto &index : items)
162 const auto &success =
163 m_manager.remove_object(m_catalog.id, m_model.getObject(index).getObjectId());
166 this,
i18n(
"Warning"),
167 i18n(
"Could not remove the object.<br>%1", success.second));
173void CatalogDetails::edit_objects()
175 const auto &items = ui->object_table->selectionModel()->selectedRows();
177 if (items.length() == 0 || !m_catalog.mut)
180 for (
const auto &index : items)
182 const auto &obj = m_model.getObject(index);
183 auto *dialog =
new AddCatalogObject(
this, obj);
188 const auto &success = m_manager.remove_object(m_catalog.id, obj.getObjectId());
191 i18n(
"Could not remove the object.<br>%1", success.second));
193 const auto &success_add =
194 m_manager.add_object(m_catalog.id, dialog->get_object());
195 if (!success_add.first)
197 i18n(
"Could not add the object.<br>%1", success_add.second));
203void CatalogDetails::import_csv()
205 CatalogCSVImport dialog{};
210 const auto &success_add = m_manager.add_objects(m_catalog.id, dialog.get_objects());
212 if (!success_add.first)
214 i18n(
"Could not add the objects.<br>%1", success_add.second));
static constexpr int list_size
How many catalog entries to show in the list.
CatalogDetails(QWidget *parent, const QString &db_path, const int catalog_id)
CatalogObject & insertStaticObject(const CatalogObject &obj)
Insert an object obj into m_static_objects and return a reference to the newly inserted object.
SkyMapComposite * skyComposite()
QString i18n(const char *text, const TYPE &arg...)
GeoCoordinates geo(const QVariant &location)
void clicked(const QModelIndex &index)
void doubleClicked(const QModelIndex &index)
QDialog(QWidget *parent, Qt::WindowFlags f)
void finished(int result)
void textChanged(const QString &text)
StandardButton warning(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons, StandardButton defaultButton)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
QString number(double n, char format, int precision)