AusweisApp2/src/settings/AbstractSettings.cpp

93 lines
1.8 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2014-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#include "AbstractSettings.h"
#include <QCoreApplication>
2017-12-20 14:54:05 +01:00
#ifdef Q_OS_MACOS
#include <QFileInfo>
#endif
#ifdef Q_OS_ANDROID
#include <QtAndroid>
#endif
2017-07-03 09:30:10 +02:00
using namespace governikus;
#ifndef QT_NO_DEBUG
QSharedPointer<QTemporaryDir> AbstractSettings::mTestDir;
#endif
2017-12-20 14:54:05 +01:00
void AbstractSettings::createLegacyFileMapping()
{
#ifdef Q_OS_MACOS
static bool checked = false;
if (checked)
{
return;
}
QFileInfo oldInfo(QSettings(QCoreApplication::organizationName(), QCoreApplication::applicationName()).fileName());
oldInfo.setCaching(false);
QFileInfo newInfo(QSettings().fileName());
newInfo.setCaching(false);
if (!oldInfo.isSymLink())
{
if (oldInfo.exists() && !newInfo.exists())
{
QFile(oldInfo.filePath()).rename(newInfo.filePath());
}
if (!oldInfo.exists())
{
QFile(newInfo.filePath()).link(oldInfo.filePath());
}
}
checked = true;
#endif
}
2017-07-03 09:30:10 +02:00
AbstractSettings::AbstractSettings()
{
}
AbstractSettings::~AbstractSettings()
{
}
QSharedPointer<QSettings> AbstractSettings::getStore()
{
2017-12-20 14:54:05 +01:00
createLegacyFileMapping();
2017-07-03 09:30:10 +02:00
#ifndef QT_NO_DEBUG
if (QCoreApplication::applicationName().startsWith(QLatin1String("Test")))
{
if (mTestDir.isNull())
{
mTestDir.reset(new QTemporaryDir);
Q_ASSERT(mTestDir->isValid());
}
QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, mTestDir->path());
return QSharedPointer<QSettings>(new QSettings(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName()));
}
#endif
2017-12-20 14:54:05 +01:00
return QSharedPointer<QSettings>(new QSettings());
2017-07-03 09:30:10 +02:00
}
2017-12-20 14:54:05 +01:00
bool AbstractSettings::appIsBackgroundService() const
2017-07-03 09:30:10 +02:00
{
2017-12-20 14:54:05 +01:00
#ifdef Q_OS_ANDROID
if (QtAndroid::androidService().isValid())
2017-07-03 09:30:10 +02:00
{
2017-12-20 14:54:05 +01:00
return true;
2017-07-03 09:30:10 +02:00
}
2017-12-20 14:54:05 +01:00
#endif
return false;
2017-07-03 09:30:10 +02:00
}