diff --git a/dialogs/languageselectiondialog.cpp b/dialogs/languageselectiondialog.cpp new file mode 100644 index 0000000..3cf0c6a --- /dev/null +++ b/dialogs/languageselectiondialog.cpp @@ -0,0 +1,27 @@ +#include "languageselectiondialog.h" +#include "ui_languageselectiondialog.h" + +LanguageSelectionDialog::LanguageSelectionDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::LanguageSelectionDialog) +{ + ui->setupUi(this); + + ui->comboBoxLanguage->addItem(tr("English"), QLocale::English); + ui->comboBoxLanguage->addItem(tr("German"), QLocale::German); +} + +LanguageSelectionDialog::~LanguageSelectionDialog() +{ + delete ui; +} + +QLocale::Language LanguageSelectionDialog::language() const +{ + return ui->comboBoxLanguage->currentData().value(); +} + +void LanguageSelectionDialog::setLanguage(QLocale::Language language) +{ + ui->comboBoxLanguage->setCurrentIndex(ui->comboBoxLanguage->findData(language)); +} diff --git a/dialogs/languageselectiondialog.h b/dialogs/languageselectiondialog.h new file mode 100644 index 0000000..44723b3 --- /dev/null +++ b/dialogs/languageselectiondialog.h @@ -0,0 +1,24 @@ +#ifndef LANGUAGESELECTIONDIALOG_H +#define LANGUAGESELECTIONDIALOG_H + +#include +#include + +namespace Ui { class LanguageSelectionDialog; } + +class LanguageSelectionDialog : public QDialog +{ + Q_OBJECT + +public: + explicit LanguageSelectionDialog(QWidget *parent = 0); + ~LanguageSelectionDialog(); + + QLocale::Language language() const; + void setLanguage(QLocale::Language language); + +private: + Ui::LanguageSelectionDialog *ui; +}; + +#endif // LANGUAGESELECTIONDIALOG_H diff --git a/dialogs/languageselectiondialog.ui b/dialogs/languageselectiondialog.ui new file mode 100644 index 0000000..6689f15 --- /dev/null +++ b/dialogs/languageselectiondialog.ui @@ -0,0 +1,98 @@ + + + LanguageSelectionDialog + + + + 0 + 0 + 400 + 157 + + + + + 16777215 + 0 + + + + Language selection + + + + + + <h1>Language selection</h1> + + + + + + + Please select a language: + + + + + + + + + Language: + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + LanguageSelectionDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + LanguageSelectionDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/main.cpp b/main.cpp index 53af6f6..06bb049 100755 --- a/main.cpp +++ b/main.cpp @@ -4,7 +4,10 @@ #include #include +#include + #include "zeiterfassungsettings.h" +#include "dialogs/languageselectiondialog.h" #include "zeiterfassung.h" #include "eventloopwithstatus.h" #include "dialogs/authenticationdialog.h" @@ -25,12 +28,10 @@ int main(int argc, char *argv[]) "%{function}(): " "%{message}"); - QLocale::setDefault(QLocale(QLocale::German, QLocale::Austria)); - QCoreApplication::setOrganizationDomain(QStringLiteral("brunner.ninja")); QCoreApplication::setOrganizationName(QStringLiteral("db-software")); QCoreApplication::setApplicationName(QStringLiteral("zeiterfassung")); - QCoreApplication::setApplicationVersion(QStringLiteral("1.0")); + QCoreApplication::setApplicationVersion(QStringLiteral("1.1")); QSplashScreen splashScreen(QPixmap(":/zeiterfassung/images/splash.png")); splashScreen.showMessage(QObject::tr("Loading settings...")); @@ -38,6 +39,25 @@ int main(int argc, char *argv[]) ZeiterfassungSettings settings(&app); + if(settings.language() == QLocale::AnyLanguage) + { + LanguageSelectionDialog dialog(&splashScreen); + + again0: + if(dialog.exec() != QDialog::Accepted) + return -1; + + if(dialog.language() == QLocale::AnyLanguage) + { + QMessageBox::warning(&splashScreen, QObject::tr("Invalid language selection!"), QObject::tr("You did not select a valid language!")); + goto again0; + } + + settings.setLanguage(dialog.language()); + } + + QLocale::setDefault(QLocale(settings.language(), QLocale::Austria)); + splashScreen.showMessage(QObject::tr("Loading login page...")); Zeiterfassung erfassung(settings.url(), &app); diff --git a/zeiterfassung.pro b/zeiterfassung.pro index 3f007bb..03bc9d3 100755 --- a/zeiterfassung.pro +++ b/zeiterfassung.pro @@ -29,7 +29,8 @@ SOURCES += main.cpp \ strips/buchungstrip.cpp \ strips/kontierungstrip.cpp \ zeiterfassungsettings.cpp \ - dialogs/settingsdialog.cpp + dialogs/settingsdialog.cpp \ + dialogs/languageselectiondialog.cpp HEADERS += \ zeiterfassung.h \ @@ -44,7 +45,8 @@ HEADERS += \ strips/buchungstrip.h \ strips/kontierungstrip.h \ zeiterfassungsettings.h \ - dialogs/settingsdialog.h + dialogs/settingsdialog.h \ + dialogs/languageselectiondialog.h RESOURCES += \ resources.qrc @@ -57,4 +59,5 @@ FORMS += \ dialogs/kontierungdialog.ui \ strips/buchungstrip.ui \ strips/kontierungstrip.ui \ - dialogs/settingsdialog.ui + dialogs/settingsdialog.ui \ + dialogs/languageselectiondialog.ui diff --git a/zeiterfassungsettings.cpp b/zeiterfassungsettings.cpp index c171f2a..c2acc4d 100644 --- a/zeiterfassungsettings.cpp +++ b/zeiterfassungsettings.cpp @@ -32,6 +32,16 @@ ZeiterfassungSettings::ZeiterfassungSettings(QObject *parent) : } +QLocale::Language ZeiterfassungSettings::language() const +{ + return value("language").value(); +} + +void ZeiterfassungSettings::setLanguage(QLocale::Language language) +{ + setValue("language", language); +} + QString ZeiterfassungSettings::url() const { return value("url", QStringLiteral("http://10.1.0.11:8080/evoApps/")).toString(); diff --git a/zeiterfassungsettings.h b/zeiterfassungsettings.h index 27d6a15..51006c9 100644 --- a/zeiterfassungsettings.h +++ b/zeiterfassungsettings.h @@ -2,6 +2,7 @@ #define ZEITERFASSUNGSETTINGS_H #include +#include class ZeiterfassungSettings : public QSettings { @@ -17,6 +18,9 @@ public: ZeiterfassungSettings(const QString &fileName, Format format, QObject *parent = Q_NULLPTR); explicit ZeiterfassungSettings(QObject *parent = Q_NULLPTR); + QLocale::Language language() const; + void setLanguage(QLocale::Language language); + QString url() const; void setUrl(const QString &url);