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

0001 /*
0002     SPDX-FileCopyrightText: 2022 Hy Murveit <hy@murveit.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "polaralignwidget.h"
0007 
0008 namespace Ekos
0009 {
0010 PolarAlignWidget::PolarAlignWidget(QWidget * parent) : QWidget(parent)
0011 {
0012     setupUi(this);
0013     init();
0014 }
0015 
0016 namespace
0017 {
0018 void initLed(KLed *led)
0019 {
0020     led->setColor(Qt::gray);
0021     led->setLook(KLed::Flat);
0022     led->setShape(KLed::Circular);
0023     led->setState(KLed::Off);
0024 }
0025 }  // namespace
0026 
0027 void PolarAlignWidget::init()
0028 {
0029     initLed(PAcapture1Led);
0030     initLed(PAcapture2Led);
0031     initLed(PAcapture3Led);
0032     initLed(PAslew1Led);
0033     initLed(PAslew2Led);
0034     initLed(PAsolve1Led);
0035     initLed(PAsolve2Led);
0036     initLed(PAsolve3Led);
0037     initLed(PAsetupLed);
0038     initLed(PAadjustLed);
0039 }
0040 
0041 void PolarAlignWidget::setPreviousGreen(PAState state)
0042 {
0043     switch (state)
0044     {
0045         case ADJUST:
0046             PAsetupLed->setColor(Qt::green);
0047             PAsetupLed->on();
0048         // fall through
0049         case SETUP:
0050             PAsolve3Led->setColor(Qt::green);
0051             PAsolve3Led->on();
0052         // fall through
0053         case SOLVE3:
0054             PAcapture3Led->setColor(Qt::green);
0055             PAcapture3Led->on();
0056         // fall through
0057         case CAPTURE3:
0058             PAslew2Led->setColor(Qt::green);
0059             PAslew2Led->on();
0060         // fall through
0061         case SLEW2:
0062             PAsolve2Led->setColor(Qt::green);
0063             PAsolve2Led->on();
0064         // fall through
0065         case SOLVE2:
0066             PAcapture2Led->setColor(Qt::green);
0067             PAcapture2Led->on();
0068         // fall through
0069         case CAPTURE2:
0070             PAslew1Led->setColor(Qt::green);
0071             PAslew1Led->on();
0072         // fall through
0073         case SLEW1:
0074             PAsolve1Led->setColor(Qt::green);
0075             PAsolve1Led->on();
0076         // fall through
0077         case SOLVE1:
0078             PAcapture1Led->setColor(Qt::green);
0079             PAcapture1Led->on();
0080         // fall through
0081         case CAPTURE1:
0082             break;
0083         default:
0084             break;
0085     }
0086 }
0087 
0088 void PolarAlignWidget::updatePAHStage(PolarAlignmentAssistant::Stage stage)
0089 {
0090     switch(stage)
0091     {
0092         case PolarAlignmentAssistant::PAH_IDLE:
0093             init();
0094             break;
0095         case PolarAlignmentAssistant::PAH_FIRST_CAPTURE:
0096             update(CAPTURE1);
0097             break;
0098         case PolarAlignmentAssistant::PAH_FIRST_SOLVE:
0099             update(SOLVE1);
0100             break;
0101         case PolarAlignmentAssistant::PAH_FIRST_ROTATE:
0102             update(SLEW1);
0103             break;
0104         case PolarAlignmentAssistant::PAH_SECOND_CAPTURE:
0105             update(CAPTURE2);
0106             break;
0107         case PolarAlignmentAssistant::PAH_SECOND_SOLVE:
0108             update(SOLVE2);
0109             break;
0110         case PolarAlignmentAssistant::PAH_SECOND_ROTATE:
0111             update(SLEW2);
0112             break;
0113         case PolarAlignmentAssistant::PAH_THIRD_CAPTURE:
0114             update(CAPTURE3);
0115             break;
0116         case PolarAlignmentAssistant::PAH_THIRD_SOLVE:
0117             update(SOLVE3);
0118             break;
0119         case PolarAlignmentAssistant::PAH_STAR_SELECT:
0120             update(SETUP);
0121             break;
0122         case PolarAlignmentAssistant::PAH_REFRESH:
0123             update(ADJUST);
0124             break;
0125         case PolarAlignmentAssistant::PAH_POST_REFRESH:
0126             init();
0127             break;
0128 
0129         // These are ignored in the widget.
0130         case PolarAlignmentAssistant::PAH_FIRST_SETTLE:
0131         case PolarAlignmentAssistant::PAH_SECOND_SETTLE:
0132         case PolarAlignmentAssistant::PAH_FIND_CP:
0133             break;
0134     }
0135 }
0136 
0137 void PolarAlignWidget::update(PAState state)
0138 {
0139     // turn off all leds
0140     init();
0141 
0142     switch (state)
0143     {
0144         case CAPTURE1:
0145             PAcapture1Led->setColor(Qt::yellow);
0146             PAcapture1Led->on();
0147             break;
0148         case SOLVE1:
0149             setPreviousGreen(SOLVE1);
0150             PAsolve1Led->setColor(Qt::yellow);
0151             PAsolve1Led->on();
0152             break;
0153         case SLEW1:
0154             setPreviousGreen(SLEW1);
0155             PAslew1Led->setColor(Qt::yellow);
0156             PAslew1Led->on();
0157             break;
0158         case CAPTURE2:
0159             setPreviousGreen(CAPTURE2);
0160             PAcapture2Led->setColor(Qt::yellow);
0161             PAcapture2Led->on();
0162             break;
0163         case SOLVE2:
0164             setPreviousGreen(SOLVE2);
0165             PAsolve2Led->setColor(Qt::yellow);
0166             PAsolve2Led->on();
0167             break;
0168         case SLEW2:
0169             setPreviousGreen(SLEW2);
0170             PAslew2Led->setColor(Qt::yellow);
0171             PAslew2Led->on();
0172             break;
0173         case CAPTURE3:
0174             setPreviousGreen(CAPTURE3);
0175             PAcapture3Led->setColor(Qt::yellow);
0176             PAcapture3Led->on();
0177             break;
0178         case SOLVE3:
0179             setPreviousGreen(SOLVE3);
0180             PAsolve3Led->setColor(Qt::yellow);
0181             PAsolve3Led->on();
0182             break;
0183         case SETUP:
0184             setPreviousGreen(SETUP);
0185             PAsetupLed->setColor(Qt::yellow);
0186             PAsetupLed->on();
0187             break;
0188         case ADJUST:
0189             setPreviousGreen(ADJUST);
0190             PAadjustLed->setColor(Qt::yellow);
0191             PAadjustLed->on();
0192             break;
0193         default:
0194             break;
0195     }
0196 }
0197 }