summaryrefslogtreecommitdiff
path: root/noncore/games/mindbreaker/mindbreaker.cpp
Side-by-side diff
Diffstat (limited to 'noncore/games/mindbreaker/mindbreaker.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/mindbreaker/mindbreaker.cpp455
1 files changed, 297 insertions, 158 deletions
diff --git a/noncore/games/mindbreaker/mindbreaker.cpp b/noncore/games/mindbreaker/mindbreaker.cpp
index 7802e38..e1f43d0 100644
--- a/noncore/games/mindbreaker/mindbreaker.cpp
+++ b/noncore/games/mindbreaker/mindbreaker.cpp
@@ -1,5 +1,5 @@
/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
-** This file is part of Qtopia Environment.
+** This file is part of the Qtopia Environment.
**
@@ -22,4 +22,6 @@
-#include <qpe/resource.h>
-#include <qpe/config.h>
+#include <qtopia/resource.h>
+#include <qtopia/config.h>
+#include <qtopia/qpeapplication.h>
+#include <qtoolbar.h>
@@ -27,3 +29,2 @@
#include <qpixmap.h>
-#include <qpe/qpetoolbar.h>
#include <qtoolbutton.h>
@@ -32,3 +33,4 @@
#include <qlabel.h>
-#include <qstyle.h>
+#include <qlayout.h>
+#include <qtimer.h>
@@ -40,2 +42,60 @@ static int pegRTTI = 3393393;
+static int adjusted_panel_height;
+static int adjusted_panel_width;
+
+static int adjusted_bin_margin;
+static int adjusted_peg_size;
+static int adjusted_answerpeg_size;
+
+static int adjusted_title_height;
+static int adjusted_title_width;
+
+static int adjusted_first_peg_x_diff;
+static int adjusted_first_peg_y_diff;
+static int adjusted_peg_spacing;
+
+static int adjusted_answerpegx;
+static int adjusted_answerpegy;
+static int adjusted_answerpeg_xdiff;
+static int adjusted_answerpeg_ydiff;
+
+static int adjusted_board_height;
+static int adjusted_board_width;
+
+static void setupBoardSize(int w, int h)
+{
+ adjusted_panel_width = w * 3/4;
+ adjusted_title_width = w * 3/4;
+
+ adjusted_title_height = h/10;
+ adjusted_panel_height = (h-adjusted_title_height)/9;
+
+ adjusted_bin_margin = w * 10/240;
+ adjusted_peg_size = adjusted_panel_height*3/4;
+ adjusted_answerpeg_size = QMIN(adjusted_panel_width*15/180,adjusted_panel_height*15/25);
+
+ // looks a bit dodgy on larger sizes
+ if ( adjusted_peg_size > 40 )
+ adjusted_peg_size = 40;
+
+ adjusted_first_peg_x_diff = w * 31/240-adjusted_peg_size/2;
+ adjusted_first_peg_y_diff = (adjusted_panel_height - adjusted_peg_size)/2;
+ adjusted_peg_spacing = w * 30/240;
+
+ // looks a bit dodgy on larger sizes (still does though, but not as much...)
+ if ( adjusted_answerpeg_size > 22 )
+ adjusted_answerpeg_size = 22;
+
+ adjusted_answerpegx = adjusted_panel_width * 159/180 - adjusted_answerpeg_size/2;
+ adjusted_answerpegy = adjusted_panel_height/3 - adjusted_answerpeg_size/2;
+ adjusted_answerpeg_xdiff = adjusted_panel_width * 10/180;
+ adjusted_answerpeg_ydiff = adjusted_panel_height * 9/25;
+
+ adjusted_board_height = adjusted_title_height + (adjusted_panel_height * 9);
+ adjusted_board_width = adjusted_panel_width + (adjusted_bin_margin * 2) + adjusted_peg_size;
+
+// qDebug("Adjusted width %d height %d", adjusted_board_width, adjusted_board_height);
+}
+
+
/* helper class, */
@@ -50,3 +110,3 @@ public:
-/* a placed peg is one that has been set down on the board correctly and
+/* a placed peg is one that has been set down on the board correctly and
should not be moved, only copied */
@@ -79,3 +139,2 @@ private:
};
-
int Peg::eggLevel = 0;
@@ -86,5 +145,4 @@ void Peg::buildImages()
{
-
QImage pegs = Resource::loadImage("mindbreaker/pegs");
- int x = 0;
+ int x = 0;
int y = 0;
@@ -94,3 +152,4 @@ void Peg::buildImages()
for (i = 0; i < 6; i++) {
- normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size)));
+ normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size).
+ smoothScale(adjusted_peg_size, adjusted_peg_size) ));
x += peg_size;
@@ -99,3 +158,4 @@ void Peg::buildImages()
for (i = 0; i < 5; i++) {
- specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size)));
+ specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size).
+ smoothScale(adjusted_peg_size, adjusted_peg_size) ));
x += peg_size;
@@ -107,8 +167,12 @@ void Peg::buildImages()
y = panel_height;
- normalPegs.insert(8,
- new QImage(image.copy(x, y, panel_width, panel_height)));
+ normalPegs.insert(8,
+ new QImage( image.copy(x, y, panel_width, panel_height).
+ smoothScale( adjusted_panel_width, adjusted_panel_height)
+ ));
y += panel_height;
y += title_height;
- normalPegs.insert(9,
- new QImage(image.copy(x, y, title_width, title_height)));
+ normalPegs.insert(9,
+ new QImage(image.copy(x, y, title_width, title_height).
+ smoothScale( adjusted_title_width, adjusted_title_height)
+ ));
y += title_height;
@@ -116,10 +180,12 @@ void Peg::buildImages()
x = 6 * peg_size;
- normalPegs.insert(6,
- new QImage(image.copy(x, y, answerpeg_size, answerpeg_size)));
+ normalPegs.insert(6,
+ new QImage(image.copy(x, y, answerpeg_size, answerpeg_size).
+ smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) ));
x += answerpeg_size;
- normalPegs.insert(7,
- new QImage(image.copy(x, y, answerpeg_size, answerpeg_size)));
+ normalPegs.insert(7,
+ new QImage(image.copy(x, y, answerpeg_size, answerpeg_size).
+ smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) ));
}
-QImage Peg::imageForType(int t)
+QImage Peg::imageForType(int t)
{
@@ -135,3 +201,3 @@ QImage Peg::imageForType(int t)
-Peg::Peg(QCanvas *canvas , int t, int g, int p)
+Peg::Peg(QCanvas *canvas , int t, int g, int p)
: QCanvasRectangle(canvas)
@@ -159,5 +225,5 @@ void Peg::drawShape(QPainter &p )
if ((pegtype == 5) && eggLevel > 5) {
- p.drawImage(x(), y(), *normalPegs[aniStep]);
- } else
- p.drawImage(x(), y(), imageForType(pegtype));
+ p.drawImage(int(x()), int(y()), *normalPegs[aniStep]);
+ } else
+ p.drawImage(int(x()), int(y()), imageForType(pegtype));
}
@@ -189,3 +255,3 @@ inline int Peg::pegPos() const
-inline void Peg::setPegPos(int p)
+inline void Peg::setPegPos(int p)
{
@@ -194,3 +260,3 @@ inline void Peg::setPegPos(int p)
-inline void Peg::setPlaced(bool p)
+inline void Peg::setPlaced(bool p)
{
@@ -199,3 +265,3 @@ inline void Peg::setPlaced(bool p)
-inline int Peg::type() const
+inline int Peg::type() const
{
@@ -204,3 +270,3 @@ inline int Peg::type() const
-/* Load the main image, copy from it the pegs, the board, and the answer image
+/* Load the main image, copy from it the pegs, the board, and the answer image
* and use these to create the tray, answer and board
@@ -208,8 +274,18 @@ inline int Peg::type() const
MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags )
-: QMainWindow(parent, name, wFlags),
- canvas(board_height, board_width)
+ : QMainWindow(parent, name, wFlags)
{
- MindBreakerBoard *m = new MindBreakerBoard(canvas, this);
- setCentralWidget(m);
-
+ setCaption( tr("Mind Breaker"));
+ QPEApplication::setInputMethodHint( this, QPEApplication::AlwaysOff );
+ setMinimumSize(160,210);
+
+ QWidget *w = new QWidget( this );
+ w->setBackgroundColor( black );
+ QHBoxLayout *hb = new QHBoxLayout( w );
+ hb->addStretch();
+ board = new MindBreakerBoard(w);
+ hb->addWidget( board, 100 );
+ hb->addStretch();
+
+ setCentralWidget(w);
+
setToolBarsMovable( FALSE );
@@ -219,5 +295,5 @@ MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags )
- QPixmap newicon = Resource::loadPixmap("new");
- new QToolButton(newicon, tr("New Game"), 0,
- m, SLOT(clear()), tb, "NewGame");
+ QIconSet newicon = Resource::loadIconSet("new");
+ new QToolButton(newicon, tr("New Game"), 0,
+ board, SLOT(clear()), tb, "NewGame");
@@ -229,8 +305,10 @@ MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags )
- connect(m, SIGNAL(scoreChanged(int, int)), this, SLOT(setScore(int, int)));
- connect(score, SIGNAL(clicked()), m, SLOT(resetScore()));
+ connect(board, SIGNAL(scoreChanged(int,int)), this, SLOT(setScore(int,int)));
+ connect(score, SIGNAL(clicked()), board, SLOT(resetScore()));
int a, b;
- m->getScore(&a, &b);
+ board->getScore(&a, &b);
setScore(a,b);
+
+ layout()->setResizeMode(QLayout::FreeResize);
}
@@ -243,5 +321,5 @@ void MindBreaker::setScore(int turns, int games)
- if(total_games > 0)
+ if(total_games > 0)
average = total_turns / total_games;
- else
+ else
average = 0.0;
@@ -251,8 +329,20 @@ void MindBreaker::setScore(int turns, int games)
+void MindBreaker::resizeEvent( QResizeEvent *e )
+{
+ board->fixSize();
+ QMainWindow::resizeEvent( e );
+}
+
-MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
+MindBreakerBoard::MindBreakerBoard( QWidget *parent,
const char *name, int wFlags )
- : QCanvasView(&canv, parent, name, wFlags)
+ : QCanvasView(0, parent, name, wFlags),
+ moving(0), game_over(FALSE), total_turns(0), total_games(0)
{
- int i, x, y;
+ setFrameStyle( NoFrame );
+ setupBoardSize(qApp->desktop()->width(),qApp->desktop()->height());
+ cnv.resize(100,100);
+ setCanvas(&cnv);
+ setBackgroundColor( black );
+
struct timeval tv;
@@ -261,3 +351,2 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
gettimeofday(&tv, 0);
-
srand(tv.tv_usec);
@@ -265,25 +354,14 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
canvas()->setAdvancePeriod(500);
+ current_highlight = 0;
- QImage image = Resource::loadImage("mindbreaker/mindbreaker");
-
- /* copy from master image to functional images */
- x = 0;
- y = 0;
- panelImage = image.copy(x,y, panel_width, panel_height);
- y += panel_height;
- y += panel_height;
-
- titleImage = image.copy(x, y, title_width, title_height);
-
- Peg::buildImages(); // must be done BEFORE any pegs are made
-
- current_highlight = new Peg(canvas(), 8);
- current_highlight->setPlaced(TRUE);
- current_highlight->setX(0);
- current_highlight->setY(board_height - ((current_go + 1) * panel_height));
- current_highlight->setZ(0);
- current_highlight->show();
+ widthTimer = new QTimer( this );
+ connect(widthTimer, SIGNAL(timeout()), this, SLOT(doFixSize()) );
+ setMaximumWidth( QMIN(qApp->desktop()->height(),qApp->desktop()->width()) );
+ //doFixSize(); // build images... needs to be done before reading config.
+ //readConfig(); // first read... to ensure initial labels and side look right.
+}
- /* set up the game */
+void MindBreakerBoard::readConfig()
+{
Config c("MindBreaker", Config::User);
@@ -291,2 +369,3 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
game_over = FALSE;
+ int i;
if (c.readNumEntry("Answer0") < 0) {
@@ -311,3 +390,3 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
c.setGroup("Board");
- for(i = 0; i < 4; i++)
+ for(i = 0; i < 4; i++)
answer[i] = c.readNumEntry(QString("Answer%1").arg(i));
@@ -330,3 +409,3 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
current_guess[i] = c.readNumEntry(QString("CurrentGo%1").arg(i));
- if (current_guess[i] != 6)
+ if (current_guess[i] != 6)
placeGuessPeg(i, current_guess[i]);
@@ -334,6 +413,2 @@ MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
}
-
- /* draw initial screen */
- drawBackground();
- canvas()->update();
}
@@ -342,3 +417,3 @@ MindBreakerBoard::~MindBreakerBoard()
{
- int i, j;
+ int i;
if (game_over) {
@@ -351,3 +426,7 @@ MindBreakerBoard::~MindBreakerBoard()
}
-
+ writeConfig();
+}
+
+void MindBreakerBoard::writeConfig()
+{
Config c("MindBreaker", Config::User);
@@ -356,10 +435,11 @@ MindBreakerBoard::~MindBreakerBoard()
/* write the board */
+ int i,j;
for (i = 0; i < current_go; i++) {
for(j = 0; j < 4; j++)
- c.writeEntry(tr("Go%1p%2").arg(i).arg(j), past_guesses[4*i+j]);
+ c.writeEntry(QString("Go%1p%2").arg(i).arg(j), past_guesses[4*i+j]);
}
- for(j = 0; j < 4; j++)
- c.writeEntry(tr("CurrentGo%1").arg(j), current_guess[j]);
- for(j = 0; j < 4; j++)
- c.writeEntry(tr("Answer%1").arg(j), answer[j]);
+ for(j = 0; j < 4; j++)
+ c.writeEntry(QString("CurrentGo%1").arg(j), current_guess[j]);
+ for(j = 0; j < 4; j++)
+ c.writeEntry(QString("Answer%1").arg(j), answer[j]);
@@ -379,7 +459,71 @@ void MindBreakerBoard::getScore(int *a, int *b)
+void MindBreakerBoard::fixSize()
+{
+ hide();
+ setMaximumWidth( parentWidget()->height() );
+ widthTimer->start( 20, TRUE );
+}
+
+void MindBreakerBoard::doFixSize()
+{
+ QSize s = size();
+ int fw = frameWidth();
+ s.setWidth(s.width() - fw);
+ s.setHeight(s.height() - fw);
+
+ /* min size is 200 x 260 */
+/*
+ if (s.width() < adjusted_board_width)
+ s.setWidth(adjusted_board_width);
+
+ if (s.height() < adjusted_board_height)
+ s.setHeight(adjusted_board_height);
+*/
+
+ if ( current_highlight ) // non-first resize
+ writeConfig();
+
+ setupBoardSize(s.width() - fw, s.height() - fw);
+ canvas()->resize(s.width() - fw, s.height() - fw);
+ Peg::buildImages(); // must be done BEFORE any pegs are made
+
+ QImage image = Resource::loadImage("mindbreaker/mindbreaker");
+
+ /* copy from master image to functional images */
+ int x = 0;
+ int y = 0;
+ panelImage = image.copy(x, y, panel_width, panel_height).
+ smoothScale( adjusted_panel_width, adjusted_panel_height);
+
+ y += panel_height;
+ y += panel_height;
+
+ titleImage = image.copy(x, y, title_width, title_height).
+ smoothScale( adjusted_title_width, adjusted_title_height);
+ show();
+
+ delete current_highlight;
+ current_highlight = new Peg(canvas(), 8);
+ current_highlight->setPlaced(TRUE);
+ current_highlight->setX(0);
+ current_highlight->setY(adjusted_board_height - ((current_go + 1) * adjusted_panel_height));
+ current_highlight->setZ(0);
+ current_highlight->show();
+
+ /* set up the game */
+ //readConfig();
+
+ /* draw initial screen */
+ //drawBackground();
+ //canvas()->update();
+ clear();
+
+ readConfig();
+}
+
void MindBreakerBoard::placeGuessPeg(int pos, int pegId)
{
- int x = first_peg_x_diff + (pos * peg_spacing);
- int y = board_height - ((current_go + 1) * panel_height)
- + first_peg_y_diff;
+ int x = adjusted_first_peg_x_diff + (pos * adjusted_peg_spacing);
+ int y = adjusted_board_height - ((current_go + 1) * adjusted_panel_height)
+ + adjusted_first_peg_y_diff;
@@ -407,14 +551,14 @@ void MindBreakerBoard::drawBackground()
painter.setPen(pen);
- x_gap = canvas()->width() - (panel_width + (2 * bin_margin));
+ x_gap = canvas()->width() - (adjusted_panel_width + (2 * adjusted_bin_margin));
//x_gap += peg_size >> 1;
- if (x_gap < 1)
+ if (x_gap < 1)
x_gap = 1;
- y_gap = board_height / 6;
- y_gap -= (2 * bin_margin);
+ y_gap = adjusted_board_height / 6;
+ y_gap -= (2 * adjusted_bin_margin);
//y_gap += peg_size >> 1;
- if (y_gap < 1)
+ if (y_gap < 1)
y_gap = 1;
- x = panel_width + bin_margin - (peg_size >> 1);
- y = bin_margin - (peg_size >> 1) + 2;
+ x = adjusted_panel_width + adjusted_bin_margin - (adjusted_peg_size >> 1);
+ y = adjusted_bin_margin - (adjusted_peg_size >> 1) + 2;
@@ -426,9 +570,9 @@ void MindBreakerBoard::drawBackground()
}
- y += board_height / 6;
+ y += adjusted_board_height / 6;
}
/* now draw the surrounding boxes */
- x_gap = canvas()->width() - panel_width;
+ x_gap = canvas()->width() - adjusted_panel_width;
if (x_gap < 1) x_gap = 1;
- y_gap = board_height / 6;
- x = panel_width;
+ y_gap = adjusted_board_height / 6;
+ x = adjusted_panel_width;
y = 1;
@@ -436,3 +580,3 @@ void MindBreakerBoard::drawBackground()
for (i = 0; i < 6; i++) {
- painter.drawRect(x, y, x_gap, y_gap);
+ painter.drawRect(x, y, x_gap, y_gap);
y += y_gap;
@@ -444,3 +588,3 @@ void MindBreakerBoard::drawBackground()
painter.drawImage(x,y, titleImage);
- y = title_height;
+ y = adjusted_title_height;
/* now nine gues panels */
@@ -448,3 +592,3 @@ void MindBreakerBoard::drawBackground()
painter.drawImage(x, y, panelImage);
- y += panel_height;
+ y += adjusted_panel_height;
}
@@ -471,3 +615,3 @@ void MindBreakerBoard::checkGuess()
copy_answer[i] = 6;
- copy_guess[i] = 7;
+ copy_guess[i] = 7;
}
@@ -488,5 +632,5 @@ void MindBreakerBoard::checkGuess()
- int x = answerpegx;
- int y = (board_height - ((current_go + 1) * panel_height)) + answerpegy;
-
+ int x = adjusted_answerpegx;
+ int y = (adjusted_board_height - ((current_go + 1) * adjusted_panel_height)) + adjusted_answerpegy;
+
if (num_black == 4)
@@ -502,8 +646,8 @@ void MindBreakerBoard::checkGuess()
num_black--;
-
- if (x == answerpegx)
- x = answerpegx + answerpeg_diff;
+
+ if (x == adjusted_answerpegx)
+ x = adjusted_answerpegx + adjusted_answerpeg_xdiff;
else {
- x = answerpegx;
- y += answerpeg_diff;
+ x = adjusted_answerpegx;
+ y += adjusted_answerpeg_ydiff;
}
@@ -518,8 +662,8 @@ void MindBreakerBoard::checkGuess()
num_white--;
-
- if (x == answerpegx)
- x = answerpegx + answerpeg_diff;
+
+ if (x == adjusted_answerpegx)
+ x = adjusted_answerpegx + adjusted_answerpeg_xdiff;
else {
- x = answerpegx;
- y += answerpeg_diff;
+ x = adjusted_answerpegx;
+ y += adjusted_answerpeg_ydiff;
}
@@ -537,3 +681,3 @@ void MindBreakerBoard::checkGuess()
total_turns += 10;
- else
+ else
total_turns += current_go;
@@ -548,7 +692,7 @@ void MindBreakerBoard::checkGuess()
p->show();
-
+
for (i = 0; i < 4; i++) {
p = new Peg(canvas(), answer[i], -1);
- p->setX(first_peg_x_diff + (i * peg_spacing));
- p->setY(5);
+ p->setX(adjusted_first_peg_x_diff + (i * adjusted_peg_spacing));
+ p->setY(adjusted_first_peg_y_diff);
p->setZ(3);
@@ -557,3 +701,3 @@ void MindBreakerBoard::checkGuess()
} else {
- current_highlight->setY(board_height - ((current_go + 1) * panel_height));
+ current_highlight->setY(adjusted_board_height - ((current_go + 1) * adjusted_panel_height));
}
@@ -588,3 +732,3 @@ void MindBreakerBoard::clear()
- current_highlight->setY(board_height - ((current_go + 1) * panel_height));
+ current_highlight->setY(adjusted_board_height - ((current_go + 1) * adjusted_panel_height));
checkScores();
@@ -594,3 +738,3 @@ void MindBreakerBoard::clear()
-void MindBreakerBoard::resetScore()
+void MindBreakerBoard::resetScore()
{
@@ -598,3 +742,3 @@ void MindBreakerBoard::resetScore()
- if (QMessageBox::information(this, tr( "Reset Statistics" ),
+ if (QMessageBox::information(this, tr( "Reset Statistics" ),
tr( "Reset the win ratio?" ),
@@ -614,2 +758,9 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e)
{
+ if (game_over) {
+ null_press = TRUE;
+ null_point = e->pos();
+ moving = 0;
+ return;
+ }
+
copy_press = FALSE;
@@ -618,7 +769,7 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e)
got clicked */
- if (e->x() > panel_width) {
+ if (e->x() > adjusted_panel_width) {
/* its a bin, but which bin */
- if(e->y() > board_height)
+ int bin = (e->y() + 2) / (adjusted_board_height / 6);
+ if (bin > 5)
return; // missed everything
- int bin = (e->y() + 2) / (board_height / 6);
@@ -627,4 +778,4 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e)
moving = new Peg(canvas(), bin, current_go);
- moving->setX(e->x() - (peg_size >> 1));
- moving->setY(e->y() - (peg_size >> 1));
+ moving->setX(e->x() - (adjusted_peg_size >> 1));
+ moving->setY(e->y() - (adjusted_peg_size >> 1));
moving->setZ(5);
@@ -654,6 +805,6 @@ void MindBreakerBoard::contentsMousePressEvent(QMouseEvent *e)
}
- moving = new Peg(canvas(),
+ moving = new Peg(canvas(),
item->type(), current_go);
- moving->setX(e->x() - (peg_size >> 1));
- moving->setY(e->y() - (peg_size >> 1));
+ moving->setX(e->x() - (adjusted_peg_size >> 1));
+ moving->setY(e->y() - (adjusted_peg_size >> 1));
moving->setZ(5);
@@ -683,3 +834,3 @@ void MindBreakerBoard::contentsMouseMoveEvent(QMouseEvent* e)
return;
- }
+ }
}
@@ -695,3 +846,3 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e)
for (QCanvasItemList::Iterator it=l.begin(); it !=l.end(); ++it) {
- if (*it == copy_peg)
+ if (*it == copy_peg)
copy_press = TRUE;
@@ -709,5 +860,5 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e)
}
-
+
/* first work out if in y */
- if (e->y() > (board_height - (current_go * panel_height))) {
+ if (e->y() > (adjusted_board_height - (current_go * adjusted_panel_height))) {
delete moving;
@@ -717,3 +868,3 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e)
}
- if (e->y() < (board_height - ((current_go + 1) * panel_height))) {
+ if (e->y() < (adjusted_board_height - ((current_go + 1) * adjusted_panel_height))) {
delete moving;
@@ -724,14 +875,14 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e)
/* ok, a valid go, but which peg */
- int x_bar = first_peg_x_diff - (peg_size >> 1);
- x_bar += peg_spacing;
+ int x_bar = adjusted_first_peg_x_diff - (adjusted_peg_size >> 1);
+ x_bar += adjusted_peg_spacing;
int pos = 0;
- if (e->x() > x_bar)
+ if (e->x() > x_bar)
pos = 1;
- x_bar += peg_spacing;
+ x_bar += adjusted_peg_spacing;
if (e->x() > x_bar)
pos = 2;
- x_bar += peg_spacing;
+ x_bar += adjusted_peg_spacing;
if (e->x() > x_bar)
pos = 3;
- x_bar += peg_spacing;
+ x_bar += adjusted_peg_spacing;
@@ -745,5 +896,5 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e)
- int x = first_peg_x_diff + (pos * peg_spacing);
- int y = board_height - ((current_go + 1) * panel_height)
- + first_peg_y_diff;
+ int x = adjusted_first_peg_x_diff + (pos * adjusted_peg_spacing);
+ int y = adjusted_board_height - ((current_go + 1) * adjusted_panel_height)
+ + adjusted_first_peg_y_diff;
moving->setPegPos(pos);
@@ -771,5 +922,5 @@ void MindBreakerBoard::contentsMouseReleaseEvent(QMouseEvent* e)
if(null_point.manhattanLength() < 6) {
- if (game_over)
+ if (game_over)
clear();
- else
+ else
checkGuess();
@@ -780,16 +931,4 @@ void MindBreakerBoard::resizeEvent(QResizeEvent *e)
{
- QSize s = e->size();
- int fw = style().defaultFrameWidth();
- s.setWidth(s.width() - fw);
- s.setHeight(s.height() - fw);
-
- /* min size is 200 x 260 */
- if (s.width() < board_width)
- s.setWidth(board_width);
-
- if (s.height() < board_height)
- s.setHeight(board_height);
-
- canvas()->resize(s.width() - fw, s.height() - fw);
- drawBackground();
+ QCanvasView::resizeEvent(e);
+ fixSize();
}
@@ -806,3 +945,3 @@ void MindBreakerBoard::checkScores()
double break_even = 5.0;
- if (g < 1.0)
+ if (g < 1.0)
return;
@@ -811,3 +950,3 @@ void MindBreakerBoard::checkScores()
while (break_even >= 0.0) {
- if (avg >= (break_even + g))
+ if (avg >= (break_even + g))
return;