flagobj.cpp
author insilmaril
Thu, 23 Nov 2006 16:18:26 +0000
changeset 407 5db8dfd30ea2
parent 406 1c8ff1928b97
child 408 c2a05fa925a1
permissions -rw-r--r--
Removed even more QT3 stuff. Drag & Drop not 100% functional at the moment
     1 #include "flagobj.h"
     2 
     3 /////////////////////////////////////////////////////////////////
     4 // FlagObj
     5 /////////////////////////////////////////////////////////////////
     6 FlagObj::FlagObj()
     7 {
     8 //	cout << "Const FlagObj ()\n";
     9     init ();
    10 }
    11 
    12 FlagObj::FlagObj(Q3Canvas* c):MapObj(c) 
    13 {
    14 //	cout << "Const FlagObj  canvas="<<c<<endl;
    15     init ();
    16 }
    17 
    18 FlagObj::FlagObj (FlagObj* io)
    19 {
    20     copy (io);
    21 }
    22 
    23 FlagObj::~FlagObj()
    24 {
    25 //    cout << "Destr FlagObj  " << name.ascii() << "\n";
    26 	if (icon) delete (icon);
    27 }
    28 
    29 
    30 void FlagObj::init ()
    31 {
    32 	name="undefined";
    33 	group="undefined";
    34 
    35 	icon=new ImageObj (canvas);
    36 	icon->move (absPos.x(), absPos.y() );
    37 	state=false;
    38 	action=NULL;
    39 }
    40 
    41 void FlagObj::copy (FlagObj* other)
    42 {
    43     MapObj::copy(other);
    44 	name=other->name;
    45 	group=other->group;
    46 	tooltip=other->tooltip;
    47 	state=other->state;
    48 	icon->copy(other->icon);
    49 	action=other->action;
    50 	setVisibility (other->isVisibleObj() );
    51 }
    52 
    53 void FlagObj::move(double x, double y)
    54 {
    55     MapObj::move(x,y);
    56 	icon->move(x,y);
    57 	positionBBox();
    58 }
    59 
    60 void FlagObj::moveBy(double x, double y)
    61 {
    62     move (x+absPos.x(),y+absPos.y() );
    63 }
    64 
    65 void FlagObj::setVisibility (bool v)
    66 {
    67     MapObj::setVisibility(v);
    68 	if (v && state)
    69 	    icon->setVisibility(true);
    70 	else
    71 	    icon->setVisibility(false);
    72 }
    73 
    74 void FlagObj::load (const QString &fn)
    75 {
    76 	icon->load(fn);
    77 	calcBBoxSize();
    78 	positionBBox();
    79 }
    80 
    81 void FlagObj::load (const QPixmap &pm)
    82 {
    83 	icon->load(pm);
    84 	calcBBoxSize();
    85 	positionBBox();
    86 }
    87 
    88 void FlagObj::setName(const QString &n)
    89 {
    90 	name=n;
    91 }
    92 
    93 const QString FlagObj::getName()
    94 {
    95 	return name;
    96 }
    97 
    98 void FlagObj::setGroup (const QString &n)
    99 {
   100 	group=n;
   101 }
   102 
   103 const QString FlagObj::getGroup()
   104 {
   105 	return group;
   106 }
   107 
   108 void FlagObj::setToolTip(const QString &n)
   109 {
   110 	tooltip=n;
   111 }
   112 
   113 const QString FlagObj::getToolTip()
   114 {
   115 	return tooltip;
   116 }
   117 
   118 QPixmap FlagObj::getPixmap()
   119 {
   120 	return icon->getPixmap();
   121 }
   122 
   123 void FlagObj::setAction (QAction* a)
   124 {
   125 	action=a;
   126 }
   127 
   128 void FlagObj::updateAction ()
   129 {
   130 	if (action) action->setChecked(state);
   131 }
   132 
   133 bool FlagObj::isActive()
   134 {
   135 	return state;
   136 }
   137 
   138 void FlagObj::toggle()
   139 {
   140 	if (state)
   141 		deactivate();
   142 	else
   143 		activate();
   144 }
   145 
   146 void FlagObj::activate()
   147 {
   148 	state=true;
   149 	// only show icon, if flag itself is visible 
   150 	if (visible) 
   151 	{
   152 		icon->setVisibility (true);
   153 		calcBBoxSize();
   154 	}	
   155 }
   156 
   157 void FlagObj::deactivate()
   158 {
   159 	state=false;
   160 	// if flag itself is invisible we don't need to call 
   161 	if (visible) 
   162 	{
   163 		icon->setVisibility (false);
   164 		calcBBoxSize();
   165 	}	
   166 }
   167 
   168 void FlagObj::setUsed (bool b)
   169 {
   170 	used=b;
   171 }
   172 
   173 bool FlagObj::isUsed()
   174 {
   175 	return used;
   176 }
   177 
   178 void FlagObj::saveToDir (const QString &tmpdir, const QString &prefix)
   179 {
   180 	QString fn=tmpdir + prefix + name + ".png";
   181 	icon->save (fn,"PNG");
   182 }
   183 
   184 void FlagObj::positionBBox()
   185 {
   186     bbox.moveTopLeft (absPos );
   187     clickBox.moveTopLeft (absPos );
   188 }
   189 
   190 void FlagObj::calcBBoxSize()
   191 {
   192 	if (visible && state)
   193 	{
   194 		bbox.setSize (	QSize(
   195 			icon->boundingRect().width(), 
   196 			icon->boundingRect().height() ) );
   197 	} else
   198 	{
   199 		bbox.setSize (QSize(0,0));
   200 	}
   201 	clickBox.setSize (bbox.size());
   202 }
   203