diff options
author | vladimirb <vladimir.bezkorovainyi@nokia.com> | 2012-05-07 18:18:41 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-16 04:06:15 +0200 |
commit | 9c68d7c658bc1901efa7b2e43a4a8be61a313c40 (patch) | |
tree | be5b93df166ad469ddf4bb50b50aa644aef76eac /src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp | |
parent | 89e01acaae12f1e3dedcd51478f49d0fc4b340e8 (diff) | |
download | qtlocation-9c68d7c658bc1901efa7b2e43a4a8be61a313c40.tar.gz |
China shifting support for dual sim
Change-Id: I278bad0a8b167a3a40c8e737622a83683e966e64
Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
Diffstat (limited to 'src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp')
-rw-r--r-- | src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp | 185 |
1 files changed, 55 insertions, 130 deletions
diff --git a/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp b/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp index c33000c3..3a77f215 100644 --- a/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp @@ -51,6 +51,8 @@ #include "qgeotiledmapdata_nokia.h" #include "qgeotiledmappingmanagerengine_nokia.h" #include "qgeonetworkaccessmanager.h" +#include "qgeouriprovider.h" +#include "uri_constants.h" #include <qgeotilespec.h> @@ -66,17 +68,59 @@ QT_BEGIN_NAMESPACE -const char *MAPTILES_HOST = "1-4.maptile.lbs.ovi.com"; -const char *MAPTILES_HOST_CN = "a-k.maptile.maps.svc.nokia.com.cn"; +namespace +{ + QString sizeToStr(const QSize &size) + { + static const QString s256("256"); + static const QString s128("128"); + if (size.height() >= LARGE_TILE_DIMENSION || + size.width() >= LARGE_TILE_DIMENSION) + return s256; + else + return s128; + } -QGeoTileFetcherNokia::QGeoTileFetcherNokia(QGeoNetworkAccessManager *networkManager, - QGeoTiledMappingManagerEngine *engine) + QString mapIdToStr(int mapId) + { + typedef std::map<int, QString> MapTypeRegistry; + static MapTypeRegistry registeredTypes; + if (registeredTypes.empty()) { + registeredTypes[0] = "normal.day"; + registeredTypes[1] = "normal.day"; + registeredTypes[2] = "satellite.day"; + registeredTypes[3] = "terrain.day"; + registeredTypes[4] = "hybrid.day"; + registeredTypes[5] = "normal.day.transit"; + registeredTypes[6] = "normal.day.grey"; + registeredTypes[7] = "normal.day.mobile"; + registeredTypes[8] = "terrain.day.mobile"; + registeredTypes[9] = "hybrid.day.mobile"; + registeredTypes[10] = "normal.day.transit.mobile"; + registeredTypes[11] = "normal.day.grey.mobile"; + } + + MapTypeRegistry::const_iterator it = registeredTypes.find(mapId); + if (it != registeredTypes.end()) { + return it->second; + } + + qWarning() << "Unknown mapId: " << mapId; + return "normal.day"; + } +} +QGeoTileFetcherNokia::QGeoTileFetcherNokia( + const QMap<QString, QVariant> ¶meters, + QGeoNetworkAccessManager *networkManager, + QGeoTiledMappingManagerEngine *engine, + const QSize &tileSize) : QGeoTileFetcher(engine), m_engineNokia(static_cast<QGeoTiledMappingManagerEngineNokia *>(engine)), m_networkManager(networkManager), - m_firstSubdomain(QChar::Null), + m_parameters(parameters), + m_tileSize(tileSize), m_copyrightsReply(0), - m_maxSubdomains(0) + m_uriProvider(new QGeoUriProvider(this, parameters, "mapping.host", MAP_TILES_HOST, MAP_TILES_HOST_CN)) { Q_ASSERT(networkManager); m_networkManager->setParent(this); @@ -86,16 +130,8 @@ QGeoTileFetcherNokia::~QGeoTileFetcherNokia() {} bool QGeoTileFetcherNokia::init() { - setHost(MAPTILES_HOST); - qsrand((uint)QTime::currentTime().msec()); - if (m_parameters.contains("mapping.host")) { - QString host = m_parameters.value("mapping.host").toString(); - if (!host.isEmpty()) - setHost(host); - } - if (m_parameters.contains("app_id")) { m_applicationId = m_parameters.value("app_id").toString(); } @@ -103,20 +139,6 @@ bool QGeoTileFetcherNokia::init() if (m_parameters.contains("token")) { m_token = m_parameters.value("token").toString(); } - -#ifdef USE_CHINA_NETWORK_REGISTRATION - connect(&m_networkInfo, SIGNAL(currentMobileCountryCodeChanged(int, const QString&)), - SLOT(currentMobileCountryCodeChanged(int, const QString&))); - currentMobileCountryCodeChanged(0, m_networkInfo.currentMobileCountryCode(0)); -#endif - - // Temporary testing aid for setting China maptile server - QFile file("/.enable_china_maptile_server"); - if (file.exists()) { - qDebug() << "CHINA MAPTILE SERVER SET FOR TESTING PURPOSES."; - setHost(MAPTILES_HOST_CN); - } - return true; } @@ -137,19 +159,13 @@ QGeoTiledMapReply *QGeoTileFetcherNokia::getTileImage(const QGeoTileSpec &spec) QString QGeoTileFetcherNokia::getRequestString(const QGeoTileSpec &spec) { - const char subdomain = m_maxSubdomains ? m_firstSubdomain.toLatin1() + - qrand() % m_maxSubdomains : 0; static const QString http("http://"); static const QString path("/maptiler/v2/maptile/newest/"); - static const QChar dot('.'); static const QChar slash('/'); QString requestString = http; - if (subdomain != 0) { - requestString += subdomain; - requestString += dot; - } - requestString += m_host; + + requestString += m_uriProvider->getCurrentHost(); requestString += path; requestString += mapIdToStr(spec.mapId()); @@ -180,102 +196,15 @@ QString QGeoTileFetcherNokia::getRequestString(const QGeoTileSpec &spec) return requestString; } -QString QGeoTileFetcherNokia::sizeToStr(const QSize &size) -{ - static const QString s256("256"); - static const QString s128("128"); - if (size.height() >= LARGE_TILE_DIMENSION || - size.width() >= LARGE_TILE_DIMENSION) - return s256; - else - return s128; -} - -QString QGeoTileFetcherNokia::mapIdToStr(int mapId) -{ - typedef std::map<int, QString> MapTypeRegistry; - static MapTypeRegistry registeredTypes; - if (registeredTypes.empty()) { - registeredTypes[0] = "normal.day"; - registeredTypes[1] = "normal.day"; - registeredTypes[2] = "satellite.day"; - registeredTypes[3] = "terrain.day"; - registeredTypes[4] = "hybrid.day"; - registeredTypes[5] = "normal.day.transit"; - registeredTypes[6] = "normal.day.grey"; - registeredTypes[7] = "normal.day.mobile"; - registeredTypes[8] = "terrain.day.mobile"; - registeredTypes[9] = "hybrid.day.mobile"; - registeredTypes[10] = "normal.day.transit.mobile"; - registeredTypes[11] = "normal.day.grey.mobile"; - } - - MapTypeRegistry::const_iterator it = registeredTypes.find(mapId); - if (it != registeredTypes.end()) { - return it->second; - } - - qWarning() << "Unknown mapId: " << mapId; - return "normal.day"; -} - -void QGeoTileFetcherNokia::setParams(const QMap<QString, QVariant> ¶meters) -{ - m_parameters = parameters; -} - -void QGeoTileFetcherNokia::setTileSize(QSize tileSize) -{ - m_tileSize = tileSize; -} - -const QString & QGeoTileFetcherNokia::token() const +QString QGeoTileFetcherNokia::token() const { return m_token; } -const QString & QGeoTileFetcherNokia::host() const -{ - return m_host; -} - -const QString & QGeoTileFetcherNokia::applicationId() const +QString QGeoTileFetcherNokia::applicationId() const { return m_applicationId; } -QChar QGeoTileFetcherNokia::firstSubdomain() const -{ - return m_firstSubdomain; -} - -unsigned char QGeoTileFetcherNokia::maxSubdomains() const -{ - return m_maxSubdomains; -} - -void QGeoTileFetcherNokia::setHost(const QString &host) -{ - if (host.length() > 4 && host.at(1) == QChar('-') && host.at(3) == QChar('.')) { - QString realHost = host.right(host.length() - 4); - m_firstSubdomain = host.at(0); - m_maxSubdomains = host.at(2).toLatin1() - host.at(0).toLatin1() + 1; - m_host = realHost; - } else { - m_host = host; - m_firstSubdomain = QChar::Null; - m_maxSubdomains = 0; - } -} - -#ifdef USE_CHINA_NETWORK_REGISTRATION -void QGeoTileFetcherNokia::currentMobileCountryCodeChanged(int interface, const QString & mcc) -{ - Q_UNUSED(interface) - if (mcc == "460" || mcc == "461" || mcc == "454" || mcc == "455") { - setHost(MAPTILES_HOST_CN); - } -} -#endif void QGeoTileFetcherNokia::copyrightsFetched() { @@ -288,12 +217,8 @@ void QGeoTileFetcherNokia::copyrightsFetched() void QGeoTileFetcherNokia::fetchCopyrightsData() { QString copyrightUrl = "http://"; - if (!firstSubdomain().isNull()) { - copyrightUrl += firstSubdomain(); - copyrightUrl += "."; - } - copyrightUrl += host(); + copyrightUrl += m_uriProvider->getCurrentHost(); copyrightUrl += "/maptiler/v2/copyright/newest?output=json"; if (!token().isEmpty()) { |