From ac1edf2372dca7f347c3bcbb8cc4042ccc47429d Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE <0xfeedc0de64@gmail.com> Date: Sun, 11 Mar 2018 15:16:23 +0100 Subject: [PATCH] The url is now stored as a QUrl in settings --- zeiterfassung/main.cpp | 17 +++++++-- zeiterfassungcorelib/zeiterfassungapi.cpp | 38 +++++++++---------- zeiterfassungcorelib/zeiterfassungapi.h | 9 +++-- .../zeiterfassungsettings.cpp | 6 +-- zeiterfassungcorelib/zeiterfassungsettings.h | 5 ++- 5 files changed, 43 insertions(+), 32 deletions(-) diff --git a/zeiterfassung/main.cpp b/zeiterfassung/main.cpp index dc8fc86..04df232 100755 --- a/zeiterfassung/main.cpp +++ b/zeiterfassung/main.cpp @@ -178,14 +178,23 @@ bool loadLoginPage(QSplashScreen &splashScreen, ZeiterfassungSettings &settings, QMessageBox::warning(&splashScreen, QCoreApplication::translate("main", "Could not access Zeiterfassung!"), QCoreApplication::translate("main", "Could not access Zeiterfassung!") % "\n\n" % reply->message()); + inputAgain: bool ok; - auto url = QInputDialog::getText(&splashScreen, QCoreApplication::translate("main", "Base url"), - QCoreApplication::translate("main", "Please enter the base url to the Zeiterfassung:"), - QLineEdit::Normal, settings.url(), &ok); + auto text = QInputDialog::getText(&splashScreen, QCoreApplication::translate("main", "Base url"), + QCoreApplication::translate("main", "Please enter the base url to the Zeiterfassung:"), + QLineEdit::Normal, settings.url().toString(), &ok); if(!ok) return false; + auto url = QUrl::fromUserInput(text); + if(!url.isValid()) + { + QMessageBox::warning(&splashScreen, QCoreApplication::translate("main", "Invalid url!"), + QCoreApplication::translate("main", "This url is not valid!")); + goto inputAgain; + } + settings.setUrl(url); erfassung.setUrl(url); @@ -335,7 +344,7 @@ int main(int argc, char *argv[]) if(!loadStripLayouts(splashScreen, stripFactory)) return -3; - ZeiterfassungApi erfassung(settings.url(), &app); + ZeiterfassungApi erfassung(settings.url().toString(), &app); if(!loadLoginPage(splashScreen, settings, erfassung)) return -4; diff --git a/zeiterfassungcorelib/zeiterfassungapi.cpp b/zeiterfassungcorelib/zeiterfassungapi.cpp index 16d0a02..a125acc 100644 --- a/zeiterfassungcorelib/zeiterfassungapi.cpp +++ b/zeiterfassungcorelib/zeiterfassungapi.cpp @@ -28,19 +28,19 @@ //add support for pre cpp14 compilers #include "cpp14polyfills.h" -ZeiterfassungApi::ZeiterfassungApi(const QString &url, QObject *parent) : +ZeiterfassungApi::ZeiterfassungApi(const QUrl &url, QObject *parent) : QObject(parent), m_url(url), m_manager(new QNetworkAccessManager(this)) { } -const QString &ZeiterfassungApi::url() const +const QUrl &ZeiterfassungApi::url() const { return m_url; } -void ZeiterfassungApi::setUrl(const QString &url) +void ZeiterfassungApi::setUrl(const QUrl &url) { m_url = url; } @@ -52,14 +52,14 @@ QNetworkAccessManager *ZeiterfassungApi::manager() const std::unique_ptr ZeiterfassungApi::doLoginPage() { - QNetworkRequest request(QUrl(m_url % "pages/login.jsp")); + QNetworkRequest request(QUrl(m_url.toString() % "pages/login.jsp")); return std::make_unique(std::unique_ptr(m_manager->get(request)), this); } std::unique_ptr ZeiterfassungApi::doLogin(const QString &username, const QString &password) { - QNetworkRequest request(QUrl(m_url % "pages/j_spring_security_check")); + QNetworkRequest request(QUrl(m_url.toString() % "pages/j_spring_security_check")); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/x-www-form-urlencoded")); request.setMaximumRedirectsAllowed(0); @@ -70,10 +70,10 @@ std::unique_ptr ZeiterfassungApi::doLogin(const QString &username, c std::unique_ptr ZeiterfassungApi::doUserInfo() { - QNetworkRequest request0(QUrl(m_url % "json/evoAppsUserInfoDialogController/load-EvoAppsUserInfoTO")); + QNetworkRequest request0(QUrl(m_url.toString() % "json/evoAppsUserInfoDialogController/load-EvoAppsUserInfoTO")); request0.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("home")); - QNetworkRequest request1(QUrl(m_url % "json/persons")); + QNetworkRequest request1(QUrl(m_url.toString() % "json/persons")); request1.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); return std::make_unique(std::unique_ptr(m_manager->get(request0)), @@ -83,7 +83,7 @@ std::unique_ptr ZeiterfassungApi::doUserInfo() std::unique_ptr ZeiterfassungApi::doGetBookings(int userId, const QDate &start, const QDate &end) { QNetworkRequest request(QUrl(QStringLiteral("%0json/bookings?start=%1&end=%2&pnrLst=%3") - .arg(m_url) + .arg(m_url.toString()) .arg(start.toString(QStringLiteral("yyyyMMdd"))) .arg(end.toString(QStringLiteral("yyyyMMdd"))) .arg(userId))); @@ -95,7 +95,7 @@ std::unique_ptr ZeiterfassungApi::doGetBookings(int userId, co std::unique_ptr ZeiterfassungApi::doCreateBooking(int userId, const QDate &date, const QTime &time, const QTime ×pan, const QString &type, const QString &text) { - QNetworkRequest request(QUrl(m_url % "json/booking")); + QNetworkRequest request(QUrl(m_url.toString() % "json/booking")); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -118,7 +118,7 @@ std::unique_ptr ZeiterfassungApi::doCreateBooking(int userId std::unique_ptr ZeiterfassungApi::doUpdateBooking(int bookingId, int userId, const QDate &date, const QTime &time, const QTime ×pan, const QString &type, const QString &text) { - QNetworkRequest request(QUrl(QStringLiteral("%0json/booking/%1").arg(m_url).arg(bookingId))); + QNetworkRequest request(QUrl(QStringLiteral("%0json/booking/%1").arg(m_url.toString()).arg(bookingId))); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -142,7 +142,7 @@ std::unique_ptr ZeiterfassungApi::doUpdateBooking(int bookin std::unique_ptr ZeiterfassungApi::doDeleteBooking(int bookingId) { QNetworkRequest request(QUrl(QStringLiteral("%0json/booking/%1?text=") - .arg(m_url) + .arg(m_url.toString()) .arg(bookingId))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -152,7 +152,7 @@ std::unique_ptr ZeiterfassungApi::doDeleteBooking(int bookin std::unique_ptr ZeiterfassungApi::doGetTimeAssignments(int userId, const QDate &start, const QDate &end) { QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking?start=%1&end=%2&pnrLst=%3") - .arg(m_url) + .arg(m_url.toString()) .arg(start.toString(QStringLiteral("yyyyMMdd"))) .arg(end.toString(QStringLiteral("yyyyMMdd"))) .arg(userId))); @@ -166,7 +166,7 @@ std::unique_ptr ZeiterfassungApi::doCreateTimeAssignm const QString &subproject, const QString &workpackage, const QString &text) { - QNetworkRequest request(QUrl(m_url % "json/azebooking")); + QNetworkRequest request(QUrl(m_url.toString() % "json/azebooking")); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -207,7 +207,7 @@ std::unique_ptr ZeiterfassungApi::doUpdateTimeAssignm const QString &subproject, const QString &workpackage, const QString &text) { - QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking/%1").arg(m_url).arg(timeAssignmentId))); + QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking/%1").arg(m_url.toString()).arg(timeAssignmentId))); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -251,7 +251,7 @@ std::unique_ptr ZeiterfassungApi::doUpdateTimeAssignm std::unique_ptr ZeiterfassungApi::doDeleteTimeAssignment(int timeAssignmentId) { QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking/%1") - .arg(m_url) + .arg(m_url.toString()) .arg(timeAssignmentId))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -261,7 +261,7 @@ std::unique_ptr ZeiterfassungApi::doDeleteTimeAssignm std::unique_ptr ZeiterfassungApi::doGetProjects(int userId, const QDate &date) { QNetworkRequest request(QUrl(QStringLiteral("%0json/combobox?persnr=%1&date=%2&dqkey=KOST&kowert0=&kowert1=&kowert2=&term=") - .arg(m_url) + .arg(m_url.toString()) .arg(userId) .arg(date.toString(QStringLiteral("yyyyMMdd"))))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -272,7 +272,7 @@ std::unique_ptr ZeiterfassungApi::doGetProjects(int userId, co std::unique_ptr ZeiterfassungApi::doGetReport(int userId, const QDate &date) { QNetworkRequest request(QUrl(QStringLiteral("%0json/auswertung/month?persNr=%1&date=%2") - .arg(m_url) + .arg(m_url.toString()) .arg(userId) .arg(date.toString(QStringLiteral("yyyyMMdd"))))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); @@ -282,7 +282,7 @@ std::unique_ptr ZeiterfassungApi::doGetReport(int userId, const std::unique_ptr ZeiterfassungApi::doGetPresenceStatus() { - QNetworkRequest request(QUrl(m_url % "json/presencestatus")); + QNetworkRequest request(QUrl(m_url.toString() % "json/presencestatus")); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("presenceStatus")); return std::make_unique(std::unique_ptr(m_manager->get(request)), this); @@ -291,7 +291,7 @@ std::unique_ptr ZeiterfassungApi::doGetPresenceStatus() std::unique_ptr ZeiterfassungApi::doGetAbsences(int userId, const QDate &start, const QDate &end) { QNetworkRequest request(QUrl(QStringLiteral("%0json/fulldayAbsences?start=%1&end=%2&pnrLst=%3") - .arg(m_url) + .arg(m_url.toString()) .arg(start.toString(QStringLiteral("yyyyMMdd"))) .arg(end.toString(QStringLiteral("yyyyMMdd"))) .arg(userId))); diff --git a/zeiterfassungcorelib/zeiterfassungapi.h b/zeiterfassungcorelib/zeiterfassungapi.h index 8af9b71..a3f3107 100644 --- a/zeiterfassungcorelib/zeiterfassungapi.h +++ b/zeiterfassungcorelib/zeiterfassungapi.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -32,10 +33,10 @@ class ZEITERFASSUNGCORELIBSHARED_EXPORT ZeiterfassungApi : public QObject Q_OBJECT public: - explicit ZeiterfassungApi(const QString &url, QObject *parent = Q_NULLPTR); + explicit ZeiterfassungApi(const QUrl &url, QObject *parent = Q_NULLPTR); - const QString &url() const; - void setUrl(const QString &url); + const QUrl &url() const; + void setUrl(const QUrl &url); QNetworkAccessManager *manager() const; @@ -67,6 +68,6 @@ public: std::unique_ptr doGetAbsences(int userId, const QDate &start, const QDate &end); private: - QString m_url; + QUrl m_url; QNetworkAccessManager *m_manager; }; diff --git a/zeiterfassungcorelib/zeiterfassungsettings.cpp b/zeiterfassungcorelib/zeiterfassungsettings.cpp index 18149be..0e9d5b2 100644 --- a/zeiterfassungcorelib/zeiterfassungsettings.cpp +++ b/zeiterfassungcorelib/zeiterfassungsettings.cpp @@ -42,12 +42,12 @@ void ZeiterfassungSettings::setLanguage(QLocale::Language language) setValue(QStringLiteral("language"), language); } -QString ZeiterfassungSettings::url() const +QUrl ZeiterfassungSettings::url() const { - return value(QStringLiteral("url"), QStringLiteral("http://10.1.0.11:8080/evoApps/")).toString(); + return value(QStringLiteral("url"), QUrl(QStringLiteral("http://10.1.0.11:8080/evoApps/"))).toUrl(); } -void ZeiterfassungSettings::setUrl(const QString &url) +void ZeiterfassungSettings::setUrl(const QUrl &url) { setValue(QStringLiteral("url"), url); } diff --git a/zeiterfassungcorelib/zeiterfassungsettings.h b/zeiterfassungcorelib/zeiterfassungsettings.h index 843ea9c..1fe7c60 100644 --- a/zeiterfassungcorelib/zeiterfassungsettings.h +++ b/zeiterfassungcorelib/zeiterfassungsettings.h @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -25,8 +26,8 @@ public: QLocale::Language language() const; void setLanguage(QLocale::Language language); - QString url() const; - void setUrl(const QString &url); + QUrl url() const; + void setUrl(const QUrl &url); QString username() const; void setUsername(const QString &username);