libindicate is supported in this patch (with some framework in place
to support others, such as libmessagingmenu if/when it comes down
the pipe). libindicate support must be configured with a ./configure
switch (which is one-half of #5607) and is off by default.
Note that this patch does not fully implement our design spec for
how new messages are cleared due to user interaction. That is
covered by #5669.
This patch also contains extensive refactoring of message-list-store. It
is now much less tightly-coupled with GearyController, relying almost
entirely on ConversationMonitor for its functionality.
This patch resolves a potential hole when rolling back a transaction
when it's been cancelled (leaving the database locked). It also
fixes some minor bugs I found while investigating.
IMAP STARTTLS support now available in Engine. However, this does
not add the necessary UI components to make this available to the
user. That will be covered in #5361.
This fix requires a modification to the Geary.Folder contract, as now
the list and fetch operations will not wait for a connection to load
messages not locally stored. (A ListFlag option may be needed later
to force this behavior.) This also requires GearyController to reseed
the ConversationMonitor after the Folder is opened, otherwise no
messages will be loaded on an initial load of a folder.
This work exposed some smaller bugs, which are fixed here as well.
The motivation is to break apart the various replay operations into
separate source files. The two major source files earlier
(geary-send-replay-operations.vala and geary-receive-replay-operations.vala)
were getting unwieldy and difficult to administer.
The problem was that the database busy timeout was too short. Charles'
Geary folder required ~1700 updates, which was longer than the 1 second
timeout allowed.
Two separate problems blocks Geary from compiling and running under
0.17.3 without disabling fatal warnings. Will give Team Vala a
chance to correct these problems before doing so.
Unfortunately, the problem is a binding issue that is not easily
worked around. The temporary solution is to include a copy of the
Gdk.Pixbuf VAPI until this bug is closed and a patched VAPI
distributed: https://bugzilla.gnome.org/show_bug.cgi?id=680060
Note that with this commit, Geary now requires Vala 0.17.3 to build.
This is a regression due to the database schema change in the
SQLHeavy removal. Because FLAGS are now stored in MessageTable,
the merge logic needs to expect that case.
Reusing connections is a win with asynchronous transactions. More
fine-tuning in the future of cache pages and such will help improve
Geary's database performance.
Also fixed a naming and namespace problem with Geary.DatabaseError
and a hole where, if a connection could not be opened (for resource
problems, most likely), the asynchronous transaction would never
complete.
Primarily a reorganization of the engine/impl directory, which
was starting to grow unwieldy. The most important code remains in
place, while secondary stuff (abstract classes, service-specific
implementations) are moved into other directories.
Also rename impl to imap-impl to reinforce that it is all
IMAP-specific code.