diff options
author | jounih <qt-info@nokia.com> | 2011-02-24 16:29:07 +0200 |
---|---|---|
committer | jounih <qt-info@nokia.com> | 2011-02-24 16:29:07 +0200 |
commit | 2137b9106de9c0e897e72d5626e3b40fd9a0ccca (patch) | |
tree | 60ca8d432b25eddd959ea69907f73e3845d44ec3 /plugins/geoservices | |
parent | 9e92855435c74ecae590856682c28ed318b28763 (diff) |
geoservices Nokia plugin: network cache improvements
* Remove systeminfo dependency from Symbian
* Move cache directory parameter check before default directory creation
Diffstat (limited to 'plugins/geoservices')
-rw-r--r-- | plugins/geoservices/nokia/nokia.pro | 6 | ||||
-rwxr-xr-x | plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp | 103 | ||||
-rw-r--r-- | plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h | 3 |
3 files changed, 64 insertions, 48 deletions
diff --git a/plugins/geoservices/nokia/nokia.pro b/plugins/geoservices/nokia/nokia.pro index 1334677582..7ad8f17b96 100644 --- a/plugins/geoservices/nokia/nokia.pro +++ b/plugins/geoservices/nokia/nokia.pro @@ -40,17 +40,13 @@ INCLUDEPATH += $$SOURCE_DIR/src/location \ $$SOURCE_DIR/src/location/maps/tiled symbian { - contains(mobility_modules,systeminfo) { - DEFINES += SYMBIAN_ENABLE_CACHE - MOBILITY += systeminfo - } - TARGET.EPOCALLOWDLLDATA = 1 TARGET.CAPABILITY = ALL -TCB TARGET.UID3 = 0x2002BFCA pluginDep.sources = $${TARGET}.dll pluginDep.path = $${QT_PLUGINS_BASE_DIR}/$${PLUGIN_TYPE} DEPLOYMENT += pluginDep + LIBS += -lefsrv } RESOURCES += resource.qrc diff --git a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp index 4c489ab594..8c03e6c589 100755 --- a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp +++ b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp @@ -61,18 +61,45 @@ #define LARGE_TILE_DIMENSION 256 -#if defined(Q_OS_SYMBIAN) && defined(SYMBIAN_ENABLE_CACHE) -#include <qsystemstorageinfo.h> -#endif - #define DISK_CACHE_MAX_SIZE 50*1024*1024 //50MB -#if defined(Q_OS_WINCE_WM) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) || (defined(Q_OS_SYMBIAN) && !defined(SYMBIAN_ENABLE_CACHE)) +#if defined(Q_OS_WINCE_WM) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) #undef DISK_CACHE_ENABLED #else #define DISK_CACHE_ENABLED 1 #endif +#if defined(Q_OS_SYMBIAN) +#include <f32file.h> +QChar QGeoMappingManagerEngineNokia::findFirstInternalFlashDrive() +{ + QChar flashDrive; + RFs fsSession; + // if something leaves just return an empty QChar + TRAP_IGNORE( + User::LeaveIfError(fsSession.Connect()); + CleanupClosePushL(fsSession); + TDriveList drivelist; + User::LeaveIfError(fsSession.DriveList(drivelist)); + for (int i = 0; i < KMaxDrives; ++i) { + if (drivelist[i] != 0) { + TChar driveChar; + User::LeaveIfError(RFs::DriveToChar(i, driveChar)); + TDriveInfo driveInfo; + if (fsSession.Drive(driveInfo, i) != KErrNone) + continue; + if ((driveInfo.iDriveAtt & KDriveAttInternal) && driveInfo.iType == EMediaHardDisk) { + flashDrive = QChar(driveChar); + break; + } + } + } + CleanupStack::PopAndDestroy(&fsSession); + ) + return flashDrive; +} +#endif //Q_OS_SYMBIAN + QGeoMappingManagerEngineNokia::QGeoMappingManagerEngineNokia(const QMap<QString, QVariant> ¶meters, QGeoServiceProvider::Error *error, QString *errorString) : QGeoTiledMappingManagerEngine(parameters), m_cache(0), @@ -129,51 +156,41 @@ QGeoMappingManagerEngineNokia::QGeoMappingManagerEngineNokia(const QMap<QString, else if (parameters.contains("token")) { m_token = parameters.value("token").toString(); } - - #ifdef DISK_CACHE_ENABLED - -#if defined(Q_OS_SYMBIAN) && defined(SYMBIAN_ENABLE_CACHE) - QDir dir; - QSystemStorageInfo info; - QStringList drives = info.logicalDrives(); - for (int i=0;i<drives.count();++i) { - if (info.typeForDrive(drives.at(i))==QSystemStorageInfo::InternalFlashDrive){ - dir.setPath(drives.at(i)+":/"); - QString cachePath("data/nokia"); - dir.mkpath(cachePath); - dir.cd(cachePath); - break; + QString cacheDir; + if (parameters.contains("mapping.cache.directory")) + cacheDir = parameters.value("mapping.cache.directory").toString(); + + if (cacheDir.isEmpty()) { +#if defined(Q_OS_SYMBIAN) + QChar driveLetter(findFirstInternalFlashDrive()); + if (!driveLetter.isNull()) { + cacheDir = driveLetter; + cacheDir += ":/data/nokia/maptiles"; } - } #else - QDir dir = QDir::temp(); + cacheDir = QDir::temp().path()+"/maptiles"; #endif - if (!dir.path().isEmpty()) { - m_cache = new QNetworkDiskCache(this); - - dir.mkdir("maptiles"); - dir.cd("maptiles"); - - m_cache->setCacheDirectory(dir.path()); - - if (parameters.contains("mapping.cache.directory")) { - QString cacheDir = parameters.value("mapping.cache.directory").toString(); - if (!cacheDir.isEmpty()) - m_cache->setCacheDirectory(cacheDir); - } - - if (parameters.contains("mapping.cache.size")) { - bool ok = false; - qint64 cacheSize = parameters.value("mapping.cache.size").toString().toLongLong(&ok); - if (ok) - m_cache->setMaximumCacheSize(cacheSize); } + if (!cacheDir.isEmpty()) { + m_cache = new QNetworkDiskCache(this); + QDir dir; + dir.mkpath(cacheDir); + dir.setPath(cacheDir); + + m_cache->setCacheDirectory(dir.path()); + + if (parameters.contains("mapping.cache.size")) { + bool ok = false; + qint64 cacheSize = parameters.value("mapping.cache.size").toString().toLongLong(&ok); + if (ok) + m_cache->setMaximumCacheSize(cacheSize); + } - if (m_cache->maximumCacheSize() > DISK_CACHE_MAX_SIZE) - m_cache->setMaximumCacheSize(DISK_CACHE_MAX_SIZE); + if (m_cache->maximumCacheSize() > DISK_CACHE_MAX_SIZE) + m_cache->setMaximumCacheSize(DISK_CACHE_MAX_SIZE); - m_networkManager->setCache(m_cache); + m_networkManager->setCache(m_cache); } #endif } diff --git a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h index 823149139e..6854685cb3 100644 --- a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h +++ b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h @@ -78,6 +78,9 @@ private: static QString sizeToStr(const QSize &size); static QString mapTypeToStr(QGraphicsGeoMap::MapType type); +#if defined(Q_OS_SYMBIAN) + QChar findFirstInternalFlashDrive(); +#endif //Q_OS_SYMBIAN QNetworkAccessManager *m_networkManager; QNetworkDiskCache *m_cache; |