Skip to content

Commit

Permalink
ExportDialog & StlExport logic implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
hrobeers committed Dec 1, 2015
1 parent fbc1f5f commit fb0a004
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 17 deletions.
67 changes: 59 additions & 8 deletions src/web/exportdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#include "ui_exportdialog.h"

#include <QNetworkReply>
#include <QFileDialog>
#include <QMessageBox>

using namespace web;

Expand All @@ -32,7 +34,7 @@ ExportDialog::ExportDialog(const foillogic::Foil *toExport, const hrlib::Version
_ui(new Ui::ExportDialog),
_toExport(toExport),
_stlExport(new StlExport(version)),
_msgReply(nullptr), _stlReply(nullptr)
_msgReply(nullptr), _postFoilReply(nullptr)
{
_ui->setupUi(this);

Expand All @@ -54,8 +56,10 @@ ExportDialog::~ExportDialog() {}

void ExportDialog::exportClicked()
{
// TODO choose file to save to
_stlReply.reset(_stlExport->generateSTL(_toExport));
_exportFileName = QFileDialog::getSaveFileName(this, tr("Save file"),
"/tmp/export.stl",
tr("STL (*.stl);;All files (*)"));
_postFoilReply.reset(_stlExport->generateSTL(_toExport));
_ui->progressBar->show();
}

Expand All @@ -66,19 +70,66 @@ void ExportDialog::closeClicked()

void ExportDialog::exportFinished(QNetworkReply *reply)
{
//
// Handle message reply (to show in QWebView component)
//
if (_msgReply.get() == reply)
{
_ui->webView->setHtml(QString::fromUtf8(reply->readAll()));

if (reply->error() == QNetworkReply::NoError)
_ui->exportButton->setDisabled(false);

_msgReply.reset();
}
else if (_stlReply.get() == reply)

//
// Handle postFoil reply (returns the .stl URL)
//
else if (_postFoilReply.get() == reply)
{
// TODO download (progressbar) & save
_ui->webView->setHtml(QString::fromUtf8(reply->readAll()));
_stlReply.reset();
// close();
if (reply->error() == QNetworkReply::NoError)
{
connect(reply, &QNetworkReply::downloadProgress, this, &ExportDialog::downloadProgress);
_getStlReply.reset(_stlExport->getSTL(reply->readAll()));
}
else
{
_ui->webView->setHtml(QString::fromUtf8(reply->readAll()));
}
_postFoilReply.reset();
}

//
// Handle the getSTL reply (write to file)
//
else if (_getStlReply.get() == reply)
{
if (reply->error() == QNetworkReply::NoError)
{
QFile file(_exportFileName);
if (!file.open(QFile::WriteOnly | QFile::Text))
{
QMessageBox::warning(this, tr("Cannot save fin"),
tr("Cannot write to file %1:\n%2.")
.arg(_exportFileName)
.arg(file.errorString()));
}

file.write(reply->readAll());
close();
}
else
{
_ui->webView->setHtml(QString::number(reply->size()));
}
_getStlReply.reset();
_ui->progressBar->hide();
}
}

void ExportDialog::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
{
_ui->progressBar->setMaximum(bytesTotal);
_ui->progressBar->setValue(bytesReceived);
}
4 changes: 3 additions & 1 deletion src/web/exportdialog.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,14 @@ namespace web {
std::unique_ptr<StlExport> _stlExport;
const foillogic::Foil* _toExport;

qunique_ptr<QNetworkReply> _msgReply, _stlReply;
qunique_ptr<QNetworkReply> _msgReply, _postFoilReply, _getStlReply;
QString _exportFileName;

private slots:
void exportClicked();
void closeClicked();
void exportFinished(QNetworkReply *reply);
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
};
}

Expand Down
27 changes: 19 additions & 8 deletions src/web/stlexport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,18 @@ using namespace hrlib;
StlExport::StlExport(const Version *version, QObject *parent) :
QObject(parent),
_manager(new QNetworkAccessManager()),
_fileName("finfoil_"), // TODO use real fileName if possible
_messageName("finfoil_v")
_fileName("finfoil"), // TODO use real fileName if possible
_messageName("finfoil")
{
_fileName.append(QString::number(version->Major()));
_fileName.append("_");
_fileName.append(QString::number(version->Minor()));
QString versionSuffix = "_v";
versionSuffix.append(QString::number(version->Major()));
versionSuffix.append(".");
versionSuffix.append(QString::number(version->Minor()));

_fileName.append(versionSuffix);
_fileName.append(".foil");

_messageName.append(QString::number(version->Major()));
_messageName.append(".");
_messageName.append(QString::number(version->Minor()));
_messageName.append(versionSuffix);
_messageName.append(".html");
}

Expand Down Expand Up @@ -84,4 +85,14 @@ QNetworkReply* StlExport::generateSTL(const Foil *foil)
return _manager->post(request, QByteArray(short_utf8.c_str()));
}

QNetworkReply *StlExport::getSTL(const QByteArray &stlReply)
{
QUrl url("http://127.0.0.1:4000/" + QString::fromUtf8(stlReply));
QNetworkRequest request(url);

connect(_manager.get(), &QNetworkAccessManager::finished, this, &StlExport::finished);

return _manager->get(request);
}

StlExport::~StlExport() { }
1 change: 1 addition & 0 deletions src/web/stlexport.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ namespace web

QNetworkReply* getMessage();
QNetworkReply* generateSTL(const foillogic::Foil *foil);
QNetworkReply* getSTL(const QByteArray &stlReply);

virtual ~StlExport();

Expand Down

0 comments on commit fb0a004

Please sign in to comment.