Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
improved legend drag and drop handling, enabled 'create spatial index…
…' button in vector props again

git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@4798 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
mhugent committed Feb 4, 2006
1 parent d69c9fc commit b784fe1
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 15 deletions.
13 changes: 5 additions & 8 deletions qgis.dtd
Expand Up @@ -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

19 changes: 14 additions & 5 deletions src/legend/qgslegend.cpp
Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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;

Expand All @@ -785,7 +793,6 @@ bool QgsLegend::writeXML( QDomNode & layer_node, QDomDocument & document )
}
currentItem = nextItem(currentItem);
}
#endif
return true;
}

Expand Down Expand Up @@ -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));
Expand All @@ -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)
Expand Down
22 changes: 22 additions & 0 deletions src/legend/qgslegenditem.cpp
Expand Up @@ -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();
}
}
12 changes: 11 additions & 1 deletion src/legend/qgslegenditem.h
Expand Up @@ -89,9 +89,19 @@ class QgsLegendItem : public QTreeWidgetItem
/**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
2 changes: 1 addition & 1 deletion src/ui/qgsvectorlayerpropertiesbase.ui
Expand Up @@ -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>
Expand Down

0 comments on commit b784fe1

Please sign in to comment.