1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-17 20:58:07 +02:00
vcmi/launcher/helper.cpp
2025-01-17 09:24:09 +03:00

79 lines
2.1 KiB
C++

/*
* helper.cpp, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#include "StdInc.h"
#include "helper.h"
#include "../lib/CConfigHandler.h"
#include <QObject>
#include <QScroller>
#ifdef VCMI_ANDROID
#include <QAndroidJniObject>
#include <QtAndroid>
#endif
#ifdef VCMI_MOBILE
static QScrollerProperties generateScrollerProperties()
{
QScrollerProperties result;
result.setScrollMetric(QScrollerProperties::OvershootDragResistanceFactor, 0.25);
result.setScrollMetric(QScrollerProperties::OvershootDragDistanceFactor, 0.25);
result.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff);
return result;
}
#endif
namespace Helper
{
void loadSettings()
{
settings.init("config/settings.json", "vcmi:settings");
persistentStorage.init("config/persistentStorage.json", "");
}
void enableScrollBySwiping(QObject * scrollTarget)
{
#ifdef VCMI_MOBILE
QScroller::grabGesture(scrollTarget, QScroller::LeftMouseButtonGesture);
QScroller * scroller = QScroller::scroller(scrollTarget);
scroller->setScrollerProperties(generateScrollerProperties());
#endif
}
QString getRealPath(QString path)
{
#ifdef VCMI_ANDROID
if(path.contains("content://", Qt::CaseInsensitive))
{
auto str = QAndroidJniObject::fromString(path);
return QAndroidJniObject::callStaticObjectMethod("eu/vcmi/vcmi/util/FileUtil", "getFilenameFromUri", "(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;", str.object<jstring>(), QtAndroid::androidContext().object()).toString();
}
else
return path;
#else
return path;
#endif
}
void performNativeCopy(QString src, QString dst)
{
#ifdef VCMI_ANDROID
auto srcStr = QAndroidJniObject::fromString(src);
auto dstStr = QAndroidJniObject::fromString(dst);
QAndroidJniObject::callStaticObjectMethod("eu/vcmi/vcmi/util/FileUtil", "copyFileFromUri", "(Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;)V", srcStr.object<jstring>(), dstStr.object<jstring>(), QtAndroid::androidContext().object());
#else
QFile::copy(src, dst);
#endif
}
}