Skip to content

The big plugin refactor

Evangelos Ribeiro Tzaras requested to merge devrtz/calls:wip/plugin_manager into main

Since we're about to add a second kind of plugin for "policy engines" (which implement call blocking; see !588 ) the plugin infrastructure gets a major overhaul.

  • A CallsPluginManager is introduced which deals with all plugins and keeps a GListModel of providers (now) and policy engines (with !588).
  • Use GtkFlattenListModel in CallsManager for all our origins (calls_plugin_manager_get_providers() and individual calls_provider_get_origins ()
  • Use GtkFilterListModel in CallsManager for per-protocol (tel, sip, sips) list models
  • Use GtkFilterListModel in CallsAccountOverview for CallsAccountProvider and CallsAccounts
  • Adjust to changes everywhere
  • Make plugin desktop files (mm.plugin, sip.plugin, etc) translatable so we can show their name and description in the UI

TODOs as a follow-up

  • Rebase !588 on top of this
  • Make plugins derive CallExtension (instead of CallsProvider):
    • instead of e.g. CallsProvider, add API to get provider with calls_extension_get_provider()
    • Add calls_extension_get_account_widget () to get the account widget instead of having to go through the CallsProvider
    • Add calls_extension_get_provider_preferences_widget () (to be embedded in the preferences) and implement it for (part of) our providers (where it makes sense, because there's configurable things)
    • Add calls_extension_get_modem_preferences_widget() to show some info and let the user configure call waiting, voice mail, checking balance, etc?
    • This also allows to get rid of the #ifdef FOR_TESTING in provider implementations and revert d3a93bd6 for improved (reported) code coverage \o/
  • Add preference window with the following panes (ish) (now in !690 )
    • General settings like Enable/disable plugins)
    • Call blocking (see #370)
    • Modems (e.g. setup call waiting, voicemail, ..)
    • Accounts (CallsAccountOverview moves there)
Edited by Evangelos Ribeiro Tzaras

Merge request reports