Added action callbacks.
[tagua/yd.git] / src / hlvariant / chess / variant.cpp
blob1f0047fcf96a7b6f76da48c15e82ee0317a80a44
1 #include "variant.h"
3 #include <functional>
4 #include <boost/bind.hpp>
6 #include <QActionGroup>
7 #include <KAction>
9 #include "../tagua_wrapped.h"
10 #include "actioncollection.h"
12 namespace HLVariant {
13 namespace Chess {
15 const char* Variant::m_name = "Chess";
16 const char* Variant::m_theme_proxy = "Chess";
18 Variant::Variant()
19 : m_promotion(GameState::Board::Piece::QUEEN) { }
21 QAction* createAction(QActionGroup* group, const KIcon& icon, const QString& text) {
22 QAction* action = new KAction(icon, text, group);
23 action->setCheckable(true);
24 group->addAction(action);
25 return action;
28 void Variant::setupActions(ActionCollection* actions) {
29 QActionGroup* group = new QActionGroup(actions);
31 QAction* queen = createAction(group, KIcon("promoteQueen"), "Promote to queen");
32 queen->setChecked(true);
33 actions->add(queen, boost::bind(std::mem_fun(&Variant::promote_to_queen), this));
35 QAction* rook = createAction(group, KIcon("promoteRook"), "Promote to rook");
36 actions->add(rook, boost::bind(std::mem_fun(&Variant::promote_to_rook), this));
38 QAction* bishop = createAction(group, KIcon("promoteBishop"), "Promote to bishop");
39 actions->add(bishop, boost::bind(std::mem_fun(&Variant::promote_to_bishop), this));
41 QAction* knight = createAction(group, KIcon("promoteKnight"), "Promote to knight");
42 actions->add(knight, boost::bind(std::mem_fun(&Variant::promote_to_knight), this));
45 void Variant::promote_to_queen() {
46 m_promotion = GameState::Board::Piece::QUEEN;
49 void Variant::promote_to_rook() {
50 m_promotion = GameState::Board::Piece::ROOK;
53 void Variant::promote_to_bishop() {
54 m_promotion = GameState::Board::Piece::BISHOP;
57 void Variant::promote_to_knight() {
58 m_promotion = GameState::Board::Piece::KNIGHT;
61 } // namespace Chess
62 } // namespace HLVariant