Commit graph

7217 commits

Author SHA1 Message Date
Jim Nelson
ce4ee132ed Added STATUS command and decoder.
Although no place in the code uses this yet, it will be useful in the near future.
2011-05-31 18:47:54 -07:00
Jim Nelson
9ac3fd0b68 Added SelectExamineResults decoder.
The result of a SELECT or EXAMINE command is now parsed and returned to the caller.  This information is boiled down to the Geary.Folder interface, which adds information about the folder to the object.
2011-05-31 15:40:39 -07:00
Jim Nelson
737f235d60 Create ClientSessionManager.
The ClientSessionManager maintains a pool of connections to an IMAP server, reusing them whenever possible.  It allows for multiple folders to be managed and monitored by an application without having to change contexts constantly (which also introduces side-effects, esp. with expunging deleted messages).
2011-05-30 18:18:52 -07:00
Jim Nelson
aa094cb813 Added folder list to sidebar.
geary now has an (unsorted) list of folders in its sidebar.  When one is clicked on the messages in that folder are displayed.  This patch also fixes an issue in the Serializer that wasn't dealing with quoted strings properly.
2011-05-27 17:22:21 -07:00
Jim Nelson
65eb370e96 Added menu bar and About box. Fixed bug in ISO8601 date conversion. 2011-05-26 18:26:36 -07:00
Jim Nelson
ba81ad43a4 Prettier dates and From: labels. Initial GMime integration.
This adds a VAPI (including generation files and Makefile) for GMime to the repo, which we'll be using extensively to come.  This VAPI is incomplete in many ways, so care should be used going forward.

Also, with GMime now interpreting RFC822 dates, can now pretty-print them.  Prettier From: names also added this time around.
2011-05-26 17:29:00 -07:00
Jim Nelson
a581218ea9 First pass of UI client in code base.
Client code will display a window listing Date, Subject, and From of all messages in inbox.  Username and password must be specified as a command argument.  Note that current IMAP envelope parsing doesn't handle group lists, which means some messages will be skipped over.
2011-05-24 19:40:06 -07:00
Jim Nelson
5021d8372d Added NOOP idling support to ClientSession.
ClientSession can now automatically send NOOP commands as keepalives at a specified interval.  Also, the CommandResponse decoders have been moved into their own directory (they will soon be fertile and multiply).  More work ahead on the FetchResults object, which should be like NoopResults and completely encapsulate all the information returned from a FETCH.
2011-05-23 18:58:34 -07:00
Jim Nelson
e56a6a599a Further fleshed out FETCH support.
Implemented a first stab at buffer management for IMAP literals.  Added FETCH decoding of various RFC822 elements.  Implemented a crude readmail program which will dump the full RFC822 message of any message in a mailbox.
2011-05-13 18:38:37 -07:00
Jim Nelson
e2d339dc4f Expanded and improved FETCH response decoding.
Library now uses an extensible system for decoding the various structured data that FETCH returns.  This system may be expanded later for decoding other CommandResponses (although FETCH is the command most in need of this).  Also created an RFC822 directory for data structures and code to deal with mail messages and a common directory for code that is used throughout the library but doesn't belong to util as they're "core" classes.
2011-05-13 12:44:28 -07:00
Jim Nelson
4778771c3d Updated console to accept multiple data item types for the "fetch" command. 2011-05-11 15:55:52 -07:00
Jim Nelson
fb577a98ab send_command_async() in ClientSession.
send_command_async() is now integrated into the ClientSession state machine.
2011-05-06 17:23:42 -07:00
Jim Nelson
42247df62b ClientSession improvements
Fleshed out the ClientSession state machine to follow the session state graph described by the IMAP specification.  ClientSession is now firmly a single-connection object that tracks the server state appropriately.  A higher-level class will need to be defined that manages multiple sessions (for when dealing with multiple folders, monitoring, etc.)
2011-05-06 13:19:32 -07:00
Jim Nelson
a43ab81fdf Improvements to Serializer and Deserializer
The input mode for Deserializer meant that the caller needed to manage the input stream and push data in an appropriate way; this is error-prone.  Now Deserializer manages the input stream and the modes it must be read from.  Serializer still works in a similar fashion as before, but now it deals with literal data more efficiently, writing it to the output stream directly (via splice_async()) rather than into the in-memory temporary buffer.  Serializable's serialize() method is now async, meaning that all serialization can occur asynchronously, which is how we want it going forward.
2011-05-04 17:20:17 -07:00
Jim Nelson
cbe3440fef Response.vala -> ServerResponse.vala 2011-04-14 01:16:40 +00:00
Jim Nelson
6433ebfa5b Further development building the layers of IMAP decode, connectivity, and session management. First-stab implementation of a preliminary Engine API. Tons of work to go and tons of clean-up to make what's here more robust and more efficient. 2011-04-14 01:15:05 +00:00
Jim Nelson
e3cab0804b Email client ho! 2011-04-11 23:16:21 +00:00