2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@gmail.com>
3 (c) 2006 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
11 #ifndef EDITPOSITIONCONTROLLER_H
12 #define EDITPOSITIONCONTROLLER_H
15 #include <core/point.h>
17 #include <boost/variant.hpp>
23 class EditPositionEntity
;
30 AbstractPiece::Ptr m_piece
;
31 DropAction(const Point
& to
, AbstractPiece::Ptr piece
)
39 AbstractPiece::Ptr m_piece
;
40 RemoveAction(const Point
& to
, AbstractPiece::Ptr piece
)
49 AbstractPiece::Ptr m_piece
;
50 MoveAction(const Point
& from
, const Point
& to
, AbstractPiece::Ptr piece
)
58 AbstractPosition::Ptr m_from
;
59 AbstractPosition::Ptr m_to
;
60 WarpAction(AbstractPosition::Ptr from
, AbstractPosition::Ptr to
)
65 typedef boost::variant
<DropAction
, RemoveAction
, MoveAction
, WarpAction
> UndoAction
;
68 typedef std::vector
<UndoAction
> Vector
;
73 void add(const UndoAction
& action
);
74 const UndoAction
* undo();
75 const UndoAction
* redo();
80 class EditPositionController
: public Controller
{
81 boost::shared_ptr
<GraphicalInfo
> m_graphical
;
82 boost::shared_ptr
<EditPositionEntity
> m_entity
;
83 UndoHistory m_undo_history
;
84 VariantInfo
* m_variant
;
86 virtual boost::shared_ptr
<UserEntity
> entity() const;
88 EditPositionController(ChessTable
* view
, VariantInfo
* variant
);
89 virtual boost::shared_ptr
<Controller
> end() { return shared_from_this(); }
90 virtual bool clearBoard();
91 virtual bool setStartingPosition();
92 virtual bool setFEN(const QString
&);
93 virtual QString
fen();
95 virtual void setPromotionType(int) { }
97 virtual void setTurn(int);
99 virtual void handleMoveList(const class PGN
&) { }
100 virtual QString
save() { return ""; }
101 virtual void loadPGN(const PGN
&) { }
103 virtual AbstractPosition::Ptr
currentPosition() const;
108 #endif // EDITPOSITIONCONTROLLER_H