2019-04-01 10:43:36 +02:00
|
|
|
#include "remoteimportscanpage.h"
|
|
|
|
|
|
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
#include <QHBoxLayout>
|
|
|
|
|
#include <QLabel>
|
|
|
|
|
#include <QPlainTextEdit>
|
|
|
|
|
|
|
|
|
|
#include "importwizard.h"
|
|
|
|
|
#include "threads/remotescannerthread.h"
|
|
|
|
|
|
|
|
|
|
RemoteImportScanPage::RemoteImportScanPage(QWidget *parent) :
|
|
|
|
|
QWizardPage(parent)
|
|
|
|
|
{
|
|
|
|
|
setTitle(tr("Remote Import Scan"));
|
|
|
|
|
setSubTitle(tr("TODO..."));
|
|
|
|
|
|
|
|
|
|
auto layout = new QVBoxLayout;
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
auto hboxLayout = new QHBoxLayout;
|
|
|
|
|
|
|
|
|
|
m_labelAnimation = new QLabel;
|
|
|
|
|
hboxLayout->addWidget(m_labelAnimation);
|
|
|
|
|
|
|
|
|
|
m_labelStatus = new QLabel;
|
|
|
|
|
hboxLayout->addWidget(m_labelStatus, 1);
|
|
|
|
|
|
|
|
|
|
layout->addLayout(hboxLayout);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_logView = new QPlainTextEdit;
|
|
|
|
|
m_logView->setReadOnly(true);
|
|
|
|
|
|
|
|
|
|
layout->addWidget(m_logView, 1);
|
|
|
|
|
|
|
|
|
|
setLayout(layout);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RemoteImportScanPage::~RemoteImportScanPage() = default;
|
|
|
|
|
|
|
|
|
|
int RemoteImportScanPage::nextId() const
|
|
|
|
|
{
|
|
|
|
|
return int(ImportWizard::Pages::RemoteImportOverview);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RemoteImportScanPage::initializePage()
|
|
|
|
|
{
|
|
|
|
|
wizard()->setProperty("result", QVariant::fromValue(ScanResult()));
|
|
|
|
|
|
|
|
|
|
m_labelAnimation->setMovie(&m_movieLoading);
|
|
|
|
|
m_movieLoading.start();
|
|
|
|
|
|
|
|
|
|
m_logView->clear();
|
|
|
|
|
|
2019-04-07 20:14:10 +02:00
|
|
|
m_thread = std::make_unique<RemoteScannerThread>(wizard()->property("folder").toString(), this);
|
2019-04-01 10:43:36 +02:00
|
|
|
|
|
|
|
|
connect(m_thread.get(), &RemoteScannerThread::progressUpdate, this, &RemoteImportScanPage::progressUpdate);
|
|
|
|
|
connect(m_thread.get(), &RemoteScannerThread::logMessage, this, &RemoteImportScanPage::logMessage);
|
|
|
|
|
connect(m_thread.get(), &RemoteScannerThread::finished, this, &RemoteImportScanPage::finished);
|
|
|
|
|
|
|
|
|
|
m_thread->start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RemoteImportScanPage::cleanupPage()
|
|
|
|
|
{
|
|
|
|
|
if (m_thread)
|
|
|
|
|
{
|
|
|
|
|
m_thread->requestInterruption();
|
|
|
|
|
m_thread->wait();
|
|
|
|
|
m_thread = nullptr;
|
|
|
|
|
}
|
|
|
|
|
m_movieLoading.stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool RemoteImportScanPage::isComplete() const
|
|
|
|
|
{
|
|
|
|
|
return m_thread == nullptr && !scanResultEmpty(wizard()->property("result").value<ScanResult>());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RemoteImportScanPage::progressUpdate(int totalFiles, int skippedFiles)
|
|
|
|
|
{
|
|
|
|
|
m_labelStatus->setText(tr("%0 files scanned... (%1 files skipped)").arg(totalFiles).arg(skippedFiles));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RemoteImportScanPage::logMessage(const QString &message)
|
|
|
|
|
{
|
|
|
|
|
m_logView->appendHtml(QString("%0: %1<br/>").arg(QTime::currentTime().toString(), message));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RemoteImportScanPage::finished(const ScanResult &result)
|
|
|
|
|
{
|
|
|
|
|
m_labelAnimation->setMovie(nullptr);
|
|
|
|
|
|
|
|
|
|
const auto success = !scanResultEmpty(result);
|
|
|
|
|
if (success)
|
|
|
|
|
{
|
|
|
|
|
logMessage(tr("Finished"));
|
|
|
|
|
m_labelAnimation->setPixmap(m_pixmapSucceeded);
|
|
|
|
|
|
|
|
|
|
wizard()->setProperty("result", QVariant::fromValue(result));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
logMessage(tr("Scan failed."));
|
|
|
|
|
m_labelAnimation->setPixmap(m_pixmapFailed);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cleanupPage();
|
|
|
|
|
if (success)
|
|
|
|
|
emit completeChanged();
|
|
|
|
|
}
|