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/sms/smseditaccountwidget.cpp

148 lines
4.6 KiB

/* *************************************************************************
* copyright: (C) 2003 Richard L<EFBFBD>rk<EFBFBD>ng <nouseforaname@home.se> *
* copyright: (C) 2003 Gav Wood <gav@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 <qvgroupbox.h>
#include <qlayout.h>
#include <qcombobox.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qcheckbox.h>
#include <qradiobutton.h>
#include <kconfigbase.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <krestrictedline.h>
#include "kopeteuiglobal.h"
#include "smseditaccountwidget.h"
#include "smsactprefs.h"
#include "serviceloader.h"
#include "smsprotocol.h"
#include "smsaccount.h"
SMSEditAccountWidget::SMSEditAccountWidget(SMSProtocol *protocol, Kopete::Account *account, QWidget *parent, const char */*name*/)
: QWidget(parent), KopeteEditAccountWidget(account)
{
QVBoxLayout *l = new QVBoxLayout(this, QBoxLayout::Down);
preferencesDialog = new smsActPrefsUI(this);
l->addWidget(preferencesDialog);
service = 0L;
configWidget = 0L;
middleFrameLayout = 0L;
m_protocol = protocol;
QString sName;
if (account)
{
preferencesDialog->accountId->setText(account->accountId());
//Disable changing the account ID for now
//FIXME: Remove this when we can safely change the account ID (Matt)
preferencesDialog->accountId->setDisabled(true);
sName = account->configGroup()->readEntry("ServiceName", QString::null);
preferencesDialog->subEnable->setChecked(account->configGroup()->readBoolEntry("SubEnable", false));
preferencesDialog->subCode->setText(account->configGroup()->readEntry("SubCode", QString::null));
preferencesDialog->ifMessageTooLong->setCurrentItem(SMSMsgAction(account->configGroup()->readNumEntry("MsgAction", 0)));
}
preferencesDialog->serviceName->insertStringList(ServiceLoader::services());
connect (preferencesDialog->serviceName, SIGNAL(activated(const QString &)),
this, SLOT(setServicePreferences(const QString &)));
connect (preferencesDialog->descButton, SIGNAL(clicked()),
this, SLOT(showDescription()));
for (int i=0; i < preferencesDialog->serviceName->count(); i++)
{
if (preferencesDialog->serviceName->text(i) == sName)
{
preferencesDialog->serviceName->setCurrentItem(i);
break;
}
}
setServicePreferences(preferencesDialog->serviceName->currentText());
}
SMSEditAccountWidget::~SMSEditAccountWidget()
{
delete service;
}
bool SMSEditAccountWidget::validateData()
{
return true;
}
Kopete::Account* SMSEditAccountWidget::apply()
{
if (!account())
setAccount( new SMSAccount( m_protocol, preferencesDialog->accountId->text() ) );
if (service)
service->setAccount(account());
KConfigGroup *c = account()->configGroup();
c->writeEntry("ServiceName", preferencesDialog->serviceName->currentText());
c->writeEntry("SubEnable", preferencesDialog->subEnable->isChecked() ? "true" : "false");
c->writeEntry("SubCode", preferencesDialog->subCode->text());
c->writeEntry("MsgAction", preferencesDialog->ifMessageTooLong->currentItem());
emit saved();
return account();
}
void SMSEditAccountWidget::setServicePreferences(const QString& serviceName)
{
delete service;
delete configWidget;
service = ServiceLoader::loadService(serviceName, account());
if (service == 0L)
return;
connect (this, SIGNAL(saved()), service, SLOT(savePreferences()));
delete middleFrameLayout;
middleFrameLayout = new QGridLayout(preferencesDialog->middleFrame, 1, 2, 0, 6, "middleFrameLayout");
service->setWidgetContainer(preferencesDialog->middleFrame, middleFrameLayout);
}
void SMSEditAccountWidget::showDescription()
{
SMSService* s = ServiceLoader::loadService(preferencesDialog->serviceName->currentText(), 0L);
QString d = s->description();
KMessageBox::information(Kopete::UI::Global::mainWidget(), d, i18n("Description"));
}
#include "smseditaccountwidget.moc"
/*
* Local variables:
* c-indentation-style: k&r
* c-basic-offset: 8
* indent-tabs-mode: t
* End:
*/
// vim: set noet ts=4 sts=4 sw=4: