#include "filedialogextern.h" #include "simpleCustomEvent.h" #include #include #ifdef ANDROID #include #include #include //#include #include #else #include #include #endif #include #include #define DEBUG qDebug()<<__func__<<__LINE__ static QObject *g_listener = 0; FileDialogExtern::FileDialogExtern(QObject *parent) : QObject(parent) { } bool FileDialogExtern::event(QEvent *e) { #ifdef ANDROID if(e->type() == SimpleCustomEvent::eventType()) { SimpleCustomEvent *sce = (SimpleCustomEvent*)e; qDebug()<<"FileDialogExtern::event:"<m_requestCode<m_resultCode; if(sce->m_requestCode == 3){ if(sce->m_resultCode == -1){ QStringList paths = sce->m_msg.toStringList(); DEBUG<m_resultCode == 0) { DEBUG<<"cancel"; emit rejected(); } }/*else { m_captureState->setText("cancel"); }*/ return true; } #endif return QObject::event(e); } bool FileDialogExtern::open(){ DEBUG; #ifdef ANDROID //QAndroidJniObject javaAction = QAndroidJniObject::fromString(name); g_listener = this; QAndroidJniObject::callStaticMethod("an/qt/extendsQtWithJava/ExtendsQtWithJava", "fileManagerActivity", "(Z)V",(m_fileMode == OpenFiles)); #else QString fdir = m_folder.isEmpty()?QDir::currentPath():m_folder; QStringList fpaths; if(m_fileMode == OpenFile){ QString fpath = QFileDialog::getOpenFileName(nullptr,m_title,fdir,"all file(*)"); if(!fpath.isEmpty()) fpaths.push_back(fpath); }else if (m_fileMode == OpenFiles) { fpaths = QFileDialog::getOpenFileNames(nullptr,m_title,fdir,"all file(*)"); } DEBUG<GetArrayLength(fileUrls); QStringList paths; int req = 3; int ret = result; if(result == -1){ //ret = 3; for (int i=0;i(env->GetObjectArrayElement(fileUrls,i)); QString path=QAndroidJniObject::fromLocalRef(env->GetObjectArrayElement(fileUrls,i)).toString(); // qDebug() << "onFileManager, result - " << result << " fileUrl - " << fileUrl; //jboolean copy = false; //const char *nativeString = env->GetStringUTFChars(fileUrl, ©); //qDebug() << "onFileManager, nativeString - " << nativeString; // QString path = nativeString; // env->ReleaseStringUTFChars(fileUrl, nativeString); if(!path.isEmpty() && QFile::exists(path)) paths.push_back(path); qDebug() << "onFileManager, path - " << path; } }else if(result != 0){ ret = -3; qDebug() << "could not read the captured file!"; } DEBUG<