Commit graph

212 commits

Author SHA1 Message Date
Michael Gratton
0aa8ad6a05 client: Convert from shared conversation action widget to use multiple
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.
2021-04-11 11:23:13 +10:00
Michael Gratton
7b994ece1d client: Move MainToolbar into the Components name space proper 2021-04-09 21:11:41 +10:00
Michael James Gratton
315b933c2a po: Remove removed source file from POTFILES.in 2021-04-04 12:44:32 +10:00
Michael Gratton
c331145fd3 client: Clean up database upgrade dialog implementation
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
2021-01-19 23:50:29 +11:00
Michael Gratton
67af1b2064 po/POFILES.in: Add missing files 2021-01-19 20:49:01 +11:00
Michael Gratton
20a4fd3ed2 Geary.ImapDb.SearchQuery: Rename to Geary.FtsSearchQuery
There's nothing IMAP-specific about the class, so move it to common
and rename to reflect what it is actually used for.
2021-01-19 20:48:17 +11:00
Piotr Drąg
b3834035c5 Update POTFILES.in 2021-01-09 16:16:56 +01:00
Michael Gratton
bf3a0e830b Merge branch 'adaptive_dialogs' into 'mainline'
Make account-editor adaptive

See merge request GNOME/geary!609
2021-01-07 21:54:57 +00:00
Julian Sparber
3530a804a1 compnents-info-bar: use custom infobar so that the buttons reflow 2020-11-18 16:50:18 +01:00
Julian Sparber
a30afb9e86 account-editor: replace remove confirm view with dialog 2020-11-17 13:45:57 +01:00
Michael James Gratton
d7af23201c Revert "Revert "Merge branch 'mjog/558-webkit-shared-process' into 'mainline'""
This reverts commit cbe6e0ba9b, which reinstates
commit e4a5b85698.

See !411 and !374
2020-10-13 00:02:02 +11:00
Julian Sparber
70a40893a3 action-bar: Add an action bar to the conversations list (2-panel)
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.
2020-10-12 11:03:55 +02:00
Julian Sparber
98017cfb39 main-toolbar: Create object containing conversation actions
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.
2020-10-12 11:03:04 +02:00
Michael Gratton
257f6fb901 Geary.Db.Connection: Split up into db and transaction-specific impls
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).
2020-09-05 13:25:41 +10:00
Michael Gratton
a123983cb0 Geary.Imap: Remove COMPRESS command
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.
2020-09-02 14:54:42 +10:00
Michael Gratton
369b1f1a4d Composer.Widget: Split email body editing code out into separate widget
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.
2020-08-28 18:25:58 +10:00
Michael Gratton
72b79ece60 po/POTFILES.skip: Skip translating internal plugin descriptors
These plugins are never presented in the UI, hence should not be
translated.
2020-08-19 10:48:40 +10:00
Michael Gratton
ad9ea210e0 po/POTFILES.skip: General cleanup 2020-08-19 10:45:48 +10:00
Michael Gratton
193aaa2281 po/POTFILES.in: Add missing plugin source files 2020-08-18 18:09:26 +10:00
Michael Gratton
7230ea4e69 Plugin.ActionBar: New class added for plugins that use action bars 2020-08-18 16:32:26 +10:00
Michael Gratton
ec44114612 Plugin.Button: Rename to Actionable
Make the name generic so it can be used for things other than buttons
(e.g. menu items).
2020-08-18 16:32:26 +10:00
Michael Gratton
c2a1bae025 Geary.Memory.OffsetBuffer: Remove now unused class 2020-07-30 12:53:11 +10:00
Michael Gratton
4a469d7898 po/POTFILES.in: Add missing lines for email templates files 2020-04-23 14:11:55 +10:00
Michael Gratton
5f2d40bed9 Plugin: Add new Composer object and Application.new_composer method
This allows plugins to create and show new composers for a specific
account.
2020-04-18 18:37:35 +10:00
Michael Gratton
c4b44b41f6 Application.FolderContext: New class for aggregating client folder state
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.
2020-04-17 12:28:38 +10:00
Michael Gratton
9952143b30 Application.AccountContext: Break out unto standalone source file 2020-04-17 12:28:38 +10:00
Michael Gratton
8b3e01f11d Application: Rename plugin context objects to make their use clear 2020-04-17 12:28:38 +10:00
Michael Gratton
00f0fb9665 Geary.Logging: Move remaining code from api source to util source
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.
2020-04-15 17:31:16 +10:00
Michael Gratton
8dcab7f306 Geary.SpecialFolderType: Rename class and related properties, signals
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.
2020-03-31 16:15:57 +11:00
Michael Gratton
d2eec63cfb Util.International: Rename package to I18n to make fn calls less verbose 2020-03-31 15:30:00 +11:00
Michael Gratton
297a59ca80 Merge branch 'mjog/imap-connection-fixes' into 'mainline'
IMAP connection fixes

See merge request GNOME/geary!479
2020-03-30 11:35:18 +00:00
Michael Gratton
9bb7b77f17 Plugin: Add EmailExtension plugin extension type
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.
2020-03-30 21:05:00 +11:00
Michael Gratton
016998359b src/client/plugin: Rename plugin data files so they get translated
Since xgettext doesn't recognise .plugin files as desktop files,
rename them to `….plugin.desktop.in`. Add missing plugins to POFILES.in.
2020-03-30 19:51:01 +11:00
Michael Gratton
b46838f100 Update Geary.Imap.Capabilities handling
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.
2020-03-27 08:29:14 +11:00
Michael Gratton
f0c1dfe375 Application: Make Plugin.EmailStore impl usable by other cxts
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.
2020-03-21 17:02:08 +11:00
Michael Gratton
0c5c204d31 Plugin: Add new Button class to allow plugins to create buttons 2020-03-20 17:41:57 +11:00
Michael Gratton
0e7d30f8cb Plugins.FolderContext: Add support for showing folder info bars
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.
2020-03-20 17:41:57 +11:00
Michael Gratton
254d10782c plugins: Add support for folder plugins
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.
2020-03-20 17:41:57 +11:00
Michael Gratton
feece66c6e MainWindowInfobar: Rename and derive from common InfoBar widget
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.
2020-03-20 17:08:46 +11:00
Michael Gratton
88516377ca Components.InfoBar: New subclass of Gtk InfoBars with labels 2020-03-20 17:08:46 +11:00
Michael Gratton
190c446499 Components.InfoBarStack: New class for stacking Gtk InfoBars 2020-03-20 17:08:46 +11:00
Piotr Drąg
1ec772ce7b Update POTFILES.in 2020-03-17 16:42:28 +01:00
Michael Gratton
c72ce8d8da Replace FolderList.Tree mail hooks with plugin
Using a plugin to manage folder new mail highlighting so it works in the
same way as for other notifications.
2020-03-17 19:23:24 +11:00
Michael Gratton
154bb2d2c5 Rework and clean up how plugin extensions work
Since libpeas doesn't allow a single plugin instance to have multiple
extensions, define a single libpeas extension as a base class for all
plugins and define extensions as non-libpeas interfaces shared by a
single plugin. Manage loading/unloading these ourselves.

This also defines a new trusted extension interface for plugins that
need access to Geary's internals, new error domain for plugis, and
made the notification context a plugin interface that is implemented by
the application object.
2020-03-17 19:23:24 +11:00
Michael Gratton
ee4bd117ee Convert plugins to use isolated context model
Convert the plugin implementation to use a model where each plugin
has its own context object instances and has limited/no access to the
client's and engine's objects.
2020-03-17 19:23:24 +11:00
Michael Gratton
f72b1354f8 Add stable public interfaces for plugins to use
These interfaces provide a stable, public API for plugins that can
provide API stability while the underlying client and engine APIs
change.
2020-03-17 19:23:24 +11:00
Michael James Gratton
cbe6e0ba9b Revert "Merge branch 'mjog/558-webkit-shared-process' into 'mainline'"
Revert merge request GNOME/geary!374 for now since the shared process
model breaks old-style WebProcess message handler IPC.

This can be un-reverted when out JS is ported to the new Messages API
that is landing in WebKitGTK 2.28.

This reverts commit e4a5b85698, reversing
changes made to 66f6525480.
2020-02-13 12:56:52 +11:00
Michael Gratton
b3fa1446c1 Clean up EmailEntry API
Move into composer namespace and rename to match. Update API for
consistency with style guide. Remove uneeded fields and clarify when
::modified is true. Fix call sites.
2020-02-02 18:15:53 +11:00
Michael Gratton
5eb6bb2a6d Update and simplify SearchBar component
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.
2019-12-18 09:25:07 +11:00
Michael Gratton
f025f6904d Move SearchFolder management into the client
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.
2019-12-18 09:25:07 +11:00