6#include "KmlStateTagHandler.h" 
    8#include "MarbleDebug.h" 
   10#include "GeoDataItemIcon.h" 
   11#include "GeoDataParser.h" 
   12#include "KmlElementDictionary.h" 
   18KML_DEFINE_TAG_HANDLER(state)
 
   20GeoNode *KmlstateTagHandler::parse(GeoParser &parser)
 const 
   22    Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1StringView(kmlTag_state)));
 
   24    GeoStackItem parentItem = parser.parentElement();
 
   26    GeoDataItemIcon::ItemIconStates itemIconState;
 
   28    if (parentItem.represents(kmlTag_ItemIcon)) {
 
   29        QString value = parser.readElementText().trimmed();
 
   30        QStringList iconStateTextList = value.
split(QLatin1Char(
' '));
 
   32        for (
const QString &value : iconStateTextList) {
 
   33            if (value == QLatin1StringView(
"open")) {
 
   34                itemIconState |= GeoDataItemIcon::Open;
 
   35            } 
else if (value == QLatin1StringView(
"closed")) {
 
   36                itemIconState |= GeoDataItemIcon::Closed;
 
   37            } 
else if (value == QLatin1StringView(
"error")) {
 
   38                itemIconState |= GeoDataItemIcon::Error;
 
   39            } 
else if (value == QLatin1StringView(
"fetching0")) {
 
   40                itemIconState |= GeoDataItemIcon::Fetching0;
 
   41            } 
else if (value == QLatin1StringView(
"fetching1")) {
 
   42                itemIconState |= GeoDataItemIcon::Fetching1;
 
   43            } 
else if (value == QLatin1StringView(
"fetching2")) {
 
   44                itemIconState |= GeoDataItemIcon::Fetching2;
 
   46                mDebug() << 
"Cannot parse state value" << value;
 
   50        parentItem.nodeAs<GeoDataItemIcon>()->setState(itemIconState);
 
Binds a QML item to a specific geodetic location in screen coordinates.
 
QStringList split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) const const