Source Code (Use browser search to find items of interest.)
Class Index
kaiman'KaimanStyleElement (./kdemultimedia/kaiman/KaimanStyle.h:14)
class KaimanStyleElement : public QWidget
{
Q_OBJECT
public:
KaimanStyleElement(QWidget *parent);
~KaimanStyleElement();
void loadPixmaps(QString &val_s_filename);
QString element;
QString filename;
QPoint upperLeft;
QPoint lowerRight;
QPixmap *i_pm_normal, *i_pm_pressed, *i_pm_prelight;
QVector<QPixmap> I_pixmaps;
static const bool optionVertical = 1;
static const bool optionReversed = 2;
bool options[3];
int length;
bool isText;
bool optionPrelight;
bool optionStatuslight;
// This flag remembers, whether the pixmaps are stored horizontal or vertical (
bool pixmapsStoredVertical;
// how many pixmaps are used
int pixmapCount;
/// mouse events
void mousePressEvent(QMouseEvent *qme);
void mouseReleaseEvent(QMouseEvent *qme);
void mouseMoveEvent(QMouseEvent *qme);
void paintEvent(class QPaintEvent *qpe);
static bool i_b_move;
static QPoint i_point_startMove;
static QPoint i_point_topLeft;
signals:
void pressed();
};
kaiman'KaimanStyleElement::KaimanStyleElement() (./kdemultimedia/kaiman/KaimanStyle.cpp:30)
KaimanStyleElement::KaimanStyleElement(QWidget *parent) : QWidget(parent)
{
// Initialize everything to default values
filename = "";
element = "";
upperLeft.setX(0);
upperLeft.setY(0);
lowerRight.setX(0);
lowerRight.setY(0);
optionPrelight = optionStatuslight = pixmapsStoredVertical = false;
i_pm_normal = i_pm_pressed = i_pm_prelight = 0;
}
kaiman'KaimanStyleElement::~KaimanStyleElement() (./kdemultimedia/kaiman/KaimanStyle.cpp:45)
KaimanStyleElement::~KaimanStyleElement()
{
/*
if(i_pm_normal != 0) delete i_pm_normal;
if(i_pm_pressed != 0) delete i_pm_pressed;
if(i_pm_prelight != 0) delete i_pm_prelight;
*/
}
kaiman'KaimanStyleElement::loadPixmaps() (./kdemultimedia/kaiman/KaimanStyle.cpp:55)
void KaimanStyleElement::loadPixmaps(QString &val_s_filename)
{
i_pm_normal = 0;
QPixmap pixmap;
bool i_b_ret = pixmap.load(val_s_filename);
if ( !i_b_ret ) {
QMessageBox::critical( 0, "Kaiman",
QString("Cannot load pixmap %1.").arg(val_s_filename));
}
else {
I_pixmaps.resize(length);
I_pixmaps.setAutoDelete(true);
if(length) {
int width, height, sourcex = 0, sourcey = 0;
if(pixmapsStoredVertical) {
width = pixmap.width();
height = pixmap.height()/length;
}
else {
width = pixmap.width()/length;
height = pixmap.height();
}
for(int i=0;i<length;i++)
{
if(pixmapsStoredVertical)
sourcey = height*i;
else
sourcex = width*i;
QPixmap *part = new QPixmap(width,height,pixmap.depth());
part->fill(Qt::black);
bitBlt(part,0,0,&pixmap,sourcex,sourcey,width,height);
I_pixmaps.insert(i,part);
if(pixmap.mask())
{
QBitmap maskpart(width,height);
bitBlt(&maskpart,0,0,pixmap.mask(),sourcex,sourcey,width,height);
part->setMask(maskpart);
}
}
i_pm_normal = I_pixmaps[0];
}
}
if(!i_pm_normal) {
I_pixmaps.resize(1);
I_pixmaps.setAutoDelete(true);
I_pixmaps.insert(0,new QPixmap);
i_pm_normal = I_pixmaps[0];
}
lowerRight.setX(upperLeft.x() + i_pm_normal->width() - 1);
lowerRight.setY(upperLeft.y() + i_pm_normal->height() - 1);
setGeometry( QRect( upperLeft, lowerRight));
// More elegant solution would be to derive !
if ( element != "Mask" && !isText) {
if(i_pm_normal->mask())
setMask(*i_pm_normal->mask());
show();
}
else {
hide();
}
}
kaiman'KaimanStyleElement::mousePressEvent() (./kdemultimedia/kaiman/KaimanStyle.cpp:127)
void KaimanStyleElement::mousePressEvent(QMouseEvent *qme)
{
if ( element != "Background") {
qDebug(QString("Press ") + element);
}
else {
// On the background we move the shaped toplevel around
if (!i_b_move) {
i_point_startMove.setX(qme->globalX());
i_point_startMove.setY(qme->globalY());
i_point_topLeft.setX(parentWidget()->x());
i_point_topLeft.setY(parentWidget()->y());
}
}
}
kaiman'KaimanStyleElement::mouseReleaseEvent() (./kdemultimedia/kaiman/KaimanStyle.cpp:144)
void KaimanStyleElement::mouseReleaseEvent(QMouseEvent *)
{
i_b_move = false;
qDebug(QString("Release ") + element);
emit pressed();
}
kaiman'KaimanStyleElement::mouseMoveEvent() (./kdemultimedia/kaiman/KaimanStyle.cpp:152)
void KaimanStyleElement::mouseMoveEvent(QMouseEvent *qme)
{
/*#warning ce: Test*/
if ( element != "Background" ) {
qDebug(QString("Move ") + element);
}
else {
int l_i_diff_y = ( qme->globalY() - i_point_startMove.y());
int l_i_diff_x = ( qme->globalX() - i_point_startMove.x());
if ( abs(l_i_diff_x) > 10 || abs(l_i_diff_y) > 10) {
// Moving starts only, when passing a drag border
i_b_move = true;
}
if ( i_b_move ) {
if ( element == "Background" )
this->parentWidget()->move( i_point_topLeft.x() + l_i_diff_x, i_point_topLeft.y() + l_i_diff_y);
else {
move( i_point_topLeft.x() + l_i_diff_x, i_point_topLeft.y() + l_i_diff_y);
qDebug( element + QString("@ (%1,%2).").arg(x()).arg(y()));
}
}
}
}
kaiman'KaimanStyleElement::paintEvent() (./kdemultimedia/kaiman/KaimanStyle.cpp:177)
void KaimanStyleElement::paintEvent ( QPaintEvent *qpe )
{
if ( 0 ) {
// Use this for "special" elements
QWidget::paintEvent(qpe);
}
else {
bitBlt(this, 0, 0, i_pm_normal );
}
}