mirror of
https://github.com/FAUSheppy/speech-server-client-qt
synced 2025-12-06 08:51:35 +01:00
implement configuration and fix readin
This commit is contained in:
@@ -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,20 +200,23 @@ 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;
|
||||||
|
|
||||||
|
/* OS specific explorer call */
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
args << QDir::toNativeSeparators(filePath);
|
args << QDir::toNativeSeparators(filePath);
|
||||||
QProcess::startDetached("/usr/bin/thunar", args);
|
QProcess::startDetached(mySettings.value(SETTING_LINUX_EXPLORER).toString(), args);
|
||||||
#endif
|
#endif
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
QStringList args;
|
QStringList args;
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user