--- queensgui/src/board.cpp 2007/07/19 21:34:15 1 +++ queensgui/src/board.cpp 2007/07/20 09:54:09 6 @@ -27,31 +27,33 @@ Board::Board(QWidget *parent, const char *name) : QWidget(parent, name) { - m_hasData = false; + m_sol = NULL; } Board::~Board() { + if (m_sol != NULL) + delete m_sol; } -void Board::setMatrix(Solution sol) +void Board::setMatrix(Solution* sol) { - m_hasData = true; - m_sol = sol; - this->repaint(true); -} -void Board::setMatrix(IntSolution sol) -{ - m_hasData = true; - m_sol = Solution(); - for (int i=0;icopy(); + this->repaint(true); } + void Board::paintEvent( QPaintEvent *event ) { QPainter p (this); @@ -60,12 +62,12 @@ p.drawLine(i*30, 0, i*30, m_size*30); } - if (m_hasData) { + if (m_sol != NULL) { QBrush brush( black); p.setBrush( brush ); for (int i=0; igetMatrix(i,j)) p.drawPie( (i*30)+10, (j*30)+10, 10, 10 ,0, 16*360); } } @@ -92,7 +94,7 @@ starty = stopy = y; startx = stopx = x; - // første skrå linie + // f�rste skr� linie while (startx > 0 && starty > 0) { startx--; starty--; @@ -104,7 +106,7 @@ } p.drawLine(QPoint( (startx*30)+5, (starty*30)+5), QPoint( (stopx*30)+25, (stopy*30)+25)); - //næste skrå linie + //n�ste skr� linie startx = stopx = x; starty = stopy = y; while (startx > 0 && starty < (m_size-1) ) { @@ -122,7 +124,12 @@ void Board::setSize( int size ) { - m_hasData = false; + if (m_sol != NULL) + { + delete m_sol; + m_sol = NULL; + } + m_size = size; this->setMaximumSize( (size * 30)+1, (size * 30)+1 ); this->setMinimumSize( size * 30, size * 30); @@ -130,6 +137,9 @@ void Board::contextMenuEvent( QContextMenuEvent *event) { + if (m_sol == NULL) + return; + QPopupMenu *contextMenu = new QPopupMenu( this ); contextMenu->setCheckable( false ); contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) ); @@ -143,28 +153,28 @@ void Board::rotateLeft() { - m_sol.rotate90(); + m_sol->rotate90(); repaint( true ); } void Board::rotateRight() { - m_sol.rotate90(); - m_sol.rotate90(); - m_sol.rotate90(); + m_sol->rotate90(); + m_sol->rotate90(); + m_sol->rotate90(); repaint( true ); } void Board::mirrorV() { - m_sol.mirror(); + m_sol->mirror(); repaint( true ); } void Board::mirrorH() { - m_sol.mirror(); - m_sol.rotate90(); - m_sol.rotate90(); + m_sol->mirror(); + m_sol->rotate90(); + m_sol->rotate90(); repaint( true ); }