- don't touch mLastUid when updating the uidMap
- only update mLastUid when loading from disk cache on startup and
after the GET_MESSAGES phase has successfully completed
- with mLastUid from last sync, upload new messages, don't change it
- list messages on server, if below (old) mLastUid and not present,
delete on server, otherwise if present locally (we just uploaded it), do
nothing, else download it
That should take care that messages which have ids between the mlastUid we
have and the highest uploaded one are downloaded, even if they were added
after our own upload (concurrent uploads), and it moves the two intermingled
issue of determing locally deleted versus new on one hand and determining
locally present and uploaded versus new on the other hand into separate
checks, namely uid <= mLastUid and uidMap.contains( uid ).
svn path=/trunk/kdepim/; revision=338793
o don't upload the local message flags of a folder unless at least the
status of one message was changed. If one did change, we must suppose to
know better than the server and upload. Otherwise the server is always
right.
svn path=/trunk/kdepim/; revision=329279
(the symptom was a "could not list folder foobar, no such folder" error box).
Strange that I didn't see that one before...
svn path=/trunk/kdepim/; revision=324882
user chooses Continue, don't do anything relating to the messages, since it
will wipe them out (probably due to writeUidCache()), skip directly to doing
the acl stuff, then the subdirs.
svn path=/trunk/kdepim/; revision=322436
readwrite permissions on a folder which was initially readonly.
Outline setImapPath since I keep adding debug output to it and it's not speed critical :)
svn path=/trunk/kdepim/; revision=321373
the renaming happens in the foldertree immediately, but is stored in the account
(with persistence in kconfig) and done on the server at the next sync.
If that fails, the server is renamed back locally.
svn path=/trunk/kdepim/; revision=319628
Pass const QString& instead of QString& in the signal, when the caller isn't supposed
to change the value.
This showed an interesting issue in kmacctimap - the member vars were not needed,
and the clear() cleared the wrong one. All cleaned up (but please double-check).
svn path=/trunk/kdepim/; revision=314899
I created a new FolderStorage::listDirectory method to make it easier.
Add a Refresh folder list to the context menu of imap folders as the user
will probably not know how to refresh the listing (collapsing does the same).
This is needed together with the list-only-open-folders thing.
svn path=/trunk/kdepim/; revision=314858
to kmkernel, renaming it "mailCheckAborted", since it's now only used for this.
Reimplemented the real "abort all" code (that used to be for the littleprogress' cross button)
in ProgressManager, so that Key_Escape calls it, like it used to. It simply acts as
if the 'abort' button of any running job had been clicked.
svn path=/trunk/kdepim/; revision=314224
Change the KMFolderMgr::find methods a bit to actually find all folders.
Oh well, and assign ids to all folders.
svn path=/trunk/kdepim/; revision=313955
> The new messages are counted in KMAccount::processNewMsg(). Since for dIMAP only messages in the INBOX and for IMAP no messages are processed with processNewMsg() those unprocessed new messages are counted in KMAcct(Cached)Imap. The result of the mail check (a map folder<->number of new messages) is emitted with the extended checkedMail signal. In KMMainWidget a summary of the mail check is created and passed to the new mail event.
> TODO:
> - Make the detailed new mail notification optional.
> - Add possibility to ignore new mail in certain folders (which is now very easy to implement).
svn path=/trunk/kdepim/; revision=313356
Even though MYRIGHTS doesn't say so after removing one's own ACL,
Cyrus lets the user admin his inbox (and google says some other servers
simply don't allow removing his own admin rights).
So better not disable the buttons in the ACL dialog.
svn path=/trunk/kdepim/; revision=310284
instead of "on exit" (which made it non-working in kontact, with session management etc.)
GUI: removed the "Warn before expiring messages" and "On Exit: Expire old messages" options.
Tasks are filed with the jobscheduler, and the job for that task is started
only if the folder isn't opened - so this needed some special handling of search
folder (asking them to try releasing a given folder) and some fixes relative to
open() and close() calls, in kmfoldercachedimap and kmfoldersearch in particular.
Don: please check the kmfoldersearch.cpp changes, in particular the added close()
CCMAIL: sanders@kde.org
svn path=/trunk/kdepim/; revision=310272
This is quite simple in fact.... either we want to create it on the server
(which createNewFolders does if imapPath is empty), or we want to delete the local
folder (which used to be done only in some cases - so let's do it in all other
cases, i.e. imapPath isn't empty).
This fixes a bug with a server-folder deleted and another client getting "can't list folder".
svn path=/trunk/kdepim/; revision=310253
the nice side effect of calling readConfig() when the folder isn't open.
This fixes the other bug with "losing permission to a shared inbox".
svn path=/trunk/kdepim/; revision=309451
Fixed nasty concurrent mailchecking happening when queueing requests (due
to emit finishedCheck(false) still being done in imap - kmaccount does it for us)
svn path=/trunk/kdepim/; revision=309275
Fixed statusbar message after imap/dimap mail checking to show the right number of "new messages"
(wasn't implemented at all for dimap; didn't subtract unread-but-not-new count for imap)
Fixed logic error in KMMainWidget::updateFolderMenu() which wrongly enabled "check mail for this folder"
for other types of folder than online-imap, but instead of disabling it for dimap I hooked it up
and it seems to work nicely.
svn path=/trunk/kdepim/; revision=309216
and then shut down kmail. Don't ask when a folder was deleted in this session,
but ask when a folder was deleted in a previous session, just in case.
svn path=/trunk/kdepim/; revision=309082
Relying on local .uidcache file broke for noContent folders, but also, as I
just found out, for shared folders that you used to have permissions to, then lost
the permission, then got again (in such a case the old local uidcache does NOT mean
the folder should be deleted!!!)
svn path=/trunk/kdepim/; revision=309052
This code also creates problems with shared folders, e.g. when losing permission to
one we try to delete it, not sure why yet...
CCMAIL: 80870@bugs.kde.org
svn path=/trunk/kdepim/; revision=308578
actually being done. If some operations are not being performed the % doesn't
increase, but instead the "get new messages" step will use as much span as it can.
Also added per-message progress info while uploading messages.
svn path=/trunk/kdepim/; revision=307343
and there's no systray icon. This allows KMail to actually exit when closing it,
instead of getting stuck forever on a server that doesn't answer...
Compared to the kmail-devel patch I changed the code in KMMainWin to ensure
it's called even when secondary windows are left opened, and to enable mail
checks again when re-creating a KMMainWin.
I found out that the dimap progress dialog is broken with multiple kmmainwins,
but that's an independent issue, which will go away when porting it to Till's
progress dialog anyway.
svn path=/trunk/kdepim/; revision=307314
we must make sure that folderComplete() is sent _last_, since it triggers the next
mail check. This fixes a bug where the next mail check would abort immediately.
This was part of the kmail-devel patch, I removed the stuff about showing the
progress dialog again.
svn path=/trunk/kdepim/; revision=306873
* Wait for completion of the "upload status flags" before continuing (as discussed with Till)
Maybe this was the reason for some status-flags bugs, like coolo's? Would be lucky though.
* Use a CachedImapJob for listing messages, so that handleJobError works in both cases
(continue/cancel)
* Replaced all showErrorDialog()s with handleJobError in CachedImapJob
* Moved slotSlaveError to ImapAccountBase (but deprecated it), calls new virtual handleJobError
* More fixes for sync aborted in subfolders
All tested with a "list permissions only" folder, to trigger all sorts of errors.
svn path=/trunk/kdepim/; revision=305740
* when a subfolder shows an error and the user chooses to abort, really abort,
don't half-continue with sibling folders (this led to strange items in the progress
diaog, and temporary signal/slot connections not disconnected...)
* show folder name in error box when creating the folder on the server fails.
* ifdef'ed out ImapAccountBase::slotSlaveError since both subclasses reimplement
it anyway (and made it pure virtual... it was inconsistent, with some jobs calling
one and some jobs calling the other)
svn path=/trunk/kdepim/; revision=305655