added code for writing legend settings with writeEntry()

git-svn-id: http://svn.osgeo.org/qgis/trunk@4071 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
mhugent 2005-10-12 18:19:40 +00:00
parent eea90676b6
commit 8e1cb57102
3 changed files with 100 additions and 0 deletions

View File

@ -39,6 +39,7 @@
#include "qgsmapcanvas.h"
#include "qgsmaplayer.h"
#include "qgsmaplayerregistry.h"
#include "qgsproject.h"
#include "qgsrasterlayerproperties.h"
#include <iostream>
#include <qlayout.h>
@ -829,3 +830,95 @@ bool QgsLegend::readXML(QDomNode& legendnode)
}
return true;
}
void QgsLegend::saveToProject()
{
int lgroupidx=0;
int llayeridx=0;
QString groupstring; //string which have to be prepended if an element is into a group
QListViewItemIterator it(this);
while(it.current())
{
QgsLegendItem *item = dynamic_cast<QgsLegendItem*>(it.current());
if(item)
{
switch(item->type())
{
case QgsLegendItem::LEGEND_GROUP:
++lgroupidx;
groupstring = "/LegendGroup"+QString::number(lgroupidx);
QgsProject::instance()->writeEntry("Legend","/LegendGroup"+QString::number(lgroupidx)+"/Name",item->text(0));
if(item->isOpen())
{
QgsProject::instance()->writeEntry("Legend","/LegendGroup"+QString::number(lgroupidx)+"/Open",true);
}
else
{
QgsProject::instance()->writeEntry("Legend","/LegendGroup"+QString::number(lgroupidx)+"/Open",true);
}
break;
case QgsLegendItem::LEGEND_LAYER:
++llayeridx;
if(item->parent()==0)//legend layer is not in a group
{
groupstring="";
}
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/Name",item->text(0));
if(item->isOpen())
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/Open",true);
}
else
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/Open",false);
}
break;
case QgsLegendItem::LEGEND_PROPERTY_GROUP:
if(item->isOpen())
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/LegendPropertyGroup/Open", true);
}
else
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/LegendPropertyGroup/Open", false);
}
break;
case QgsLegendItem::LEGEND_SYMBOL_GROUP:
if(item->isOpen())
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/LegendSymbolGroup/Open", true);
}
else
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/LegendSymbolGroup/Open", false);
}
break;
case QgsLegendItem::LEGEND_LAYER_FILE_GROUP:
if(item->isOpen())
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/LegendLayerFileGroup/Open", true);
}
else
{
QgsProject::instance()->writeEntry("Legend",groupstring+"/LegendLayer"+QString::number(llayeridx)+"/LegendLayerFileGroup/Open", false);
}
break;
default: //do nothing for the leaf nodes
break;
}
}
++it;
}
}
void QgsLegend::restoreFromProject()
{
}

View File

@ -101,9 +101,15 @@ class QgsLegend : public QListView
/**Removes a checkbox from mCheckBoxes. Does not delete the objects*/
void unregisterCheckBox(QListViewItem* item);
/**Writes the content of the legend using the key system of QgsProject*/
void saveToProject();
/**Writes the content of the legend to a project file*/
bool writeXML(QDomNode & layer_node, QDomDocument & document);
/**Restores the legend from a project file using the key system of QgsProject*/
void restoreFromProject();
/**Restores the legend from a project file*/
bool readXML(QDomNode& legendnode);

View File

@ -1295,6 +1295,7 @@ bool QgsProject::write()
if(theLegend)
{
theLegend->writeXML(qgisNode, *doc);
//theLegend->saveToProject();
}
}