KIMAP
9 #include <KLocalizedString>
13 #include "response_p.h"
14 #include "session_p.h"
18 class IdleJobPrivate :
public JobPrivate
21 IdleJobPrivate(
IdleJob *job, Session *session,
const QString &name)
22 : JobPrivate(session,
name)
32 emitStatsTimer.stop();
34 Q_EMIT q->mailBoxStats(q, m_session->selectedMailBox(), messageCount, recentCount);
36 lastMessageCount = messageCount;
37 lastRecentCount = recentCount;
45 sessionInternal()->setSocketTimeout(originalSocketTimeout);
52 int messageCount = -1;
55 int lastMessageCount = -1;
56 int lastRecentCount = -1;
58 int originalSocketTimeout = -1;
62 using namespace KIMAP;
64 IdleJob::IdleJob(Session *session)
65 : Job(*new IdleJobPrivate(this, session,
i18nc(
"name of the idle job",
"Idle")))
84 d->sessionInternal()->setSocketTimeout(d->originalSocketTimeout);
85 d->sessionInternal()->sendData(
"DONE");
88 void IdleJob::doStart()
91 d->originalSocketTimeout = d->sessionInternal()->socketTimeout();
92 d->sessionInternal()->setSocketTimeout(-1);
93 d->tags << d->sessionInternal()->sendCommand(
"IDLE");
96 void IdleJob::handleResponse(
const Response &response)
103 if (!response.content.isEmpty() && d->tags.size() == 1 && d->tags.contains(response.content.first().toString())
104 && (d->messageCount >= 0 || d->recentCount >= 0)) {
108 if (handleErrorReplies(response) == NotHandled) {
109 if (!response.content.isEmpty() && response.content[0].toString() ==
"+") {
113 }
else if (response.content.size() > 2) {
114 const QByteArray ba = response.content[2].toString();
115 if (ba ==
"EXISTS") {
116 if (d->messageCount >= 0) {
120 d->messageCount = response.content[1].toString().
toInt();
121 }
else if (ba ==
"RECENT") {
122 if (d->recentCount >= 0) {
126 d->recentCount = response.content[1].toString().toInt();
127 }
else if (ba ==
"FETCH") {
128 const qint64 uid = response.content[1].toString().toLongLong();
133 if (d->messageCount >= 0 && d->recentCount >= 0) {
135 }
else if (d->messageCount >= 0 || d->recentCount >= 0) {
136 d->emitStatsTimer.start(200);
144 return d->m_session->selectedMailBox();
150 return d->lastMessageCount;
156 return d->lastRecentCount;
159 #include "moc_idlejob.cpp"
int lastRecentCount() const
The last recent message count that was reported.
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void mailBoxMessageFlagsChanged(KIMAP::IdleJob *job, qint64 uid)
Signals that the server has notified that the some messages flags have changed.
QString lastMailBox() const
The last mailbox status that was reported.
int toInt(bool *ok, int base) const const
Idles the connection to the IMAP server.
int lastMessageCount() const
The last message count that was reported.
const char * name(StandardAction id)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
void stop()
Stops the idle job.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Dec 3 2023 03:51:44 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.