Files
amnezia-client/client/fileUtilites.cpp
T

86 lines
2.1 KiB
C++
Raw Normal View History

2023-08-23 00:20:59 +05:00
#include "fileUtilites.h"
#include <QDesktopServices>
2023-08-31 16:00:41 +05:00
#include <QDir>
#include <QFile>
#include <QFileInfo>
2023-08-23 00:20:59 +05:00
#include <QStandardPaths>
2023-08-31 21:49:36 +05:00
#include <QUrl>
2023-08-23 00:20:59 +05:00
2023-08-30 15:10:44 +05:00
#ifdef Q_OS_ANDROID
#include "platforms/android/android_controller.h"
#endif
#ifdef Q_OS_IOS
#include "platforms/ios/MobileUtils.h"
#include <CoreFoundation/CoreFoundation.h>
#endif
void FileUtilites::saveFile(QString fileName, const QString &data)
2023-08-23 00:20:59 +05:00
{
2023-08-30 15:10:44 +05:00
#if defined Q_OS_ANDROID
AndroidController::instance()->shareConfig(data, fileName);
return;
#endif
2023-08-23 00:20:59 +05:00
2023-08-30 15:10:44 +05:00
#ifdef Q_OS_IOS
QFile file(fileName);
#else
QUrl fileUrl = QUrl(fileName);
QFile file(fileUrl.toLocalFile());
#endif
2023-08-23 00:20:59 +05:00
// todo check if save successful
2023-08-30 15:10:44 +05:00
file.open(QIODevice::WriteOnly);
file.write(data.toUtf8());
file.close();
#ifdef Q_OS_IOS
QStringList filesToSend;
filesToSend.append(fileName);
MobileUtils::shareText(filesToSend);
return;
#endif
2023-08-23 00:20:59 +05:00
2023-08-30 01:17:14 +03:00
#ifdef Q_OS_IOS
QStringList filesToSend;
filesToSend.append(fileUrl.toString());
MobileUtils::shareText(filesToSend);
return;
#endif
2023-08-23 00:20:59 +05:00
QFileInfo fi(fileUrl.toLocalFile());
QDesktopServices::openUrl(fi.absoluteDir().absolutePath());
}
2023-08-30 15:10:44 +05:00
QString FileUtilites::getFileName(QString fileName)
2023-08-23 00:20:59 +05:00
{
2023-08-30 15:10:44 +05:00
#ifdef Q_OS_IOS
CFURLRef url = CFURLCreateWithFileSystemPath(
kCFAllocatorDefault,
CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar *>(fileName.unicode()), fileName.length()),
kCFURLPOSIXPathStyle, 0);
if (!CFURLStartAccessingSecurityScopedResource(url)) {
qDebug() << "Could not access path " << QUrl::fromLocalFile(fileName).toString();
}
return fileName;
#endif
2023-08-23 00:20:59 +05:00
#ifdef Q_OS_ANDROID
// patch for files containing spaces etc
const QString sep { "raw%3A%2F" };
if (fileName.startsWith("content://") && fileName.contains(sep)) {
QString contentUrl = fileName.split(sep).at(0);
QString rawUrl = fileName.split(sep).at(1);
rawUrl.replace(" ", "%20");
fileName = contentUrl + sep + rawUrl;
}
2023-08-30 15:10:44 +05:00
2023-08-23 00:20:59 +05:00
return fileName;
2023-08-30 15:10:44 +05:00
#endif
return QUrl(fileName).toLocalFile();
2023-08-23 00:20:59 +05:00
}