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);
}