1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#ifndef _BOARDWIDGET_H_
#define _BOARDWIDGET_H_
#include <qwidget.h>
#include <qpixmap.h>
#include "Ball.h"
#include "Move.h"
#include "Board.h"
#ifdef HAVE_KIR
class KIRenderer;
#endif
class BoardWidget : public BallWidget
{
Q_OBJECT
public:
BoardWidget(Board&, QWidget *parent = 0, const char *name = 0);
~BoardWidget();
void createPos(int , int , int , Ball*);
void initBalls();
void updateBalls();
virtual void resizeEvent(QResizeEvent *);
virtual void moveEvent(QMoveEvent *);
virtual void paintEvent(QPaintEvent *);
virtual void mousePressEvent( QMouseEvent* pEvent );
virtual void mouseReleaseEvent( QMouseEvent* pEvent );
virtual void mouseMoveEvent( QMouseEvent* pEvent );
void renderBalls(bool r);
void draw();
void choseMove(MoveList*);
/* Show a move with highlighting
* step 0: state before move
* 1: state after move
* 2: remove all marks (for blinking)
* 3: highlight marks (before move)
* 4: highlight marks (after move)
* Always call with step 0 before actual playing the move !! */
void showMove(const Move& m, int step, bool updateGUI = true);
/* Only highlight start
* Step 0: original state
* 1: highlight start
* Always call with step 0 before actual playing the move !! */
void showStart(const Move& m, int step, bool updateGUI = true);
/* enable/disable Edit Mode:
* On disabling & valid position it's actually copied to Board
*/
bool setEditMode(bool);
// int validState() { return board->validState(); }
// bool isValid() { return validState()==Board::valid; }
/* copy actual board position */
void updatePosition(bool updateGUI = false);
void clearPosition();
int getColor1Count() { return color1Count; }
int getColor2Count() { return color2Count; }
public slots:
void configure();
void drawBoard();
signals:
void moveChoosen(Move&);
void rightButtonPressed(int,const QPoint&);
void updateSpy(QString);
void edited(int);
protected:
virtual QSize sizeHint() const;
private:
int positionOf(int x, int y);
bool isValidStart(int pos, bool);
bool isValidEnd(int pos);
QPixmap pm, boardPM;
Board& board;
int actValue;
bool editMode, renderMode;
int editColor;
/* copied position */
int field[Board::AllFields];
int color1Count, color2Count, color;
bool boardOK;
/* for getting user Move */
MoveList *pList;
Move actMove;
bool gettingMove, mbDown, startValid, startShown;
int startPos, actPos, oldPos, shownDirection;
int startField, startField2, actField, oldField, startType;
QColor *boardColor, *redColor, *yellowColor, *redHColor, *yellowHColor;
QCursor *arrowAll, *arrow[7];
Ball *n1, *n2, *h1, *h2, *d1, *d2; //, *e;
#ifdef HAVE_KIR
KIRenderer *m_backRenderer;
#endif
};
#endif /* _BOARDWIDGET_H_ */
|