diff --git a/src/plugins/tables/kexitabledesignerview.cpp b/src/plugins/tables/kexitabledesignerview.cpp --- a/src/plugins/tables/kexitabledesignerview.cpp +++ b/src/plugins/tables/kexitabledesignerview.cpp @@ -576,12 +576,25 @@ // cancelled = (KMessageBox::No == KMessageBox::questionYesNo(this, xi18n("Saving changes for existing table design is not yet supported.\nDo you want to discard your changes now?"))); // KDbConnection *conn = KexiMainWindowIface::global()->project()->dbConnection(); bool emptyTable; + bool isPhysicalAlteringNeeded = this->isPhysicalAlteringNeeded(); + KLocalizedString message( + kxi18nc("@info", "Saving changes for existing table design is now required.%1") + .subs(d->messageForSavingChanges(&emptyTable, /*skip warning?*/!isPhysicalAlteringNeeded))); + if (emptyTable) { + isPhysicalAlteringNeeded = false; // eventually, not needed because there's no data + } + KGuiItem saveItem(KStandardGuiItem::save()); + saveItem.setToolTip(QString()); + KGuiItem discardItem(KStandardGuiItem::discard()); + discardItem.setToolTip(QString()); + if (isPhysicalAlteringNeeded) { + saveItem.setText(xi18nc("@action:button", "Save Design and Remove Table Data")); + discardItem.setText(xi18nc("@action:button", "Discard Design")); + } const KMessageBox::ButtonCode r = KMessageBox::warningYesNoCancel(this, - xi18n("Saving changes for existing table design is now required.") - + "\n" - + d->messageForSavingChanges(&emptyTable, /*skip warning?*/!isPhysicalAlteringNeeded()), + message.toString(), QString(), - KStandardGuiItem::save(), KStandardGuiItem::discard(), KStandardGuiItem::cancel(), + saveItem, discardItem, KStandardGuiItem::cancel(), QString(), KMessageBox::Notify | KMessageBox::Dangerous); if (r == KMessageBox::Cancel) @@ -1427,7 +1440,7 @@ // - inform about removing the current table and ask for confirmation if (!d->dontAskOnStoreData && !dontAsk) { bool emptyTable; - const QString msg = d->messageForSavingChanges(&emptyTable); + const QString msg = d->messageForSavingChanges(&emptyTable).toString(); if (!emptyTable) { if (KMessageBox::No == KMessageBox::questionYesNo(this, msg)) res = cancelled; diff --git a/src/plugins/tables/kexitabledesignerview_p.h b/src/plugins/tables/kexitabledesignerview_p.h --- a/src/plugins/tables/kexitabledesignerview_p.h +++ b/src/plugins/tables/kexitabledesignerview_p.h @@ -91,7 +91,7 @@ \a emptyTable is set to true if the table designed contains no rows. If \a skipWarning is true, no warning about data loss is appended (useful when only non-physical altering actions will be performed). */ - QString messageForSavingChanges(bool *emptyTable, bool skipWarning = false); + KLocalizedString messageForSavingChanges(bool *emptyTable, bool skipWarning = false); /*! Updates icon in the first column, depending on property set \a set. For example, when "rowSource" and "rowSourceType" propertiesa are not empty, diff --git a/src/plugins/tables/kexitabledesignerview_p.cpp b/src/plugins/tables/kexitabledesignerview_p.cpp --- a/src/plugins/tables/kexitabledesignerview_p.cpp +++ b/src/plugins/tables/kexitabledesignerview_p.cpp @@ -222,15 +222,16 @@ return changed; } -QString KexiTableDesignerViewPrivate::messageForSavingChanges(bool *emptyTable, bool skipWarning) +KLocalizedString KexiTableDesignerViewPrivate::messageForSavingChanges(bool *emptyTable, bool skipWarning) { Q_ASSERT(emptyTable); KDbConnection *conn = KexiMainWindowIface::global()->project()->dbConnection(); *emptyTable = true == conn->isEmpty(designerView->tempData()->table); - return xi18n("Do you want to save the design now?") - + ((*emptyTable || skipWarning) ? QString() : - (QString("\n\n") + designerView->part()->i18nMessage(":additional message before saving design", - designerView->window()).toString())); + return kxi18nc("@info", "Do you want to save the design now?%1") + .subs((*emptyTable || skipWarning) + ? KLocalizedString() + : (designerView->part()->i18nMessage(":additional message before saving design", + designerView->window()))); } void KexiTableDesignerViewPrivate::updateIconForRecord(KDbRecordData *data, KPropertySet *set) diff --git a/src/plugins/tables/kexitablepart.cpp b/src/plugins/tables/kexitablepart.cpp --- a/src/plugins/tables/kexitablepart.cpp +++ b/src/plugins/tables/kexitablepart.cpp @@ -211,7 +211,7 @@ if (window->currentViewMode() == Kexi::DesignViewMode && !window->neverSaved() && englishMessage == ":additional message before saving design") - return kxi18nc(I18NC_NOOP("@info", "Warning! Any data in this table will be removed upon design's saving!")); + return kxi18nc(I18NC_NOOP("@info", "Any data in this table will be removed upon design's saving!")); return Part::i18nMessage(englishMessage, window); }