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

0001 /*  Progress and status of device or process preparation and execution
0002     SPDX-FileCopyrightText: Wolfgang Reissenberger <sterne-jaeger@openfuture.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "ledstatuswidget.h"
0008 
0009 namespace Ekos
0010 {
0011 LedStatusWidget::LedStatusWidget(QWidget * parent) : QWidget(parent)
0012 {
0013     setupUi(this);
0014 
0015     statusLed = new KLed(Qt::gray, KLed::On, KLed::Flat, KLed::Circular, this);
0016     statusLed->setObjectName("statusLed");
0017     statusLayout->insertWidget(-1, statusLed, 0, Qt::AlignVCenter);
0018 
0019     statusText->setText(i18n("Idle"));
0020 }
0021 
0022 void LedStatusWidget::setCaptureState(CaptureState status)
0023 {
0024     switch (status)
0025     {
0026         case CAPTURE_IDLE:
0027             setStatus(i18n("Idle"), Qt::gray);
0028             break;
0029         case CAPTURE_PAUSED:
0030             setStatus(i18n("Paused"), Qt::gray);
0031             break;
0032         case CAPTURE_SUSPENDED:
0033             setStatus(i18n("Suspended"), Qt::gray);
0034             break;
0035         case CAPTURE_COMPLETE:
0036             setStatus(i18n("Completed"), Qt::gray);
0037             break;
0038 
0039         case CAPTURE_PROGRESS:
0040             setStatus(i18n("Preparing..."), Qt::yellow);
0041             break;
0042         case CAPTURE_WAITING:
0043             setStatus(i18n("Waiting..."), Qt::yellow);
0044             break;
0045         case CAPTURE_DITHERING:
0046             setStatus(i18n("Dithering..."), Qt::yellow);
0047             break;
0048         case CAPTURE_FOCUSING:
0049             setStatus(i18n("Focusing..."), Qt::yellow);
0050             break;
0051         case CAPTURE_FILTER_FOCUS:
0052             setStatus(i18n("Filter change..."), Qt::yellow);
0053             break;
0054         case CAPTURE_CHANGING_FILTER:
0055             setStatus(i18n("Filter change..."), Qt::yellow);
0056             break;
0057         case CAPTURE_ALIGNING:
0058             setStatus(i18n("Aligning..."), Qt::yellow);
0059             break;
0060         case CAPTURE_CALIBRATING:
0061             setStatus(i18n("Calibrating..."), Qt::yellow);
0062             break;
0063         case CAPTURE_MERIDIAN_FLIP:
0064             setStatus(i18n("Meridian flip..."), Qt::yellow);
0065             break;
0066 
0067         case CAPTURE_CAPTURING:
0068             setStatus(i18n("Capturing"), Qt::darkGreen);
0069             break;
0070         case CAPTURE_IMAGE_RECEIVED:
0071             setStatus(i18n("Image received."), Qt::darkGreen);
0072             break;
0073         case CAPTURE_PAUSE_PLANNED:
0074             setStatus(i18n("Pause planned..."), Qt::darkGreen);
0075             break;
0076 
0077         case CAPTURE_ABORTED:
0078             setStatus(i18n("Aborted"), Qt::darkRed);
0079             break;
0080 
0081         case CAPTURE_GUIDER_DRIFT:
0082         case CAPTURE_SETTING_TEMPERATURE:
0083         case CAPTURE_SETTING_ROTATOR:
0084             // do nothing here, set from {@see Capture::updatePrepareState()}
0085             break;
0086     }
0087 }
0088 
0089 void LedStatusWidget::setMountState(QString text, ISD::Mount::Status status)
0090 {
0091     switch (status)
0092     {
0093         case ISD::Mount::MOUNT_IDLE:
0094         case ISD::Mount::MOUNT_PARKED:
0095             setStatus(text, Qt::gray);
0096             break;
0097         case ISD::Mount::MOUNT_MOVING:
0098         case ISD::Mount::MOUNT_SLEWING:
0099         case ISD::Mount::MOUNT_PARKING:
0100             setStatus(text, Qt::yellow);
0101             break;
0102         case ISD::Mount::MOUNT_TRACKING:
0103             setStatus(text, Qt::darkGreen);
0104             break;
0105         case ISD::Mount::MOUNT_ERROR:
0106             setStatus(text, Qt::red);
0107             break;
0108     }
0109 }
0110 
0111 void LedStatusWidget::setFocusState(FocusState status)
0112 {
0113     switch (status)
0114     {
0115         case FOCUS_IDLE:
0116             setStatus(Ekos::getFocusStatusString(status), Qt::gray);
0117             break;
0118         case FOCUS_COMPLETE:
0119             setStatus(Ekos::getFocusStatusString(status), Qt::darkGreen);
0120             break;
0121         case FOCUS_WAITING:
0122         case FOCUS_PROGRESS:
0123         case FOCUS_FRAMING:
0124         case FOCUS_CHANGING_FILTER:
0125             setStatus(Ekos::getFocusStatusString(status), Qt::yellow);
0126             break;
0127         case FOCUS_FAILED:
0128         case FOCUS_ABORTED:
0129             setStatus(Ekos::getFocusStatusString(status), Qt::red);
0130             break;
0131     }
0132 }
0133 
0134 void LedStatusWidget::setFilterState(FilterState status)
0135 {
0136     switch (status)
0137     {
0138         case FILTER_CHANGE:
0139         case FILTER_OFFSET:
0140         case FILTER_AUTOFOCUS:
0141             setStatus(Ekos::getFilterStatusString(status), Qt::yellow);
0142             break;
0143         case FILTER_IDLE:
0144             if (lastFilterState == FILTER_CHANGE)
0145                 setStatus(i18n("Filter selected."), Qt::darkGreen);
0146             break;
0147         default:
0148             // do nothing
0149             break;
0150     }
0151     // remember the current status
0152     lastFilterState = status;
0153 }
0154 
0155 void LedStatusWidget::setStatus(QString text, Qt::GlobalColor color)
0156 {
0157     statusText->setText(text);
0158     statusLed->setColor(color);
0159 }
0160 
0161 }