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.
tdenetwork/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp

189 lines
6.4 KiB

/*
icqeditaccountwidget.cpp - ICQ Account Widget
Copyright (c) 2003 by Chris TenHarmsel <tenharmsel@staticmethod.net>
Kopete (c) 2003 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
* *
* 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 "icqeditaccountwidget.h"
#include "icqeditaccountui.h"
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <tqcombobox.h>
#include <tqlineedit.h>
#include <tqtextedit.h>
#include <tqspinbox.h>
#include <tqpushbutton.h>
#include <tdeconfig.h>
#include <kdebug.h>
#include <kdialog.h>
#include <tdelocale.h>
#include <kiconloader.h>
#include <kjanuswidget.h>
#include <kurllabel.h>
#include <kdatewidget.h>
#include <krun.h>
#include <kpassdlg.h>
#include "kopetepassword.h"
#include "kopetepasswordwidget.h"
#include "icqprotocol.h"
#include "icqaccount.h"
#include "icqcontact.h"
ICQEditAccountWidget::ICQEditAccountWidget(ICQProtocol *protocol,
Kopete::Account *account, TQWidget *parent, const char *name)
: TQWidget(parent, name), KopeteEditAccountWidget(account)
{
kdDebug(14153) << k_funcinfo << "Called." << endl;
mAccount=dynamic_cast<ICQAccount*>(account);
mProtocol=protocol;
(new TQVBoxLayout(this))->setAutoAdd(true);
mAccountSettings = new ICQEditAccountUI( this );
mProtocol->fillComboFromTable( mAccountSettings->encodingCombo, mProtocol->encodings() );
// Read in the settings from the account if it exists
if(mAccount)
{
mAccountSettings->edtAccountId->setText(mAccount->accountId());
// TODO: Remove me after we can change Account IDs (Matt)
mAccountSettings->edtAccountId->setDisabled(true);
mAccountSettings->mPasswordWidget->load(&mAccount->password());
mAccountSettings->chkAutoLogin->setChecked(mAccount->excludeConnect());
TQString serverEntry = mAccount->configGroup()->readEntry("Server", "login.oscar.aol.com");
int portEntry = mAccount->configGroup()->readNumEntry("Port", 5190);
if ( serverEntry != "login.oscar.aol.com" || ( portEntry != 5190) )
mAccountSettings->optionOverrideServer->setChecked( true );
mAccountSettings->edtServerAddress->setText( serverEntry );
mAccountSettings->edtServerPort->setValue( portEntry );
bool configValue = mAccount->configGroup()->readBoolEntry( "RequireAuth", false );
mAccountSettings->chkRequireAuth->setChecked( configValue );
configValue = mAccount->configGroup()->readBoolEntry( "HideIP", true );
mAccountSettings->chkHideIP->setChecked( configValue );
configValue = mAccount->configGroup()->readBoolEntry( "WebAware", false );
mAccountSettings->chkWebAware->setChecked( configValue );
int encodingValue = mAccount->configGroup()->readNumEntry( "DefaultEncoding", 4 );
mProtocol->setComboFromTable( mAccountSettings->encodingCombo,
mProtocol->encodings(),
encodingValue );
// Global Identity
mAccountSettings->chkGlobalIdentity->setChecked( mAccount->configGroup()->readBoolEntry("ExcludeGlobalIdentity", false) );
}
else
{
mProtocol->setComboFromTable( mAccountSettings->encodingCombo,
mProtocol->encodings(),
4 );
}
TQObject::connect(mAccountSettings->buttonRegister, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotOpenRegister()));
/* Set tab order to password custom widget correctly */
TQWidget::setTabOrder( mAccountSettings->edtAccountId, mAccountSettings->mPasswordWidget->mRemembered );
TQWidget::setTabOrder( mAccountSettings->mPasswordWidget->mRemembered, mAccountSettings->mPasswordWidget->mPassword );
TQWidget::setTabOrder( mAccountSettings->mPasswordWidget->mPassword, mAccountSettings->chkAutoLogin );
}
Kopete::Account *ICQEditAccountWidget::apply()
{
kdDebug(14153) << k_funcinfo << "Called." << endl;
// If this is a new account, create it
if (!mAccount)
{
kdDebug(14153) << k_funcinfo << "Creating a new account" << endl;
mAccount = new ICQAccount(mProtocol, mAccountSettings->edtAccountId->text());
if(!mAccount)
return NULL;
}
mAccountSettings->mPasswordWidget->save(&mAccount->password());
mAccount->setExcludeConnect(mAccountSettings->chkAutoLogin->isChecked());
bool configValue = mAccountSettings->chkRequireAuth->isChecked();
mAccount->configGroup()->writeEntry( "RequireAuth", configValue );
configValue = mAccountSettings->chkHideIP->isChecked();
mAccount->configGroup()->writeEntry( "HideIP", configValue );
configValue = mAccountSettings->chkWebAware->isChecked();
mAccount->configGroup()->writeEntry( "WebAware", configValue );
int encodingMib = mProtocol->getCodeForCombo( mAccountSettings->encodingCombo,
mProtocol->encodings() );
mAccount->configGroup()->writeEntry( "DefaultEncoding", encodingMib );
if ( mAccountSettings->optionOverrideServer->isChecked() )
{
mAccount->setServerAddress(mAccountSettings->edtServerAddress->text());
mAccount->setServerPort(mAccountSettings->edtServerPort->value());
}
else
{
mAccount->setServerAddress("login.oscar.aol.com");
mAccount->setServerPort(5190);
}
// Global Identity
mAccount->configGroup()->writeEntry( "ExcludeGlobalIdentity", mAccountSettings->chkGlobalIdentity->isChecked() );
return mAccount;
}
bool ICQEditAccountWidget::validateData()
{
kdDebug(14153) << k_funcinfo << "Called." << endl;
TQString userName = mAccountSettings->edtAccountId->text();
if (userName.isEmpty())
return false;
for (unsigned int i=0; i<userName.length(); i++)
{
if(!(userName[i]).isNumber())
return false;
}
// No need to check port, min and max values are properly defined in .ui
if (mAccountSettings->edtServerAddress->text().isEmpty())
return false;
// Seems good to me
kdDebug(14153) << k_funcinfo <<
"Account data validated successfully." << endl;
return true;
}
void ICQEditAccountWidget::slotOpenRegister()
{
KRun::runURL( "http://go.icq.com/register/", "text/html" );
}
#include "icqeditaccountwidget.moc"