You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegames/kreversi/qreversigameview.h

163 lines
4.2 KiB

/* Yo Emacs, this -*- C++ -*-
*******************************************************************
*******************************************************************
*
*
* KREVERSI
*
*
*******************************************************************
*
* A Reversi (or sometimes called Othello) game
*
*******************************************************************
*
* created 2005 by Inge Wallin <inge@lysator.liu.se>
*
*******************************************************************
*
* This file is part of the KDE project "KREVERSI"
*
* KREVERSI 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, or (at your option)
* any later version.
*
* KREVERSI 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 KREVERSI; see the file COPYING. If not, write to
* the Free Software Foundation, 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*******************************************************************
*/
#ifndef __TQREVERSIGAMEVIEW__H__
#define __TQREVERSIGAMEVIEW__H__
#include <tqlistbox.h>
#include "Score.h"
#include "Move.h"
#include "board.h"
class KConfig;
class TQLabel;
class QReversiGame;
class StatusWidget : public TQWidget
{
Q_OBJECT
public:
StatusWidget(const TQString &text, TQWidget *parent);
void setText(const TQString &string);
void setPixmap(const TQPixmap &pixmap);
void setScore(uint score);
private:
TQLabel *m_textLabel;
TQLabel *m_pixLabel;
TQLabel *m_scoreLabel;
};
// The main game view
class QReversiGameView : public TQWidget {
Q_OBJECT
public:
QReversiGameView(TQWidget *parent, QReversiGame *game);
~QReversiGameView();
// Proxy methods for the board view
void showHint(Move move) { m_boardView->showHint(move); }
void quitHint() { m_boardView->quitHint(); }
void setShowLegalMoves(bool show){ m_boardView->setShowLegalMoves(show); }
void setShowMarks(bool show) { m_boardView->setShowMarks(show); }
void setShowLastMove(bool show){ m_boardView->setShowLastMove(show); }
void setAnimationSpeed(uint speed){m_boardView->setAnimationSpeed(speed);}
// To get the pixmap for the status view
TQPixmap chipPixmap(Color color, uint size) const
{ return m_boardView->chipPixmap(color, size); }
// Proxy methods for the movelist
// FIXME: Not all of these need to be externally reachable
void insertMove(TQString moveString) { m_movesView->insertItem(moveString); }
void removeMove(int moveNum) {
m_movesView->removeItem(moveNum);
updateStatus();
}
void setCurrentMove(int moveNum) {
m_movesView->setCurrentItem(moveNum);
m_movesView->ensureCurrentVisible();
}
// The status widgets.
void setHumanColor(Color color);
// Starts all: emits some signal, so it can't be called from
// constructor
void start() { m_boardView->start(); }
// Used by the outer KZoomMainWindow class.
void adjustSize() { m_boardView->adjustSize(); }
void loadSettings() { m_boardView->loadSettings(); }
public slots:
void newGame();
void moveMade(uint moveNum, Move &move);
void updateView(); // Update the entire view.
void updateStatus(); // Update the status widgets (score)
void updateBoard(bool force = FALSE); // Update the board.
void updateMovelist(); // Update the move list.
signals:
void signalSquareClicked(int, int);
private slots:
// Internal slot to reemit the boards signal.
void squareClicked(int, int);
private:
void createView();
private:
// Pointer to the game we are displaying
QReversiGame *m_game; // Pointer to the game object (not owner).
Color m_humanColor;
// Widgets in the view.
QReversiBoardView *m_boardView;
TQListBox *m_movesView;
StatusWidget *m_blackStatus;
StatusWidget *m_whiteStatus;
};
#endif