Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAndroidUtils Namespace Reference

Functions

void clearJniException (const QString &location)
 
bool copyFile (const QString &inputPath, const QString &outputPath, QString *outErrorMessage)
 
bool copyFileToTemporary (const QString &inputPath, QTemporaryFile &outputFile, QString *outErrorMessage)
 
bool isInFullScreen ()
 
bool isLowMemoryKillReportSupported ()
 
bool looksLikeXiaomiDevice ()
 
void performInitialSetup ()
 
void setFullScreen (bool fullScreen)
 

Function Documentation

◆ clearJniException()

KRITAGLOBAL_EXPORT void KisAndroidUtils::clearJniException ( const QString & location)

Definition at line 65 of file KisAndroidUtils.cpp.

66{
67 QJniEnvironment env;
68 if (env->ExceptionCheck()) {
69 warnKrita << "JNI exception occurred" << location;
70 env->ExceptionDescribe();
71 env->ExceptionClear();
72 }
73}
#define warnKrita
Definition kis_debug.h:91

References warnKrita.

◆ copyFile()

KRITAGLOBAL_EXPORT bool KisAndroidUtils::copyFile ( const QString & inputPath,
const QString & outputPath,
QString * outErrorMessage )

Definition at line 163 of file KisAndroidUtils.cpp.

164{
165 QFile inputFile(inputPath);
166 if (!inputFile.open(QIODevice::ReadOnly)) {
167 if (outErrorMessage) {
168 *outErrorMessage =
169 QStringLiteral("failed to open input file '%1': %2").arg(inputPath).arg(inputFile.errorString());
170 }
171 return false;
172 }
173
174 QFile outputFile(outputPath);
175 if (!outputFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
176 if (outErrorMessage) {
177 *outErrorMessage =
178 QStringLiteral("failed to open output file '%1': %2").arg(outputPath).arg(outputFile.errorString());
179 }
180 return false;
181 }
182
183 return copyFileContents(inputPath, outputPath, inputFile, outputFile, outErrorMessage);
184}

◆ copyFileToTemporary()

KRITAGLOBAL_EXPORT bool KisAndroidUtils::copyFileToTemporary ( const QString & inputPath,
QTemporaryFile & outputFile,
QString * outErrorMessage )

Definition at line 186 of file KisAndroidUtils.cpp.

187{
188 QFile inputFile(inputPath);
189 if (!inputFile.open(QIODevice::ReadOnly)) {
190 if (outErrorMessage) {
191 *outErrorMessage =
192 QStringLiteral("failed to open input file '%1': %2").arg(inputPath).arg(inputFile.errorString());
193 }
194 return false;
195 }
196
197 if (!outputFile.open()) {
198 if (outErrorMessage) {
199 *outErrorMessage = QStringLiteral("failed to open temporary output file: %1").arg(outputFile.errorString());
200 }
201 return false;
202 }
203
204 if (outErrorMessage) {
205 outErrorMessage->clear();
206 }
207 return copyFileContents(inputPath, outputFile.fileName(), inputFile, outputFile, outErrorMessage);
208}

◆ isInFullScreen()

KRITAGLOBAL_EXPORT bool KisAndroidUtils::isInFullScreen ( )

Definition at line 75 of file KisAndroidUtils.cpp.

76{
77 QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
78 "activity",
79 "()Landroid/app/Activity;");
80 KisAndroidUtils::clearJniException(QStringLiteral("getting activity in isInFullScreen"));
81 if (activity.isValid()) {
82 bool fullScreen = activity.callMethod<jboolean>("isInFullScreen", "()Z");
83 KisAndroidUtils::clearJniException(QStringLiteral("calling isInFullScreen"));
84 return fullScreen;
85 } else {
86 qWarning("isInFullScreen: activity not valid");
87 return false;
88 }
89}
void clearJniException(const QString &location)

References clearJniException().

◆ isLowMemoryKillReportSupported()

KRITAGLOBAL_EXPORT bool KisAndroidUtils::isLowMemoryKillReportSupported ( )

Definition at line 51 of file KisAndroidUtils.cpp.

52{
53 // The support is device-bound and will never change, so cache the JNI call.
54 static bool checked;
55 static bool result;
56 if (!checked) {
57 checked = true;
58 result = QJniObject::callStaticMethod<jboolean>("org/krita/android/MainActivity",
59 "isLowMemoryKillReportSupported",
60 "()Z");
61 }
62 return result;
63}

◆ looksLikeXiaomiDevice()

KRITAGLOBAL_EXPORT bool KisAndroidUtils::looksLikeXiaomiDevice ( )

Definition at line 38 of file KisAndroidUtils.cpp.

39{
40 // The device isn't going to change, so let's cache the slow JNI call.
41 static bool checked;
42 static bool result;
43 if (!checked) {
44 checked = true;
45 result =
46 QJniObject::callStaticMethod<jboolean>("org/krita/android/MainActivity", "looksLikeXiaomiDevice", "()Z");
47 }
48 return result;
49}

◆ performInitialSetup()

KRITAGLOBAL_EXPORT void KisAndroidUtils::performInitialSetup ( )

Definition at line 24 of file KisAndroidUtils.cpp.

25{
27
28 QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
29 "activity",
30 "()Landroid/app/Activity;");
31 if (activity.isValid()) {
32 activity.callMethod<void>("copyAssets", "()V");
33 } else {
34 qWarning("performInitialSetup: activity not valid");
35 }
36}

References KisAndroidLogHandler::handler_init().

◆ setFullScreen()

KRITAGLOBAL_EXPORT void KisAndroidUtils::setFullScreen ( bool fullScreen)

Definition at line 91 of file KisAndroidUtils.cpp.

92{
93 QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
94 "activity",
95 "()Landroid/app/Activity;");
96 KisAndroidUtils::clearJniException(QStringLiteral("getting activity in setFullScreen"));
97 if (activity.isValid()) {
98 activity.callMethod<void>("setFullScreenOnUiThread", "(Z)V", jboolean(fullScreen));
99 KisAndroidUtils::clearJniException(QStringLiteral("calling setFullScreenOnUiThread"));
100 } else {
101 qWarning("setFullScreen: activity not valid");
102 }
103}

References clearJniException().