1. 05 Feb, 2014 1 commit
  2. 30 Jan, 2014 2 commits
    • Charles Lindsay's avatar
      Add Geary.iterate to replace Collection.SingleItem · 3af6837e
      Charles Lindsay authored
      This adds a way to turn lists of items into a Geary.Iterable, which then
      allows you to dump results into any kind of container.  This removes the
      Collection.SingleItem class, which was no longer useful.
      
      Closes: bgo #723208
      3af6837e
    • Charles Lindsay's avatar
      Add option to save sent mail · cce04b81
      Charles Lindsay authored
      This adds the ability for Geary to push sent mail up to the account's
      Sent Mail folder (if available).  There's an accompanying account option
      that defaults to on (meaning: push sent mail).
      
      The current implementation will leave messages in the Outbox (though
      they won't be sent again) if they fail to be pushed to Sent Mail.  This
      isn't the best solution, but it at least means you have a way of seeing
      the problem and hopefully copying the data elsewhere manually if you
      need to save it.
      
      Note that Geary might not always recognize an account's Sent Mail
      folder.  This is the case for any "Other" accounts that don't support
      the "special use" or "xlist" IMAP extensions.  In this case, Geary will
      either throw an error and leave messages in the Outbox, or erase the
      message from the Outbox when it's sent, depending on the value of the
      account's save sent mail option.  Better support for detecting the Sent
      Mail folder in every case is coming soon.
      
      Closes: bgo #713263
      cce04b81
  3. 18 Jan, 2014 1 commit
    • Jim Nelson's avatar
      Load local msgs and display new msgs more quickly: Closes bgo#713432 · af10a76b
      Jim Nelson authored
      This patch is a grab-bag of fixes to get mail onto the screen faster
      and report new mail waiting on the server more quickly.
      
      In a nutshell:
        * Adds a NO_DELAY flag to Folder.open_async which indicates that
          background remote connections should initiate ASAP rather than
          wait for a local request that requires remote information.
        * Reduce creation of ImapDB.Folders (which, previously, were
          generated as though "cheap"), which means caching server
          information.  ImapDB now relies on ImapEngine to refresh that
          information on its own.
        * The background search table update is delayed to allow startup
          database tasks priority.
        * Rather than delay selection of a folder 100ms to prevent the user
          from holding down a key or clicking madly, the initial selection
          goes right through, but subsequent ones are delayed.  This may
          also help resolve bug #713468.
        * And the big one: ImapEngine.Account doesn't load local and remote
          folders in parallel at startup, but rather local first, reports
          them to the user, and then loads the remote and pairs the two.
          This gets the UI up and going much more quickly.
      af10a76b
  4. 07 Jan, 2014 1 commit
    • Charles Lindsay's avatar
      Add separate trash/archive/delete buttons · 968743ac
      Charles Lindsay authored
      Archive shows up as its own button for any account that supports
      archiving (currently only Gmail).  Trash or delete shows up as one
      button, depending on what the folder supports and whether you've got the
      shift key held down.  Future work will extend supporting archive to
      other account types and getting the trash special folder recognized in
      more accounts.
      
      Closes: bgo #714212
      968743ac
  5. 17 Dec, 2013 1 commit
  6. 12 Dec, 2013 1 commit
    • Charles Lindsay's avatar
      Add API to make juggling Gee collections easier · 62af03e5
      Charles Lindsay authored
      This adds a simple Iterable class that lets us take advantage of Gee's
      Traversable interface much more easily.  Traversable is great, but
      every operation returns an Iterator, which makes it awkward to use
      outside of Traversable.  The new Iterable wraps the Traversable
      Iterators and methods so you can directly use the result.  It also gives
      us a convenient point to add convenience methods in the future.
      
      I've gone through a few arbitrary places in the code to see how the
      class might be used, and changed some obvious places to (hopefully) the
      equivalent code using the new Iterable class.  More work could be done
      here, but the real benefit is simply having the Iterable class around to
      be able to use in new code.
      62af03e5
  7. 16 Nov, 2013 1 commit
    • Jim Nelson's avatar
      Convert all MIME handling to Engine classes: Closes #6530 · e29a9c80
      Jim Nelson authored
      We've had numerous bugs due to improper MIME comparisons and dealing
      with Content-Type and Content-Disposition (or their lack of presence
      in a message).  Now the Engine offers MIME classes that better deal
      with these issues without exporting the GMime structures, which
      are not as easy to manage and don't offer some of the things that
      have bitten us in the past (such as case-insensitive comparisons).
      e29a9c80
  8. 01 Oct, 2013 1 commit
  9. 26 Sep, 2013 1 commit
  10. 25 Sep, 2013 1 commit
  11. 24 Sep, 2013 1 commit
  12. 17 Sep, 2013 4 commits
    • Charles Lindsay's avatar
      Revamp status bar · 542b2ff9
      Charles Lindsay authored
      * Increase the size of the spinner; fix #7184
      * In the event of an error sending a message, display text in the status
        bar indicating as such (and display a notification too); fix #7481
      * Display a status bar message and spin the spinner when sending;
        fix #4629
      * Re-add the sound played when a message is sent; fix #5429
      542b2ff9
    • Jim Nelson's avatar
      Support Outlook.com IMAP: Closes #7479 · c8b4f9e0
      Jim Nelson authored
      This takes advantage of Outlook.com's new IMAP support, meaning
      Geary works with Outlook.com, Hotmail, and Live.com users.
      
      Because Outlook.com doesn't support UIDPLUS, some features
      (in particular, draft auto-save) is unavailable, as is the
      ability to use its Archive folder directly.
      
      This patch fixes a couple of bugs that occur when a server doesn't
      support UIDPLUS.  Also fixes a use case with UID increment/decrement
      that caused a flag watcher bug due to ImapDB.Folder always
      returning the same email if only one was present in the folder.
      c8b4f9e0
    • Eric Gregory's avatar
    • Eric Gregory's avatar
      3321a6dc
  13. 14 Sep, 2013 1 commit
  14. 12 Sep, 2013 1 commit
  15. 11 Sep, 2013 1 commit
  16. 10 Sep, 2013 1 commit
    • Charles Lindsay's avatar
      Use insert, not append, in search folder; fix #7444 · c0d8522b
      Charles Lindsay authored
      It was a good idea in theory to trigger an append when search results
      are first added, but this hits the conversation monitor too hard, which
      can't easily handle large appends (ticketed at #7464).
      
      This also updates the conversation monitor to listen to the new inserted
      signal instead of looking at count-changed.
      c0d8522b
  17. 09 Sep, 2013 4 commits
  18. 06 Sep, 2013 1 commit
    • Jim Nelson's avatar
      Improved Folder notification of added email · 2e8c3dbb
      Jim Nelson authored
      Folder now offers an "email-inserted" and "email-locally-inserted"
      signal to indicate when email has been added (or discovered) but
      is not added to the top of the message vector.  SearchFolder and
      ConversationMonitor may be able to use this better in the future.
      2e8c3dbb
  19. 05 Sep, 2013 1 commit
    • Charles Lindsay's avatar
      Speed up search, add SearchEmailIds; fix #7372 · 9a137699
      Charles Lindsay authored
      This optimizes the search query itself, and also how we get the results:
      instead of turning around and selecting the full row for each resulting
      id, we simply pull out the id and internal date and that becomes the new
      SearchEmailIdentifier.  This new class also lets us more properly order
      EmailIdentifiers everywhere else.
      9a137699
  20. 03 Sep, 2013 1 commit
    • Jim Nelson's avatar
      Load mail on ukr.net's Freemail server: Closes #7425 · e064ce73
      Jim Nelson authored
      Two bugs are fixed in this patch:
      
      (a) Freemail's XLIST returns the Inbox's name in Ukranian.  This
      is a problem when doing a direct list (i.e. XLIST "" "Inbox") to
      get folder properties.  This is fixed by using LIST whenever listing
      Inbox.
      
      (b) Freemail returns FETCH BODY[] header fields back in an
      indeterminate order.  Previously the IMAP stack relied on a string
      comparison to match up the response with the request.  New code
      now properly (but painfully) parses the BODY[] response, obviating
      the need for FetchBodyDataIdentifier.
      e064ce73
  21. 30 Aug, 2013 1 commit
    • Jim Nelson's avatar
      Archive removes two messages, fails to show new: Closes #6085 · 9ac7349f
      Jim Nelson authored
      This is a tricky timing bug triggered by Gmail sending EXPUNGE and
      EXISTS notifications in a particular order with a slight timing delay
      between them.
      
      Normally Gmail will send one or more EXPUNGE notifications followed by
      EXISTS to finish up a list of removal notifications.  Even if the
      client sends an APPEND followed by STORE/EXPUNGE, the EXPUNGE
      notifications are first.
      
      However, if the client STORE/EXPUNGEs on one connection and a new
      message arrives from another (or via SMTP), Gmail will issue an
      EXISTS (append), wait 250 msec, then issue the EXPUNGE(s).  In
      that 250msec delay, Geary has already turned around and requested
      the new message, which no longer exists at the reported position
      because the EXPUNGEs (which have not arrived yet) have shifted it
      downward.
      
      The solution is to pause when notifications come in so all can
      be accounted for, shifting positions as necessary.
      9ac7349f
  22. 27 Aug, 2013 1 commit
  23. 22 Aug, 2013 1 commit
  24. 19 Aug, 2013 1 commit
    • Charles Lindsay's avatar
      Allow operations on email in any folder; fix #6496 · 5594abd9
      Charles Lindsay authored
      This is squashed commit (sorry -- we'll get better about maintaining a
      clean history in collaborative branches in the future!) of a massive
      amount of work from Jim and myself.
      
      * EmailIdentifiers for normal (i.e. not outbox, etc.) emails are the
        same regardless of which folder they came from
      * New EmailStore interface to manipulate messages that reside in any
        folder, without having to care what folders are open
      * Relevant places that manipulate emails (e.g. the toolbar) have been
        updated to use the new EmailStore interface
      * Conversation and ImplConversation have been smooshed together
      * Many, many more items and bugfixes related to the above points
      5594abd9
  25. 12 Aug, 2013 1 commit
  26. 09 Aug, 2013 1 commit
  27. 03 Aug, 2013 1 commit
  28. 26 Jul, 2013 1 commit
  29. 23 Jul, 2013 1 commit
  30. 19 Jul, 2013 1 commit
  31. 18 Jul, 2013 1 commit
  32. 17 Jul, 2013 1 commit
    • Jim Nelson's avatar
      Remove positional listing operations from Geary.Folder: Closes #7249 · da8c95c2
      Jim Nelson authored
      This simplifies the various Folder implementations, removes one (large)
      replay queue operation, makes vector expansion _much_ simpler, and
      generally makes the Geary API a bit cleaner.
      
      Because the code affected included some of the proposed fixes for
      operation.  That plus the vector expansion changes may have some
      affect on that ticket.
      da8c95c2
  33. 11 Jul, 2013 1 commit
    • Charles Lindsay's avatar
      Fix EmailIdentifier's equal_to; fix #7220 · 1054b992
      Charles Lindsay authored
      I had mistakenly used == to compare FolderPaths, which have their own
      equal_to method.
      
      Also, this cleans up a bit of the ConversationSet logic that wasn't
      needed since EmailIdentifiers take folder_path into account in their
      hash and equal_to methods.
      1054b992