8 #include "capturecountswidget.h"
10 #include "ekos/ekos.h"
11 #include "ekos/manager.h"
13 using Ekos::SequenceJob;
15 CaptureCountsWidget::CaptureCountsWidget(
QWidget *parent) :
QWidget(parent)
21 textView->setVisible(
false);
22 graphicalView->setVisible(
true);
23 Options::setUseGraphicalCountsDisplay(
true);
27 textView->setVisible(
true);
28 graphicalView->setVisible(
false);
29 Options::setUseGraphicalCountsDisplay(
false);
33 graphicalView->setVisible(Options::useGraphicalCountsDisplay());
34 textView->setVisible(!Options::useGraphicalCountsDisplay());
37 gr_sequenceProgressBar->setDecimals(0);
38 gr_overallProgressBar->setDecimals(0);
43 void CaptureCountsWidget::updateExposureProgress(Ekos::SequenceJob *job)
45 imageCountDown.setHMS(0, 0, 0);
46 imageCountDown = imageCountDown.addSecs(
int(std::round(job->getExposeLeft())));
47 if (imageCountDown.hour() == 23)
48 imageCountDown.setHMS(0, 0, 0);
50 imageProgress->setRange(0,
int(std::ceil(job->getCoreProperty(SequenceJob::SJ_Exposure).toDouble())));
51 imageProgress->setValue(
int(std::ceil(job->getCoreProperty(SequenceJob::SJ_Exposure).toDouble() - job->getExposeLeft())));
52 gr_imageProgress->setRange(0,
int(std::ceil(job->getCoreProperty(SequenceJob::SJ_Exposure).toDouble())));
53 gr_imageProgress->setValue(imageProgress->value());
55 frameRemainingTime->setText(imageCountDown.toString(
"hh:mm:ss"));
56 gr_frameRemainingTime->setText(frameRemainingTime->text());
59 void CaptureCountsWidget::updateDownloadProgress(
double timeLeft)
61 imageCountDown.setHMS(0, 0, 0);
62 imageCountDown = imageCountDown.addSecs(
int(std::ceil(timeLeft)));
63 frameRemainingTime->setText(imageCountDown.toString(
"hh:mm:ss"));
66 void CaptureCountsWidget::updateCaptureCountDown(
int delta)
68 overallCountDown = overallCountDown.addSecs(delta);
69 jobCountDown = jobCountDown.addSecs(delta);
70 sequenceCountDown = sequenceCountDown.addSecs(delta);
73 if (overallCountDown.hour() == 23)
74 overallCountDown.setHMS(0, 0, 0);
75 if (jobCountDown.hour() == 23)
76 jobCountDown.setHMS(0, 0, 0);
77 if (sequenceCountDown.hour() == 23)
78 sequenceCountDown.setHMS(0, 0, 0);
81 if (schedulerProcess ==
nullptr || schedulerProcess->getCurrentJob() ==
nullptr ||
82 schedulerProcess->getCurrentJob()->getCompletionCondition() != SchedulerJob::FINISH_LOOP)
84 overallRemainingTime->setText(overallCountDown.toString(
"hh:mm:ss"));
85 gr_overallRemainingTime->setText(overallRemainingTime->text());
87 jobRemainingTime->setText(jobCountDown.toString(
"hh:mm:ss"));
88 sequenceRemainingTime->setText(sequenceCountDown.toString(
"hh:mm:ss"));
89 gr_sequenceRemainingTime->setText(sequenceRemainingTime->text());
92 void CaptureCountsWidget::reset()
95 gr_imageProgress->setValue(0);
96 gr_frameLabel->setText(
"");
97 gr_frameRemainingTime->setText(
"--:--:--");
98 gr_frameDetailsLabel->setText(
"");
99 gr_sequenceLabel->setText(
i18n(
"Sequence"));
100 gr_sequenceProgressBar->setValue(0);
101 gr_sequenceRemainingTime->setText(
"--:--:--");
102 gr_overallLabel->setText(
i18n(
"Overall"));
103 gr_overallProgressBar->setValue(0);
104 gr_overallRemainingTime->setText(
"--:--:--");
107 imageProgress->setValue(0);
109 frameRemainingTime->setText(
"");
111 overallRemainingTime->setText(
"--:--:--");
112 jobRemainingTime->setText(
"--:--:--");
113 sequenceRemainingTime->setText(
"--:--:--");
116 void CaptureCountsWidget::setFrameInfo(
const QString frametype,
const QString filter,
const double exptime,
const int xBin,
117 const int yBin,
const double gain)
121 frameInfoLabel->setText(
"");
122 frameDetailsLabel->setText(
"");
123 gr_frameRemainingTime->setText(
"");
127 frameInfoLabel->setText(
QString(
"%1 %2").arg(frametype).arg(filter));
128 gr_frameLabel->setText(frameInfoLabel->text());
131 details.
append(
QString(
"%1: %2 sec").arg(
i18n(
"Exposure")).arg(exptime, 0,
'f', exptime < 1 ? 2 : exptime < 5 ? 1 : 0));
132 if (xBin > 0 && yBin > 0)
137 frameDetailsLabel->setText(details);
138 gr_frameDetailsLabel->setText(details);
144 overallCountDown.setHMS(0, 0, 0);
145 bool infinite_loop =
false;
146 int total_remaining_time = 0, total_completed = 0, total_count = 0;
147 double total_percentage = 0;
154 double capture_total_percentage = captureProcess->getProgressPercentage();
155 int capture_remaining_time = captureProcess->getOverallRemainingTime();
156 int capture_total_count = 0, capture_total_completed = 0;
157 for (
int i = 0; i < captureProcess->getJobCount(); i++)
159 capture_total_count += captureProcess->getJobImageCount(i);
160 capture_total_completed += captureProcess->getJobImageProgress(i);
164 if (schedulerProcess !=
nullptr && schedulerProcess->getCurrentJob() !=
nullptr)
166 total_label = schedulerProcess->getCurrentJobName();
168 total_completed = schedulerProcess->getCurrentJob()->getCompletedCount();
169 total_count = schedulerProcess->getCurrentJob()->getSequenceCount();
170 infinite_loop = (schedulerProcess->getCurrentJob()->getCompletionCondition() == SchedulerJob::FINISH_LOOP);
172 total_percentage = (100 * total_completed) / total_count;
173 if (schedulerProcess->getCurrentJob()->getEstimatedTime() > 0)
174 total_remaining_time =
int(schedulerProcess->getCurrentJob()->getEstimatedTime());
178 total_percentage = capture_total_percentage;
179 total_remaining_time = capture_remaining_time;
180 total_count = capture_total_count;
181 total_completed = capture_total_completed;
193 if (infinite_loop ==
true)
195 overallRemainingTime->setText(
"--:--:--");
196 gr_overallProgressBar->setValue(0);
197 gr_overallRemainingTime->setText(overallRemainingTime->text());
201 overallCountDown = overallCountDown.addSecs(total_remaining_time);
202 gr_overallProgressBar->setValue(total_percentage);
206 overallLabel->setText(
QString(
"%1 (%2/%3)")
208 .arg(total_completed)
210 gr_overallLabel->setText(overallLabel->text());
213 bool show_job_progress = (schedulerProcess !=
nullptr && schedulerProcess->getCurrentJob() !=
nullptr);
214 jobLabel->setVisible(show_job_progress);
215 jobRemainingTime->setVisible(show_job_progress);
216 if (show_job_progress)
218 jobCountDown.setHMS(0, 0, 0);
219 jobCountDown = jobCountDown.addSecs(captureProcess->getOverallRemainingTime());
220 jobLabel->setText(
QString(
"Job (%1/%2)")
221 .
arg(capture_total_completed)
222 .
arg(capture_total_count));
226 sequenceCountDown.setHMS(0, 0, 0);
227 sequenceCountDown = sequenceCountDown.addSecs(captureProcess->getActiveJobRemainingTime());
231 void CaptureCountsWidget::updateJobProgress(Ekos::SequenceJob *job)
234 if (job->getCoreProperty(SequenceJob::SJ_Preview).toBool() ==
true)
235 setFrameInfo(
i18n(
"Preview"), job->getCoreProperty(SequenceJob::SJ_Filter).toString(),
236 job->getCoreProperty(SequenceJob::SJ_Exposure).
toDouble(), job->getCoreProperty(SequenceJob::SJ_Binning).toPoint().x(),
237 job->getCoreProperty(SequenceJob::SJ_Binning).toPoint().y(), job->getCoreProperty(SequenceJob::SJ_Gain).toDouble());
239 setFrameInfo(CCDFrameTypeNames[job->getFrameType()], job->getCoreProperty(SequenceJob::SJ_Filter).toString(),
240 job->getCoreProperty(SequenceJob::SJ_Exposure).toDouble(), job->getCoreProperty(SequenceJob::SJ_Binning).toPoint().x(),
241 job->getCoreProperty(SequenceJob::SJ_Binning).toPoint().y(), job->getCoreProperty(SequenceJob::SJ_Gain).toDouble());
244 gr_sequenceProgressBar->setRange(0, job->getCoreProperty(SequenceJob::SJ_Count).toInt());
245 gr_sequenceProgressBar->setValue(job->getCompleted());
246 sequenceLabel->setText(
QString(
"%1 %2 (%3/%4)")
247 .arg(CCDFrameTypeNames[job->getFrameType()])
248 .
arg(job->getCoreProperty(SequenceJob::SJ_Filter).toString())
249 .
arg(job->getCompleted()).
arg(job->getCoreProperty(SequenceJob::SJ_Count).toInt()));
250 gr_sequenceLabel->setText(sequenceLabel->text());
253 void CaptureCountsWidget::setEnabled(
bool enabled)
256 overallLabel->setEnabled(enabled);
257 gr_overallLabel->setEnabled(enabled);