diff options
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/services')
7 files changed, 133 insertions, 10 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/config.h b/SQLiteStudio3/coreSQLiteStudio/services/config.h index 5a3f594..6e1fd95 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/config.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/config.h @@ -23,6 +23,7 @@ CFG_CATEGORIES(Core, CFG_ENTRY(QString, LoadedPlugins, "") CFG_ENTRY(QVariantHash, ActiveCodeFormatter, QVariantHash()) CFG_ENTRY(bool, CheckUpdatesOnStartup, true) + CFG_ENTRY(QString, Language, "en") ) CFG_CATEGORY(Console, CFG_ENTRY(int, HistorySize, 100) diff --git a/SQLiteStudio3/coreSQLiteStudio/services/exportmanager.cpp b/SQLiteStudio3/coreSQLiteStudio/services/exportmanager.cpp index 6f916bc..c9b272d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/exportmanager.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/exportmanager.cpp @@ -221,7 +221,7 @@ void ExportManager::finalizeExport(bool result, QIODevice* output) else if (!config->outputFileName.isEmpty()) notifyInfo(tr("Export to the file '%1' was successful.").arg(config->outputFileName)); else - notifyInfo(tr("Export to was successful.").arg(config->outputFileName)); + notifyInfo(tr("Export was successful.")); emit exportSuccessful(); } diff --git a/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.cpp b/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.cpp index 23fb513..2bdc712 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.cpp @@ -1,16 +1,63 @@ #include "extralicensemanager.h" +#include <QDebug> +#include <QFile> ExtraLicenseManager::ExtraLicenseManager() { } +ExtraLicenseManager::~ExtraLicenseManager() +{ + for (License* lic : licenses.values()) + delete lic; + + licenses.clear(); +} + bool ExtraLicenseManager::addLicense(const QString& title, const QString& filePath) { - if (licenses.contains(title)) + return addLicense(title, filePath, Type::FILE); +} + +bool ExtraLicenseManager::addLicenseContents(const QString& title, const QString& contents) +{ + return addLicense(title, contents, Type::CONTENTS); +} + +void ExtraLicenseManager::setViolatedLicense(const QString& title, const QString& violationMessage) +{ + if (!licenses.contains(title)) + return; + + License* lic = licenses[title]; + lic->violated = true; + lic->violationMessage = violationMessage; +} + +void ExtraLicenseManager::unsetViolatedLicense(const QString& title) +{ + if (!licenses.contains(title)) + return; + + License* lic = licenses[title]; + lic->violated = false; + lic->violationMessage = QString(); +} + +bool ExtraLicenseManager::isViolatedLicense(const QString& title) +{ + if (!licenses.contains(title)) return false; - licenses[title] = filePath; - return true; + return licenses[title]->violated; +} + +QString ExtraLicenseManager::getViolationMessage(const QString& title) +{ + if (!licenses.contains(title)) + return QString::null; + + return licenses[title]->violationMessage; } bool ExtraLicenseManager::removeLicense(const QString& title) @@ -18,11 +65,53 @@ bool ExtraLicenseManager::removeLicense(const QString& title) if (!licenses.contains(title)) return false; + delete licenses[title]; licenses.remove(title); return true; } -const QHash<QString, QString>&ExtraLicenseManager::getLicenses() const +QHash<QString, QString> ExtraLicenseManager::getLicensesContents() const +{ + QHash<QString, QString> result; + License* lic = nullptr; + for (const QString& title : licenses.keys()) + { + lic = licenses[title]; + switch (lic->type) + { + case Type::CONTENTS: + result[title] = lic->data; + break; + case Type::FILE: + result[title] = readLicenseFile(lic->data); + break; + } + } + return result; +} + +bool ExtraLicenseManager::addLicense(const QString& title, const QString& data, ExtraLicenseManager::Type type) +{ + if (licenses.contains(title)) + return false; + + License* lic = new License; + lic->title = title; + lic->data = data; + lic->type = type; + licenses[title] = lic; + return true; +} + +QString ExtraLicenseManager::readLicenseFile(const QString& path) const { - return licenses; + QFile file(path); + if (!file.open(QIODevice::ReadOnly)) + { + qCritical() << "Error opening" << file.fileName(); + return QString::null; + } + QString contents = QString::fromLatin1(file.readAll()); + file.close(); + return contents; } diff --git a/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.h b/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.h index fcf1203..c8da6f9 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/extralicensemanager.h @@ -8,14 +8,38 @@ class API_EXPORT ExtraLicenseManager { public: + enum class Type + { + FILE, + CONTENTS + }; + + struct License + { + QString title; + QString data; + Type type; + QString violationMessage; + bool violated = false; + }; + ExtraLicenseManager(); + virtual ~ExtraLicenseManager(); bool addLicense(const QString& title, const QString& filePath); + bool addLicenseContents(const QString& title, const QString& contents); + void setViolatedLicense(const QString& title, const QString& violationMessage); + void unsetViolatedLicense(const QString& title); + bool isViolatedLicense(const QString& title); + QString getViolationMessage(const QString& title); bool removeLicense(const QString& title); - const QHash<QString,QString>& getLicenses() const; + QHash<QString,QString> getLicensesContents() const; private: - QHash<QString,QString> licenses; + bool addLicense(const QString& title, const QString& data, Type type); + QString readLicenseFile(const QString& path) const; + + QHash<QString,License*> licenses; }; #endif // EXTRALISENCEMANAGER_H diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp index e210f01..bbfec32 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp @@ -278,13 +278,14 @@ qint64 ConfigImpl::addSqlHistory(const QString& sql, const QString& dbName, int sqlHistoryId = 0; } + sqlHistoryMutex.lock(); QtConcurrent::run(this, &ConfigImpl::asyncAddSqlHistory, sqlHistoryId, sql, dbName, timeSpentMillis, rowsAffected); - sqlHistoryId++; - return sqlHistoryId; + return sqlHistoryId++; } void ConfigImpl::updateSqlHistory(qint64 id, const QString& sql, const QString& dbName, int timeSpentMillis, int rowsAffected) { + sqlHistoryMutex.lock(); QtConcurrent::run(this, &ConfigImpl::asyncUpdateSqlHistory, id, sql, dbName, timeSpentMillis, rowsAffected); } @@ -638,6 +639,7 @@ void ConfigImpl::asyncAddSqlHistory(qint64 id, const QString& sql, const QString { qDebug() << "Error adding SQL history:" << results->getErrorText(); db->rollback(); + sqlHistoryMutex.unlock(); return; } @@ -657,6 +659,7 @@ void ConfigImpl::asyncAddSqlHistory(qint64 id, const QString& sql, const QString db->commit(); emit sqlHistoryRefreshNeeded(); + sqlHistoryMutex.unlock(); } void ConfigImpl::asyncUpdateSqlHistory(qint64 id, const QString& sql, const QString& dbName, int timeSpentMillis, int rowsAffected) @@ -665,6 +668,7 @@ void ConfigImpl::asyncUpdateSqlHistory(qint64 id, const QString& sql, const QStr {dbName, timeSpentMillis, rowsAffected, sql, id}); emit sqlHistoryRefreshNeeded(); + sqlHistoryMutex.unlock(); } void ConfigImpl::asyncClearSqlHistory() diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h index ec32e8d..63d1e1f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h @@ -4,6 +4,7 @@ #include "coreSQLiteStudio_global.h" #include "services/config.h" #include "db/sqlquery.h" +#include <QMutex> class AsyncConfigHandler; class SqlHistoryModel; @@ -118,6 +119,7 @@ class API_EXPORT ConfigImpl : public Config bool massSaving = false; SqlHistoryModel* sqlHistoryModel = nullptr; DdlHistoryModel* ddlHistoryModel = nullptr; + QMutex sqlHistoryMutex; public slots: void refreshDdlHistory(); diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp index 5d7a517..c3bc581 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp @@ -3,6 +3,7 @@ #include "plugins/genericplugin.h" #include "services/notifymanager.h" #include "common/unused.h" +#include "translations.h" #include <QCoreApplication> #include <QDir> #include <QDebug> @@ -465,6 +466,7 @@ void PluginManagerImpl::unload(const QString& pluginName) // Deinitializing and unloading plugin emit aboutToUnload(container->plugin, container->type); container->plugin->deinit(); + unloadTranslation(container->name); QPluginLoader* loader = container->loader; if (!loader->isLoaded()) @@ -586,6 +588,7 @@ void PluginManagerImpl::pluginLoaded(PluginManagerImpl::PluginContainer* contain { if (!container->builtIn) { + loadTranslation(container->name); container->plugin = dynamic_cast<Plugin*>(container->loader->instance()); container->loaded = true; } |
