Commit graph

137 commits

Author SHA1 Message Date
Jim Nelson
0a19cb925d Fixes soft assertion in NonblockingBatch: Closes #4393
Problem was due to an internal private class of NonblockingBatch holding a weak ref
to its owner.  Now holds a strong ref when scheduled and drops it when the operation
is completed, to prevent a reference cycle.
2011-11-17 15:44:59 -08:00
Jim Nelson
9982df56e2 Further optimizations with network and database access.
These changes are to speed up GenericImapFolder.prepare_opened_folder(), which is
the initial synchronization stage to ensure the local database is normalized against
the remote folder.  The two big improvements are parallelization of database writes
(creates, removes) and skipping writes when unnecessary (if the message flags on
the server haven't changed, don't re-write them to the database).
2011-11-17 15:23:38 -08:00
Eric Gregory
dcd5d2b175 Keyboard navigation in message view. Closes #4387 2011-11-17 12:01:18 -08:00
Jim Nelson
9dfcb26597 Further optimizations on the database side
Merging in additions to an email's fields in MessageTable could result in many
serialized SQLite operations that were independent of each other.  This change
(a) parallelizes them via NonblockingBatch, and (b) reads the messages existing
fields and strips out writes to fields it already holds.  This is legal because
none of the current fields in MessageTable are mutable on the server, but is not
allowable for ImapMessageProperties because they are.

Also, there were some naming inconsistencies in NonblockingBatch that are
corrected here.
2011-11-16 20:05:50 -08:00
Jim Nelson
b8bc1325e8 Messages are fetched from newest to oldest: Closes #4386, Closes #4367
Turns out these two tickets are both related to fetching messages in
chronological order.
2011-11-16 18:49:11 -08:00
Jim Nelson
18716ae6ce Fetches only a small portion of the message for previews: Closes #4254, Closes #3799
Before we were fetching the entire message body (including attachments) to get the
preview text.  This patch now offers the ability to fetch a small (128 byte) preview
of the email.

Also, since this ticket is about speeding up performance, I've introduced NonblockingBatch,
which allows for multiple async operations to be executed in parallel easily.  I've added
its use in a few places to speed up operations, including one that was causing the lag
in #3799, which is why this commit closes that ticket.
2011-11-16 18:17:35 -08:00
Eric Gregory
782e6fa5f5 Window size issue after canceling login screen. Closes #4378 2011-11-16 15:54:36 -08:00
Eric Gregory
02a99d2562 Fixes conversation jumble. Closes #4384 2011-11-15 18:37:59 -08:00
Jim Nelson
a4a599c742 Fixes Geary.Imap.Flags soft assertion: Closes #4388
Static member objects are not always initialized in Vala properly, causing this soft
assertion.  Now using static properties to lazily create the various flags on demand.
2011-11-15 18:02:08 -08:00
Eric Gregory
46a2686dd2 Resolves assertion due to null MessageRow object 2011-11-15 17:31:36 -08:00
Eric Gregory
cf36e062ec Fixed critical warning when loading new messages 2011-11-14 15:57:18 -08:00
Eric Gregory
ab9c3f01a4 Re-write of cell renderer to fix markup issues. Closes #4242 2011-11-14 14:47:03 -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
Eric Gregory
3f2a5960c7 Fancy date display. Closes #4323 and closes #4241. 2011-11-11 12:23:32 -08:00
Eric Gregory
f048b0767e Fixes message viewer resize problem. Closes #4309 2011-11-10 14:54:10 -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
097a46d9ca Cleanup of some stuff detected after last commit.
Fixed a debug statement.  Spotted a bug in the normalization code when a new message is
detected in the folder.
2011-11-09 18:45:21 -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
0c4d6ed8e9 Keyboard shortcut (ctrl-enter) for sending message in composer. Closes #4289 2011-11-08 17:06:37 -08:00
Eric Gregory
fe0be1bfde Display number of messages in a conversation. Closes #4310 2011-11-08 16:53:57 -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
Jim Nelson
7a3094696a Orphans and loops in conversations better handled: Closes #4342
Emails in a conversation with conflicting References paths were not being handled particularly well.  This deals with them in a nicer manner.

Also, clarified the Folder.open_async() call's contract.
2011-11-03 08:10:56 -07:00
Eric Gregory
1771af235e Prevents message preview flicker. Closes #4339 2011-11-02 12:04:29 -07:00
Eric Gregory
43a5b6152b Conversation view. Closes #3808 2011-11-01 15:49:06 -07:00
Eric Gregory
7bda84d331 Assertions on sending message without to, cc, or bcc. Closes #4315 2011-11-01 15:15:45 -07:00
Eric Gregory
2bc863ed39 Quit cleanly if we exit before Gtk main loop starts. Closes #4328 2011-11-01 15:07:23 -07:00
Eric Gregory
12680575a3 Align message display header text. Closes #4318 2011-11-01 15:00:02 -07:00
Eric Gregory
e8acbcd1e9 Removes debug message; Closes #4327 2011-10-31 18:19:06 -07:00
Eric Gregory
c67947d02d Fixed second Glade 3.10 warning,.Closes #4208 2011-10-31 11:22:41 -07:00
Eric Gregory
785de02d57 Composer window grays out Send when to, cc, or bcc aren't filled out. Closes #4285 2011-10-28 14:45:14 -07:00
Eric Gregory
f69f2d6e91 Fixes warning caused by Glade 3.10. Closes #4208 2011-10-27 19:02:24 -07:00
Eric Gregory
219b067eaf Composer initial focus is now on "To." Closes #4280 2011-10-27 18:22:17 -07:00
Eric Gregory
98c556af28 Changed capitalization of cc and bcc. Closes #4287 2011-10-27 18:00:25 -07:00
Eric Gregory
e8ca0f132c Title of composer window is now subject. Closes #4282 2011-10-24 17:07:54 -07:00
Eric Gregory
3e77cbccde Composer window is now wider. Closes #4286 2011-10-24 16:52:58 -07:00
Eric Gregory
285ccb6dfa Merge branch 'master' of ssh://yorba.org/git/geary 2011-10-24 16:51:22 -07:00
Eric Gregory
7ff5051597 Composer window now centered. Closes #4281 2011-10-24 16:48:36 -07:00
Jim Nelson
d6ab44cc8f Fixes crasher when email positions shift after FAST load: Closes #4279 2011-10-24 16:27:37 -07:00
Jim Nelson
cd0b926d57 Engine implementation of conversations: #3808
This introduces Geary.Conversations into the API, which scans a Folder and arranges the
messages into threaded conversations.
2011-10-21 17:04:33 -07:00
Eric Gregory
8ab948bce4 Switched back to libunique and removed GtkApplication. Closes #4266 2011-10-19 12:48:17 -07:00
Eric Gregory
c7fd272908 Toolbar now styled properly. Closes #4273 2011-10-19 12:09:17 -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
e995809f05 Fixes some bugs leftover in my last commit. 2011-10-17 20:42:45 -07:00
Jim Nelson
db62ed5d93 FETCH BODY[section]<partial> support.
This adds support for retrieving partial header and body blocks straight from the email, and
therefore support to pull the References header from a message (which, for some reason, IMAP
doesn't support or include in the FETCH ENVELOPE command).  This is necessary for email conversations (#3808).

This required a change to the database schema, meaning old databases will need to be blown
away before starting.
2011-10-17 19:03:15 -07:00
Jim Nelson
ab69b20b1c Moved a lot of implementation-specific code into a new impl/ directory, keeping the api
directory concerned only with user-facing interfaces.  Also, cleaned up some of the public
interfaces in support modules to private.
2011-10-17 19:03:15 -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
4a3a137ae2 Disabled type to search in folder list. Closes #4232 2011-10-14 16:15:28 -07:00
Eric Gregory
744d5a8bb2 Message headers are now selectable. Closes #4258 2011-10-14 16:11:12 -07:00
Eric Gregory
5a8db8f215 Adds tooltip to new message button. Closes #4256 2011-10-14 12:41:58 -07:00