first cut at game setup dialog

This commit is contained in:
ehouse 2005-01-08 18:13:30 +00:00
parent 290ff76587
commit f53ccf7580
4 changed files with 295 additions and 14 deletions

View file

@ -274,44 +274,164 @@ RESOURCE DIALOG r_xwords_info_only
*/ */
RESOURCE ARRAY r_xwords_newgame_page1 RESOURCE ARRAY r_conn_roles
{
items = {
LBUF { txt = "Standalone"; }
,LBUF { txt = "Host"; }
,LBUF { txt = "Guest"; }
};
}
RESOURCE ARRAY r_conn_types
{
items = {
LBUF { txt = "Bluetooth"; }
,LBUF { txt = "IR"; }
,LBUF { txt = "Cellular internet"; }
};
}
RESOURCE ARRAY r_xwords_newgame_page_conn
{ {
items = items =
{ {
DLG_LINE DLG_LINE
{ {
control = EDWIN { width = 100; maxlength = 1000; }; prompt = "Role";
type = EEikCtEdwin; type = EEikCtChoiceList;
id = EAskContents; control = CHOICELIST { array_id = r_conn_roles; };
id = EConnectionRole;
// itemflags =
},
DLG_LINE
{
prompt = "Connect via";
type = EEikCtChoiceList;
control = CHOICELIST { array_id = r_conn_types; };
id = EConnectionType;
// itemflags =
} }
}; };
} }
RESOURCE ARRAY r_xwords_newgame_page2 RESOURCE ARRAY r_player_species
{ {
items = items = {
LBUF { txt = "Human"; }
,LBUF { txt = "Robot"; }
};
}
RESOURCE ARRAY r_location_choices
{
items = {
LBUF { txt = "Local"; }
,LBUF { txt = "Remote"; }
,LBUF { txt = "Dead"; }
};
}
#define PLAYER(p_id,p_loc,p_nam,p_spec,p_pswd) \
RESOURCE ARRAY p_id \
{ \
items = \
{ \
DLG_LINE \
{ \
prompt = "Location"; \
type = EEikCtChoiceList; \
control = CHOICELIST { array_id = r_location_choices; }; \
id = p_loc; \
} \
,DLG_LINE \
{ \
prompt = "Name"; \
control = EDWIN { width = 20; maxlength = 32; }; \
type = EEikCtEdwin; \
id = p_nam; \
} ,DLG_LINE { \
prompt = "Species"; \
type = EEikCtChoiceList; \
control = CHOICELIST { array_id = r_player_species; }; \
id = p_spec; \
} ,DLG_LINE { \
type = EEikCtSecretEd; \
prompt = "Password"; \
id = p_pswd; \
control = SECRETED { num_letters = 5; }; \
} \
}; \
}
PLAYER( r_xwords_newgame_page_player1,
EPlayerLocationChoice1,
EPlayerName1,
EPlayerSpeciesChoice1,
EDecryptPassword1 )
PLAYER( r_xwords_newgame_page_player2,
EPlayerLocationChoice2,
EPlayerName2,
EPlayerSpeciesChoice2,
EDecryptPassword2 )
PLAYER( r_xwords_newgame_page_player3,
EPlayerLocationChoice3,
EPlayerName3,
EPlayerSpeciesChoice3,
EDecryptPassword3 )
PLAYER( r_xwords_newgame_page_player4,
EPlayerLocationChoice4,
EPlayerName4,
EPlayerSpeciesChoice4,
EDecryptPassword4 )
#ifdef SERIES_60
RESOURCE DLG_BUTTONS r_dict_browse_button
{
buttons = {
DLG_BUTTON
{ {
DLG_LINE id = EDictBrowseButton;
{ button = CMBUT { txt = "Browse"; };
control = EDWIN { width = 100; maxlength = 1000; }; hotkey = "B";
type = EEikCtEdwin;
id = EAskContents;
} }
}; };
} }
#endif
RESOURCE ARRAY r_xwords_newgame_page_dict
{
items = {
DLG_LINE {
prompt = "Selected dictionary";
control = EDWIN { width = 32; maxlength = 32; };
type = EEikCtEdwin;
id = ESelDictName;
}
#ifdef SERIES_60
,DLG_LINE {
buttons = r_dict_browse_button;
}
#endif
};
}
RESOURCE ARRAY r_xwords_newgame_pages RESOURCE ARRAY r_xwords_newgame_pages
{ {
items = items =
{ {
PAGE{ text="page1"; id=EPage1; lines=r_xwords_newgame_page1;}, PAGE{ text="Connection"; id=EPage1; lines=r_xwords_newgame_page_conn;}
PAGE{ text="page2"; id=EPage2; lines=r_xwords_newgame_page2;} ,PAGE{ text="Player 1"; id=EPage2; lines=r_xwords_newgame_page_player1;}
,PAGE{ text="Player 2"; id=EPage2; lines=r_xwords_newgame_page_player2;}
,PAGE{ text="Player 3"; id=EPage2; lines=r_xwords_newgame_page_player3;}
,PAGE{ text="Player 4"; id=EPage2; lines=r_xwords_newgame_page_player4;}
,PAGE{ text="Dictionary"; id=EPage2; lines=r_xwords_newgame_page_dict;}
}; };
} }
RESOURCE DIALOG r_xwords_newgame_dlg RESOURCE DIALOG r_xwords_newgame_dlg
{ {
title = "Game info"; title = "Game setup";
#if defined SERIES_80 #if defined SERIES_80
buttons = R_EIK_BUTTONS_CANCEL_OK; buttons = R_EIK_BUTTONS_CANCEL_OK;
#endif #endif

View file

@ -0,0 +1,46 @@
/* -*-mode: C; fill-column: 78; c-basic-offset: 4;-*- */
/*
* Copyright 2005 by Eric House (fixin@peak.org). All rights reserved.
*
* 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.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _SYMGAMDL_H_
#define _SYMGAMDL_H_
extern "C" {
#include "comtypes.h"
#include "xwstream.h"
#include "mempool.h"
}
#include <e32base.h>
#include <eikdialg.h>
class CXWGameInfoDlg : public CEikDialog
{
public:
CXWGameInfoDlg( MPFORMAL_NOCOMMA );
~CXWGameInfoDlg();
private:
void PreLayoutDynInitL();
void HandleControlStateChangeL( TInt aControlId );
TBool OkToExitL( TInt aKeyCode );
MPSLOT
};
#endif

View file

@ -52,8 +52,35 @@ enum TXWordsIds {
,EAskContents /* edit control in generic ask dlg */ ,EAskContents /* edit control in generic ask dlg */
,EPlayerLocationChoice1
,EPlayerLocationChoice2
,EPlayerLocationChoice3
,EPlayerLocationChoice4
,EPlayerName1
,EPlayerName2
,EPlayerName3
,EPlayerName4
,EPlayerSpeciesChoice1
,EPlayerSpeciesChoice2
,EPlayerSpeciesChoice3
,EPlayerSpeciesChoice4
,EDecryptPassword1
,EDecryptPassword2
,EDecryptPassword3
,EDecryptPassword4
,EPage1 ,EPage1
,EPage2 ,EPage2
,EConnectionRole
,EConnectionType
,ESelDictName
,EPlayerSpecies
}; };
#endif // __XWORDS_HRH__ #endif // __XWORDS_HRH__

View file

@ -0,0 +1,88 @@
/* -*-mode: C; fill-column: 78; c-basic-offset: 4;-*- */
/*
* Copyright 2005 by Eric House (fixin@peak.org). All rights reserved.
*
* 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.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <eikedwin.h>
#include <eikmfne.h>
#include <eikchlst.h>
#include "symgamdl.h"
#include "xwords.hrh"
CXWGameInfoDlg::CXWGameInfoDlg( MPFORMAL_NOCOMMA )
{
MPASSIGN( this->mpool, mpool );
}
CXWGameInfoDlg::~CXWGameInfoDlg()
{
}
void
CXWGameInfoDlg::PreLayoutDynInitL()
{
/* This likely belongs in its own method */
const TInt deps[] = { EConnectionRole
,EPlayerLocationChoice1
,EPlayerLocationChoice2
,EPlayerLocationChoice3
,EPlayerLocationChoice4
};
for ( TInt i = 0; i < sizeof(deps)/sizeof(deps[0]); ++i ) {
HandleControlStateChangeL( deps[i] );
}
} /* PreLayoutDynInitL */
void
CXWGameInfoDlg::HandleControlStateChangeL( TInt aControlId )
{
XP_LOGF( "HandleControlStateChangeL got %d", aControlId );
CEikChoiceList* list;
TInt index;
switch ( aControlId ) {
case EConnectionRole:
/* Hide EConnectionType if it's standalone */
list = static_cast<CEikChoiceList*>(Control(EConnectionRole));
MakeLineVisible( EConnectionType, list->CurrentItem() != 0 );
break;
case EPlayerLocationChoice1:
case EPlayerLocationChoice2:
case EPlayerLocationChoice3:
case EPlayerLocationChoice4: {
index = aControlId - EPlayerLocationChoice1;
list = static_cast<CEikChoiceList*>
(Control(EPlayerLocationChoice1 + index ));
TBool show = list->CurrentItem() == 0;
MakeLineVisible( EPlayerName1 + index, show );
MakeLineVisible( EPlayerSpeciesChoice1 + index, show );
MakeLineVisible( EDecryptPassword1 + index, show );
}
break;
default:
break;
}
}
TBool
CXWGameInfoDlg::OkToExitL( TInt aKeyCode )
{
return ETrue;
}