Commit graph

34 commits

Author SHA1 Message Date
Eric Gregory
02a99d2562 Fixes conversation jumble. Closes #4384 2011-11-15 18:37:59 -08:00
Jim Nelson
f5b7d29a8c Better duplicate detection in local database
This incorporates much better duplicate detection in the local database, using both RFC-822 Message-ID as well as IMAP metadata (internaldate, RFC822 size) to determine if a message is already stored in the database.  Very useful when a message is stored in multiple folders, or an already-downloaded message is returned to a folder it originated in (i.e. INBOX).

Also some minor fixes to listing email by EmailIdentifier which save a roundtrip to the server for certain edge cases.
2011-11-14 12:09:52 -08:00
Eric Gregory
d8fe58bf46 Load more messages when scrolled to bottom. #3857 2011-11-11 13:36:25 -08:00
Jim Nelson
4cea0fb0d2 Removed messages are now removed from conversations: Closes #4347
Conversations now fully monitor the Folder for both additions and removals of messages.
This exposed a couple of bugs in the database code, which are fixed here as well.  I also
used this opportunity to clean up some of the internal Conversations code, simplifying Node
management.  #4333 will be a big boost here when implemented.
2011-11-10 13:20:48 -08:00
Jim Nelson
3f6d8eac5a Moving away from positional addressing. Greater emphasis on EmailIdentifiers for
addressing.

Positional addressing is a nightmare for a lot of reasons, especially keeping positions
up-to-date as the Folder mutates.  Now, positions are returned with the email but for
advisory reasons only, and do not keep up-to-date.  It is expected that a client will use
positional addressing to "bootstrap" the application's data store, then use EmailIdentifier
addressing to traverse the Folder's contents.
2011-11-09 16:40:28 -08:00
Eric Gregory
1e5f5d1c7e Debug header print (ctrl-alt-p) and fixes new message keyboard shortcut. Closes #4353 and Closes #4247 2011-11-08 16:42:37 -08:00
Eric Gregory
43a5b6152b Conversation view. Closes #3808 2011-11-01 15:49:06 -07:00
Jim Nelson
b50b769e77 Really fixes bug where FAST messages had wrong EmailLocations.
Prior commit did not completely fix the problem in the case where a remote folder open took
a long time.  This bulletproofs the solution, but does mean that there will be some
situations where FAST messages return with EmailLocations that radically change in the near
future.  As the contract allows for any changes whatsoever, this is acceptable.
2011-10-18 19:56:54 -07:00
Jim Nelson
41e162a9b7 Fixed bug where FAST messages had wrong EmailLocations.
Eric spotted a bug where messages retrieved via FAST (i.e. straight from the database) were
not assigned their proper EmailLocations, which has a lot of ramifications when more emails
are being requested.
2011-10-14 17:54:58 -07:00
Eric Gregory
2f2b4fff27 Pretty message viewer. Closes #4230 2011-10-13 19:16:22 -07:00
Eric Gregory
03d63ecc1a Toolbar replaces the menu. Closes #3816 2011-10-11 19:12:20 -07:00
Jim Nelson
0021b74281 This patch expands Geary.RFC822.Message to be a more full-blown container for an RFC 822
message (email), suitable for decoding a message off the wire or converting a
human-generated form into something suitable for pushing on the wire via SMTP.
2011-10-07 17:33:34 -07:00
Jim Nelson
77d9962406 Fixes segfault when navigating between folders: Closes #3820
This bug was exacerbated by rapidly switching between folders.  This patch introduces a
Cancellable to most of the requests the client performs so it can cancel old requests when
the user switches folders.  This fixed some issues but exposed others.

Testing this demonstrates another bug: #4233
2011-10-06 19:04:17 -07:00
Eric Gregory
686f4cbfde Folder list scrolling keeps highlighted item in the view. Closes #4227 2011-10-05 17:08:12 -07:00
Jim Nelson
428c0825a9 Fast listing of messages in a folder
This adds a new flag when listing messages, FAST.  This indicates that the caller wants
messages that are immediately available to the Folder, avoiding a round-trip to the server
(or even disk) if possible.  Not all folders will support FAST, but it can be used (as it is
now in the client) to quickly populate the message list and then initiate a connection in
the background to get the straight dope.
2011-10-04 19:02:59 -07:00
Eric Gregory
570a45c822 Makes message list wider. Closes #4217 2011-10-04 18:24:13 -07:00
Eric Gregory
4d3888da7e Keyboard scrolling in message list; Closes #3922 2011-10-04 17:57:54 -07:00
Eric Gregory
e6e1ca8357 Composer window. Closes #3711 2011-10-03 12:05:25 -07:00
Eric Gregory
98f3ef7e00 #4130 remember paned grabber positions 2011-09-27 18:34:26 -07:00
Jim Nelson
0fdc45e4ec Move to GTK+3: Closes #4163 2011-09-22 13:11:35 -07:00
Eric Gregory
4ad276aa9a 3817 fancy 3-column layout 2011-09-21 18:03:41 -07:00
Eric Gregory
6a5d1fa048 3701 remember window size
* Added GSettings
* Geary binary copied to project root
2011-09-14 17:38:53 -07:00
Jim Nelson
7442caf88e Detect deleted (or moved) messages in open folder: #3793
This commit finishes the second half of #3793 by detecting when messages have been deleted
(or moved out of) an open folder and notifying the system of the change.  The nonblocking
synchronization primitives have been beefed up and may be broken out to a separate library
some day.

This commit also introduces the ReplayQueue, which replays events that occur on the server
locally.  This class will probably become much more important as time goes on, perhaps used
to store user events that are replayed on the server as well.
2011-07-29 20:10:43 -07:00
Jim Nelson
d1208e8efe Monitor currently selected folder: #3793
This commit represents the first half of this ticket, as it only monitors additions (new
emails) in the folder.  A second commit will follow for monitoring removals (deleted emails)
in the folder.
2011-07-26 15:29:08 -07:00
Jim Nelson
e812ef6166 Some cleanup dealing with commit for #3851.
The commit for #3851 changed the semantics of how messages are stored in the local cache,
and not all the code was properly updated to recognize that, particularly in EngineFolder.

This patch also introduces EmailIdentifier, which allows for a mail message to be fetched by
a unique identifier rather than its position in the folder list.  This is much more
efficient and less error-prone, and means that Email objects don't have to be updated if
their position changes (although there are still some questions in that area).  For IMAP,
this means being able to use the message's UID.
2011-07-19 15:55:56 -07:00
Jim Nelson
0533bc9700 Further work on detecting message removal when folder first selected: #3805
Needed to rethink storage strategies as I researched this and realized that a true scarce database -- where the database is sparsely populated both in columns and rows -- is not feasible due to IMAP's UID rules.  The strategy now means that the database rows are contiguous from the highest (newest) message to the oldest *requested by the user*.  This is a better situation than having to download the UID for the entire folder.
2011-07-15 13:39:02 -07:00
Jim Nelson
6b8951bfd8 Implemented IMAP-specific folder and message properties tables: #3805
This commit adds support for IMAP-specific properties, of which UIDValidity is crucial toward completing #3805.  The additional code is to integrate these tables into the SQLite Geary backend and to make sure this information is requested from the IMAP server.

NOTE: This commit changes the database schema.  Old databases will need to be blown away before running.
2011-07-15 12:54:10 -07:00
Jim Nelson
9792780edb Display To:, From:, and Subject: in message viewer: #3812
Fields added.  However, it would be nice to use formatting to separate them from the body of the message.  This is not easy with Gtk.TextView/Gtk.TextBuffer; see https://bugzilla.gnome.org/show_bug.cgi?id=59390.  This may push us to move to Webkit earlier rather than later.
2011-07-14 15:47:01 -07:00
Jim Nelson
fdc2853904 Display unread messages in boldface: #3807
This ticket enables this, however IMAP properties are not yet coming up from the local database yet, so this isn't technically complete.  That work will be included in the commit for #3805, which requires those properties.
2011-07-14 14:45:35 -07:00
Jim Nelson
4b03ba004e Use GMime to display the text/plain portion of email messages: #3710
This makes available MIME portions of the message, although more work will need to be done to expose all MIME parts.
2011-07-06 15:46:24 -07:00
Jim Nelson
fff39e8a44 Move special folders to the top of the tree, put other folders in container, and start in Inbox: #3707 and #3692
This commit introduces the idea of a Personality, customizations for particular IMAP servers and services to allow the interface to configure itself for more natural use.  Also, this commit has the app start in the Inbox, and an optimization was added that makes showing what's in the Inbox (at least, what's in the local cache) come up instantly.
2011-07-01 19:33:35 -07:00
Jim Nelson
0273b78005 Folder heirarchies: #3788
Now supporting folder heirarchies.  The client will now descend looking for subfolders.  This task now opens up multiple outstanding requests to the Engine as well as exercises the database schema.

Closing this ticket opens the door to finishing #3692.
2011-07-01 15:40:20 -07:00
Jim Nelson
a774034aff More responsive loading of folders: #3702
This commit introduces lazy loading of folder contents, which allows the Engine to report back email in chunks rather than all at once (which might require a round-trip to the server).  This allows for the local database results to be returned to the caller right away while background I/O is occuring.
2011-06-28 16:33:27 -07:00
Jim Nelson
328683ecfb Moved to waf for build system: #3690
This closes #3690 because waf fulfills that requirement, moving the .c's to a separate directory.  waf also gives us incremental builds, so -j4 is back.
2011-06-27 14:55:22 -07:00
Renamed from src/client/ui/MainWindow.vala (Browse further)