- 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
Convert Components.ConversationActions to a widget that encapsulates
selectively visible conversations action groups. Use multiple instances
of that in preference to a single shared instance that gets re-parented
as the responsive UI adjusts.
Flatten the custom widget hierarchy a bit by merging the
`ConversationActionBar` and `ConversationHeaderbar` widgets into
`MainToolbar` itself.
Rename `UpgradeDialog` to `DatabaseManager` since it's not actually a
dialog, move it into the APplication package. Replace old Glade UI file
with a custom built dialog since it's trivial and so we can make it
modal for a main window.
Fixes#1007
This moves the actions from the headerbar to the action bar at the
bottom of the conversations list when multiple conversations are
selected. This changes is needed so that the user can still interact
with the conversations when folded.
This also hides the actions from the Headerbar and action bar when
no conversation is selected.
This creates a new object that contain the 4 groups of actions that used
to be in the conversation-viewer headerbar.
This allows the widgets to be moved to differen locations, e.g. to an
action bar that will be added in a later commit.
Convert `Connection` into an interface, add two concrete implementations
that allow splitting up the database connection used generally, and the
connection passed to transactions. This allows limiting the API surface
that transactions have access to (so they can't e.g. create
sub-transactions) and perform transaction-specific work (e.g. better
logging when an error occurs).
Geary hasn't used compression for IMAP in a while now due to the
possibility of information leakage for secure connections, so remove
the command as well.
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.
Add new `FolderContext` class to encapsulate client state and policy
about a specific engine folder. Use it for display name, icon and email
count bubble policy for now.
Update AccountContext to maintain a set of folder-policy instances per
account, and convert the folder list over to using the new objects.
Now that the flags code is gone, move the remaining code from
`src/engine/api/geary-logging.vala` into
`src/engine/util/util-logging.vala`, and remove the former source file.
The `SpecialFolderType` was somewhat mis-named, since the special use
does not (in most cases) confer any special type, rather it's simply
defines what a particular folder is used /for/.
As such, rename the enum to to `Geary.Folder.SpecialUse`, moving it in
to the `Folder` class, since it relates specifically to folders, also
rename `Folder::special_folder_type` and
`Folder::special_folder_type_changed` reflect the above and not
duplicate the type name, and similarly rename
`Account::folders_special_type`.
Update the many call sites.
Add EmailExtension plugin extenion with context object and
Application.EmailContext implementing it. Check for plugins with
this type in PluginManager and init/deinit their contexts as needed.
Move Capabilities to the api directory and make immutable.
Don't pass around out params to simply increment the revision and use a
field in ClientSession, just use the last capability instance. Ensure
after starting a TLS session capabilities are cleared. Add unit tests
for getting both implicit and explicity capaibilities when initiating
a client session.
Break out the plugin mail store implmeentation out of
NotificationContext into its own EmailStoreFactory class, so it can be
re-used by other plugin context types.
Add Plugin.InfoBar to allow plugins to describe an info bar, add
methods to FolderContext to allow adding and removing them when
folders are displayed and implement them. Add a InfoBarStack to the
MainWindow for displaying folder info bars.
Add new Plugin.FolderExtension plugin extenion interface, context
object and context object implementation. Populate the context object
when plugins implementing the extension are loaded, and destroy it
on unload.
Rename to Components.ProblemReportInfoBar to better describe what it
does, and to fit with the code convention for package and file names.
Derive from Components.InfoBar so we can drop the custom GTK Builder
file for it.