diff --git a/plugins/advancedviewplugin/dialogs/timeassignmentdialog.cpp b/plugins/advancedviewplugin/dialogs/timeassignmentdialog.cpp index 35d074a..13abd07 100644 --- a/plugins/advancedviewplugin/dialogs/timeassignmentdialog.cpp +++ b/plugins/advancedviewplugin/dialogs/timeassignmentdialog.cpp @@ -44,7 +44,7 @@ TimeAssignmentDialog::TimeAssignmentDialog(const QMap &project ui->comboBoxWorkpackage->addItem(workpackage); ui->comboBoxWorkpackage->clearEditText(); - for(const auto &text : settings.texte()) + for(const auto &text : settings.texts()) ui->comboBoxText->addItem(text); ui->comboBoxText->clearEditText(); } diff --git a/zeiterfassungcorelib/zeiterfassungsettings.cpp b/zeiterfassungcorelib/zeiterfassungsettings.cpp index 0e9d5b2..42da8f2 100644 --- a/zeiterfassungcorelib/zeiterfassungsettings.cpp +++ b/zeiterfassungcorelib/zeiterfassungsettings.cpp @@ -1,5 +1,17 @@ #include "zeiterfassungsettings.h" +const QString ZeiterfassungSettings::m_language("language"); +const QString ZeiterfassungSettings::m_url("url"); +const QString ZeiterfassungSettings::m_username("username"); +const QString ZeiterfassungSettings::m_password("password"); +const QString ZeiterfassungSettings::m_projects("projects"); +const QString ZeiterfassungSettings::m_subprojects("subprojects"); +const QString ZeiterfassungSettings::m_workpackages("workpackages"); +const QString ZeiterfassungSettings::m_texts("texte"); +const QString ZeiterfassungSettings::m_theme("theme"); +const QLocale::Language ZeiterfassungSettings::m_defaultLanguage(QLocale::AnyLanguage); +const QUrl ZeiterfassungSettings::m_defaultUrl(QStringLiteral("http://10.1.0.11:8080/evoApps/")); + ZeiterfassungSettings::ZeiterfassungSettings(const QString &organization, const QString &application, QObject *parent) : QSettings(organization, application, parent) @@ -34,121 +46,157 @@ ZeiterfassungSettings::ZeiterfassungSettings(QObject *parent) : QLocale::Language ZeiterfassungSettings::language() const { - return value(QStringLiteral("language"), QLocale::AnyLanguage).value(); + return value(m_language, m_defaultLanguage).value(); } void ZeiterfassungSettings::setLanguage(QLocale::Language language) { - setValue(QStringLiteral("language"), language); + if(this->language() != language) + { + setValue(m_language, language); + Q_EMIT languageChanged(language); + } } QUrl ZeiterfassungSettings::url() const { - return value(QStringLiteral("url"), QUrl(QStringLiteral("http://10.1.0.11:8080/evoApps/"))).toUrl(); + return value(m_url, m_defaultUrl).toUrl(); } void ZeiterfassungSettings::setUrl(const QUrl &url) { - setValue(QStringLiteral("url"), url); + if(this->url() != url) + { + setValue(m_url, url); + Q_EMIT urlChanged(url); + } } QString ZeiterfassungSettings::username() const { - return value(QStringLiteral("username")).toString(); + return value(m_username).toString(); } void ZeiterfassungSettings::setUsername(const QString &username) { - setValue(QStringLiteral("username"), username); + if(this->username() != username) + { + setValue(m_username, username); + Q_EMIT usernameChanged(username); + } } QString ZeiterfassungSettings::password() const { - return value(QStringLiteral("password")).toString(); + return value(m_password).toString(); } void ZeiterfassungSettings::setPassword(const QString &password) { - setValue(QStringLiteral("password"), password); + if(this->password() != password) + { + setValue(m_password, password); + Q_EMIT passwordChanged(password); + } } QStringList ZeiterfassungSettings::projects() const { - return value(QStringLiteral("projects")).toStringList(); + return value(m_projects).toStringList(); } void ZeiterfassungSettings::setProjects(const QStringList &projects) { - setValue(QStringLiteral("projects"), projects); + if(this->projects() != projects) + { + setValue(m_projects, projects); + Q_EMIT projectsChanged(projects); + } } void ZeiterfassungSettings::prependProject(const QString &project) { - prependItem(QStringLiteral("projects"), project); + setProjects(prependItem(projects(), project)); } QStringList ZeiterfassungSettings::subprojects() const { - return value(QStringLiteral("subprojects")).toStringList(); + return value(m_subprojects).toStringList(); } void ZeiterfassungSettings::setSubprojects(const QStringList &subprojects) { - setValue(QStringLiteral("subprojects"), subprojects); + if(this->subprojects() != subprojects) + { + setValue(m_subprojects, subprojects); + Q_EMIT subprojectsChanged(subprojects); + } } void ZeiterfassungSettings::prependSubproject(const QString &subproject) { - prependItem(QStringLiteral("subprojects"), subproject); + setSubprojects(prependItem(subprojects(), subproject)); } QStringList ZeiterfassungSettings::workpackages() const { - return value(QStringLiteral("workpackages")).toStringList(); + return value(m_workpackages).toStringList(); } void ZeiterfassungSettings::setWorkpackages(const QStringList &workpackages) { - setValue(QStringLiteral("workpackages"), workpackages); + if(this->workpackages() != workpackages) + { + setValue(m_workpackages, workpackages); + Q_EMIT workpackagesChanged(workpackages); + } } void ZeiterfassungSettings::prependWorkpackage(const QString &workpackage) { - prependItem(QStringLiteral("workpackages"), workpackage); + setWorkpackages(prependItem(workpackages(), workpackage)); } -QStringList ZeiterfassungSettings::texte() const +QStringList ZeiterfassungSettings::texts() const { - return value(QStringLiteral("texte")).toStringList(); + return value(m_texts).toStringList(); } -void ZeiterfassungSettings::setTexte(const QStringList &texte) +void ZeiterfassungSettings::setTexts(const QStringList &texts) { - setValue(QStringLiteral("texte"), texte); + if(this->texts() != texts) + { + setValue(m_texts, texts); + Q_EMIT textsChanged(texts); + } } void ZeiterfassungSettings::prependText(const QString &text) { - prependItem(QStringLiteral("texte"), text); + setTexts(prependItem(texts(), text)); } QString ZeiterfassungSettings::theme() const { - return value(QStringLiteral("theme")).toString(); + return value(m_theme).toString(); } void ZeiterfassungSettings::setTheme(const QString &theme) { - setValue(QStringLiteral("theme"), theme); + if(this->theme() != theme) + { + setValue(m_theme, theme); + Q_EMIT themeChanged(theme); + } } -void ZeiterfassungSettings::prependItem(const QString &name, const QString &item) +QStringList ZeiterfassungSettings::prependItem(QStringList list, const QString &item) { if(item.trimmed().isEmpty()) - return; + return list; - auto entries = value(name).toStringList(); - entries.removeAll(item); - entries.prepend(item); - setValue(name, entries); + list.removeAll(item); + list.prepend(item); + + return list; } diff --git a/zeiterfassungcorelib/zeiterfassungsettings.h b/zeiterfassungcorelib/zeiterfassungsettings.h index 4ea1510..8b35a75 100644 --- a/zeiterfassungcorelib/zeiterfassungsettings.h +++ b/zeiterfassungcorelib/zeiterfassungsettings.h @@ -12,6 +12,15 @@ class ZEITERFASSUNGCORELIBSHARED_EXPORT ZeiterfassungSettings : public QSettings { Q_OBJECT + Q_PROPERTY(QLocale::Language language READ language WRITE setLanguage NOTIFY languageChanged) + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QString username READ username WRITE setUsername NOTIFY usernameChanged) + Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) + Q_PROPERTY(QStringList projects READ projects WRITE setProjects NOTIFY projectsChanged) + Q_PROPERTY(QStringList subprojects READ subprojects WRITE setSubprojects NOTIFY subprojectsChanged) + Q_PROPERTY(QStringList workpackages READ workpackages WRITE setWorkpackages NOTIFY workpackagesChanged) + Q_PROPERTY(QStringList texts READ texts WRITE setTexts NOTIFY textsChanged) + Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) public: explicit ZeiterfassungSettings(const QString &organization, @@ -47,13 +56,36 @@ public: void setWorkpackages(const QStringList &workpackages); void prependWorkpackage(const QString &workpackage); - QStringList texte() const; - void setTexte(const QStringList &texte); + QStringList texts() const; + void setTexts(const QStringList &texts); void prependText(const QString &text); QString theme() const; void setTheme(const QString &theme); +Q_SIGNALS: + void languageChanged(QLocale::Language language); + void urlChanged(const QUrl &url); + void usernameChanged(const QString &username); + void passwordChanged(const QString &password); + void projectsChanged(const QStringList &projects); + void subprojectsChanged(const QStringList &subprojects); + void workpackagesChanged(const QStringList &workpackages); + void textsChanged(const QStringList &texts); + void themeChanged(const QString &theme); + private: - void prependItem(const QString &name, const QString &item); + QStringList prependItem(QStringList list, const QString &item); + + static const QString m_language; + static const QString m_url; + static const QString m_username; + static const QString m_password; + static const QString m_projects; + static const QString m_subprojects; + static const QString m_workpackages; + static const QString m_texts; + static const QString m_theme; + static const QLocale::Language m_defaultLanguage; + static const QUrl m_defaultUrl; }; diff --git a/zeiterfassungguilib/mainwindow.cpp b/zeiterfassungguilib/mainwindow.cpp index df471f6..01ea863 100644 --- a/zeiterfassungguilib/mainwindow.cpp +++ b/zeiterfassungguilib/mainwindow.cpp @@ -458,7 +458,7 @@ void MainWindow::updateComboboxes() ui->comboBoxText->clear(); { - auto texte = m_settings.texte(); + auto texte = m_settings.texts(); for(const auto &text : texte) ui->comboBoxText->addItem(text); if(texte.count())