author | conber <conber> | 2002-06-15 09:46:14 (UTC) |
---|---|---|
committer | conber <conber> | 2002-06-15 09:46:14 (UTC) |
commit | 7f2eef29708380844922f34f59ba4e9beefbf7c3 (patch) (side-by-side diff) | |
tree | f57125fbaabddecc35d6677f1b9e48a4594165d5 /noncore/unsupported/mail2/bend/bend.cpp | |
parent | 0acbdd392814589df303b6e50c79d9822e3db27a (diff) | |
download | opie-7f2eef29708380844922f34f59ba4e9beefbf7c3.zip opie-7f2eef29708380844922f34f59ba4e9beefbf7c3.tar.gz opie-7f2eef29708380844922f34f59ba4e9beefbf7c3.tar.bz2 |
initial checkin
Diffstat (limited to 'noncore/unsupported/mail2/bend/bend.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/mail2/bend/bend.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/noncore/unsupported/mail2/bend/bend.cpp b/noncore/unsupported/mail2/bend/bend.cpp new file mode 100644 index 0000000..b4da3ac --- a/dev/null +++ b/noncore/unsupported/mail2/bend/bend.cpp @@ -0,0 +1,116 @@ +#include <qlayout.h> +#include <qpixmap.h> +#include <qlabel.h> +#include <qtimer.h> +#include <qdir.h> + +#include <qpe/qcopenvelope_qws.h> +#include <qpe/resource.h> +#include <qpe/config.h> + +#include <stdlib.h> + +#include "configfile.h" +#include "imapresponse.h" +#include "imaphandler.h" +#include "zaurusstuff.h" +#include "bend.h" + +BenD::BenD(QWidget *parent, const char *name, WFlags fl) + : QButton(parent, name, fl) +{ + _config = new Config("mail"); + _config->setGroup("Settings"); + + QVBoxLayout *layout = new QVBoxLayout(this); + layout->addItem(new QSpacerItem(0,0)); + + QLabel *pixmap = new QLabel(this); + pixmap->setPixmap(Resource::loadPixmap("mail/mailchecker")); + layout->addWidget(pixmap); + + layout->addItem(new QSpacerItem(0,0)); + + hide(); + + connect(this, SIGNAL(clicked()), SLOT(slotClicked())); + + if (!_config->readBoolEntry("Disabled", false)) { + _intervalMs = _config->readNumEntry("CheckEvery", 5) * 60000; + _intervalTimer = new QTimer(); + _intervalTimer->start(_intervalMs); + connect(_intervalTimer, SIGNAL(timeout()), SLOT(slotCheck())); + + QTimer::singleShot(0, this, SLOT(slotCheck())); + } +} + +void BenD::drawButton(QPainter *) { } +void BenD::drawButtonText(QPainter *) { } + +void BenD::slotClicked() +{ + QCopEnvelope e("QPE/System", "execute(QString)"); + e << QString("mail"); + + if (_ledOn) { + ZaurusStuff::blinkLedOff(); + _ledOn = false; + } +} + +void BenD::slotCheck() +{ + // Check wether the check interval has been changed. + int newIntervalMs = _config->readNumEntry("CheckEvery", 5) * 60000; + if (newIntervalMs != _intervalMs) { + _intervalTimer->changeInterval(newIntervalMs); + _intervalMs = newIntervalMs; + } + + QValueList<Account> acList = ConfigFile::getAccounts(); + QValueList<Account>::Iterator ot; + for (ot = acList.begin(); ot != acList.end(); ot++) { + if (!((*ot).imapServer().isEmpty() || + (*ot).imapPort().isEmpty() || + (*ot).user().isEmpty() || + (*ot).pass().isEmpty())) { + if (!((*ot).imapSsl() && + (*ot).imapSslPort().isEmpty())) { + IMAPHandler *handler = new IMAPHandler(*ot); + handler->iStatus("INBOX", "RECENT"); + connect(handler, SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPStatus(IMAPResponse &))); + } + } + } +} + +void BenD::slotIMAPStatus(IMAPResponse &response) +{ + disconnect(response.imapHandler(), SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPStatus(IMAPResponse &))); + + if (response.statusResponse().status() == IMAPResponseEnums::OK) { + if (response.STATUS()[0].recent().toInt() > 0) { + if (isHidden()) show(); + if (_config->readBoolEntry("BlinkLed", true)) + ZaurusStuff::blinkLedOn(); + if (_config->readBoolEntry("PlaySound", false)) { + ZaurusStuff::buzzerOn(); + QTimer::singleShot(3000, this, SLOT(slotSoundOff())); + } + } else { + if (!isHidden()) hide(); + if (!_ledOn) { + ZaurusStuff::blinkLedOff(); + _ledOn = false; + } + } + response.imapHandler()->iLogout(); + } else qWarning("BenD: WARNING: Couldn't retrieve INBOX status."); +} + +void BenD::slotSoundOff() +{ + ZaurusStuff::buzzerOff(); +} + |