| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- * 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_IOS
- #include "ios/revealdirectoryinfiles.h"
- #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
- }
- void revealDirectoryInFileBrowser(QString path)
- {
- const auto dirUrl = QUrl::fromLocalFile(QFileInfo{path}.absoluteFilePath());
- #ifdef VCMI_IOS
- iOS_utils::revealDirectoryInFiles(dirUrl);
- #else
- QDesktopServices::openUrl(dirUrl);
- #endif
- }
- }
|