diff options
Diffstat (limited to 'kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp')
-rw-r--r-- | kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp b/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp new file mode 100644 index 00000000..e4b308be --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp @@ -0,0 +1,190 @@ +/* + 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 <qlayout.h> +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qlineedit.h> +#include <qtextedit.h> +#include <qspinbox.h> +#include <qpushbutton.h> + +#include <kconfig.h> +#include <kdebug.h> +#include <kdialog.h> +#include <klocale.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, QWidget *parent, const char *name) + : QWidget(parent, name), KopeteEditAccountWidget(account) +{ + kdDebug(14153) << k_funcinfo << "Called." << endl; + + mAccount=dynamic_cast<ICQAccount*>(account); + mProtocol=protocol; + + (new QVBoxLayout(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()); + + QString 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 ); + } + + QObject::connect(mAccountSettings->buttonRegister, SIGNAL(clicked()), this, SLOT(slotOpenRegister())); + + /* Set tab order to password custom widget correctly */ + QWidget::setTabOrder( mAccountSettings->edtAccountId, mAccountSettings->mPasswordWidget->mRemembered ); + QWidget::setTabOrder( mAccountSettings->mPasswordWidget->mRemembered, mAccountSettings->mPasswordWidget->mPassword ); + QWidget::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; + + QString 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" +// vim: set noet ts=4 sts=4 sw=4: +// kate: indent-mode csands; space-indent off; replace-tabs off; |