From e5f6e76b379fecd56a5dac6a68d99fb8fb409928 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Fri, 22 Jul 2011 20:39:07 +0300 Subject: [PATCH] [android] Fix to previous commit - added GetFilesInDir support --- android/jni/android_framework.cpp | 2 +- android/jni/android_platform.cpp | 37 ++++++++++++++++++++++--------- android/jni/android_platform.hpp | 3 ++- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/android/jni/android_framework.cpp b/android/jni/android_framework.cpp index 88e152700b..e3e19caf65 100644 --- a/android/jni/android_framework.cpp +++ b/android/jni/android_framework.cpp @@ -1,4 +1,4 @@ -#include "framework.h" +#include "android_framework.hpp" #include "jni_helper.h" #include "rendering.h" #include "../../std/shared_ptr.hpp" diff --git a/android/jni/android_platform.cpp b/android/jni/android_platform.cpp index 6223cc4816..058df63c12 100644 --- a/android/jni/android_platform.cpp +++ b/android/jni/android_platform.cpp @@ -1,4 +1,4 @@ -#include "platform.h" +#include "android_platform.hpp" #include "jni_string.h" #include "../../base/logging.hpp" @@ -19,19 +19,34 @@ ModelReader * AndroidPlatform::GetReader(string const & file) const if (IsFileExists(m_writableDir + file)) return BasePlatformImpl::GetReader(file); else - return new ZipFileReader(m_resourcesDir, "assets/" + file); + { // paths from GetFilesInDir will already contain "assets/" + if (file.find("assets/") != string::npos) + return new ZipFileReader(m_resourcesDir, file); + else + return new ZipFileReader(m_resourcesDir, "assets/" + file); + } } -void AndroidPlatform::GetFontNames(FilesList & res) const +void AndroidPlatform::GetFilesInDir(string const & directory, string const & mask, FilesList & res) const { - res.push_back("01_dejavusans.ttf"); - res.push_back("02_wqy-microhei.ttf"); - res.push_back("03_jomolhari-id-a3d.ttf"); - res.push_back("04_padauk.ttf"); - res.push_back("05_khmeros.ttf"); - res.push_back("06_code2000.ttf"); - - /// @todo Need to make refactoring of yg fonts + if (ZipFileReader::IsZip(directory)) + { // Get files list inside zip file + res = ZipFileReader::FilesList(directory); + // filter out according to the mask + // @TODO we don't support wildcards at the moment + string fixedMask = mask; + if (fixedMask.size() && fixedMask[0] == '*') + fixedMask.erase(0, 1); + for (FilesList::iterator it = res.begin(); it != res.end();) + { + if (it->find(fixedMask) == string::npos) + it = res.erase(it); + else + ++it; + } + } + else + BasePlatformImpl::GetFilesInDir(directory, mask, res); } int AndroidPlatform::CpuCores() const diff --git a/android/jni/android_platform.hpp b/android/jni/android_platform.hpp index da79e21bff..d3b9a205f3 100644 --- a/android/jni/android_platform.hpp +++ b/android/jni/android_platform.hpp @@ -10,8 +10,9 @@ public: void Initialize(JNIEnv * env, jobject activity, jstring apkPath, jstring storagePath); virtual ModelReader * GetReader(string const & file) const; + /// Overrided to support zip file listing + virtual void GetFilesInDir(string const & directory, string const & mask, FilesList & res) const; - virtual void GetFontNames(FilesList & res) const; virtual int CpuCores() const; virtual string DeviceID() const;