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