diff --git a/kmymoney/kmymoney.cpp b/kmymoney/kmymoney.cpp
--- a/kmymoney/kmymoney.cpp
+++ b/kmymoney/kmymoney.cpp
@@ -970,38 +970,53 @@
// actually, url should be the parameter to this function
// but for now, this would involve too many changes
- bool rc = true;
+ auto rc = true;
try {
if (! url.isValid()) {
throw MYMONEYEXCEPTION(i18n("Malformed URL '%1'", url.url()));
}
- if (url.isLocalFile()) {
- filename = url.toLocalFile();
- try {
- const unsigned int nbak = KMyMoneySettings::autoBackupCopies();
- if (nbak) {
- KBackup::numberedBackupFile(filename, QString(), QStringLiteral("~"), nbak);
+ if (url.scheme() == QLatin1String("sql")) {
+ rc = false;
+ auto pluginFound = false;
+ for (const auto& plugin : m_plugins.storage) {
+ if (plugin->formatName().compare(QLatin1String("SQL")) == 0) {
+ rc = plugin->save(url);
+ pluginFound = true;
+ break;
+ }
+ }
+
+ if(!pluginFound)
+ throw MYMONEYEXCEPTION(i18n("Couldn't find suitable plugin to save your storage."));
+
+ } else if (url.isLocalFile()) {
+ filename = url.toLocalFile();
+ try {
+ const unsigned int nbak = KMyMoneySettings::autoBackupCopies();
+ if (nbak) {
+ KBackup::numberedBackupFile(filename, QString(), QStringLiteral("~"), nbak);
+ }
+ saveToLocalFile(filename, storageWriter.get(), plaintext, keyList);
+ } catch (const MyMoneyException &) {
+ throw MYMONEYEXCEPTION(i18n("Unable to write changes to '%1'", filename));
}
- saveToLocalFile(filename, storageWriter.get(), plaintext, keyList);
- } catch (const MyMoneyException &) {
- throw MYMONEYEXCEPTION(i18n("Unable to write changes to '%1'", filename));
- }
- } else {
- QTemporaryFile tmpfile;
- tmpfile.open(); // to obtain the name
- tmpfile.close();
- saveToLocalFile(tmpfile.fileName(), storageWriter.get(), plaintext, keyList);
-
- Q_CONSTEXPR int permission = -1;
- QFile file(tmpfile.fileName());
- file.open(QIODevice::ReadOnly);
- KIO::StoredTransferJob *putjob = KIO::storedPut(file.readAll(), url, permission, KIO::JobFlag::Overwrite);
- if (!putjob->exec()) {
- throw MYMONEYEXCEPTION(i18n("Unable to upload to '%1'.
%2", url.toDisplayString(), putjob->errorString()));
+ } else {
+
+ QTemporaryFile tmpfile;
+ tmpfile.open(); // to obtain the name
+ tmpfile.close();
+ saveToLocalFile(tmpfile.fileName(), storageWriter.get(), plaintext, keyList);
+
+ Q_CONSTEXPR int permission = -1;
+ QFile file(tmpfile.fileName());
+ file.open(QIODevice::ReadOnly);
+ KIO::StoredTransferJob *putjob = KIO::storedPut(file.readAll(), url, permission, KIO::JobFlag::Overwrite);
+ if (!putjob->exec()) {
+ throw MYMONEYEXCEPTION(i18n("Unable to upload to '%1'.
%2", url.toDisplayString(), putjob->errorString()));
+ }
+ file.close();
}
- file.close();
- }
m_fileType = KMyMoneyApp::KmmXML;
} catch (const MyMoneyException &e) {
KMessageBox::error(q, e.what());
diff --git a/kmymoney/plugins/sql/sqlstorage.cpp b/kmymoney/plugins/sql/sqlstorage.cpp
--- a/kmymoney/plugins/sql/sqlstorage.cpp
+++ b/kmymoney/plugins/sql/sqlstorage.cpp
@@ -173,12 +173,8 @@
}
newurl.setQuery(query);
- if (query.queryItemValue(key) == QLatin1String("QSQLITE")) {
- newurl.setUserInfo(QString());
- newurl.setHost(QString());
- }
// check if a password is needed. it may be if the URL came from the last/recent file list
- QPointer dialog = new KSelectDatabaseDlg(QIODevice::ReadWrite, newurl);
+ dialog = new KSelectDatabaseDlg(QIODevice::ReadWrite, newurl);
if (!dialog->checkDrivers()) {
delete dialog;
return;