From ce9353e4f345d1338eb3f634e6c3035da06535c0 Mon Sep 17 00:00:00 2001 From: codestation Date: Sun, 29 Dec 2013 11:05:04 -0430 Subject: [PATCH] Added android manifest and launcher icons. Do not use pkg-config when cross-compiling to Android. Added a helper class to send toasts and dialogs to the user. Added android compatibility on some headers. --- android/AndroidManifest.xml | 40 ++++++++++++++++ android/res/drawable-hdpi/icon.png | Bin 0 -> 1066 bytes android/res/drawable-ldpi/icon.png | Bin 0 -> 555 bytes android/res/drawable-mdpi/icon.png | Bin 0 -> 755 bytes android/res/drawable-xhdpi/icon.png | Bin 0 -> 1509 bytes android/res/drawable-xxhdpi/icon.png | Bin 0 -> 2239 bytes .../codestation/qcma/QcmaNotification.java | 34 +++++++++++++ src/androidmessage.cpp | 45 ++++++++++++++++++ src/androidmessage.h | 36 ++++++++++++++ src/cmautils.cpp | 6 +++ 10 files changed, 161 insertions(+) create mode 100644 android/AndroidManifest.xml create mode 100644 android/res/drawable-hdpi/icon.png create mode 100644 android/res/drawable-ldpi/icon.png create mode 100644 android/res/drawable-mdpi/icon.png create mode 100644 android/res/drawable-xhdpi/icon.png create mode 100644 android/res/drawable-xxhdpi/icon.png create mode 100644 android/src/com/github/codestation/qcma/QcmaNotification.java create mode 100644 src/androidmessage.cpp create mode 100644 src/androidmessage.h diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml new file mode 100644 index 0000000..591be35 --- /dev/null +++ b/android/AndroidManifest.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/res/drawable-hdpi/icon.png b/android/res/drawable-hdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..63ae9c72309febe9f280474fbbc95b5af7de071f GIT binary patch literal 1066 zcmV+_1l9YAP)=px;9pk(Dg;7Tl* zW)adwpmkZ9O+kc;q7tVTWS~_SIzEyVw3U)-l9^2FtLn|-o;ytLoH0g1;KbhtF3dfz z;rG42^ZK0wf*=TjAP9mW2!bF8f*=UOW8#@()Oikg7dT~@t!dx}kbT?&y$MtTHgEt$ zfeXMH!vwkud7ou#EE#>dCq*BxLGm;@G;2L*r<;P<1ncLBH!{CC*bXm4+~ zO`)f!=P<9@Q(bKZ_{u9rsptJXa0w_oK@(Mp@}K~48Q27VbTh5If(=0L2@}VQAGoN7 zlmdai0bY`o57j`ASD-fFQ_&_z6!Xa>%S9tFGw zge>44(W2-g`h5#{S+pq1E0%$q&L_#4QnfhJQd?U~Bod*js*2_1Wrl}`+1%VT-s*;i z2EySm<>lqf&CM}3HpbrGp04OAfVggt5(pUW%lUksP@ldv6!&}RaaNrtE;QpGSO&MC(sX;F2WWJ28l%U zOQYuIW@EcnU0oeDH8tA2#>Pfna@GRwc~iHyw~O^jve~S$0`2VV6wTY+-PI-E(+ae< zwnl${zqX-7B4MmRsZ@$&GFgzmzrWAK#6(enZt5!Z_VzL|GLlO>I5?oItBb+GL1P6< zr_*$Hb}}*NZ^E4E4*rVbaW67hY17%EG{lGJw1(W+eT0E zQ&Us4wYAaI)P&#fXLfd$g@pxO(K|q*RQ*V*kVnCIGc+{x)UE#3*Vh>s7Q9OOC7V?4EzBaR~^yk+g@gv9Up4U!M`y&d<+3 zO7Wk7Z;NG~RkNCXLZ1Xsl+xlpMho z|4~AnQvsyEfe(Ok!@AWioCCpsfg06IlE7bwRXWZEDj)C~@V{XKS-_t-w>tzu5ClOG k1VIo4K@bE%5QHbseLmtPEl(T~xBvhE07*qoM6N<$f~R=xWB>pF literal 0 HcmV?d00001 diff --git a/android/res/drawable-ldpi/icon.png b/android/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d07fc2ccac395dde24e2c3c1914b4fc430055ce0 GIT binary patch literal 555 zcmV+`0@VG9P)v9v)6179GX1ISi!#(GP_q^{t&v_0xIXO8wCs_Ey z+A^+Xl=ln1pCvHF3hv?)l8nYj+`-MX@R=QYf*WbTeO%q%-WEmCxwfX&YT4P@fp2(? zHa_F|bX*04)0M<=oSZiY2M4n{HozkYa0O4X_#e;mBA#I>zyn;L1A(n#EkHC!s*i$H zS@XhbfXm~ra=EP0XsFlg3WY+ZnKw2z?C$Q`+S;`el4Lq>C%_SOyIq@`o8mZD ztJUo9?`O85MJMQ zJ&Gb>c)qtnr_-^ww|9E_EAF8+ZLYUdr@w^9sljH+D>Tqejdtc=x{$j43f^Y;{CJb* tSWa`E>4A1JL&N=WJ!=X!tLfQnx29gqLF;Udsxx81dm$bN;>&g3pcX-}=j{82(z3=nh zbD&Tt6bgkxq3|u*3G*@F5?}%kfIEQYfxh>^2jDmG1?adP0xnwsDWC`J0MCHunx+K< zfxu9eA08fJn&z}j+zTK9TnDN$v3+k~1XuZSYbu0rD6BC|ge|&tr?*Mh_*%v_Dwsv=S zSzTQ{y4vk_+1S|dEP$=8E!Nl9kL+f%Nu^S8y0im;VOyqYlF#Sa+}tDYr|Y7d;I3HS+231Ayo^Whn=25j3k zX&LDHNc=b8rMn-v54;8)> zwoL3N;JaM=#nW!MEZfR+z%AK_S{{u(U|M#I*MKX3+teeSM}RbN*V%^-@rT1(pd_EY lqyE7t6bgkxp-}v1`~hg$!?QMX^2q=I002ovPDHLkV1l};Q=9+* literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/icon.png b/android/res/drawable-xhdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0274faa29210b29d557d8c323221ece75150761e GIT binary patch literal 1509 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 SI(hPH0L)FTOsb4Mp8g-mcOr!V literal 0 HcmV?d00001 diff --git a/android/src/com/github/codestation/qcma/QcmaNotification.java b/android/src/com/github/codestation/qcma/QcmaNotification.java new file mode 100644 index 0000000..3286923 --- /dev/null +++ b/android/src/com/github/codestation/qcma/QcmaNotification.java @@ -0,0 +1,34 @@ +package com.github.codestation.qcma; + +import android.content.Context; +import android.content.DialogInterface; +import android.widget.Toast; +import android.app.AlertDialog; + +public class QcmaNotification extends org.qtproject.qt5.android.bindings.QtActivity +{ + private static QcmaNotification m_instance; + + public QcmaNotification() + { + m_instance = this; + } + + public static void showToast(String message) + { + Context context = m_instance.getApplicationContext(); + Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT); + toast.show(); + } + + public static void showDialog(String message) + { + AlertDialog.Builder builder = new AlertDialog.Builder(m_instance); + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + } + }); + builder.setMessage(message).setTitle("QCMA message"); + AlertDialog dialog = builder.create(); + } +} diff --git a/src/androidmessage.cpp b/src/androidmessage.cpp new file mode 100644 index 0000000..d0aa014 --- /dev/null +++ b/src/androidmessage.cpp @@ -0,0 +1,45 @@ +/* + * QCMA: Cross-platform content manager assistant for the PS Vita + * + * Copyright (C) 2013 Codestation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "androidmessage.h" + +#include + +AndroidMessage::AndroidMessage(QObject *parent) : + QObject(parent) +{ +} + +void AndroidMessage::showToast(const QString &message) +{ + QAndroidJniObject javaMessage = QAndroidJniObject::fromString(message); + QAndroidJniObject::callStaticMethod("com/github/codestation/qcma/QcmaNotification", + "showToast", + "(Ljava/lang/String;)V", + javaMessage.object()); +} + +void AndroidMessage::showDialog(const QString &message) +{ + QAndroidJniObject javaMessage = QAndroidJniObject::fromString(message); + QAndroidJniObject::callStaticMethod("com/github/codestation/qcma/QcmaNotification", + "showDialog", + "(Ljava/lang/String;)V", + javaMessage.object()); +} diff --git a/src/androidmessage.h b/src/androidmessage.h new file mode 100644 index 0000000..86678e7 --- /dev/null +++ b/src/androidmessage.h @@ -0,0 +1,36 @@ +/* + * QCMA: Cross-platform content manager assistant for the PS Vita + * + * Copyright (C) 2013 Codestation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef ANDROIDMESSAGE_H +#define ANDROIDMESSAGE_H + +#include + +class AndroidMessage : public QObject +{ + Q_OBJECT +public: + explicit AndroidMessage(QObject *parent = 0); + +public slots: + void showToast(const QString &message); + void showDialog(const QString &message); +}; + +#endif // ANDROIDMESSAGE_H diff --git a/src/cmautils.cpp b/src/cmautils.cpp index 0275180..1c31d18 100644 --- a/src/cmautils.cpp +++ b/src/cmautils.cpp @@ -28,7 +28,13 @@ #ifdef Q_OS_WIN32 #include #else +#ifndef __ANDROID__ #include +#else +#include +#define statvfs statfs +#define fstatvfs fstatfs +#endif #endif bool getDiskSpace(const QString &dir, quint64 *free, quint64 *total)