implement server settings window (readonly)

This commit is contained in:
Yannik Schmidt
2020-09-04 23:33:24 +02:00
parent 30291ef72d
commit b7023d348b
13 changed files with 304 additions and 34 deletions

2
.gitignore vendored
View File

@@ -1 +1,3 @@
*.user *.user
*.stash
Makefile

View File

@@ -1,6 +1,5 @@
#include "about.h" #include "about.h"
#include "serverconnection.h" #include "serverconnection.h"
#include "ui_about.h"
#include <QGridLayout> #include <QGridLayout>
#include <QGroupBox> #include <QGroupBox>

37
listItemServeConfig.ui Normal file
View 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>

View File

@@ -1,6 +1,7 @@
#include "about.h" #include "about.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "notificationwidget.h" #include "notificationwidget.h"
#include "serverconfig.h"
#include "settings.h" #include "settings.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include <QCoreApplication> #include <QCoreApplication>
@@ -80,6 +81,7 @@ MainWindow::MainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::MainWind
timer->start(1000); timer->start(1000);
/* add handler for menu configuration */ /* add handler for menu configuration */
ui->menuKonfiguration->addAction("Spracherkennung", this, SLOT(openSpeechConfigWindow()) );
ui->menuKonfiguration->addAction("Konfiguration", this, SLOT(openConfigurationWindow()) ); ui->menuKonfiguration->addAction("Konfiguration", this, SLOT(openConfigurationWindow()) );
ui->menuKonfiguration->addAction("Über diese Software", this, SLOT(openAboutWindow()) ); 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); this->setWindowTitle(WINDOW_TITLE);
} }
void MainWindow::openSpeechConfigWindow(){
ServerConfig *serverConfig = new ServerConfig(this, mySettings);
serverConfig->setAttribute(Qt::WA_DeleteOnClose);
serverConfig->show();
}
void MainWindow::openConfigurationWindow(){ void MainWindow::openConfigurationWindow(){
Settings *settingsWindow = new Settings(); Settings *settingsWindow = new Settings();
settingsWindow->selectSettings(this->mySettings); settingsWindow->selectSettings(this->mySettings);

View File

@@ -29,6 +29,7 @@ private slots:
void openConfigurationWindow(); void openConfigurationWindow();
void appyConfigChanges(); void appyConfigChanges();
void openAboutWindow(); void openAboutWindow();
void openSpeechConfigWindow();
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
QTableWidget *tw; QTableWidget *tw;

121
serverconfig.cpp Normal file
View 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
View 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
View 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>

View File

@@ -5,6 +5,10 @@
#include <QJsonObject> #include <QJsonObject>
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QSettings> #include <QSettings>
#include <urls.h>
#define AUTH_HEADER_NAME "Authorization"
#define MIME_JSON "application/json"
ServerConnection::ServerConnection(QObject *parent, QSettings *settings) ServerConnection::ServerConnection(QObject *parent, QSettings *settings)
{ {
@@ -47,7 +51,7 @@ void ServerConnection::queryStatusAll(){
QString statusRequestUrl = buildURLFromLocation(mySettings->value(SETTING_LOC_STATE)); QString statusRequestUrl = buildURLFromLocation(mySettings->value(SETTING_LOC_STATE));
QUrl trackingUrl = QUrl(statusRequestUrl); QUrl trackingUrl = QUrl(statusRequestUrl);
QNetworkRequest request(trackingUrl); QNetworkRequest request(trackingUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
networkManager->get(request); networkManager->get(request);
//qDebug("Status query sent"); //qDebug("Status query sent");
} }
@@ -57,7 +61,7 @@ void ServerConnection::queryTransscript(QString trackingId){
QString paramUrl = QString("%1?id=%2").arg(url, trackingId); QString paramUrl = QString("%1?id=%2").arg(url, trackingId);
QUrl transcriptUrl = QUrl(paramUrl); QUrl transcriptUrl = QUrl(paramUrl);
QNetworkRequest request(transcriptUrl); QNetworkRequest request(transcriptUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
networkManager->get(request); networkManager->get(request);
} }
@@ -66,8 +70,8 @@ void ServerConnection::submitFile(QJsonDocument jsonDocument){
/* prepare request */ /* prepare request */
QUrl serviceUrl = QUrl(buildURLFromLocation(mySettings->value(SETTING_LOC_SUBMIT))); QUrl serviceUrl = QUrl(buildURLFromLocation(mySettings->value(SETTING_LOC_SUBMIT)));
QNetworkRequest request(serviceUrl); QNetworkRequest request(serviceUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); request.setHeader(QNetworkRequest::ContentTypeHeader, MIME_JSON);
/* make request */ /* make request */
networkManager->post(request, jsonDocument.toJson()); networkManager->post(request, jsonDocument.toJson());
@@ -76,12 +80,47 @@ void ServerConnection::submitFile(QJsonDocument jsonDocument){
} }
void ServerConnection::queryServerVersion(){ void ServerConnection::queryServerVersion(){
QUrl serviceUrl = QUrl(buildURLFromLocation(QString("/server-info"))); QUrl serviceUrl = QUrl(buildURLFromLocation(QString(SERVER_INFO)));
QNetworkRequest request(serviceUrl); QNetworkRequest request(serviceUrl);
request.setRawHeader("Authorization", authHeaderData); request.setRawHeader(AUTH_HEADER_NAME, authHeaderData);
networkManager->get(request); networkManager->get(request);
} }
QNetworkAccessManager *ServerConnection::getNetworkManager(){ QNetworkAccessManager *ServerConnection::getNetworkManager(){
return networkManager; 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);
}

View File

@@ -16,6 +16,11 @@ public:
QString buildURLFromLocation(QString location); QString buildURLFromLocation(QString location);
QNetworkAccessManager *getNetworkManager(); QNetworkAccessManager *getNetworkManager();
void queryServerVersion(); void queryServerVersion();
void getPostProcessorMap();
void submitPostProcessorChange(QJsonDocument jsonDocument);
void submitSpeechContextPhraseChange(QJsonDocument jsonDocument);
void getSpeechContextPhrases();
void getUnifiedServerConfig();
public slots: public slots:
void queryStatusAll(); void queryStatusAll();
private slots: private slots:

View File

@@ -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>

View File

@@ -8,7 +8,7 @@ GIT_STR_VERSION = $$system(git describe)
DATE_STR = $$system(date) DATE_STR = $$system(date)
HOSTNAME_STR = $$system(hostname) HOSTNAME_STR = $$system(hostname)
QT += core gui network QT += core gui network uitools
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@@ -37,7 +37,8 @@ SOURCES += \
notificationwidget.cpp \ notificationwidget.cpp \
settings.cpp \ settings.cpp \
about.cpp \ about.cpp \
serverconnection.cpp serverconnection.cpp \
serverconfig.cpp
HEADERS += \ HEADERS += \
mainwindow.h \ mainwindow.h \
@@ -45,11 +46,14 @@ HEADERS += \
settings.h \ settings.h \
settingkeys.h \ settingkeys.h \
about.h \ about.h \
serverconnection.h serverconnection.h \
serverconfig.h \
urls.h
FORMS += \ FORMS += \
mainwindow.ui \ mainwindow.ui \
settings.ui listItemServeConfig.ui \
serverconfigitem.ui
# Default rules for deployment. # Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin qnx: target.path = /tmp/$${TARGET}/bin

13
urls.h Normal file
View 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