Currently, a lot of our build variables that are defined at
configuration time, are spread out across the code base, often declared
as `extern` which can break when moving around sections of the code
across files.
This commit introduces a "Config" namespace which basically maps to the
definitions in `config.h`, but allows us to properly access them too
from the Vala source code.
By doing so, it helps us to more explicitly see where we rely on a
build variable from this file (which should be obvious from the `Config'
namespace).
To make it ourselves a bit easier in Meson too, we can declare an
internal dependency, which helps ensure that we pull in the dependency
where needed.
- Replace ConversationListStore with ConversationListModel
- Replace GtkTreeView with GtkListBox
- Implement proper multiselection for ListBox
- Rework navigation to be touch friendly
Fork of John Renner <john@jrenner.net> merge request !698
Append the build profile to Geary's data directories when not running
a release build (or under Flatpak) so that e.g. development builds use
different config, cache and data directories.
This allows us to perform things like database schema updates with
relative abandon, since if we ask people to test development builds
with schema updates, they can always safely go back to their release
builds again.
If the current config directory is empty, go looking for config data
in other well known locations and if found, copy it all across from
the most recently modified directory.
This supports migrating config from non-Flatpak to Flatpak locations,
and release config to devel profile locations.
Fixes#326
Create a new Composer.Editor widget and move all body web view and
action bar related code from the main widget there.
This helps to clearly delineate concerns of the two classes, it
substantially reduces the complexity of the main widget, and should
reduce the odds of further breakage like that fixed by the previous
commit less likely in the future.
Set the resource base path to be the expected path so that when running
devel or beta builds (ones that have different app ids), the keyboard
shortcut UI file is still found.
Fixes#930
Publicly, get objects for a variant rather than from it since we're
not actually getting the objects from the variant, just looking them
up using the variant as an id.
Internally, use `to_` rather than `get_` when converting between plugin
and engine objects, since its typically just a cast or a lookup to do
so.
Since plugins especially require the ability to customise a composer
ideally before presenting it, split up composer construction into two
phases: `compose_blah` methods that find a matching composer or
constructa new one, then `present_composer` to present it.
Add `composer_registered` and `composer_deregistered` signals, fired
as appropriate so other code paths (again, plugins in particular) can
hook into composer lifecycles.
Update call sites for new API and to explicitly present new composers.
Introduce new PluginGlobals and PluginContext to encapsulate global and
per-context state, respectively. Pass these objects to various plugin
interface implementations instead of doling it out piecemeal.
Clean up and simplify how composers are constructed. Ensure all
composers are constructed via Application.Composer. Provide a set of
APIs for constructing different kinds of composers with minimal
parameters, rather than having one method with eleventy different
parameters.
Mirror API changes in Composer.Widget by splitting `load` method up
into a method for each different composer type. Clean up internals a
bit as a result. Rename `ComposeType` enum and its values to
`ContextType` to better reflect what it does.
Expect the same variant format for the `show-folder` and `show-email`
application actions. Use existing email and folder store factory
lookup methods for these. Update DesktopNotifications plugin to simply
pass variant values from plugin classes through to notifications.
Even just logging SQL queries is extremely verbose, and pushes a lot
of logging messages off the end of the buffer. So rework result logging
flag and code to apply to both again.
Re-merge Application.Client's SQL logging command line flags back into
one again.
Now that we have classes logging on sub-domains, and the ability to
suppress specific domains, remove flags and switch over to doing
domain suppression for manipulating debug settings in the client.
We can't actually override GLib.Application::quit in a robust way since
it's not virtual, so move as much of the shutdown process as possible to
::shutdown which can be overridden.