summaryrefslogtreecommitdiffstats
path: root/plugins/geoservices
diff options
context:
space:
mode:
authorjounih <qt-info@nokia.com>2011-02-24 16:29:07 +0200
committerjounih <qt-info@nokia.com>2011-02-24 16:29:07 +0200
commit2137b9106de9c0e897e72d5626e3b40fd9a0ccca (patch)
tree60ca8d432b25eddd959ea69907f73e3845d44ec3 /plugins/geoservices
parent9e92855435c74ecae590856682c28ed318b28763 (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.pro6
-rwxr-xr-xplugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp103
-rw-r--r--plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h3
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> &parameters, 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;