helper.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * helper.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "helper.h"
  12. #include "../lib/CConfigHandler.h"
  13. #include <QObject>
  14. #include <QScroller>
  15. #ifdef VCMI_ANDROID
  16. #include <QAndroidJniObject>
  17. #include <QtAndroid>
  18. #endif
  19. #ifdef VCMI_MOBILE
  20. static QScrollerProperties generateScrollerProperties()
  21. {
  22. QScrollerProperties result;
  23. result.setScrollMetric(QScrollerProperties::OvershootDragResistanceFactor, 0.25);
  24. result.setScrollMetric(QScrollerProperties::OvershootDragDistanceFactor, 0.25);
  25. result.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff);
  26. return result;
  27. }
  28. #endif
  29. namespace Helper
  30. {
  31. void loadSettings()
  32. {
  33. settings.init("config/settings.json", "vcmi:settings");
  34. persistentStorage.init("config/persistentStorage.json", "");
  35. }
  36. void enableScrollBySwiping(QObject * scrollTarget)
  37. {
  38. #ifdef VCMI_MOBILE
  39. QScroller::grabGesture(scrollTarget, QScroller::LeftMouseButtonGesture);
  40. QScroller * scroller = QScroller::scroller(scrollTarget);
  41. scroller->setScrollerProperties(generateScrollerProperties());
  42. #endif
  43. }
  44. QString getRealPath(QString path)
  45. {
  46. #ifdef VCMI_ANDROID
  47. if(path.contains("content://", Qt::CaseInsensitive))
  48. {
  49. auto str = QAndroidJniObject::fromString(path);
  50. 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();
  51. }
  52. else
  53. return path;
  54. #else
  55. return path;
  56. #endif
  57. }
  58. void performNativeCopy(QString src, QString dst)
  59. {
  60. #ifdef VCMI_ANDROID
  61. auto srcStr = QAndroidJniObject::fromString(src);
  62. auto dstStr = QAndroidJniObject::fromString(dst);
  63. 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());
  64. #else
  65. QFile::copy(src, dst);
  66. #endif
  67. }
  68. }