7 #include "KmlListStyleTagWriter.h"
9 #include "GeoDataTypes.h"
10 #include "GeoWriter.h"
11 #include "KmlElementDictionary.h"
12 #include "KmlColorStyleTagWriter.h"
18 kml::kmlTag_nameSpaceOgc22),
19 new KmlListStyleTagWriter() );
21 bool KmlListStyleTagWriter::write(
const GeoNode *node,
22 GeoWriter& writer )
const
24 const GeoDataListStyle *listStyle =
static_cast<const GeoDataListStyle*
>( node );
25 bool const isEmpty = listStyle->listItemType() == GeoDataListStyle::Check &&
27 listStyle->itemIconList().isEmpty();
31 writer.writeStartElement( kml::kmlTag_ListStyle );
33 QString const itemType = itemTypeToString( listStyle->listItemType() );
34 writer.writeOptionalElement( kml::kmlTag_listItemType, itemType,
"check" );
35 QString const color = KmlColorStyleTagWriter::formatColor( listStyle->backgroundColor() );
36 writer.writeOptionalElement( kml::kmlTag_bgColor, color,
"ffffffff" );
38 for( GeoDataItemIcon* icon: listStyle->itemIconList() ) {
39 writer.writeStartElement(kml::kmlTag_ItemIcon);
40 QString const state = iconStateToString( icon->state() );
41 writer.writeOptionalElement( kml::kmlTag_state, state,
"open" );
42 writer.writeOptionalElement( kml::kmlTag_href, icon->iconPath() );
43 writer.writeEndElement();
46 writer.writeEndElement();
50 QString KmlListStyleTagWriter::itemTypeToString( GeoDataListStyle::ListItemType itemType )
54 case GeoDataListStyle::CheckOffOnly:
return "checkOffOnly";
55 case GeoDataListStyle::CheckHideChildren:
return "checkHideChildren";
56 case GeoDataListStyle::RadioFolder:
return "radioFolder";
57 default:
return "check";
61 QString KmlListStyleTagWriter::iconStateToString( GeoDataItemIcon::ItemIconStates state )
64 if ( state & GeoDataItemIcon::Open ) {
67 if ( state & GeoDataItemIcon::Closed ) {
68 stateList <<
"closed";
70 if ( state & GeoDataItemIcon::Error ) {
73 if ( state & GeoDataItemIcon::Fetching0 ) {
74 stateList <<
"fetching0";
76 if ( state & GeoDataItemIcon::Fetching1 ) {
77 stateList <<
"fetching1";
79 if ( state & GeoDataItemIcon::Fetching2 ) {
80 stateList <<
"fetching2";