Git commit c195e0cda57949891207f5c7f2c817d2b6fbe298 by Thomas Baumgart. Committed on 22/03/2020 at 18:27. Pushed by tbaumgart into branch '5.0'.
Improve handling of the backup feature on MS windows On windows the option to mount a device is not available. So the GUI elements have been removed in this case and the label is adjusted to be more precise. GUI: BUG: 419082 FIXED-IN: 5.0.9 M +10 -0 kmymoney/dialogs/kbackupdlg.cpp M +15 -35 kmymoney/dialogs/kbackupdlg.ui M +15 -3 kmymoney/kmymoney.cpp https://commits.kde.org/kmymoney/c195e0cda57949891207f5c7f2c817d2b6fbe298 diff --git a/kmymoney/dialogs/kbackupdlg.cpp b/kmymoney/dialogs/kbackupdlg.cpp index b19ea45c2..1966c361c 100644 --- a/kmymoney/dialogs/kbackupdlg.cpp +++ b/kmymoney/dialogs/kbackupdlg.cpp @@ -2,6 +2,7 @@ * Copyright 2001-2003 Michael Edwardes <m...@users.sourceforge.net> * Copyright 2001-2002 Felix Rodriguez <frodrig...@users.sourceforge.net> * Copyright 2017 Łukasz Wojniłowicz <lukasz.wojnilow...@gmail.com> + * Copyright 2020 Thomas Baumgart <tbaumg...@kde.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -52,6 +53,15 @@ KBackupDlg::KBackupDlg(QWidget* parent) : ui->setupUi(this); readConfig(); +#ifdef Q_OS_WIN + // in windows we don't have a mount capability so + // we hide that option from the user and deactivate it + ui->mountCheckBox->setChecked(false); + ui->mountCheckBox->hide(); + ui->txtAutoMount->hide(); + ui->lblMountPoint->setText(i18n("Backup location:")); +#endif + ui->chooseButton->setIcon(Icons::get(Icon::Folder)); connect(ui->chooseButton, &QAbstractButton::clicked, this, &KBackupDlg::chooseButtonClicked); diff --git a/kmymoney/dialogs/kbackupdlg.ui b/kmymoney/dialogs/kbackupdlg.ui index 706691fd4..0a0615305 100644 --- a/kmymoney/dialogs/kbackupdlg.ui +++ b/kmymoney/dialogs/kbackupdlg.ui @@ -7,53 +7,23 @@ <x>0</x> <y>0</y> <width>641</width> - <height>301</height> + <height>369</height> </rect> </property> <property name="windowTitle"> <string>Backup</string> </property> - <layout class="QVBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="leftMargin"> - <number>11</number> - </property> - <property name="topMargin"> - <number>11</number> - </property> - <property name="rightMargin"> - <number>11</number> - </property> - <property name="bottomMargin"> - <number>11</number> - </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <layout class="QHBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="TextLabel1"> <property name="text"> - <string>Use this dialog to backup your data. + <string>Use this dialog to backup your data. Please make sure you have a disk inserted and that the drive is ready. Then choose the mount point from either the Choose button or by entering the path in the available box. -Click OK to perform the backup. If your system does not use an automounter, make sure you mark the checkbox below to "mount this directory before backing up."</string> +Click OK to perform the backup.</string> </property> <property name="alignment"> <set>Qt::AlignTop</set> @@ -63,6 +33,16 @@ Click OK to perform the backup. If your system does not use an automounter, make </property> </widget> </item> + <item> + <widget class="QLabel" name="txtAutoMount"> + <property name="text"> + <string>If your system does not use an automounter, make sure you mark the checkbox below to "mount this directory before backing up."</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> </layout> </item> <item> diff --git a/kmymoney/kmymoney.cpp b/kmymoney/kmymoney.cpp index 8d4a3fa2f..4382950a9 100644 --- a/kmymoney/kmymoney.cpp +++ b/kmymoney/kmymoney.cpp @@ -2,7 +2,7 @@ kmymoney.cpp ------------------- copyright : (C) 2000 by Michael Edwardes <m...@users.sourceforge.net> - (C) 2002-2019 by Thomas Baumgart <tbaumg...@kde.org> + (C) 2002-2020 by Thomas Baumgart <tbaumg...@kde.org> (C) 2017-2018 by Łukasz Wojniłowicz <lukasz.wojnilow...@gmail.com> ****************************************************************************/ @@ -2339,9 +2339,8 @@ void KMyMoneyApp::slotBackupFile() QPointer<KBackupDlg> backupDlg = new KBackupDlg(this); int returncode = backupDlg->exec(); - if (returncode == QDialog::Accepted && backupDlg != 0) { - + if (returncode == QDialog::Accepted && backupDlg != 0) { d->m_backupMount = backupDlg->mountCheckBoxChecked(); d->m_proc.clearProgram(); d->m_backupState = BACKUP_MOUNTING; @@ -2382,6 +2381,19 @@ bool KMyMoneyApp::slotBackupWriteFile() QString backupfile = d->m_mountpoint + '/' + d->m_storageInfo.url.fileName(); KMyMoneyUtils::appendCorrectFileExt(backupfile, today); +#ifdef Q_OS_WIN + // on windows, a leading slash is a problem if a drive letter follows + // eg. "/Z:/path". In case we detect such a pattern, we simply remove + // the leading slash + const QRegularExpression re(QStringLiteral("/(?<path>\\w+:/.+)"), + QRegularExpression::CaseInsensitiveOption|QRegularExpression::UseUnicodePropertiesOption + ); + const auto match = re.match(backupfile); + if (match.hasMatch() && !match.captured(QStringLiteral("path")).isEmpty()) { + backupfile = match.captured(QStringLiteral("path")); + } +#endif + // check if file already exists and ask what to do QFile f(backupfile); if (f.exists()) {