reworking of getting the path to the file when saving/opening files
This commit is contained in:
parent
e1fa24c251
commit
b5dd48ad7b
21 changed files with 167 additions and 243 deletions
|
@ -11,7 +11,7 @@
|
|||
#include "configurators/openvpn_configurator.h"
|
||||
#include "configurators/wireguard_configurator.h"
|
||||
#include "core/errorstrings.h"
|
||||
#include "fileUtilites.h"
|
||||
#include "systemController.h"
|
||||
#ifdef Q_OS_ANDROID
|
||||
#include "platforms/android/androidutils.h"
|
||||
#endif
|
||||
|
@ -200,9 +200,9 @@ QList<QString> ExportController::getQrCodes()
|
|||
return m_qrCodes;
|
||||
}
|
||||
|
||||
void ExportController::saveFile(const QString &fileName)
|
||||
void ExportController::exportConfig(const QString &fileName)
|
||||
{
|
||||
FileUtilites::saveFile(fileName, m_config);
|
||||
SystemController::saveFile(fileName, m_config);
|
||||
}
|
||||
|
||||
QList<QString> ExportController::generateQrCodeImageSeries(const QByteArray &data)
|
||||
|
|
|
@ -35,7 +35,7 @@ public slots:
|
|||
QString getConfig();
|
||||
QList<QString> getQrCodes();
|
||||
|
||||
void saveFile(const QString &fileName);
|
||||
void exportConfig(const QString &fileName);
|
||||
|
||||
signals:
|
||||
void generateConfig(int type);
|
||||
|
@ -43,6 +43,8 @@ signals:
|
|||
|
||||
void exportConfigChanged();
|
||||
|
||||
void saveFile(const QString &fileName, const QString &data);
|
||||
|
||||
private:
|
||||
QList<QString> generateQrCodeImageSeries(const QByteArray &data);
|
||||
QString svgToBase64(const QString &image);
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#ifdef Q_OS_IOS
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#endif
|
||||
#include "fileUtilites.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
|
@ -88,11 +87,7 @@ ImportController::ImportController(const QSharedPointer<ServersModel> &serversMo
|
|||
|
||||
void ImportController::extractConfigFromFile(const QString &fileName)
|
||||
{
|
||||
QQuickItem *obj = findChild<QQuickItem *>("saveFileDialog");
|
||||
|
||||
QUrl url(fileName);
|
||||
QString path = url.toLocalFile();
|
||||
QFile file(path);
|
||||
QFile file(fileName);
|
||||
|
||||
if (file.open(QIODevice::ReadOnly)) {
|
||||
QString data = file.readAll();
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#include "core/errorstrings.h"
|
||||
#include "core/servercontroller.h"
|
||||
#include "fileUtilites.h"
|
||||
#include "utilities.h"
|
||||
|
||||
namespace
|
||||
|
|
|
@ -103,10 +103,6 @@ signals:
|
|||
void showPassphraseRequestDrawer();
|
||||
void passphraseRequestDrawerClosed(QString passphrase);
|
||||
|
||||
void setupFileDialogForConfig();
|
||||
void setupFileDialogForSites(bool replaceExistingSites);
|
||||
void setupFileDialogForBackup();
|
||||
|
||||
private:
|
||||
QSharedPointer<ServersModel> m_serversModel;
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
#include <QStandardPaths>
|
||||
|
||||
#include "fileUtilites.h"
|
||||
#include "logger.h"
|
||||
#include "systemController.h"
|
||||
#include "ui/qautostart.h"
|
||||
#include "version.h"
|
||||
|
||||
|
@ -70,7 +70,7 @@ void SettingsController::openLogsFolder()
|
|||
|
||||
void SettingsController::exportLogsFile(const QString &fileName)
|
||||
{
|
||||
FileUtilites::saveFile(fileName, Logger::getLogFile());
|
||||
SystemController::saveFile(fileName, Logger::getLogFile());
|
||||
}
|
||||
|
||||
void SettingsController::clearLogs()
|
||||
|
@ -81,12 +81,12 @@ void SettingsController::clearLogs()
|
|||
|
||||
void SettingsController::backupAppConfig(const QString &fileName)
|
||||
{
|
||||
FileUtilites::saveFile(fileName, m_settings->backupAppConfig());
|
||||
SystemController::saveFile(fileName, m_settings->backupAppConfig());
|
||||
}
|
||||
|
||||
void SettingsController::restoreAppConfig(const QString &fileName)
|
||||
{
|
||||
QFile file(FileUtilites::getFileName(fileName));
|
||||
QFile file(fileName);
|
||||
|
||||
file.open(QIODevice::ReadOnly);
|
||||
|
||||
|
|
|
@ -63,6 +63,8 @@ signals:
|
|||
void changeSettingsFinished(const QString &finishedMessage);
|
||||
void changeSettingsErrorOccurred(const QString &errorMessage);
|
||||
|
||||
void saveFile(const QString &fileName, const QString &data);
|
||||
|
||||
private:
|
||||
QSharedPointer<ServersModel> m_serversModel;
|
||||
QSharedPointer<ContainersModel> m_containersModel;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <QHostInfo>
|
||||
#include <QStandardPaths>
|
||||
|
||||
#include "fileUtilites.h"
|
||||
#include "systemController.h"
|
||||
#include "utilities.h"
|
||||
|
||||
SitesController::SitesController(const std::shared_ptr<Settings> &settings,
|
||||
|
@ -82,7 +82,7 @@ void SitesController::removeSite(int index)
|
|||
|
||||
void SitesController::importSites(const QString &fileName, bool replaceExisting)
|
||||
{
|
||||
QFile file(FileUtilites::getFileName(fileName));
|
||||
QFile file(fileName);
|
||||
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
emit errorOccurred(tr("Can't open file: ") + fileName);
|
||||
|
@ -145,7 +145,7 @@ void SitesController::exportSites(const QString &fileName)
|
|||
QJsonDocument jsonDocument(jsonArray);
|
||||
QByteArray jsonData = jsonDocument.toJson();
|
||||
|
||||
FileUtilites::saveFile(fileName, jsonData);
|
||||
SystemController::saveFile(fileName, jsonData);
|
||||
|
||||
emit finished(tr("Export completed"));
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@ signals:
|
|||
void errorOccurred(const QString &errorMessage);
|
||||
void finished(const QString &message);
|
||||
|
||||
void saveFile(const QString &fileName, const QString &data);
|
||||
|
||||
private:
|
||||
std::shared_ptr<Settings> m_settings;
|
||||
|
||||
|
|
|
@ -34,8 +34,7 @@ void SystemController::saveFile(QString fileName, const QString &data)
|
|||
QUrl fileUrl = QDir::tempPath() + "/" + fileName;
|
||||
QFile file(fileUrl.toString());
|
||||
#else
|
||||
QUrl fileUrl = QUrl(fileName);
|
||||
QFile file(fileUrl.toLocalFile());
|
||||
QFile file(fileName);
|
||||
#endif
|
||||
|
||||
// todo check if save successful
|
||||
|
@ -49,14 +48,18 @@ void SystemController::saveFile(QString fileName, const QString &data)
|
|||
MobileUtils::shareText(filesToSend);
|
||||
return;
|
||||
#else
|
||||
QFileInfo fi(fileUrl.toLocalFile());
|
||||
QFileInfo fi(fileName);
|
||||
QDesktopServices::openUrl(fi.absoluteDir().absolutePath());
|
||||
#endif
|
||||
}
|
||||
|
||||
QString SystemController::getFileName()
|
||||
QString SystemController::getFileName(const QString &acceptLabel, const QString &nameFilter,
|
||||
const QString &selectedFile, const bool isSaveMode, const QString &defaultSuffix)
|
||||
{
|
||||
QString fileName;
|
||||
#ifdef Q_OS_IOS
|
||||
MobileUtils::openFile();
|
||||
|
||||
CFURLRef url = CFURLCreateWithFileSystemPath(
|
||||
kCFAllocatorDefault,
|
||||
CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar *>(fileName.unicode()), fileName.length()),
|
||||
|
@ -69,17 +72,34 @@ QString SystemController::getFileName()
|
|||
return fileName;
|
||||
#endif
|
||||
|
||||
auto mainFileDialog = m_qmlRoot->findChild<QObject>("mainFileDialog").parent();
|
||||
QObject *mainFileDialog = m_qmlRoot->findChild<QObject>("mainFileDialog").parent();
|
||||
if (!mainFileDialog) {
|
||||
return "";
|
||||
}
|
||||
QMetaObject::invokeMethod(mainFileDialog, "open", Qt::DirectConnection);
|
||||
|
||||
mainFileDialog->setProperty("acceptLabel", QVariant::fromValue(acceptLabel));
|
||||
mainFileDialog->setProperty("nameFilters", QVariant::fromValue(QStringList(nameFilter)));
|
||||
if (!selectedFile.isEmpty()) {
|
||||
mainFileDialog->setProperty("selectedFile", QVariant::fromValue(selectedFile));
|
||||
}
|
||||
mainFileDialog->setProperty("isSaveMode", QVariant::fromValue(isSaveMode));
|
||||
mainFileDialog->setProperty("defaultSuffix", QVariant::fromValue(defaultSuffix));
|
||||
QMetaObject::invokeMethod(mainFileDialog, "open");
|
||||
|
||||
bool isFileDialogAccepted = false;
|
||||
QEventLoop wait;
|
||||
QObject::connect(this, &SystemController::fileDialogAccepted, &wait, &QEventLoop::quit);
|
||||
QObject::connect(this, &SystemController::fileDialogClosed, [&wait, &isFileDialogAccepted](const bool isAccepted) {
|
||||
isFileDialogAccepted = isAccepted;
|
||||
wait.quit();
|
||||
});
|
||||
wait.exec();
|
||||
QObject::disconnect(this, &SystemController::fileDialogClosed, nullptr, nullptr);
|
||||
|
||||
auto fileName = mainFileDialog->property("selectedFile").toString();
|
||||
if (!isFileDialogAccepted) {
|
||||
return "";
|
||||
}
|
||||
|
||||
fileName = mainFileDialog->property("selectedFile").toString();
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
// patch for files containing spaces etc
|
||||
|
|
|
@ -11,15 +11,16 @@ class SystemController : public QObject
|
|||
public:
|
||||
explicit SystemController(const std::shared_ptr<Settings> &setting, QObject *parent = nullptr);
|
||||
|
||||
static void saveFile(QString fileName, const QString &data);
|
||||
|
||||
public slots:
|
||||
void saveFile(QString fileName, const QString &data);
|
||||
QString getFileName();
|
||||
QString getFileName(const QString &acceptLabel, const QString &nameFilter, const QString &selectedFile = "",
|
||||
const bool isSaveMode = false, const QString &defaultSuffix = "");
|
||||
|
||||
void setQmlRoot(QObject *qmlRoot);
|
||||
|
||||
signals:
|
||||
void fileDialogAccepted();
|
||||
void fileDialogRejected();
|
||||
void fileDialogClosed(const bool isAccepted);
|
||||
|
||||
private:
|
||||
std::shared_ptr<Settings> m_settings;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue