File indexing completed on 2024-05-12 03:44:33

0001 /*
0002     SPDX-FileCopyrightText: 2023 Joseph McGee <joseph.mcgee@sbcglobal.net>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <QLoggingCategory>
0008 #include <QDir>
0009 #include <QFile>
0010 #include "fileutilitycameradata.h"
0011 #include "./ui_fileutilitycameradatadialog.h"
0012 #include <ekos_capture_debug.h>
0013 
0014 FileUtilityCameraDataDialog::FileUtilityCameraDataDialog(
0015     QWidget *parent,
0016     const QString &aPreferredCameraId) :
0017     QDialog(parent),
0018     aPreferredCameraId(aPreferredCameraId),
0019     ui(new Ui::FileUtilityCameraDataDialog)
0020 {
0021     ui->setupUi(this);
0022 
0023     OptimalExposure::FileUtilityCameraData::downloadRepositoryCameraDataFileList(this);
0024 
0025     connect(ui->downloadB, &QPushButton::clicked, this, &FileUtilityCameraDataDialog::startCameraDownload);
0026 
0027     // ui->buttonBox->
0028     // ui->buttonBox->Cancel
0029 
0030     ui->availableRemoteCameraList->clear();
0031     ui->availableRemoteCameraList->setSelectionMode(QAbstractItemView::ExtendedSelection);
0032 
0033 }
0034 
0035 FileUtilityCameraDataDialog::~FileUtilityCameraDataDialog()
0036 {
0037     delete ui;
0038 }
0039 
0040 void FileUtilityCameraDataDialog::refreshCameraList()
0041 {
0042     // ui needs a list of remote files that can be selected
0043     // This setup depends upon the downloadRepositoryCameraDataFileList
0044 
0045     ui->availableRemoteCameraList->clear();
0046     ui->availableRemoteCameraList->setSelectionMode(QAbstractItemView::ExtendedSelection);
0047 
0048     // This probably needs to move to a method called when downloadRepositoryCameraDataFileList has completed
0049     QVector<QString> availableCameraDataFiles = getAvailableCameraDataFiles();
0050     foreach(QString availableCameraFile, availableCameraDataFiles)
0051     {
0052         // Make the camera list user friendly... to match the camera device id
0053         QString availableCameraId = OptimalExposure::FileUtilityCameraData::cameraDataFileNameToCameraId(availableCameraFile);
0054 
0055         ui->availableRemoteCameraList->addItem(availableCameraId);
0056     }
0057 
0058     // Pre-select the value for aPreferredCameraId, (which should be the active camera device id)
0059     QList<QListWidgetItem *> items = ui->availableRemoteCameraList->findItems(aPreferredCameraId, Qt::MatchExactly);
0060     if (items.size() > 0)
0061     {
0062         items[0]->setSelected(true);
0063     }
0064 }
0065 
0066 
0067 void FileUtilityCameraDataDialog::startCameraDownload()
0068 {
0069 
0070 
0071     QList<QListWidgetItem *> selectedItems =  ui->availableRemoteCameraList->selectedItems();
0072     if (selectedItems.size() > 0)
0073     {
0074         this->setDownloadFileCounter(selectedItems.size());
0075         // qCInfo(KSTARS_EKOS_CAPTURE) << "Selected Cameras " << selectedItems.size();
0076         foreach(QListWidgetItem *aSelectedCameraItem, selectedItems)
0077         {
0078             QString aSelectedCameraId = aSelectedCameraItem->text();
0079             // qCInfo(KSTARS_EKOS_CAPTURE) << "attempt Download of " << aSelectedCameraId;
0080             OptimalExposure::FileUtilityCameraData::downloadCameraDataFile(aSelectedCameraId, this);
0081         }
0082     }
0083 }
0084 
0085 int FileUtilityCameraDataDialog::getDownloadFileCounter() const
0086 {
0087     return downloadFileCounter;
0088 }
0089 
0090 void FileUtilityCameraDataDialog::setDownloadFileCounter(int newDownloadFileCounter)
0091 {
0092     downloadFileCounter = newDownloadFileCounter;
0093     ui->counter->text() = QString::number(downloadFileCounter);
0094     qCInfo(KSTARS_EKOS_CAPTURE) << "Camera Data download file counter set "
0095                                 << QString::number(downloadFileCounter);
0096 }
0097 
0098 void FileUtilityCameraDataDialog::decrementDownloadFileCounter()
0099 {
0100     downloadFileCounter--;
0101     ui->counter->text() = QString::number(downloadFileCounter);
0102     qCInfo(KSTARS_EKOS_CAPTURE) << "Camera Data download file counter decremented "
0103                                 << QString::number(downloadFileCounter);
0104     if(downloadFileCounter == 0)
0105     {
0106         // downloads should have completed, dialog can close
0107         // FileUtilityCameraDataDialog::delay(1);
0108         qCInfo(KSTARS_EKOS_CAPTURE) << "Camera Data download file counter reach 0. Forcing dialog to close.";
0109         QMetaObject::invokeMethod(this, "close", Qt::QueuedConnection);
0110     }
0111 }
0112 
0113 void FileUtilityCameraDataDialog::setAvailableCameraDataFiles(QVector<QString> newAvailableCameraDataFiles)
0114 {
0115     availableCameraDataFiles = newAvailableCameraDataFiles;
0116 }
0117 
0118 
0119 QVector<QString> FileUtilityCameraDataDialog::getAvailableCameraDataFiles()
0120 {
0121     return availableCameraDataFiles;
0122 }
0123 
0124 QNetworkRequest *FileUtilityCameraDataDialog::getRequest() const
0125 {
0126     return request;
0127 }
0128 
0129 void FileUtilityCameraDataDialog::setRequest(QNetworkRequest *newRequest)
0130 {
0131     request = newRequest;
0132 }
0133 
0134 QNetworkReply *FileUtilityCameraDataDialog::getReply() const
0135 {
0136     return reply;
0137 }
0138 
0139 void FileUtilityCameraDataDialog::setReply(QNetworkReply *newResponse)
0140 {
0141     reply = newResponse;
0142 }
0143 
0144 QNetworkAccessManager *FileUtilityCameraDataDialog::getANetworkAccessManager() const
0145 {
0146     return aNetworkAccessManager;
0147 }
0148 
0149 void FileUtilityCameraDataDialog::setANetworkAccessManager(QNetworkAccessManager *newANetworkAccessManager)
0150 {
0151     aNetworkAccessManager = newANetworkAccessManager;
0152 }
0153