Split detach query into two so that messages identifiers can be captured
which are then used to signal through that the folder has locally
removed messages
The only reason SearchFolder.EmailIdentifier exists was to store the
date for ordering the folder, but that can be done with any old class,
meaning we can simply pass though existing ImapDb ids to clients, fixing
a lot of bugs and corner cases along the way.
Rename source file name and contents to match code convention, add
transation comments, remove extra API in favour of simply exposing the
search entry publically. Extend Hdy.Searchbar so that the width of the
entry grows as needed.
Rename the search folder again to App.SearchFolder, move its id class
into it as an inner class. Remove search folder from the engine so the
application can manage it and it's policy in the future. Also remove
the outbox from the accout's list of local folders, so that code can
be removed altogether.
Move SearchFolder and search EmailIdentifier implementation out of
ImapDb and into its own package. Decouple both from ImapDB, and improve
the implementation, fixing a few inefficiencies. Merge search
FolderProperties into the SearchFoldern implementation as an inner
class.
Merge SearchTerm into ImapDB.SearchQuery as an inner class and move the
outer class's source down a level, since it was the only file left in
the imap-db/search dir.
Make subclasses implement these themselves and remove the unique string
property, to be (hopefully) more efficient and easier for subclasses
to specialise.
Require EmailIdentifier implementations to use an outer GVariant of the
form `(yr)` (that is, a byte and an arbitrary length tuple), so that
inner representations are independent of the outer format.
Clean up search API so that query string parsing and error handling can
be pushed out to the client.
Rename Geary.Account::open_search factory method to ::new_search_query
to better reflect what it actually does.
Update Geary.SearchFolder::search to be async so it can throw errors and
the caller can catch them, require SearchQuery objects instead of plain
text query strings.
Add Geary.SearchQuery::owner property so that the query's account can be
sanity checked.
Update API documentation to reflect this.
GAction does not support disabling parameterised actions
with specific values, but GTK complains if the parameter is
set to null to achieve the same effect, and they aren't
interested in supporting that: GNOME/gtk!1151
Move GDKPixbuf blacklisting to log handler as well, target it more
precisely.
Replace the Geary.Account::opening_monitor with a more generic
::background_progress, and pass that to
Geary.ImapEngine.AccountProcessor so it can keep it updated when ops
are being execited.
If printing source and line number is not being printed (it isn't at
the moment) then print the class name of the inner-most logging source
to give an idea of where the message came from.
Add State object and Geary.Logging.State::to_logging_state factory
method. Use this in LogRecord to print formatted log messages so that
sources can log state that may change between being logged and the
log message being displayed/saved.
Provide a default implementation of Source::to_string that uses the
instance's current state.
Update implementing classes.
Rename the class because we need to distinguish between logging sources
and logging state, for cases when the logged object's state may change
between being logged and being displayed.
Rename util souce file to match new name space per source code
convernstion.