/* ************************************************************************* * copyright: (C) 2003 Richard L�k�g * * copyright: (C) 2003 Gav Wood * ************************************************************************* */ /* ************************************************************************* * * * 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 #include #include #include #include #include #include #include #include #include #include #include "kopeteaccount.h" #include "kopeteuiglobal.h" #include "smssend.h" #include "smssendprefs.h" #include "smssendprovider.h" #include "smsprotocol.h" SMSSend::SMSSend(Kopete::Account* account) : SMSService(account) { kdWarning( 14160 ) << k_funcinfo << " this = " << this << endl; prefWidget = 0L; m_provider = 0L; } SMSSend::~SMSSend() { } void SMSSend::send(const Kopete::Message& msg) { kdWarning( 14160 ) << k_funcinfo << "m_account = " << m_account << " (should be non-zero!!)" << endl; QString provider = m_account->configGroup()->readEntry("SMSSend:ProviderName", QString::null); if (provider.length() < 1) { KMessageBox::error(Kopete::UI::Global::mainWidget(), i18n("No provider configured."), i18n("Could Not Send Message")); return; } QString prefix = m_account->configGroup()->readEntry("SMSSend:Prefix", QString::null); if (prefix.isNull()) { KMessageBox::error(Kopete::UI::Global::mainWidget(), i18n("No prefix set for SMSSend, please change it in the configuration dialog."), i18n("No Prefix")); return; } m_provider = new SMSSendProvider(provider, prefix, m_account, this); QObject::connect( m_provider, SIGNAL(messageSent(const Kopete::Message &)), this, SIGNAL(messageSent(const Kopete::Message &))); QObject::connect( m_provider, SIGNAL(messageNotSent(const Kopete::Message &, const QString &)), this, SIGNAL(messageNotSent(const Kopete::Message &, const QString &))); m_provider->send(msg); } void SMSSend::setWidgetContainer(QWidget* parent, QGridLayout* layout) { kdWarning( 14160 ) << k_funcinfo << "ml: " << layout << ", " << "mp: " << parent << endl; m_parent = parent; m_layout = layout; // could end up being deleted twice?? delete prefWidget; prefWidget = new SMSSendPrefsUI(parent); layout->addMultiCellWidget(prefWidget, 0, 1, 0, 1); prefWidget->program->setMode(KFile::Directory); QString prefix = QString::null; if (m_account) prefix = m_account->configGroup()->readEntry("SMSSend:Prefix", QString::null); if (prefix.isNull()) { QDir d("/usr/share/smssend"); if (d.exists()) { prefix = "/usr"; } d = "/usr/local/share/smssend"; if (d.exists()) { prefix="/usr/local"; } else { prefix="/usr"; } } QObject::connect (prefWidget->program, SIGNAL(textChanged(const QString &)), this, SLOT(loadProviders(const QString&))); prefWidget->program->setURL(prefix); QObject::connect(prefWidget->provider, SIGNAL(activated(const QString &)), this, SLOT(setOptions(const QString &))); prefWidget->show(); } void SMSSend::savePreferences() { if (prefWidget != 0L && m_account != 0L && m_provider != 0L ) { m_account->configGroup()->writeEntry("SMSSend:Prefix", prefWidget->program->url()); m_account->configGroup()->writeEntry("SMSSend:ProviderName", prefWidget->provider->currentText()); m_provider->save(args); } } void SMSSend::loadProviders(const QString &prefix) { kdWarning( 14160 ) << k_funcinfo << "m_account = " << m_account << " (should be ok if zero)" << endl; QStringList p; prefWidget->provider->clear(); QDir d(prefix + "/share/smssend"); if (!d.exists()) { setOptions(QString::null); return; } p = d.entryList("*.sms"); d = QDir::homeDirPath()+"/.smssend/"; QStringList tmp(d.entryList("*.sms")); for (QStringList::Iterator it = tmp.begin(); it != tmp.end(); ++it) p.prepend(*it); for (QStringList::iterator it = p.begin(); it != p.end(); ++it) (*it).truncate((*it).length()-4); prefWidget->provider->insertStringList(p); bool found = false; if (m_account) { QString pName = m_account->configGroup()->readEntry("SMSSend:ProviderName", QString::null); for (int i=0; i < prefWidget->provider->count(); i++) { if (prefWidget->provider->text(i) == pName) { found=true; prefWidget->provider->setCurrentItem(i); setOptions(pName); break; } } } if (!found) setOptions(prefWidget->provider->currentText()); } void SMSSend::setOptions(const QString& name) { kdWarning( 14160 ) << k_funcinfo << "m_account = " << m_account << " (should be ok if zero!!)" << endl; if(!prefWidget) return; // sanity check prefWidget->providerLabel->setText(i18n("%1 Settings").arg(name)); labels.setAutoDelete(true); labels.clear(); args.setAutoDelete(true); args.clear(); if (m_provider) delete m_provider; m_provider = new SMSSendProvider(name, prefWidget->program->url(), m_account, this); for (int i=0; i < m_provider->count(); i++) { if (!m_provider->name(i).isNull()) { QLabel *l = new QLabel(m_parent); l->setText("&" + m_provider->name(i) + ":"); QToolTip::add(l, m_provider->description(i)); m_layout->addWidget(l, i+2, 0); KLineEdit *e = new KLineEdit(m_parent); e->setText(m_provider->value(i)); m_layout->addWidget(e, i+2, 1); args.append(e); labels.append(l); l->setBuddy(e); if(m_provider->isHidden(i)) e->setEchoMode(QLineEdit::Password); e->show(); l->show(); } } } void SMSSend::setAccount(Kopete::Account* account) { m_provider->setAccount(account); SMSService::setAccount(account); } int SMSSend::maxSize() { kdWarning( 14160 ) << k_funcinfo << "m_account = " << m_account << " (should be non-zero!!)" << endl; QString pName = m_account->configGroup()->readEntry("SMSSend:ProviderName", QString::null); if (pName.length() < 1) return 160; QString prefix = m_account->configGroup()->readEntry("SMSSend:Prefix", QString::null); if (prefix.isNull()) prefix = "/usr"; // quick sanity check if (m_provider) delete m_provider; m_provider = new SMSSendProvider(pName, prefix, m_account, this); return m_provider->maxSize(); } const QString& SMSSend::description() { QString url = "http://zekiller.skytech.org/smssend_en.php"; m_description = i18n("SMSSend is a program for sending SMS through gateways on the web. It can be found on %2").arg(url).arg(url); return m_description; } #include "smssend.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: