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.
knights/knights/dlg_login.cpp

162 lines
4.7 KiB

/***************************************************************************
dlg_login.cpp - description
-------------------
begin : Sat Sep 29 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 "dlg_login.moc"
dlg_login::dlg_login(TQWidget *parent, const char *name, resource *rsrc) :
KDialogBase(parent, name, TRUE, i18n("Login Prompt"), Help|Ok|Cancel, Ok,TRUE )
{
serverList::Iterator i;
serverList::Iterator currentServer;
int counter = 0;
myResource = rsrc;
BOX_Parent = makeVBoxMainWidget();
/* Select which server to connect to */
GROUP_Select_Server = new TQGroupBox( 1, Qt::Vertical, i18n( "Select Server" ), BOX_Parent );
COMBO_Select_Server = new KComboBox ( GROUP_Select_Server );
COMBO_Select_Server->setEditable( FALSE );
/* fill the combobox with servers */
for(i = myResource->servers.begin(); i != myResource->servers.end(); i++)
{
COMBO_Select_Server->insertItem((*i).Name);
if((*i).CurrentRef == TRUE)
{
COMBO_Select_Server->setCurrentItem(counter);
currentServer = i;
}
counter++;
}
/* connect to right signal to the combobox */
connect( COMBO_Select_Server, TQT_SIGNAL( activated(const TQString &) ), this, TQT_SLOT( slotUpdateUser(const TQString &) ) );
GROUP_Username = new TQGroupBox( 1, Qt::Horizontal, i18n("User info"), BOX_Parent);
BOX_ALIGN = new TQHBox( GROUP_Username );
BOX_TEXT = new TQVBox( BOX_ALIGN );
TEXT_Login = new TQLabel( BOX_TEXT );
TEXT_Password = new TQLabel( BOX_TEXT );
TEXT_Login->setText( i18n("Login:") );
TEXT_Password->setText( i18n("Password:") );
BOX_EDIT = new TQVBox( BOX_ALIGN );
EDIT_Login = new KLineEdit( BOX_EDIT );
EDIT_Password = new KLineEdit( BOX_EDIT );
CHECKBOX_GUEST = new TQCheckBox(i18n("Log in as guest"), GROUP_Username);
EDIT_Password->setEchoMode( TQLineEdit::Password );
connect(CHECKBOX_GUEST, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotGuestToggle(bool)));
/* Init the buttons */
showButtonCancel( TRUE );
showButtonOK( TRUE );
showButton( Help, TRUE );
enableButtonCancel( TRUE );
enableButtonOK( TRUE );
enableButton( Help, TRUE );
setButtonOKText( i18n("Login"), i18n("Log in to the chess server using this name and password.") );
setButtonCancelText( i18n("Cancel"), i18n("Abort logging into the server") );
setHelp("prefs");
disableResize();
show();
/* make sure the username for the default server is displayed */
slotUpdateUser((*currentServer).Name);
}
///////////////////////////////////////
//
// dlg_login::~dlg_login
//
///////////////////////////////////////
dlg_login::~dlg_login()
{
}
///////////////////////////////////////
//
// dlg_login::slotOk
//
///////////////////////////////////////
void dlg_login::slotOk( void )
{
if(BOX_ALIGN->isEnabled())
{
emit login(EDIT_Login->text(), EDIT_Password->text());
}
else
{
emit login("guest", "");
}
emit okClicked();
slotDelayedDestruct();
}
///////////////////////////////////////
//
// dlg_login::slotGuestToggle
//
///////////////////////////////////////
void dlg_login::slotGuestToggle( bool on )
{
BOX_ALIGN->setEnabled(!on);
}
///////////////////////////////////////
//
// dlg_login::slotUpdateUser
//
///////////////////////////////////////
void dlg_login::slotUpdateUser(const TQString &name)
{
/* this function retrieves the correct serverResource from
the resources and uses that to fill in the username and
password fields */
serverList::Iterator i;
for(i = myResource->servers.begin(); i != myResource->servers.end(); i++)
{
if((*i).CurrentRef)
{
(*i).CurrentRef = FALSE;
}
if((*i).Name == name )
{
(*i).CurrentRef = TRUE;
EDIT_Login->setText((*i).UserName);
EDIT_Password->setText((*i).Password);
server = &(*i);
}
}
}
///////////////////////////////////////
//
// dlg_login::slotUpdateUser
//
///////////////////////////////////////
void dlg_login::disableServerSelect()
{
COMBO_Select_Server->setEnabled(false);
}