mirror of
https://github.com/FAUSheppy/speech-server-client-qt
synced 2025-12-06 00:41:35 +01:00
implement server settings window (readonly)
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1,3 @@
|
||||
*.user
|
||||
*.stash
|
||||
Makefile
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include "about.h"
|
||||
#include "serverconnection.h"
|
||||
#include "ui_about.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
|
||||
37
listItemServeConfig.ui
Normal file
37
listItemServeConfig.ui
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "about.h"
|
||||
#include "mainwindow.h"
|
||||
#include "notificationwidget.h"
|
||||
#include "serverconfig.h"
|
||||
#include "settings.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include <QCoreApplication>
|
||||
@@ -80,6 +81,7 @@ MainWindow::MainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::MainWind
|
||||
timer->start(1000);
|
||||
|
||||
/* add handler for menu configuration */
|
||||
ui->menuKonfiguration->addAction("Spracherkennung", this, SLOT(openSpeechConfigWindow()) );
|
||||
ui->menuKonfiguration->addAction("Konfiguration", this, SLOT(openConfigurationWindow()) );
|
||||
ui->menuKonfiguration->addAction("Über diese Software", this, SLOT(openAboutWindow()) );
|
||||
|
||||
@@ -87,6 +89,12 @@ MainWindow::MainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::MainWind
|
||||
this->setWindowTitle(WINDOW_TITLE);
|
||||
}
|
||||
|
||||
void MainWindow::openSpeechConfigWindow(){
|
||||
ServerConfig *serverConfig = new ServerConfig(this, mySettings);
|
||||
serverConfig->setAttribute(Qt::WA_DeleteOnClose);
|
||||
serverConfig->show();
|
||||
}
|
||||
|
||||
void MainWindow::openConfigurationWindow(){
|
||||
Settings *settingsWindow = new Settings();
|
||||
settingsWindow->selectSettings(this->mySettings);
|
||||
|
||||
@@ -29,6 +29,7 @@ private slots:
|
||||
void openConfigurationWindow();
|
||||
void appyConfigChanges();
|
||||
void openAboutWindow();
|
||||
void openSpeechConfigWindow();
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
QTableWidget *tw;
|
||||
|
||||
121
serverconfig.cpp
Normal file
121
serverconfig.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
#include "serverconfig.h"
|
||||
#include "serverconnection.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QListWidget>
|
||||
#include <QWidget>
|
||||
#include <QtUiTools>
|
||||
|
||||
ServerConfig::ServerConfig(QWidget *parent, QSettings *settings) : QMainWindow(parent) {
|
||||
|
||||
mySettings = settings;
|
||||
|
||||
ServerConnection *sc = new ServerConnection(this, mySettings);
|
||||
connect(sc->getNetworkManager(), SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedRequest(QNetworkReply*)), Qt::UniqueConnection);
|
||||
sc->getUnifiedServerConfig();
|
||||
|
||||
/* post processing group */
|
||||
QGroupBox *pp = new QGroupBox();
|
||||
pp->setTitle("Post Processing");
|
||||
ppTable = new QTableWidget();
|
||||
|
||||
/* table ui */
|
||||
ppTable->verticalHeader()->setVisible(false);
|
||||
ppTable->horizontalHeader()->setVisible(false);
|
||||
ppTable->setRowCount(0);
|
||||
|
||||
QStringList *headerList = new QStringList();
|
||||
headerList->append("Suchwort");
|
||||
headerList->append("Ersetzen durch");
|
||||
headerList->append("Entfernen");
|
||||
|
||||
ppTable->setColumnCount(headerList->length());
|
||||
ppTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
|
||||
QGridLayout *innerLayoutPP = new QGridLayout();
|
||||
QPushButton *addNew = new QPushButton("Neue Regel");
|
||||
innerLayoutPP->addWidget(ppTable);
|
||||
innerLayoutPP->addWidget(addNew);
|
||||
pp->setLayout(innerLayoutPP);
|
||||
|
||||
/* context phrases group */
|
||||
QGridLayout *innerLayoutContext = new QGridLayout();
|
||||
QGroupBox *context = new QGroupBox();
|
||||
context->setTitle("Spracherkennungs Wörter");
|
||||
contextTable = new QTableWidget();
|
||||
|
||||
/* table ui */
|
||||
contextTable->verticalHeader()->setVisible(false);
|
||||
contextTable->horizontalHeader()->setVisible(false);
|
||||
contextTable->setRowCount(0);
|
||||
|
||||
QStringList *headerListContext = new QStringList();
|
||||
headerListContext->append("Ausdruck/Wort");
|
||||
headerListContext->append("Entfernen");
|
||||
|
||||
contextTable->setColumnCount(headerList->length());
|
||||
contextTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
|
||||
QPushButton *addNewContext = new QPushButton("Neuer Ausdruck");
|
||||
innerLayoutContext->addWidget(contextTable);
|
||||
innerLayoutContext->addWidget(addNewContext);
|
||||
context->setLayout(innerLayoutContext);
|
||||
|
||||
|
||||
/* setup main window */
|
||||
mainLayout = new QGridLayout();
|
||||
mainLayout->addWidget(pp);
|
||||
mainLayout->addWidget(context);
|
||||
QWidget *mainWidget = new QWidget(this);
|
||||
mainWidget->setLayout(mainLayout);
|
||||
this->setCentralWidget(mainWidget);
|
||||
}
|
||||
|
||||
QWidget* ServerConfig::loatListItemUiForm()
|
||||
{
|
||||
QUiLoader loader;
|
||||
|
||||
QFile file(":/forms/serverconfigitem.ui");
|
||||
file.open(QFile::ReadOnly);
|
||||
|
||||
QWidget *formWidget = loader.load(&file, this);
|
||||
file.close();
|
||||
|
||||
return formWidget;
|
||||
}
|
||||
|
||||
void ServerConfig::finishedRequest(QNetworkReply *reply){
|
||||
if(reply->error() != QNetworkReply::NoError){
|
||||
return;
|
||||
}
|
||||
|
||||
/* get filename and tracking id from replay */
|
||||
QJsonObject json = QJsonDocument::fromJson(reply->readAll()).object();
|
||||
|
||||
auto keywordMap = json["keyword-map"].toObject();
|
||||
auto phrases = json["phrases"].toArray();
|
||||
|
||||
contextTable->clear();
|
||||
for(int i = 0; i < phrases.size(); i++){
|
||||
contextTable->setItem(i, 0, new QTableWidgetItem(phrases.takeAt(i).toString()));
|
||||
contextTable->setItem(i, 0, new QTableWidgetItem(phrases.takeAt(i).toString()));
|
||||
|
||||
auto *deleteButtonLayout = new QGridLayout();
|
||||
auto *deleteCell = new QWidget();
|
||||
auto *deleteButton = new QPushButton("Entfernen");
|
||||
deleteButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
deleteButtonLayout->addWidget(deleteButton);
|
||||
deleteButtonLayout->setContentsMargins(0,0,0,0);
|
||||
deleteCell->setLayout(deleteButtonLayout);
|
||||
|
||||
contextTable->setCellWidget(i, 1, deleteCell);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
ServerConfig::~ServerConfig()
|
||||
{
|
||||
}
|
||||
|
||||
30
serverconfig.h
Normal file
30
serverconfig.h
Normal file
@@ -0,0 +1,30 @@
|
||||
#ifndef SERVERCONFIG_H
|
||||
#define SERVERCONFIG_H
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QMainWindow>
|
||||
#include <QNetworkReply>
|
||||
#include <QSettings>
|
||||
#include <QTableWidget>
|
||||
#include <QWidget>
|
||||
|
||||
|
||||
|
||||
class ServerConfig : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ServerConfig(QWidget *parent = nullptr, QSettings *settings = nullptr);
|
||||
virtual ~ServerConfig();
|
||||
private slots:
|
||||
void finishedRequest(QNetworkReply*);
|
||||
private:
|
||||
QGridLayout* mainLayout;
|
||||
QSettings* mySettings;
|
||||
QWidget *loatListItemUiForm();
|
||||
QTableWidget* ppTable;
|
||||
QTableWidget* contextTable;
|
||||
};
|
||||
|
||||
#endif // SERVERCONFIG_H
|
||||
34
serverconfigitem.ui
Normal file
34
serverconfigitem.ui
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_2"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonDelete">
|
||||
<property name="text">
|
||||
<string>Löschen</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -5,6 +5,10 @@
|
||||
#include <QJsonObject>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QSettings>
|
||||
#include <urls.h>
|
||||
|
||||
#define AUTH_HEADER_NAME "Authorization"
|
||||
#define MIME_JSON "application/json"
|
||||
|
||||
ServerConnection::ServerConnection(QObject *parent, QSettings *settings)
|
||||
{
|
||||
@@ -47,7 +51,7 @@ void ServerConnection::queryStatusAll(){
|
||||
QString statusRequestUrl = buildURLFromLocation(mySettings->value(SETTING_LOC_STATE));
|
||||
QUrl trackingUrl = QUrl(statusRequestUrl);
|
||||
QNetworkRequest request(trackingUrl);
|
||||
request.setRawHeader("Authorization", authHeaderData);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->get(request);
|
||||
//qDebug("Status query sent");
|
||||
}
|
||||
@@ -57,7 +61,7 @@ void ServerConnection::queryTransscript(QString trackingId){
|
||||
QString paramUrl = QString("%1?id=%2").arg(url, trackingId);
|
||||
QUrl transcriptUrl = QUrl(paramUrl);
|
||||
QNetworkRequest request(transcriptUrl);
|
||||
request.setRawHeader("Authorization", authHeaderData);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->get(request);
|
||||
}
|
||||
|
||||
@@ -66,8 +70,8 @@ void ServerConnection::submitFile(QJsonDocument jsonDocument){
|
||||
/* prepare request */
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(mySettings->value(SETTING_LOC_SUBMIT)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader("Authorization", authHeaderData);
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader, MIME_JSON);
|
||||
|
||||
/* make request */
|
||||
networkManager->post(request, jsonDocument.toJson());
|
||||
@@ -76,12 +80,47 @@ void ServerConnection::submitFile(QJsonDocument jsonDocument){
|
||||
}
|
||||
|
||||
void ServerConnection::queryServerVersion(){
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString("/server-info")));
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString(SERVER_INFO)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader("Authorization", authHeaderData);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->get(request);
|
||||
}
|
||||
|
||||
QNetworkAccessManager *ServerConnection::getNetworkManager(){
|
||||
return networkManager;
|
||||
}
|
||||
|
||||
void ServerConnection::submitPostProcessorChange(QJsonDocument jsonDocument){
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString(PP_EDIT)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->post(request, jsonDocument.toJson());
|
||||
}
|
||||
|
||||
void ServerConnection::submitSpeechContextPhraseChange(QJsonDocument jsonDocument){
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString(CONTEXT_EDIT)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->post(request, jsonDocument.toJson());
|
||||
}
|
||||
|
||||
void ServerConnection::getSpeechContextPhrases(){
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString(CONTEXT_GET)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->get(request);
|
||||
}
|
||||
|
||||
void ServerConnection::getPostProcessorMap(){
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString(PP_GET)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->get(request);
|
||||
}
|
||||
|
||||
void ServerConnection::getUnifiedServerConfig(){
|
||||
QUrl serviceUrl = QUrl(buildURLFromLocation(QString(UNIFIED_GET)));
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
|
||||
networkManager->get(request);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,11 @@ public:
|
||||
QString buildURLFromLocation(QString location);
|
||||
QNetworkAccessManager *getNetworkManager();
|
||||
void queryServerVersion();
|
||||
void getPostProcessorMap();
|
||||
void submitPostProcessorChange(QJsonDocument jsonDocument);
|
||||
void submitSpeechContextPhraseChange(QJsonDocument jsonDocument);
|
||||
void getSpeechContextPhrases();
|
||||
void getUnifiedServerConfig();
|
||||
public slots:
|
||||
void queryStatusAll();
|
||||
private slots:
|
||||
|
||||
23
settings.ui
23
settings.ui
@@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>settings</class>
|
||||
<widget class="QMainWindow" name="settings">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>281</width>
|
||||
<height>245</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QGridLayout" name="gridLayout"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -8,7 +8,7 @@ GIT_STR_VERSION = $$system(git describe)
|
||||
DATE_STR = $$system(date)
|
||||
HOSTNAME_STR = $$system(hostname)
|
||||
|
||||
QT += core gui network
|
||||
QT += core gui network uitools
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
@@ -37,7 +37,8 @@ SOURCES += \
|
||||
notificationwidget.cpp \
|
||||
settings.cpp \
|
||||
about.cpp \
|
||||
serverconnection.cpp
|
||||
serverconnection.cpp \
|
||||
serverconfig.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h \
|
||||
@@ -45,11 +46,14 @@ HEADERS += \
|
||||
settings.h \
|
||||
settingkeys.h \
|
||||
about.h \
|
||||
serverconnection.h
|
||||
serverconnection.h \
|
||||
serverconfig.h \
|
||||
urls.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui \
|
||||
settings.ui
|
||||
listItemServeConfig.ui \
|
||||
serverconfigitem.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
|
||||
13
urls.h
Normal file
13
urls.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef URLS_H
|
||||
#define URLS_H
|
||||
|
||||
#define PP_GET "/keyword-map"
|
||||
#define PP_EDIT "/add-pp-keyword"
|
||||
|
||||
#define CONTEXT_GET "/context-phrases"
|
||||
#define CONTEXT_EDIT "/add-context-phrase"
|
||||
|
||||
#define UNIFIED_GET "/unified-server-settings"
|
||||
#define SERVER_INFO "/server-info"
|
||||
|
||||
#endif // URLS_H
|
||||
Reference in New Issue
Block a user