⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qgslegendlayerfilegroup.cpp

📁 一个非常好的GIS开源新版本
💻 CPP
字号:
/***************************************************************************                         qgslegendlayerfilegroup.cpp  -  description                             -------------------    begin                : Juli 2005    copyright            : (C) 2005 by Marco Hugentobler    email                : marco.hugentobler@autoform.ch ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#include "qgslegendlayer.h"#include "qgslegendlayerfilegroup.h"#include "qgslegendlayerfile.h"#include "qgslegendsymbologygroup.h"#include "qgsmaplayer.h"QgsLegendLayerFileGroup::QgsLegendLayerFileGroup(QTreeWidgetItem* theItem, QString theString): QgsLegendItem(theItem, theString){    mType = LEGEND_LAYER_FILE_GROUP;    setText(0, theString);}QgsLegendItem::DRAG_ACTION QgsLegendLayerFileGroup::accept(LEGEND_ITEM_TYPE type){    if ( type == LEGEND_LAYER_FILE )      {	return INSERT; //there should be a way to already test, if the layers are symbology compatible      }    else      {	return NO_ACTION;      }}QgsLegendItem::DRAG_ACTION QgsLegendLayerFileGroup::accept(const QgsLegendItem* li) const{#ifdef QGISDEBUG  qWarning("in QgsLegendLayerFileGroup::accept");#endif  if(li)    {      LEGEND_ITEM_TYPE type = li->type();      if ( type == LEGEND_LAYER_FILE /*&& this != li->parent()*/)      {	if(child(0) == 0)	  {	    return INSERT;	  }	else	  {	    QgsLegendLayerFile* llf = dynamic_cast<QgsLegendLayerFile*>(child(0));	    if(llf)	      {		QgsMapLayer* childlayer = llf->layer();		const QgsMapLayer* newlayer = (dynamic_cast<const QgsLegendLayerFile*>(li))->layer();		if(newlayer->isSymbologyCompatible(*childlayer))		  {		    return INSERT;		  }	      }	  }      }    }  return NO_ACTION;}bool QgsLegendLayerFileGroup::insert(QgsLegendItem* newItem){  if ( newItem->type() == LEGEND_LAYER_FILE )    {      QgsLegendItem* oldItem = firstChild();      if(!oldItem)//this item is the first child	{	  insertChild(0, newItem);	  return true;	}      //there are already legend layer files            //find the lowest sibling      while(oldItem->nextSibling() != 0)	{	  oldItem = oldItem->nextSibling();	}      QgsLegendLayerFile* thefile = dynamic_cast<QgsLegendLayerFile*>(oldItem);            if(!thefile)	{	  return false;	}      QgsMapLayer* thelayer = thefile->layer();      if(!thelayer)	{	  return false;	}      QgsMapLayer* newLayer = (dynamic_cast<QgsLegendLayerFile*>(newItem))->layer();      if(newLayer->isSymbologyCompatible(*thelayer))	{		  insertChild(childCount(), newItem);	  return true;	}      else	{	  return false;	}      }  else    {      return false;    }}bool QgsLegendLayerFileGroup::containsLegendLayerFile(const QgsLegendLayerFile* llf) const{  bool result = false;  for(int i = 0; i < childCount(); ++i)    {      if(llf == child(i))	{	  result = true;	  break;	}    }  return result;}void QgsLegendLayerFileGroup::receive(QgsLegendItem* newChild){  if(newChild->type() == LEGEND_LAYER_FILE)    {      QgsLegendLayer* ll = dynamic_cast<QgsLegendLayer*>(parent());      if(ll)	{	  ll->updateIcon();	  ll->updateCheckState();	}    }}void QgsLegendLayerFileGroup::release(QgsLegendItem* formerChild){#ifdef QGISDEBUG  qWarning("In QgsLegendLayerFileGroup::release");#endif  if(formerChild->type() == LEGEND_LAYER_FILE)    {      QgsLegendLayer* ll = dynamic_cast<QgsLegendLayer*>(parent());      if(ll)	{	  ll->updateIcon();	  ll->updateCheckState();	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -