Commit graph

168 commits

Author SHA1 Message Date
Jim Nelson
eea2b31a73 Smarter keepalives and a small Conversations fix.
The NOOP keepalives were being every n seconds no matter what the
traffic was like.  Now only being sent if no traffic has been
received after n seconds, meaning less traffic overall.  Also, there
are now two different timers, one for selected mailbox and one for
authorized state, since receiving unsolicited responses only happens
when a mailbox is selected.

Also includes a small fix in Conversations where a nullable ref was
being treated as un-nullable.
2012-01-06 11:32:20 -08:00
Jim Nelson
755d5cfa39 Fixes problems discovered with Message-ID list parsing
This morning I discovered that Geary had crashed.  When I attempted to rerun
it, it kept asserting in the Conversations logic.  I discovered that there
was a problem with associating an email's Message-ID with its own Message-ID
processed in a prior email's References header field.

Turns out that there's a mailer out there that uses commas to separate
Message-IDs (a no-no in the spec).  There's also a spam filtering mailer
out there that uses parentheses instead of angle brackets for its
Message-IDs (another no-no).

This commit strengthens the Message-ID parsing to handle these situations.
2012-01-04 11:18:38 -08:00
Eric Gregory
d9129b5ff4 Report login failure to user. Closes #3811 2011-12-22 12:31:06 -08:00
Eric Gregory
e50d46f5f5 Message list now has initial keyboard focus. Closes #4504 2011-12-16 16:47:34 -08:00
Eric Gregory
2ec1504f54 Archive button disabled when no conversation selected. Closes #4500 2011-12-16 16:26:35 -08:00
Eric Gregory
6c89dc58e5 Fixes emails without specified charset header. Closes #4493 2011-12-16 16:15:50 -08:00
Eric Gregory
46f8803569 Escape closes dialog. Closes #4503 2011-12-16 16:13:54 -08:00
Eric Gregory
7ffe5d99c7 Select first message in conversation. Closes #4257 2011-12-16 15:56:30 -08:00
Eric Gregory
cdfd3dda07 Prefs dialog, select next message after archiving pref. Closes #4496 2011-12-16 15:02:34 -08:00
Jim Nelson
0fb0533601 Introduce some basic topic-based logging to Geary.
This is a rudimentary system that can be used for a while to enable
optional debug logging.
2011-12-16 11:34:32 -08:00
Eric Gregory
9ea9e67cc2 Fix for message count. Closes #4492 2011-12-15 16:50:41 -08:00
Eric Gregory
9ea2b48919 Archive/delete messages. Closes #3806 2011-12-15 16:16:27 -08:00
Eric Gregory
e6ba9619f0 Increased preview size. Closes #4405 2011-12-15 14:39:55 -08:00
Eric Gregory
e784d1b9b3 Signal for updating EmailFlags. Closes #4478 2011-12-13 16:13:20 -08:00
Eric Gregory
fe099d9fb9 Mark messages as read when clicked. Closes #4476 2011-12-07 18:48:14 -08:00
Eric Gregory
2109708146 Message list displays oldest unread message or latest message if all read. Closes #4396 2011-12-07 16:01:54 -08:00
Eric Gregory
31b16aac48 Upping Vala requirement to 0.15. Fixes #4470 2011-12-07 15:33:27 -08:00
Eric Gregory
2d21c631b4 Updates for Vala 0.15. Closes #4470 2011-12-07 15:03:56 -08:00
Eric Gregory
063cc7d819 Per-email unread icon. Closes #4442 2011-11-30 15:56:19 -08:00
Eric Gregory
227fd40a12 Added spinner. Closes #3926 2011-11-30 15:37:16 -08:00
Eric Gregory
caceda5b66 Checks if ANY msg in conversation is unread. Closes #4389 2011-11-28 17:53:53 -08:00
Eric Gregory
8609b568a1 Peek to prevent seen (i.e. not unread) flag. Closes #4373 2011-11-28 16:52:09 -08:00
Eric Gregory
783e86863d Made the date color less bright. Closes #4381 2011-11-23 11:57:18 -08:00
Eric Gregory
1f3d3da3ca Refactored main window and geary application to create new controller object. Closes #4308 2011-11-22 18:55:07 -08:00
Eric Gregory
68d554950b Subject now stored as encoded (i.e. off the wire) format. Closes #4400 2011-11-22 18:38:00 -08:00
Eric Gregory
ce510e14a9 Resolves issue with non-UTF8 body and preview encoding. Closes #4408 2011-11-22 15:18:30 -08:00
Eric Gregory
43b0f0a16e Fixes hang on resize. Closes #4397 2011-11-21 16:14:15 -08:00
Jim Nelson
4d1cc73355 Warning in Sqlite.Transaction changed to message(): Closes #4398
A warning message in Transaction can cause the app to fail, however it's not always
fatal.  This changes it to a plain message.
2011-11-18 16:18:20 -08:00
Jim Nelson
f08b5606c0 Adds support for unsolicited server data: Closes #4406
Unsolicited server data is how the server can notify of changes (adds, removes)
while the client is pulling data for an unrelated command.  This patch catches
that unsolicited information and propagates it via signals.

Also some small fixes dealing with local/remote positional addressing in
EngineFolder and a bug that was introduced by the add/remove notifications in
MainWindow.
2011-11-18 12:28:45 -08:00
Jim Nelson
4159bd5bee Adds Eric to AUTHORS file 2011-11-17 17:13:08 -08:00
Jim Nelson
bd65c786cd Fixes Gee hard assertion due to FETCH error: Closes #4392
Not doing proper bounds checking with ListParameter.get methods.
2011-11-17 17:07:40 -08:00
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