Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qgeofiletilecachenokia.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5#include <QtLocation/private/qgeotilespec_p.h>
6#include <QDir>
7
9
15
20
22{
23 QString filename = spec.plugin();
24 filename += QLatin1String("-");
25 filename += QString::number(spec.mapId());
26 filename += QLatin1String("-");
27 filename += QString::number(spec.zoom());
28 filename += QLatin1String("-");
29 filename += QString::number(spec.x());
30 filename += QLatin1String("-");
31 filename += QString::number(spec.y());
32
33 //Append version if real version number to ensure backwards compatibility and eviction of old tiles
34 if (spec.version() != -1) {
35 filename += QLatin1String("-");
36 filename += QString::number(spec.version());
37 }
38
39 filename += QLatin1String("-");
40 filename += m_ppi;
41
42 filename += QLatin1String(".");
43 filename += format;
44
46
47 return dir.filePath(filename);
48}
49
51{
52 QGeoTileSpec emptySpec;
53
54 const QStringList parts = filename.split('.');
55
56 if (parts.length() != 2)
57 return emptySpec;
58
59 const QString name = parts.at(0);
60 const QStringList fields = name.split('-');
61
62 const qsizetype length = fields.length();
63 if (length != 6 && length != 7)
64 return emptySpec;
65 else if (fields.last() != m_ppi)
66 return QGeoTileSpec();
67
68 QList<int> numbers;
69
70 bool ok = false;
71 for (qsizetype i = 1; i < length-1; ++i) { // skipping -<ppi>
72 ok = false;
73 int value = fields.at(i).toInt(&ok);
74 if (!ok)
75 return emptySpec;
76 numbers.append(value);
77 }
78
79 //File name without version, append default
80 if (numbers.length() < 5)
81 numbers.append(-1);
82
83 return QGeoTileSpec(fields.at(0),
84 numbers.at(0),
85 numbers.at(1),
86 numbers.at(2),
87 numbers.at(3),
88 numbers.at(4));
89}
90
\inmodule QtCore
Definition qdir.h:20
QString tileSpecToFilename(const QGeoTileSpec &spec, const QString &format, const QString &directory) const override
QGeoTileSpec filenameToTileSpec(const QString &filename) const override
QGeoFileTileCacheNokia(int ppi, const QString &directory=QString(), QObject *parent=nullptr)
QString directory() const
int x() const
int version() const
int zoom() const
int mapId() const
QString plugin() const
int y() const
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
QStringList split(const QString &sep, Qt::SplitBehavior behavior=Qt::KeepEmptyParts, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Splits the string into substrings wherever sep occurs, and returns the list of those strings.
Definition qstring.cpp:8218
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:8084
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum GLuint GLenum GLsizei length
GLuint name
GLint GLsizei GLsizei GLenum format
QLatin1StringView QLatin1String
Definition qstringfwd.h:31
ptrdiff_t qsizetype
Definition qtypes.h:165
QString dir
[11]