File indexing completed on 2024-04-28 15:09:03

0001 /*
0002     SPDX-FileCopyrightText: 2017 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003     SPDX-FileCopyrightText: 2017 Robert Lancaster <rlancaste@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "opsalign.h"
0009 
0010 #include "align.h"
0011 #include "fov.h"
0012 #include "kstars.h"
0013 #include "ksnotification.h"
0014 #include "Options.h"
0015 #include "kspaths.h"
0016 #include "ekos/auxiliary/stellarsolverprofile.h"
0017 
0018 #include <KConfigDialog>
0019 #include <QProcess>
0020 #include <ekos_align_debug.h>
0021 
0022 namespace Ekos
0023 {
0024 OpsAlign::OpsAlign(Align *parent) : QWidget(KStars::Instance())
0025 {
0026     setupUi(this);
0027 
0028     alignModule = parent;
0029 
0030     //Get a pointer to the KConfigDialog
0031     m_ConfigDialog = KConfigDialog::exists("alignsettings");
0032 
0033     editSolverProfile->setIcon(QIcon::fromTheme("document-edit"));
0034     editSolverProfile->setAttribute(Qt::WA_LayoutUsesWidgetRect);
0035     connect(editSolverProfile, &QAbstractButton::clicked, this, [this]
0036     {
0037         emit needToLoadProfile(kcfg_SolveOptionsProfile->currentText());
0038     });
0039 
0040     reloadOptionsProfiles();   
0041 
0042     connect(m_ConfigDialog->button(QDialogButtonBox::Apply), SIGNAL(clicked()), SLOT(slotApply()));
0043     connect(m_ConfigDialog->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), SLOT(slotApply()));
0044     connect(m_ConfigDialog->button(QDialogButtonBox::Ok), SIGNAL(clicked()), SLOT(slotApply()));
0045 }
0046 
0047 void OpsAlign::setFlipPolicy(const Ekos::OpsAlign::FlipPriority Priority)
0048 {
0049     if (Priority == Ekos::OpsAlign::ROTATOR_ANGLE)
0050         kcfg_AstrometryFlipRotationAllowed->setChecked(true);
0051     else if (Priority == Ekos::OpsAlign::POSITION_ANGLE)
0052         FlipRotationNotAllowed->setChecked(true);
0053     OpsAlign::update();
0054     emit m_ConfigDialog->button(QDialogButtonBox::Apply)->click();
0055 }
0056 
0057 void OpsAlign::reloadOptionsProfiles()
0058 {
0059     QString savedOptionsProfiles = QDir(KSPaths::writableLocation(
0060                                             QStandardPaths::AppLocalDataLocation)).filePath("SavedAlignProfiles.ini");
0061 
0062     if(QFile(savedOptionsProfiles).exists())
0063         optionsList = StellarSolver::loadSavedOptionsProfiles(savedOptionsProfiles);
0064     else
0065         optionsList = getDefaultAlignOptionsProfiles();
0066     int currentIndex = kcfg_SolveOptionsProfile->currentIndex();
0067     kcfg_SolveOptionsProfile->clear();
0068     for(auto &param : optionsList)
0069         kcfg_SolveOptionsProfile->addItem(param.listName);
0070 
0071     if (currentIndex >= 0)
0072     {
0073         kcfg_SolveOptionsProfile->setCurrentIndex(currentIndex);
0074         Options::setSolveOptionsProfile(currentIndex);
0075     }
0076     else
0077         kcfg_SolveOptionsProfile->setCurrentIndex(Options::solveOptionsProfile());
0078 }
0079 
0080 void OpsAlign::slotApply()
0081 {
0082     emit settingsUpdated();
0083 }
0084 }