diff -r e44baadd4958 -r 72cc3873306a linkablemapobj.cpp --- a/linkablemapobj.cpp Thu Sep 01 15:35:18 2005 +0000 +++ b/linkablemapobj.cpp Mon Sep 05 11:56:31 2005 +0000 @@ -91,6 +91,8 @@ selbox->hide(); selected=false; + hideLinkUnselected=false; + // initialize frame frame = new FrameObj (canvas); @@ -258,6 +260,18 @@ return style; } +void LinkableMapObj::setHideLinkUnselected(bool b) +{ + hideLinkUnselected=b; + setVisibility (visible); + updateLink(); +} + +bool LinkableMapObj::getHideLinkUnselected() +{ + return hideLinkUnselected; +} + void LinkableMapObj::setLinkPos(LinkPos lp) { linkpos=lp; @@ -302,7 +316,6 @@ default: break; } // switch (style) - //FIXME updateLink(); } QColor LinkableMapObj::getLinkColor() @@ -333,32 +346,60 @@ void LinkableMapObj::setVisibility (bool v) { + QCanvasLine* cl; MapObj::setVisibility (v); - if (visible) + bool visnow=visible; + if (hideLinkUnselected && !selected) + visnow=false; + + if (visnow) { bottomline->show(); - // FIXME lines and segments should be done in LMO? - if (style==StyleLine && l) + switch (style) { - l->show(); - } else - { - QCanvasLine* cl; - for (cl=segment.first(); cl; cl=segment.next() ) - cl->show(); - } + case StyleLine: + if (l) l->show(); + break; + case StyleParabel: + for (cl=segment.first(); cl; cl=segment.next() ) + cl->show(); + break; + case StylePolyLine: + if (p) p->show(); + if (l) l->show(); + break; + case StylePolyParabel: + for (cl=segment.first(); cl; cl=segment.next() ) + cl->show(); + if (p) p->show(); + break; + default: + break; + } } else { bottomline->hide(); - if (style==StyleLine && l) + switch (style) { - l->hide(); - } else - { - QCanvasLine* cl; - for (cl=segment.first(); cl; cl=segment.next() ) - cl->hide(); - } + case StyleLine: + if (l) l->hide(); + break; + case StyleParabel: + for (cl=segment.first(); cl; cl=segment.next() ) + cl->hide(); + break; + case StylePolyLine: + if (p) p->hide(); + if (l) l->hide(); + break; + case StylePolyParabel: + for (cl=segment.first(); cl; cl=segment.next() ) + cl->hide(); + if (p) p->hide(); + break; + default: + break; + } } } @@ -681,6 +722,7 @@ setSelBox(); selected=true; selbox->show(); + setVisibility (visible); } @@ -688,6 +730,7 @@ { selected=false; selbox->hide(); + setVisibility (visible); } void LinkableMapObj::parabel (QPointArray &ya, double p1x, double p1y, double p2x, double p2y) @@ -719,3 +762,15 @@ } } +QString LinkableMapObj::getLinkAttr () +{ + QString hideAttr; + if (hideLinkUnselected) + // Since this is currently the + // only attribut and it is switched off by default + // don't write at all if it is missing + return attribut ("hideLinkUnselected","true"); + else + return ""; + +}