implement configuration and fix readin

This commit is contained in:
Yannik Schmidt
2020-08-18 20:34:10 +02:00
parent db5e95b2fc
commit b0a38c1b7d
4 changed files with 71 additions and 30 deletions

View File

@@ -17,6 +17,7 @@
#include <QProcess> #include <QProcess>
#include <QSettings> #include <QSettings>
#include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkAccessManager>
#include <QString>
#include <settingkeys.h> #include <settingkeys.h>
#define FILENAME_COL 0 #define FILENAME_COL 0
@@ -26,11 +27,6 @@
#define TRANSCRIPT_STATUS_COL 4 #define TRANSCRIPT_STATUS_COL 4
#define NUM_OF_COLS 5 #define NUM_OF_COLS 5
#define STATUS_REQUEST_URL "http://localhost:5000/dumpstate"
#define SUBMIT_URL "http://localhost:5000/submit-async"
#define REQUEST_TRANSCRIPT_URL "http://localhost:5000/transcript"
#define TRANSCRIPT_TARGET_DIR "."
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::MainWindow){ MainWindow::MainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::MainWindow){
@@ -40,7 +36,7 @@ MainWindow::MainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::MainWind
/* ensure all initial settings are set */ /* ensure all initial settings are set */
handleInitialSettings(); handleInitialSettings();
setAuthHeader("user", "pass"); setAuthHeader(mySettings.value(SETTING_USER).toString(), mySettings.value(SETTING_PASS).toString());
networkManager = new QNetworkAccessManager(this); networkManager = new QNetworkAccessManager(this);
/* setup buttons */ /* setup buttons */
@@ -83,7 +79,7 @@ void MainWindow::openConfigurationWindow(){
} }
void MainWindow::handleInitialSettings(){ void MainWindow::handleInitialSettings(){
QSettings mySettings;
if(!mySettings.contains(SETTING_HOST)){ if(!mySettings.contains(SETTING_HOST)){
mySettings.setValue(SETTING_HOST, "localhost"); mySettings.setValue(SETTING_HOST, "localhost");
} }
@@ -111,6 +107,9 @@ void MainWindow::handleInitialSettings(){
if(!mySettings.contains(SETTING_PASS)){ if(!mySettings.contains(SETTING_PASS)){
mySettings.setValue(SETTING_PASS, ""); mySettings.setValue(SETTING_PASS, "");
} }
if(!mySettings.contains(SETTING_LINUX_EXPLORER)){
mySettings.setValue(SETTING_LINUX_EXPLORER, "/usr/bin/thunar");
}
} }
void MainWindow::importFile(){ void MainWindow::importFile(){
@@ -150,17 +149,36 @@ void MainWindow::setAuthHeader(const QString username, const QString password){
} }
QString MainWindow::buildURLFromLocation(QVariant location){
return buildURLFromLocation(location.toString());
}
QString MainWindow::buildURLFromLocation(QString location){
QString proto = mySettings.value(SETTING_PROTO).toString();
QString host = mySettings.value(SETTING_HOST).toString();
QString port = mySettings.value(SETTING_PORT).toString();
if(!proto.endsWith("://")){
proto += "://";
}
if(!port.startsWith(":")){
port = ":" + port;
}
QString url = proto + host + port + location;
qDebug(qPrintable(url));
return url;
}
void MainWindow::submitFile(QString filename){ void MainWindow::submitFile(QString filename){
/* prepare request */ /* prepare request */
QUrl serviceUrl = QUrl(SUBMIT_URL); QUrl serviceUrl = QUrl(buildURLFromLocation(mySettings.value(SETTING_LOC_SUBMIT)));
QNetworkRequest request(serviceUrl); QNetworkRequest request(serviceUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader("Authorization", authHeaderData);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
/* read audio as base64 */ /* read audio as base64 */
QFile sourceFile(filename); QFile sourceFile(filename);
sourceFile.open(QIODevice::ReadOnly | QIODevice::Text); sourceFile.open(QIODevice::ReadOnly);
QByteArray base64Encoded = sourceFile.readAll().toBase64(); QByteArray base64Encoded = sourceFile.readAll().toBase64();
QString dataString = QString::fromUtf8(base64Encoded); QString dataString = QString::fromUtf8(base64Encoded);
sourceFile.close(); sourceFile.close();
@@ -182,26 +200,29 @@ void MainWindow::submitFile(QString filename){
} }
void MainWindow::queryTransscript(QString trackingId){ void MainWindow::queryTransscript(QString trackingId){
QString url = QString("%1?id=%2").arg(REQUEST_TRANSCRIPT_URL, trackingId); QString url = buildURLFromLocation(mySettings.value(SETTING_LOC_TRANSCRIPT));
QUrl transcriptUrl = QUrl(url); QString paramUrl = QString("%1?id=%2").arg(url, trackingId);
QUrl transcriptUrl = QUrl(paramUrl);
QNetworkRequest request(transcriptUrl); QNetworkRequest request(transcriptUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader("Authorization", authHeaderData);
networkManager->get(request); networkManager->get(request);
} }
void MainWindow::openContainingDir(){ void MainWindow::openContainingDir(){
qDebug("Called");
auto filePath = TRANSCRIPT_TARGET_DIR; QString filePath = mySettings.value(SETTING_SAVE_DIR).toString();
QStringList args; QStringList args;
#ifdef Q_OS_LINUX
args << QDir::toNativeSeparators(filePath); /* OS specific explorer call */
QProcess::startDetached("/usr/bin/thunar", args); #ifdef Q_OS_LINUX
#endif args << QDir::toNativeSeparators(filePath);
#ifdef Q_OS_WIN QProcess::startDetached(mySettings.value(SETTING_LINUX_EXPLORER).toString(), args);
QStringList args; #endif
args << "/select," << QDir::toNativeSeparators(filePath); #ifdef Q_OS_WIN
QProcess::startDetached("explorer", args); QStringList args;
#endif args << "/select," << QDir::toNativeSeparators(filePath);
QProcess::startDetached("explorer", args);
#endif
} }
void MainWindow::updateList(QNetworkReply* reply){ void MainWindow::updateList(QNetworkReply* reply){
@@ -273,15 +294,17 @@ void MainWindow::saveTranscript(QNetworkReply* reply){
} }
/* save return data */ /* save return data */
QString fullpath = QDir(TRANSCRIPT_TARGET_DIR).filePath(targetName); QString fullpath = QDir(mySettings.value(SETTING_SAVE_DIR).toString()).filePath(targetName);
qDebug(qPrintable(fullpath)); qDebug(qPrintable(fullpath));
qDebug(qPrintable(transcript));
QFile file(fullpath); QFile file(fullpath);
if (!file.open(QIODevice::WriteOnly)) { if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file"), file.errorString()); QMessageBox::information(this, tr("Unable to open file"), file.errorString());
qWarning("Error opening File"); qWarning("Error opening File");
} }
QDataStream out(&file); QTextStream out(&file);
out.setVersion(QDataStream::Qt_4_5); out.setGenerateByteOrderMark(true);
out.setCodec("UTF-8");
out << transcript; out << transcript;
file.close(); file.close();
@@ -352,22 +375,28 @@ void MainWindow::addTrackingToList(QNetworkReply* reply){
void MainWindow::requestFinished(QNetworkReply *reply){ void MainWindow::requestFinished(QNetworkReply *reply){
qDebug(qPrintable(reply->url().toString())); qDebug(qPrintable(reply->url().toString()));
if(QString::compare(reply->url().toString(), SUBMIT_URL) == 0){
QString submitUrl = buildURLFromLocation(mySettings.value(SETTING_LOC_SUBMIT));
QString statusRequestUrl = buildURLFromLocation(mySettings.value(SETTING_LOC_STATE));
QString requestTranscriptUrl = buildURLFromLocation(mySettings.value(SETTING_LOC_TRANSCRIPT));
if(QString::compare(reply->url().toString(), submitUrl) == 0){
addTrackingToList(reply); addTrackingToList(reply);
}else if (QString::compare(reply->url().toString(), STATUS_REQUEST_URL) == 0) { }else if (QString::compare(reply->url().toString(), statusRequestUrl) == 0) {
updateList(reply); updateList(reply);
}else if (reply->url().toString().startsWith(REQUEST_TRANSCRIPT_URL)) { }else if (reply->url().toString().startsWith(requestTranscriptUrl)) {
qDebug("Saving transcript"); qDebug("Saving transcript");
saveTranscript(reply); saveTranscript(reply);
}else{ }else{
qDebug("URL-Response: %s", qUtf8Printable(reply->url().toString())); qDebug("URL-Response: %s", qUtf8Printable(reply->url().toString()));
qFatal("Unexpected responding URL"); qFatal("Unexpected responding URL");
} }
//qDebug("Reply handling finished");
} }
void MainWindow::queryStatusAll(){ void MainWindow::queryStatusAll(){
QUrl trackingUrl = QUrl(STATUS_REQUEST_URL);
QString statusRequestUrl = buildURLFromLocation(mySettings.value(SETTING_LOC_STATE));
QUrl trackingUrl = QUrl(statusRequestUrl);
QNetworkRequest request(trackingUrl); QNetworkRequest request(trackingUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader("Authorization", authHeaderData);
networkManager->get(request); networkManager->get(request);

View File

@@ -4,6 +4,7 @@
#include <QMainWindow> #include <QMainWindow>
#include <QNetworkReply> #include <QNetworkReply>
#include <QPushButton> #include <QPushButton>
#include <QSettings>
#include <QTableWidget> #include <QTableWidget>
namespace Ui { namespace Ui {
@@ -31,6 +32,7 @@ private:
QAction *standardsMenu; QAction *standardsMenu;
QByteArray authHeaderData; QByteArray authHeaderData;
QNetworkAccessManager *networkManager; QNetworkAccessManager *networkManager;
QSettings mySettings;
void submitFile(QString filename); void submitFile(QString filename);
void setAuthHeader(const QString username, const QString password); void setAuthHeader(const QString username, const QString password);
void updateList(QNetworkReply *reply); void updateList(QNetworkReply *reply);
@@ -39,6 +41,8 @@ private:
void queryTransscript(QString trackingId); void queryTransscript(QString trackingId);
void saveTranscript(QNetworkReply *reply); void saveTranscript(QNetworkReply *reply);
void handleInitialSettings(); void handleInitialSettings();
QString buildURLFromLocation(QString location);
QString buildURLFromLocation(QVariant location);
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@@ -10,5 +10,6 @@
#define SETTING_SAVE_DIR "save-dir" #define SETTING_SAVE_DIR "save-dir"
#define SETTING_USER "user" #define SETTING_USER "user"
#define SETTING_PASS "pass" #define SETTING_PASS "pass"
#define SETTING_LINUX_EXPLORER "linux-explorer"
#endif // SETTINGKEYS_H #endif // SETTINGKEYS_H

View File

@@ -24,6 +24,10 @@ Settings::Settings(QWidget *parent) :
configOptions->append("Username"); configOptions->append("Username");
configOptions->append("Passwort"); configOptions->append("Passwort");
#ifdef Q_OS_LINUX
configOptions->append("Linux Explorer");
#endif
/* config option keys */ /* config option keys */
QStringList *configOptionsKeys = new QStringList(); QStringList *configOptionsKeys = new QStringList();
configOptionsKeys->append(SETTING_HOST); configOptionsKeys->append(SETTING_HOST);
@@ -32,6 +36,9 @@ Settings::Settings(QWidget *parent) :
configOptionsKeys->append(SETTING_SAVE_DIR); configOptionsKeys->append(SETTING_SAVE_DIR);
configOptionsKeys->append(SETTING_USER); configOptionsKeys->append(SETTING_USER);
configOptionsKeys->append(SETTING_PASS); configOptionsKeys->append(SETTING_PASS);
#ifdef Q_OS_LINUX
configOptionsKeys->append(SETTING_LINUX_EXPLORER);
#endif
/* config options layout */ /* config options layout */
auto cw = this->findChild<QWidget*>("centralwidget"); auto cw = this->findChild<QWidget*>("centralwidget");