Use icon overlays for the editable and overview status of a layer

instead of separate icons in separate columns. Still only applies to
the actual layer file entry in the legend, but removes the need for
the extra columns. However, I'm hopeless at icon drawing...
These changes are a variation on the suggestions in ticket #191.


git-svn-id: http://svn.osgeo.org/qgis/trunk@5616 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
g_j_m 2006-07-20 09:34:04 +00:00
parent 536daaebf9
commit 443e85bfb6
5 changed files with 29 additions and 51 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

View File

@ -452,29 +452,8 @@ void QgsMapLayer::updateItemPixmap()
{ {
if (mLegendLayerFile) if (mLegendLayerFile)
{ {
QPixmap originalPix=mLegendLayerFile->getOriginalPixmap(); mLegendLayerFile->setIconAppearance(mShowInOverview,
isEditable());
if(mShowInOverview)
{
//add overview glasses to the pixmap
mLegendLayerFile->setOverviewPixmap(mInOverviewPixmap);
}
else
{
mLegendLayerFile->setOverviewPixmap( QPixmap() );
}
if(isEditable())
{
//add editing icon to the pixmap
mLegendLayerFile->setEditingPixmap(mEditablePixmap);
}
else
{
mLegendLayerFile->setEditingPixmap( QPixmap() );
}
mLegendLayerFile->setLegendPixmap(originalPix);
} }
} }

View File

@ -69,22 +69,8 @@ QgsLegend::QgsLegend(QgisApp* app, QWidget * parent, const char *name)
setFont(f); setFont(f);
setBackgroundColor(QColor(192, 192, 192)); setBackgroundColor(QColor(192, 192, 192));
setColumnCount(3); // main column, overview indicator and editing indicator setColumnCount(1);
header()->setHidden(1);
header()->setDefaultAlignment(Qt::AlignLeft);
QStringList myList;
myList += tr("Layer Name");
myList += tr("Overview");
myList += tr("Editing");
setHeaderLabels(myList);
header()->resizeSection(0, 100);
header()->resizeSection(1, 24); // Enough to fit an overview action icon
header()->resizeSection(2, 17); // Enough to fit an editing icon
//added by Tim to hide the header - header is unneccessary
// header()->setHidden(1); // morb_au - experiment
setRootIsDecorated(true); setRootIsDecorated(true);
} }

View File

@ -96,16 +96,31 @@ void QgsLegendLayerFile::setLegendPixmap(const QPixmap& pix)
setIcon(0, theIcon); setIcon(0, theIcon);
} }
void QgsLegendLayerFile::setOverviewPixmap(const QPixmap& pix) void QgsLegendLayerFile::setIconAppearance(bool inOverview,
bool editable)
{ {
QIcon theIcon(pix); QPixmap newIcon(getOriginalPixmap());
setIcon(1, theIcon);
if (inOverview)
{
// Overlay the overview icon on the default icon
QPixmap myPixmap(QgsApplication::themePath()+"mIconOverview.png");
QPainter p(&newIcon);
p.drawPixmap(0,0,myPixmap);
p.end();
} }
void QgsLegendLayerFile::setEditingPixmap(const QPixmap& pix) if (editable)
{ {
QIcon theIcon(pix); // Overlay the editable icon on the default icon
setIcon(2, theIcon); QPixmap myPixmap(QgsApplication::themePath()+"mIconEditable.png");
QPainter p(&newIcon);
p.drawPixmap(0,0,myPixmap);
p.end();
}
QIcon theIcon(newIcon);
setIcon(0, theIcon);
} }
void QgsLegendLayerFile::toggleCheckBox(bool state) void QgsLegendLayerFile::toggleCheckBox(bool state)

View File

@ -45,9 +45,7 @@ public:
void setLegendPixmap(const QPixmap& pix); void setLegendPixmap(const QPixmap& pix);
void setOverviewPixmap(const QPixmap& pix); void setIconAppearance(bool inOverview, bool editable);
void setEditingPixmap(const QPixmap& pix);
/**Sets mVisibilityCheckBox to on/off*/ /**Sets mVisibilityCheckBox to on/off*/
void toggleCheckBox(bool state); void toggleCheckBox(bool state);