summaryrefslogtreecommitdiffstats
path: root/knights/dlg_promote.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'knights/dlg_promote.cpp')
-rw-r--r--knights/dlg_promote.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/knights/dlg_promote.cpp b/knights/dlg_promote.cpp
new file mode 100644
index 0000000..d98ad83
--- /dev/null
+++ b/knights/dlg_promote.cpp
@@ -0,0 +1,123 @@
+/***************************************************************************
+ dlg_promote.cpp - description
+ -------------------
+ begin : Fri Jul 13 2001
+ copyright : (C) 2003 by Troy Corbin Jr.
+ email : tcorbin@users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program 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 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "definitions.h"
+#include "dlg_promote.moc"
+#include "knightspixcache.h"
+#include <qimage.h>
+
+dlg_promote::dlg_promote(QWidget *parent, const char *name, resource *Rsrc ) :
+ QDialog( parent, name, TRUE, Qt::WStyle_Customize | Qt::WStyle_DialogBorder )
+{
+ Resource = Rsrc;
+ Queen = new QPushButton( this );
+ Bishop = new QPushButton( this );
+ Knight = new QPushButton( this );
+ Rook = new QPushButton( this );
+ Description = new QLabel( this );
+}
+
+dlg_promote::~dlg_promote()
+{
+ delete Queen;
+ delete Bishop;
+ delete Knight;
+ delete Rook;
+ delete Description;
+}
+
+void dlg_promote::Init( bool Army )
+{
+ KnightsPixCache *cache = Resource->pixCache;
+ QImage tempImage;
+ QPixmap buffer;
+ int margin;
+
+ margin = 2;
+ buffer.resize( Resource->ThemeSize, Resource->ThemeSize );
+ Description->setFixedSize( Resource->ThemeSize * 2 , 20 );
+ Queen->setFixedSize( Resource->ThemeSize, Resource->ThemeSize );
+ Bishop->setFixedSize( Resource->ThemeSize, Resource->ThemeSize );
+ Knight->setFixedSize( Resource->ThemeSize, Resource->ThemeSize );
+ Rook->setFixedSize( Resource->ThemeSize, Resource->ThemeSize );
+ setFixedSize( ( margin * 4 ) + ( Resource->ThemeSize * 2 ),
+ ( margin * 6 ) + ( Resource->ThemeSize * 2 ) + 20 );
+
+ Description->move( margin, margin );
+ Queen->move( margin, ( margin * 3 ) + 20 );
+ Bishop->move( ( margin * 3 ) + Resource->ThemeSize, ( margin * 3 ) + 20 );
+ Knight->move( margin, ( margin * 5 ) + 20 + Resource->ThemeSize );
+ Rook->move( ( margin * 3 ) + Resource->ThemeSize, ( margin * 5 ) + 20 + Resource->ThemeSize );
+
+ /* Queen */
+ buffer = cache->SquareLight;
+ if( Army == WHITE ) bitBlt( &buffer, 0, 0, &cache->WhiteQueen, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ else bitBlt( &buffer, 0, 0, &cache->BlackQueen, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ Queen->setPixmap( buffer );
+ Queen->show();
+
+ /* Bishop */
+ buffer = cache->SquareDark;
+ if( Army == WHITE ) bitBlt( &buffer, 0, 0, &cache->WhiteBishop, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ else bitBlt( &buffer, 0, 0, &cache->BlackBishop, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ Bishop->setPixmap( buffer );
+ Bishop->show();
+
+ /* Knight */
+ buffer = cache->SquareDark;
+ if( Army == WHITE ) bitBlt( &buffer, 0, 0, &cache->WhiteKnight, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ else bitBlt( &buffer, 0, 0, &cache->BlackKnight, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ Knight->setPixmap( buffer );
+ Knight->show();
+
+ /* Rook */
+ buffer = cache->SquareLight;
+ if( Army == WHITE ) bitBlt( &buffer, 0, 0, &cache->WhiteRook, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ else bitBlt( &buffer, 0, 0, &cache->BlackRook, 0, 0, -1, -1, Qt::CopyROP, FALSE);
+ Rook->setPixmap( buffer );
+ Rook->show();
+
+ Description->setText( i18n( "Promote your pawn to..." ) );
+ Description->show();
+ connect( Queen, SIGNAL( clicked() ), this, SLOT( queenClick() ) );
+ connect( Bishop, SIGNAL( clicked() ), this, SLOT( bishopClick() ) );
+ connect( Knight, SIGNAL( clicked() ), this, SLOT( knightClick() ) );
+ connect( Rook, SIGNAL( clicked() ), this, SLOT( rookClick() ) );
+ Queen->setFocus();
+ setCaption( i18n( "Pawn Promotion" ) );
+}
+
+void dlg_promote::queenClick( void )
+{
+ done( 'q' );
+}
+
+void dlg_promote::bishopClick( void )
+{
+ done( 'b' );
+}
+
+void dlg_promote::knightClick( void )
+{
+ done( 'n' );
+}
+
+void dlg_promote::rookClick( void )
+{
+ done( 'r' );
+}
+