/*************************************************************************** * Copyright (C) 2002-2003 Andi Peredri * * andi@ukr.net * * Copyright (C) 2004-2005 Artur Wiebe * wibix@gmx.de * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include #include #include #include "field.h" #include "common.h" Field::Field(QWidget* parent,int i) : QWidget(parent) { pixmap = new QPixmap(MAX_TILE_SIZE, MAX_TILE_SIZE); m_number=i; m_pattern=NULL; m_checker=NULL; m_frame=NULL; show_frame = false; m_show_label = true; } void Field::paintEvent(QPaintEvent*) { QPainter p(this); p.drawPixmap(0, 0, *pixmap); p.end(); } void Field::mousePressEvent(QMouseEvent* me) { if(me->button() != Qt::LeftButton) return; emit click(m_number); } void Field::draw() { QPainter paint; paint.begin(pixmap); paint.setFont(font()); if(m_pattern) paint.drawPixmap(0, 0, *m_pattern); // notation paint.setPen(Qt::white); QRect not_rect = paint.boundingRect(2, 2, 0, 0, Qt::AlignLeft, m_label); if(m_show_above) { if(m_checker) paint.drawPixmap(0, 0, *m_checker); if(m_show_label) { paint.fillRect(not_rect, Qt::black); paint.drawText(not_rect, Qt::AlignTop|Qt::AlignLeft, m_label); } } else { if(m_show_label) paint.drawText(not_rect, Qt::AlignTop|Qt::AlignLeft, m_label); if(m_checker) paint.drawPixmap(0, 0, *m_checker); } if(show_frame) paint.drawPixmap(0, 0, *m_frame); paint.end(); update(); } void Field::setFrame(QPixmap* xpm) { m_frame = xpm; } void Field::showFrame(bool b) { if(show_frame != b) { show_frame = b; draw(); } } void Field::setPicture(QPixmap* xpm) { if(m_checker!=xpm) { m_checker = xpm; draw(); } } void Field::setPattern(QPixmap* xpm) { if(m_pattern != xpm) { m_pattern = xpm; draw(); } } void Field::setLabel(const QString& str) { if(m_label!=str) { m_label=str; draw(); } } void Field::showLabel(bool s, bool a) { if(s!=m_show_label || a!=m_show_above) { m_show_above = a; m_show_label = s; draw(); } }