diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,7 +147,7 @@ ############################ ########################### -set(KEXI_FRAMEWORKS_MIN_VERSION 3.1.0) +set(KEXI_FRAMEWORKS_MIN_VERSION 3.2.0) ## ## Test for KDb diff --git a/cmake/modules/SetKexiVersionInfo.cmake b/cmake/modules/SetKexiVersionInfo.cmake --- a/cmake/modules/SetKexiVersionInfo.cmake +++ b/cmake/modules/SetKexiVersionInfo.cmake @@ -5,9 +5,9 @@ # Define common versions of Kexi components used to generate KexiVersion.h # update these version for every release: -set(PROJECT_VERSION_STRING "3.1.0") # Custom name such as "3.1 Alpha" +set(PROJECT_VERSION_STRING "3.2.0") # Custom name such as "3.1 Alpha" set(PROJECT_STABLE_VERSION_MAJOR 3) # 3 for 3.x, 4 for 4.x, etc. -set(PROJECT_STABLE_VERSION_MINOR 1) # 0 for 3.0, 1 for 3.1, etc. +set(PROJECT_STABLE_VERSION_MINOR 2) # 0 for 3.0, 1 for 3.1, etc. set(PROJECT_VERSION_RELEASE 0) # 90 for Alpha, increase for next test releases, set 0 for first Stable, etc. #set(KEXI_ALPHA 1) # uncomment only for Alpha #set(KEXI_BETA 1) # uncomment only for Beta diff --git a/src/core/kexipart.cpp b/src/core/kexipart.cpp --- a/src/core/kexipart.cpp +++ b/src/core/kexipart.cpp @@ -290,13 +290,11 @@ tristate askForOpeningInTextModeRes = d->askForOpeningInTextMode(window, item, window->supportedViewModes(), viewMode); if (true == askForOpeningInTextModeRes) { - delete window->schemaObject(); //old one window->close(); delete window; //try in text mode return openInstance(parent, item, Kexi::TextViewMode, staticObjectArgs); } else if (false == askForOpeningInTextModeRes) { - delete window->schemaObject(); //old one window->close(); delete window; qWarning() << "!window, cannot switch to a view mode" << diff --git a/src/kexiutils/utils.h b/src/kexiutils/utils.h --- a/src/kexiutils/utils.h +++ b/src/kexiutils/utils.h @@ -43,15 +43,15 @@ #include #include +#include #include class QColor; class QDomNode; class QMetaProperty; class QLayout; class QLineEdit; -class KLocalizedString; //! @short General Utils namespace KexiUtils @@ -694,6 +694,18 @@ */ KEXIUTILS_EXPORT QString localizedStringToHtmlSubstring(const KLocalizedString& string); +/** + * Return rich text for concatenated sentences or paragraphs. + * + * Any of the parameters can be empty but at least first should be non-empty. + */ +KEXIUTILS_EXPORT QString localizedSentencesToHtml( + const KLocalizedString &part1, const KLocalizedString &part2 = KLocalizedString(), + const KLocalizedString &part3 = KLocalizedString(), + const KLocalizedString &part4 = KLocalizedString(), + const KLocalizedString &part5 = KLocalizedString(), + const KLocalizedString &part6 = KLocalizedString()); + /** * @return @c true if text cursor is at the end of the line edit @a lineEdit. * If the @a lineEdit edit has input mask, cursor is at the end if it's at position diff --git a/src/kexiutils/utils.cpp b/src/kexiutils/utils.cpp --- a/src/kexiutils/utils.cpp +++ b/src/kexiutils/utils.cpp @@ -73,7 +73,6 @@ #include #include #include -#include #if HAVE_LANGINFO_H #include @@ -1182,10 +1181,25 @@ return icon; } -QString KexiUtils::localizedStringToHtmlSubstring(const KLocalizedString& string) +QString KexiUtils::localizedStringToHtmlSubstring(const KLocalizedString &string) { - return string.toString(Kuit::RichText) - .remove(QLatin1String("")).remove(QLatin1String("")); + return string.isEmpty() ? QString() + : string.toString(Kuit::RichText) + .remove(QLatin1String("")) + .remove(QLatin1String("")); +} + +QString KexiUtils::localizedSentencesToHtml(const KLocalizedString &part1, const KLocalizedString &part2, + const KLocalizedString &part3, const KLocalizedString &part4, + const KLocalizedString &part5, const KLocalizedString &part6) +{ + return xi18nc("@info/plain Concatenated sentence1 sentence2 ...", "%1%2%3%4%5%6", + KexiUtils::localizedStringToHtmlSubstring(part1), + KexiUtils::localizedStringToHtmlSubstring(part2), + KexiUtils::localizedStringToHtmlSubstring(part3), + KexiUtils::localizedStringToHtmlSubstring(part4), + KexiUtils::localizedStringToHtmlSubstring(part5), + KexiUtils::localizedStringToHtmlSubstring(part6)); } bool KexiUtils::cursorAtEnd(const QLineEdit *lineEdit) diff --git a/src/migration/importwizard.cpp b/src/migration/importwizard.cpp --- a/src/migration/importwizard.cpp +++ b/src/migration/importwizard.cpp @@ -236,35 +236,38 @@ lblIntro->setAlignment(Qt::AlignTop | Qt::AlignLeft); lblIntro->setWordWrap(true); lblIntro->setTextFormat(Qt::RichText); - QString msg; - if (d->predefinedConnectionData) { //predefined import: server source - msg = xi18nc("@info", - "Database Importing Assistant is about to import %1 database " - "(connection %2) into a Kexi project.", - d->predefinedDatabaseName, d->predefinedConnectionData->toUserVisibleString()); - } else if (!d->predefinedDatabaseName.isEmpty()) { //predefined import: file source -//! @todo this message is currently ok for files only + KLocalizedString msg; + if (d->predefinedConnectionData) { // predefined import: server source + msg = kxi18nc("@info", + "Database Importing Assistant is about to import %1 " + "database " + "(connection %2) into a KEXI project.") + .subs(d->predefinedDatabaseName) + .subs(d->predefinedConnectionData->toUserVisibleString()); + } else if (!d->predefinedDatabaseName.isEmpty()) { // predefined import: file source + //! @todo this message is currently ok for files only QMimeDatabase db; QMimeType mime = db.mimeTypeForName(d->predefinedMimeType); if (!mime.isValid()) { qWarning() << QString("'%1' mimetype not installed!").arg(d->predefinedMimeType); } d->driverIdForSelectedSource = driverIdForMimeType(mime); - msg = xi18nc("@info", - "Database Importing Assistant is about to import %1 file " - "of type %2 into a Kexi project.", - QDir::toNativeSeparators(d->predefinedDatabaseName), - mime.isValid() ? mime.comment() : "???"); + msg = kxi18nc( + "@info", + "Database Importing Assistant is about to import %1 file " + "of type %2 into a KEXI project.") + .subs(QDir::toNativeSeparators(d->predefinedDatabaseName)) + .subs(mime.isValid() ? mime.comment() : "???"); } else { - msg = xi18nc("@info", - "Database Importing Assistant allows you to import an existing database " - "into a Kexi project."); + msg = kxi18nc("@info", + "Database Importing Assistant allows you to import an existing database " + "into a KEXI project."); } - // note: we're using .arg() here because the msg argument is already in rich-text format - QString finalMessage = xi18nc("@info", - "%1" - "Click Next button to continue or " - "Cancel button to exit this assistant.").arg(msg); + const QString finalMessage = KexiUtils::localizedSentencesToHtml( + msg, + kxi18nc("@info", + "Click Next button to continue or " + "Cancel button to exit this assistant.")); lblIntro->setText(finalMessage); vbox->addWidget(lblIntro); diff --git a/src/migration/mdb/3rdparty/mdbtools/libmdb/sargs.c b/src/migration/mdb/3rdparty/mdbtools/libmdb/sargs.c --- a/src/migration/mdb/3rdparty/mdbtools/libmdb/sargs.c +++ b/src/migration/mdb/3rdparty/mdbtools/libmdb/sargs.c @@ -174,6 +174,8 @@ mdb_test_sarg(MdbHandle *mdb, MdbColumn *col, MdbSargNode *node, MdbField *field) { char tmpbuf[256]; + char *val; + int ret; if (node->op == MDB_ISNULL) return field->is_null?1:0; @@ -195,6 +197,12 @@ case MDB_TEXT: mdb_unicode2ascii(mdb, field->value, field->siz, tmpbuf, 256); return mdb_test_string(node, tmpbuf); + case MDB_MEMO: + val = mdb_col_to_string(mdb, (char *)mdb->pg_buf, field->start, col->col_type, + (gint32)mdb_get_int32(field->value, 0)); + ret = mdb_test_string(node, val); + g_free(val); + return ret; case MDB_DATETIME: return mdb_test_date(node, mdb_get_double(field->value, 0)); default: diff --git a/src/migration/mdb/src/keximdb/keximigrate_mdb.json b/src/migration/mdb/src/keximdb/keximigrate_mdb.json --- a/src/migration/mdb/src/keximdb/keximigrate_mdb.json +++ b/src/migration/mdb/src/keximdb/keximigrate_mdb.json @@ -81,7 +81,7 @@ "ServiceTypes": [ "Kexi/MigrationDriver" ], - "Version": "3.1", + "Version": "3.2", "Website": "http://kexi-project.org" }, "X-Kexi-FileBased": "true" diff --git a/src/migration/mysql/keximigrate_mysql.json b/src/migration/mysql/keximigrate_mysql.json --- a/src/migration/mysql/keximigrate_mysql.json +++ b/src/migration/mysql/keximigrate_mysql.json @@ -83,7 +83,7 @@ "ServiceTypes": [ "Kexi/MigrationDriver" ], - "Version": "3.1", + "Version": "3.2", "Website": "http://kexi-project.org" }, "X-Kexi-FileBased": "false", diff --git a/src/migration/postgresql/keximigrate_postgresql.json b/src/migration/postgresql/keximigrate_postgresql.json --- a/src/migration/postgresql/keximigrate_postgresql.json +++ b/src/migration/postgresql/keximigrate_postgresql.json @@ -82,7 +82,7 @@ "ServiceTypes": [ "Kexi/MigrationDriver" ], - "Version": "3.1", + "Version": "3.2", "Website": "http://kexi-project.org" }, "X-Kexi-FileBased": "false", diff --git a/src/migration/tsv/keximigrate_tsv.json b/src/migration/tsv/keximigrate_tsv.json --- a/src/migration/tsv/keximigrate_tsv.json +++ b/src/migration/tsv/keximigrate_tsv.json @@ -81,7 +81,7 @@ "ServiceTypes": [ "Kexi/MigrationDriver" ], - "Version": "3.1", + "Version": "3.2", "Website": "http://kexi-project.org" }, "X-Kexi-FileBased": "true" diff --git a/src/plugins/forms/kexi_formplugin.desktop b/src/plugins/forms/kexi_formplugin.desktop --- a/src/plugins/forms/kexi_formplugin.desktop +++ b/src/plugins/forms/kexi_formplugin.desktop @@ -51,7 +51,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.form -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/forms/widgets/main/kexiforms_mainwidgetsplugin.json b/src/plugins/forms/widgets/main/kexiforms_mainwidgetsplugin.json --- a/src/plugins/forms/widgets/main/kexiforms_mainwidgetsplugin.json +++ b/src/plugins/forms/widgets/main/kexiforms_mainwidgetsplugin.json @@ -77,7 +77,7 @@ "ServiceTypes": [ "Kexi/FormWidget" ], - "Version": "3.1", + "Version": "3.2", "Website": "http://kexi-project.org" }, "X-Kexi-FormWidgetsFactoryGroup": "" diff --git a/src/plugins/forms/widgets/mapbrowser/kexiforms_mapwidgetplugin.desktop b/src/plugins/forms/widgets/mapbrowser/kexiforms_mapwidgetplugin.desktop --- a/src/plugins/forms/widgets/mapbrowser/kexiforms_mapwidgetplugin.desktop +++ b/src/plugins/forms/widgets/mapbrowser/kexiforms_mapwidgetplugin.desktop @@ -46,7 +46,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.form.widgets.map -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/forms/widgets/webbrowser/kexiforms_webbrowserwidgetplugin.json b/src/plugins/forms/widgets/webbrowser/kexiforms_webbrowserwidgetplugin.json --- a/src/plugins/forms/widgets/webbrowser/kexiforms_webbrowserwidgetplugin.json +++ b/src/plugins/forms/widgets/webbrowser/kexiforms_webbrowserwidgetplugin.json @@ -78,7 +78,7 @@ "ServiceTypes": [ "Kexi/FormWidget" ], - "Version": "3.1", + "Version": "3.2", "Website": "http://kexi-project.org" }, "X-Kexi-FormWidgetsFactoryGroup": "" diff --git a/src/plugins/importexport/csv/kexi_csvimportexportplugin.desktop b/src/plugins/importexport/csv/kexi_csvimportexportplugin.desktop --- a/src/plugins/importexport/csv/kexi_csvimportexportplugin.desktop +++ b/src/plugins/importexport/csv/kexi_csvimportexportplugin.desktop @@ -48,7 +48,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.importexport.csv -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/migration/kexi_migrationplugin.desktop b/src/plugins/migration/kexi_migrationplugin.desktop --- a/src/plugins/migration/kexi_migrationplugin.desktop +++ b/src/plugins/migration/kexi_migrationplugin.desktop @@ -48,7 +48,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.migration -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/queries/kexi_queryplugin.desktop b/src/plugins/queries/kexi_queryplugin.desktop --- a/src/plugins/queries/kexi_queryplugin.desktop +++ b/src/plugins/queries/kexi_queryplugin.desktop @@ -51,7 +51,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.query -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/reports/kexi_reportplugin.desktop b/src/plugins/reports/kexi_reportplugin.desktop --- a/src/plugins/reports/kexi_reportplugin.desktop +++ b/src/plugins/reports/kexi_reportplugin.desktop @@ -50,7 +50,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.report -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/scripting/kexiscripting/kexi_scriptplugin.desktop b/src/plugins/scripting/kexiscripting/kexi_scriptplugin.desktop --- a/src/plugins/scripting/kexiscripting/kexi_scriptplugin.desktop +++ b/src/plugins/scripting/kexiscripting/kexi_scriptplugin.desktop @@ -57,7 +57,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.script -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/plugins/tables/kexi_tableplugin.desktop b/src/plugins/tables/kexi_tableplugin.desktop --- a/src/plugins/tables/kexi_tableplugin.desktop +++ b/src/plugins/tables/kexi_tableplugin.desktop @@ -51,7 +51,7 @@ X-KDE-PluginInfo-Author=Kexi Team X-KDE-PluginInfo-Email=kexi@kde.org X-KDE-PluginInfo-Name=org.kexi-project.table -X-KDE-PluginInfo-Version=3.1 +X-KDE-PluginInfo-Version=3.2 X-KDE-PluginInfo-Website=http://kexi-project.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/widget/tableview/kexicomboboxbase.h b/src/widget/tableview/kexicomboboxbase.h --- a/src/widget/tableview/kexicomboboxbase.h +++ b/src/widget/tableview/kexicomboboxbase.h @@ -107,7 +107,7 @@ //! \return lookup field schema for this combo box, if present and if is valid (i.e. has defined record source) KDbLookupFieldSchema* lookupFieldSchema(); - //! @override + //! @overload const KDbLookupFieldSchema* lookupFieldSchema() const; int recordToHighlightForLookupTable() const;