improved legend drag and drop handling, enabled 'create spatial index' button in vector props again

git-svn-id: http://svn.osgeo.org/qgis/trunk@4798 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
mhugent 2006-02-04 21:15:23 +00:00
parent fa235f96a4
commit ef58e59567
5 changed files with 53 additions and 15 deletions

View File

@ -119,19 +119,16 @@ outlinecolor,outlinestyle,outlinewidth,fillcolor,fillpattern) >
<!ELEMENT legend (legendgroup* | legendlayer*) >
<!ATTLIST legend open (1|0|true|false) "false"> #open or closed
<!ELEMENT legendgroup>
<!ELEMENT legendgroup (legendlayer*) >
<!ATTLIST legendgroup open (1|0|true|false) "false" name CDATA> #open or closed
<!ELEMENT legendlayer>
<!ELEMENT legendlayer (legendsymbologyitem+, legendlayerfilegroup>
<!ATTLIST legendlayer open (1|0|true|false) "false" checked (Qt::Checked|Qt::Unchecked|Qt::PartiallyChecked) "Qt::Checked"> #open or closed
<!ELEMENT legendlayerfilegroup>
<!ATTLIST legendlayerfile open (1|0|true|false) "false"> #open or closed
<!ELEMENT legendlayerfilegroup (legendlayerfile*) >
<!ATTLIST legendlayerfilegroup open (1|0|true|false) "false" > #open or closed
<!ATTLIST legendlayerfilegroup hidden(1|0|true|false) "false"> #hidden or shown
<!ELEMENT legendlayerfile>
<!ATTLIST legendlayerfile id CDATA> #unique layer id of the associated layer
<!ATTLIST legendlayerfile open (1|0|true|false) "false"> #open or closed
<!ELEMENT legendsymbologygroup>
<!ATTLIST legendsymbologygroup open (1|0|true|false) "false"> #open or closed
<!ELEMENT legendsymbologyitem>
<!ATTLIST legendsymbologyitem open (1|0|true|false) "false"> #open or closed
<!ELEMENT legenpropertygroup>
<!ATTLIST legendpropertygroup open (1|0|true|false) "false"> #open or closed

View File

@ -234,7 +234,7 @@ void QgsLegend::mouseMoveEvent(QMouseEvent * e)
#ifdef QGISDEBUG
qWarning("mouseMoveEvent::NO_ACTION");
#endif
if(mItemBeingMovedOrigPos != getItemPos(mItemBeingMoved))
if(origin->type() == QgsLegendItem::LEGEND_LAYER_FILE && mItemBeingMovedOrigPos != getItemPos(mItemBeingMoved))
{
resetToInitialPosition(mItemBeingMoved);
}
@ -654,7 +654,6 @@ void QgsLegend::collapseAll()
bool QgsLegend::writeXML( QDomNode & layer_node, QDomDocument & document )
{
#if 0
QDomElement legendnode = document.createElement("legend");
layer_node.appendChild(legendnode);
@ -760,12 +759,21 @@ bool QgsLegend::writeXML( QDomNode & layer_node, QDomDocument & document )
layerfilegroupnode = document.createElement("filegroup");
if(isItemExpanded(item))
{
layerfilegroupnode.setAttribute("open", "true");
layerfilegroupnode.setAttribute("open", "true");
}
else
{
layerfilegroupnode.setAttribute("open", "false");
layerfilegroupnode.setAttribute("open", "false");
}
if(isItemHidden(item))
{
layerfilegroupnode.setAttribute("hidden", "true");
}
else
{
layerfilegroupnode.setAttribute("hidden", "false");
}
legendlayernode.appendChild(layerfilegroupnode);
break;
@ -785,7 +793,6 @@ bool QgsLegend::writeXML( QDomNode & layer_node, QDomDocument & document )
}
currentItem = nextItem(currentItem);
}
#endif
return true;
}
@ -1338,6 +1345,7 @@ QDomNode QgsLegend::nextDomNode(const QDomNode& theNode)
void QgsLegend::moveItem(QTreeWidgetItem* move, QTreeWidgetItem* after)
{
static_cast<QgsLegendItem*>(move)->storeAppearanceSettings();//store settings in the moved item and its childern
if(move->parent())
{
move->parent()->takeChild(move->parent()->indexOfChild(move));
@ -1354,6 +1362,7 @@ void QgsLegend::moveItem(QTreeWidgetItem* move, QTreeWidgetItem* after)
{
insertTopLevelItem(indexOfTopLevelItem(after)+1, move);
}
static_cast<QgsLegendItem*>(move)->restoreAppearanceSettings();//apply the settings again
}
void QgsLegend::removeItem(QTreeWidgetItem* item)

View File

@ -99,3 +99,25 @@ void QgsLegendItem::removeAllChildren()
takeChild(0);
}
}
void QgsLegendItem::storeAppearanceSettings()
{
mExpanded = treeWidget()->isItemExpanded(this);
mHidden = treeWidget()->isItemHidden(this);
//call recursively for all subitems
for(int i = 0; i < childCount(); ++i)
{
static_cast<QgsLegendItem*>(child(i))->storeAppearanceSettings();
}
}
void QgsLegendItem::restoreAppearanceSettings()
{
treeWidget()->setItemExpanded(this, mExpanded);
treeWidget()->setItemHidden(this, mHidden);
//call recursively for all subitems
for(int i = 0; i < childCount(); ++i)
{
static_cast<QgsLegendItem*>(child(i))->restoreAppearanceSettings();
}
}

View File

@ -89,9 +89,19 @@ public:
/**Removes all the children of this item. This function is for qt-4.0.1 compatibility, where
'takeChildren()' does not yet exist*/
void removeAllChildren();
/**Stores the current appearance settings (expanded, hidden). The purpose of this is that if an item is removed
from its position and insert into another position, these settings can be restored after insertion. storeAppearanceSettings is
also called for all childs*/
void storeAppearanceSettings();
/**Restore appearanc settings (expanded and hidden) e.g. after being inserted into a new place in the tree widget*/
void restoreAppearanceSettings();
protected:
bool mLeafNodeFlag;
LEGEND_ITEM_TYPE mType;
LEGEND_ITEM_TYPE mType;
/**Stores expanded property when storeAppearanceSettings is called*/
bool mExpanded;
/**Stores hidden property when storeAppearanceSettings is called*/
bool mHidden;
};
#endif

View File

@ -353,7 +353,7 @@
</widget>
</item>
<item row="0" column="2" >
<widget class="QPushButton" name="indexPushButton" >
<widget class="QPushButton" name="pbnIndex" >
<property name="text" >
<string>Create</string>
</property>