From 7f11e50ecb4c98d6c61bb112afed50eac47e73e2 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Fri, 30 Apr 2021 20:21:33 +0300 Subject: [PATCH] exporttemplatedialog:confirm file overwrite --- .../exporttemplatehandler.cpp | 31 ++++++++++++++++--- .../exporttemplatehandler.h | 2 ++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/settings/exporttemplatedialog/exporttemplatehandler.cpp b/app/settings/exporttemplatedialog/exporttemplatehandler.cpp index 39d4d8b92..d796ad6fa 100644 --- a/app/settings/exporttemplatedialog/exporttemplatehandler.cpp +++ b/app/settings/exporttemplatedialog/exporttemplatehandler.cpp @@ -43,6 +43,7 @@ // KDE #include +#include #include // Plasma @@ -198,6 +199,17 @@ void ExportTemplateHandler::chooseFileDialog() void ExportTemplateHandler::onExport() { + QString curbasename = QFileInfo(c_filepath).baseName(); + QString curfilename = QFileInfo(c_filepath).fileName(); + + //! Confirm Overwrite if that is the case + if (QFile(c_filepath).exists()) { + if (!overwriteConfirmation(curfilename)) { + return; + } + } + + //! Proceed with export auto showExportTemplateError = [this](const QString &templateName) { showInlineMessage(i18nc("settings:template export fail","Template %0 export failed...").arg(templateName), KMessageWidget::Error, @@ -208,12 +220,12 @@ void ExportTemplateHandler::onExport() if (!m_originLayoutFilePath.isEmpty()) { result = m_dialog->corona()->templatesManager()->exportTemplate(m_originLayoutFilePath, - c_filepath, - m_appletsModel->selectedApplets()); + c_filepath, + m_appletsModel->selectedApplets()); } else if (m_originView){ result = m_dialog->corona()->templatesManager()->exportTemplate(m_originView, - c_filepath, - m_appletsModel->selectedApplets()); + c_filepath, + m_appletsModel->selectedApplets()); } if (result) { @@ -230,7 +242,7 @@ void ExportTemplateHandler::onExport() } }); - showInlineMessage(i18nc("settings:template export success","Template %0 export succeeded...").arg(QFileInfo(c_filepath).baseName()), + showInlineMessage(i18nc("settings:template export success","Template %0 export succeeded...").arg(curbasename), KMessageWidget::Information, false, actions); @@ -289,6 +301,15 @@ void ExportTemplateHandler::save() //do nothing } +bool ExportTemplateHandler::overwriteConfirmation(const QString &fileName) +{ + return (KMessageBox::warningYesNo(m_dialog, + i18n("The file \"%0\" already exists. Do you wish to overwrite it?").arg(fileName), + i18n("Overwrite File?"), + KStandardGuiItem::overwrite(), + KStandardGuiItem::cancel()) == KMessageBox::Yes); +} + } } } diff --git a/app/settings/exporttemplatedialog/exporttemplatehandler.h b/app/settings/exporttemplatedialog/exporttemplatehandler.h index c588513d6..50cd95785 100644 --- a/app/settings/exporttemplatedialog/exporttemplatehandler.h +++ b/app/settings/exporttemplatedialog/exporttemplatehandler.h @@ -91,6 +91,8 @@ private: void setFilepath(const QString &filepath); + bool overwriteConfirmation(const QString &fileName); + private slots: void onExport(); void onFilepathChanged();