insilmaril@0: #include "flagobj.h" insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // FlagObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: FlagObj::FlagObj() insilmaril@0: { insilmaril@166: // cout << "Const FlagObj ()\n"; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@0: FlagObj::FlagObj(QCanvas* c):MapObj(c) insilmaril@0: { insilmaril@166: // cout << "Const FlagObj canvas="<move (absPos.x(), absPos.y() ); insilmaril@0: button=NULL; insilmaril@0: state=false; insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::copy (FlagObj* other) insilmaril@0: { insilmaril@0: MapObj::copy(other); insilmaril@0: name=other->name; insilmaril@103: group=other->group; insilmaril@0: tooltip=other->tooltip; insilmaril@0: state=other->state; insilmaril@0: icon->copy(other->icon); insilmaril@0: setVisibility (other->isVisibleObj() ); insilmaril@0: // button is not copied, because insilmaril@0: // we won't copy to a parentRow and insilmaril@0: // all others don't need a button insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::move(double x, double y) insilmaril@0: { insilmaril@0: MapObj::move(x,y); insilmaril@0: icon->move(x,y); insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::moveBy(double x, double y) insilmaril@0: { insilmaril@0: move (x+absPos.x(),y+absPos.y() ); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::setVisibility (bool v) insilmaril@0: { insilmaril@0: MapObj::setVisibility(v); insilmaril@0: if (v && state) insilmaril@0: icon->setVisibility(true); insilmaril@0: else insilmaril@0: icon->setVisibility(false); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::load (const QString &fn) insilmaril@0: { insilmaril@0: icon->load(fn); insilmaril@0: calcBBoxSize(); insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::load (const QPixmap &pm) insilmaril@0: { insilmaril@0: icon->load(pm); insilmaril@0: calcBBoxSize(); insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::setName(const QString &n) insilmaril@0: { insilmaril@0: name=n; insilmaril@0: } insilmaril@0: insilmaril@0: const QString FlagObj::getName() insilmaril@0: { insilmaril@0: return name; insilmaril@0: } insilmaril@0: insilmaril@103: void FlagObj::setGroup (const QString &n) insilmaril@103: { insilmaril@103: group=n; insilmaril@103: } insilmaril@103: insilmaril@103: const QString FlagObj::getGroup() insilmaril@103: { insilmaril@103: return group; insilmaril@103: } insilmaril@103: insilmaril@0: void FlagObj::setToolTip(const QString &n) insilmaril@0: { insilmaril@0: tooltip=n; insilmaril@0: } insilmaril@0: insilmaril@0: const QString FlagObj::getToolTip() insilmaril@0: { insilmaril@0: return tooltip; insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::setButton(QAction* b) insilmaril@0: { insilmaril@0: button=b; insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::updateButton() insilmaril@0: { insilmaril@0: if (button) insilmaril@0: button->setOn(state); insilmaril@0: else insilmaril@0: qWarning ("FlagObj::updateButton no button defined"); insilmaril@0: } insilmaril@0: insilmaril@0: QPixmap FlagObj::getPixmap() insilmaril@0: { insilmaril@0: return icon->getPixmap(); insilmaril@0: } insilmaril@0: insilmaril@0: bool FlagObj::isActive() insilmaril@0: { insilmaril@0: return state; insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::toggle() insilmaril@0: { insilmaril@0: if (state) insilmaril@0: deactivate(); insilmaril@0: else insilmaril@0: activate(); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::activate() insilmaril@0: { insilmaril@0: state=true; insilmaril@0: // only show icon, if flag itself is visible insilmaril@0: if (visible) insilmaril@0: { insilmaril@0: icon->setVisibility (true); insilmaril@0: calcBBoxSize(); insilmaril@0: } insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::deactivate() insilmaril@0: { insilmaril@0: state=false; insilmaril@0: // if flag itself is invisible we don't need to call insilmaril@0: if (visible) insilmaril@0: { insilmaril@0: icon->setVisibility (false); insilmaril@0: calcBBoxSize(); insilmaril@0: } insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::setEnabled(bool b) insilmaril@0: { insilmaril@0: button->setEnabled (b); insilmaril@0: } insilmaril@0: insilmaril@0: insilmaril@0: void FlagObj::setUsed (bool b) insilmaril@0: { insilmaril@0: used=b; insilmaril@0: } insilmaril@0: insilmaril@0: bool FlagObj::isUsed() insilmaril@0: { insilmaril@0: return used; insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::saveToDir (const QString &tmpdir, const QString &prefix) insilmaril@0: { insilmaril@0: QString fn=tmpdir + prefix + name + ".png"; insilmaril@0: icon->save (fn,"PNG"); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::positionBBox() insilmaril@0: { insilmaril@0: bbox.setX (absPos.x() ); insilmaril@0: bbox.setY (absPos.y() ); insilmaril@0: } insilmaril@0: insilmaril@0: void FlagObj::calcBBoxSize() insilmaril@0: { insilmaril@0: if (visible && state) insilmaril@0: { insilmaril@0: bbox.setSize ( QSize( insilmaril@0: icon->boundingRect().width(), insilmaril@0: icon->boundingRect().height() ) ); insilmaril@0: } else insilmaril@0: { insilmaril@0: bbox.setSize (QSize(0,0)); insilmaril@0: } insilmaril@0: } insilmaril@0: