manager: support multiple providers
This includes the following changes: - Introduce a `providers` hash table to keep track of multiple CallProvider's and remove the `provider` member - Remove `calls_manager_get_provider()` and `calls_manager_set_provider()` in favour of `calls_manager_add_provider()`, `calls_manager_remove_provider()` and `calls_manager_has_provider()` - Introduce a `origins` GListStore to keep track of available origins. `origins` is updated in `items_changed_cb()` when the origins of any CallsProvider are updated. - Adapt to changes with respect to `calls_manager_get_origins()`. - Introduce `origins_by_protocol` hash table to keep track of available origins per protocol. - Adjust tests - We temporarily break country code lookup which was handled previously with the "default-origin" mechanism. We will add it back to the CallsSettings class which will provide a better application-wide mechanism.
This commit is contained in:
@@ -46,23 +46,25 @@ typedef enum
|
||||
} CallsManagerState;
|
||||
|
||||
|
||||
CallsManager *calls_manager_new (void);
|
||||
CallsManager *calls_manager_get_default (void);
|
||||
CallsContactsProvider *calls_manager_get_contacts_provider (CallsManager *self);
|
||||
const gchar *calls_manager_get_provider (CallsManager *self);
|
||||
void calls_manager_set_provider (CallsManager *self,
|
||||
const gchar *name);
|
||||
CallsManagerState calls_manager_get_state (CallsManager *self);
|
||||
GListModel *calls_manager_get_origins (CallsManager *self);
|
||||
GList *calls_manager_get_calls (CallsManager *self);
|
||||
void calls_manager_dial (CallsManager *self,
|
||||
CallsOrigin *origin,
|
||||
const gchar *target);
|
||||
CallsOrigin *calls_manager_get_default_origin (CallsManager *self);
|
||||
void calls_manager_set_default_origin (CallsManager *self,
|
||||
CallsOrigin *origin);
|
||||
const gchar *calls_manager_get_contact_name (CallsCall *call);
|
||||
gboolean calls_manager_has_active_call (CallsManager *self);
|
||||
void calls_manager_hang_up_all_calls (CallsManager *self);
|
||||
CallsManager *calls_manager_new (void);
|
||||
CallsManager *calls_manager_get_default (void);
|
||||
CallsContactsProvider *calls_manager_get_contacts_provider (CallsManager *self);
|
||||
void calls_manager_add_provider (CallsManager *self,
|
||||
const char *name);
|
||||
void calls_manager_remove_provider (CallsManager *self,
|
||||
const char *name);
|
||||
gboolean calls_manager_has_provider (CallsManager *self,
|
||||
const char *name);
|
||||
CallsManagerState calls_manager_get_state (CallsManager *self);
|
||||
GListModel *calls_manager_get_origins (CallsManager *self);
|
||||
GList *calls_manager_get_calls (CallsManager *self);
|
||||
void calls_manager_dial (CallsManager *self,
|
||||
CallsOrigin *origin,
|
||||
const char *target);
|
||||
GListModel *calls_manager_get_suitable_origins (CallsManager *self,
|
||||
const char *target);
|
||||
const gchar *calls_manager_get_contact_name (CallsCall *call);
|
||||
gboolean calls_manager_has_active_call (CallsManager *self);
|
||||
void calls_manager_hang_up_all_calls (CallsManager *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
Reference in New Issue
Block a user