From f603f5be51aa6029ba2f85e21119dead3a6da06f Mon Sep 17 00:00:00 2001 From: Julian Sparber Date: Wed, 18 Mar 2020 14:10:53 +0100 Subject: [PATCH] Remove Enumerate and EnumerateParams class This classes where fully replaced by Manager --- src/calls-enumerate-params.c | 251 ----------------------------------- src/calls-enumerate-params.h | 56 -------- src/calls-enumerate.c | 211 ----------------------------- src/calls-enumerate.h | 40 ------ src/meson.build | 2 - 5 files changed, 560 deletions(-) delete mode 100644 src/calls-enumerate-params.c delete mode 100644 src/calls-enumerate-params.h delete mode 100644 src/calls-enumerate.c delete mode 100644 src/calls-enumerate.h diff --git a/src/calls-enumerate-params.c b/src/calls-enumerate-params.c deleted file mode 100644 index 9c055bd..0000000 --- a/src/calls-enumerate-params.c +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright (C) 2018 Purism SPC - * - * This file is part of Calls. - * - * Calls is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calls is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calls. If not, see . - * - * Author: Bob Ham - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - */ - -#include "calls-enumerate-params.h" -#include "calls-provider.h" -#include "calls-origin.h" -#include "calls-call.h" - -#include -#include - - -typedef enum -{ - CALLS_ENUMERATE_PROVIDER, - CALLS_ENUMERATE_ORIGIN, - CALLS_ENUMERATE_CALL, - CALLS_ENUMERATE_LAST -} CallsEnumerateObjectType; - - -struct _CallsEnumerateParams -{ - GObject parent_instance; - - gboolean enumerating; - gpointer user_data; - GHashTable *callbacks[3]; -}; - -G_DEFINE_TYPE (CallsEnumerateParams, calls_enumerate_params, G_TYPE_OBJECT); - -enum { - PROP_0, - PROP_USER_DATA, - PROP_LAST_PROP, -}; -static GParamSpec *props[PROP_LAST_PROP]; - - -static void -calls_enumerate_params_init (CallsEnumerateParams *self) -{ - unsigned i; - - self->enumerating = TRUE; - - for (i = 0; i < CALLS_ENUMERATE_LAST; ++i) - { - self->callbacks[i] = - g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, NULL); - } -} - - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - CallsEnumerateParams *self = CALLS_ENUMERATE_PARAMS (object); - - switch (property_id) { - case PROP_USER_DATA: - self->user_data = g_value_get_pointer (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void -finalize (GObject *object) -{ - CallsEnumerateParams *self = CALLS_ENUMERATE_PARAMS (object); - - unsigned i; - for (i = 0; i < CALLS_ENUMERATE_LAST; ++i) - { - g_hash_table_unref (self->callbacks[i]); - } - - G_OBJECT_CLASS (calls_enumerate_params_parent_class)->finalize (object); -} - - -static void -calls_enumerate_params_class_init (CallsEnumerateParamsClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->set_property = set_property; - object_class->finalize = finalize; - - props[PROP_USER_DATA] = - g_param_spec_pointer ("user-data", - _("User data"), - _("The pointer to be provided as user data for signal connections"), - G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); - - g_object_class_install_properties (object_class, PROP_LAST_PROP, props); -} - - -CallsEnumerateParams * -calls_enumerate_params_new (gpointer user_data) -{ - return g_object_new (CALLS_TYPE_ENUMERATE_PARAMS, - "user-data", user_data, - NULL); -} - - -gpointer -calls_enumerate_params_get_user_data (CallsEnumerateParams *self) -{ - return self->user_data; -} - - -gboolean -calls_enumerate_params_get_enumerating (CallsEnumerateParams *self) -{ - return self->enumerating; -} - - -void -calls_enumerate_params_set_enumerating (CallsEnumerateParams *self, - gboolean enumerating) -{ - self->enumerating = enumerating; -} - - -static GHashTable * -lookup_callbacks (CallsEnumerateParams *self, - GType obj_type) -{ - const GType obj_gtypes[3] = - { - CALLS_TYPE_PROVIDER, - CALLS_TYPE_ORIGIN, - CALLS_TYPE_CALL - }; - unsigned i; - - for (i = 0; i < CALLS_ENUMERATE_LAST; ++i) - { - if (g_type_is_a (obj_type, obj_gtypes[i])) - { - return self->callbacks[i]; - } - } - - g_error ("Unknown GType `%s' converting to Provider enumeration object type", - g_type_name (obj_type)); -} - - -gboolean -calls_enumerate_params_have_callbacks (CallsEnumerateParams *self, - GType obj_type) -{ - GHashTable * const callbacks = lookup_callbacks (self, obj_type); - return g_hash_table_size (callbacks) > 0; -} - - -gboolean -calls_enumerate_params_add (CallsEnumerateParams *self, - GType obj_type, - const gchar *detail, - GCallback callback) -{ - GHashTable * const callbacks = lookup_callbacks (self, obj_type); - return g_hash_table_insert (callbacks, g_strdup (detail), callback); -} - - -struct _CallsEnumerateConnectData -{ - gpointer instance; - gpointer user_data; -}; -typedef struct _CallsEnumerateConnectData CallsEnumerateConnectData; - - -static void -callbacks_connect (const gchar *detail, - GCallback callback, - CallsEnumerateConnectData *data) -{ - g_signal_connect_swapped (data->instance, - detail, - callback, - data->user_data); -} - - -void -calls_enumerate_params_connect (CallsEnumerateParams *self, - GObject *object) -{ - GHashTable * const callbacks = - lookup_callbacks (self, G_TYPE_FROM_INSTANCE (object)); - CallsEnumerateConnectData data; - - data.instance = object; - data.user_data = self->user_data; - - g_hash_table_foreach (callbacks, - (GHFunc)callbacks_connect, - &data); -} - - -GCallback -calls_enumerate_params_lookup (CallsEnumerateParams *self, - GType obj_type, - const gchar *detail) -{ - GHashTable * const callbacks = lookup_callbacks (self, obj_type); - return g_hash_table_lookup (callbacks, detail); -} diff --git a/src/calls-enumerate-params.h b/src/calls-enumerate-params.h deleted file mode 100644 index 28b782b..0000000 --- a/src/calls-enumerate-params.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2018 Purism SPC - * - * This file is part of Calls. - * - * Calls is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calls is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calls. If not, see . - * - * Author: Bob Ham - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - */ - -#ifndef CALLS_ENUMERATE_PARAMS_H__ -#define CALLS_ENUMERATE_PARAMS_H__ - -#include - -G_BEGIN_DECLS - -#define CALLS_TYPE_ENUMERATE_PARAMS (calls_enumerate_params_get_type ()) - -G_DECLARE_FINAL_TYPE (CallsEnumerateParams, calls_enumerate_params, - CALLS, ENUMERATE_PARAMS, GObject); - -CallsEnumerateParams *calls_enumerate_params_new (gpointer user_data); -gpointer calls_enumerate_params_get_user_data (CallsEnumerateParams *self); -gboolean calls_enumerate_params_have_callbacks (CallsEnumerateParams *self, - GType obj_type); -gboolean calls_enumerate_params_get_enumerating (CallsEnumerateParams *self); -void calls_enumerate_params_set_enumerating (CallsEnumerateParams *self, - gboolean enuming); -gboolean calls_enumerate_params_add (CallsEnumerateParams *self, - GType obj_type, - const gchar *detail, - GCallback callback); -void calls_enumerate_params_connect (CallsEnumerateParams *self, - GObject *object); -GCallback calls_enumerate_params_lookup (CallsEnumerateParams *self, - GType obj_type, - const gchar *detail); - -G_END_DECLS - -#endif /* CALLS_ENUMERATE_PARAMS_H__ */ diff --git a/src/calls-enumerate.c b/src/calls-enumerate.c deleted file mode 100644 index e7d263c..0000000 --- a/src/calls-enumerate.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (C) 2018 Purism SPC - * - * This file is part of Calls. - * - * Calls is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calls is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calls. If not, see . - * - * Author: Bob Ham - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - */ - -#include "calls-enumerate.h" -#include "calls-origin.h" -#include "calls-call.h" - -#include - - - -typedef void (*CallAddedCallback) (gpointer user_data, - CallsCall *call, - CallsOrigin *origin); - -static void -enum_call_added_cb (CallsOrigin *origin, - CallsCall *call, - CallsEnumerateParams *params) -{ - // Call call-added signal - if (calls_enumerate_params_get_enumerating (params)) - { - CallAddedCallback call_added_cb; - - call_added_cb = (CallAddedCallback) - calls_enumerate_params_lookup (params, - CALLS_TYPE_ORIGIN, - "call-added"); - if (call_added_cb) - { - gpointer user_data = calls_enumerate_params_get_user_data (params); - call_added_cb (user_data, call, origin); - } - } - - // Connect user's callbacks - calls_enumerate_params_connect (params, G_OBJECT (call)); -} - - -static void -enum_origin_calls (CallsOrigin *origin, - CallsEnumerateParams *params) -{ - GList *calls, *node; - - calls = calls_origin_get_calls (origin); - - for (node = calls; node; node = node->next) - { - enum_call_added_cb (origin, - CALLS_CALL (node->data), - params); - } - - g_list_free (calls); -} - - -typedef void (*OriginAddedCallback) (gpointer user_data, - CallsOrigin *origin, - CallsProvider *provider); - -static void -enum_origin_added_cb (CallsProvider *provider, - CallsOrigin *origin, - CallsEnumerateParams *params) -{ - gboolean add_callback; - - // Call origin-added signal - if (calls_enumerate_params_get_enumerating (params)) - { - OriginAddedCallback origin_added_cb; - - origin_added_cb = (OriginAddedCallback) - calls_enumerate_params_lookup (params, - CALLS_TYPE_PROVIDER, - "origin-added"); - if (origin_added_cb) - { - gpointer user_data = calls_enumerate_params_get_user_data (params); - origin_added_cb (user_data, origin, provider); - } - } - - // Connect user's callbacks - calls_enumerate_params_connect (params, G_OBJECT (origin)); - - // We add a callback for ourselves if we have to set callbacks on - // anything lower in the hierarchy in future - add_callback = - calls_enumerate_params_have_callbacks (params, CALLS_TYPE_CALL); - - if (add_callback) - { - g_object_ref (params); - g_signal_connect_data (origin, - "call-added", - G_CALLBACK (enum_call_added_cb), - params, - (GClosureNotify)g_object_unref, - 0); - - } - - // We enumerate if we've added callbacks and if there's the specific - // "call-added" callback for this level - if (add_callback - || - calls_enumerate_params_lookup (params, CALLS_TYPE_ORIGIN, - "call-added")) - { - enum_origin_calls (origin, params); - } -} - - -static void -enum_provider_origins (CallsProvider *provider, - CallsEnumerateParams *params) -{ - GList *origins, *node; - - origins = calls_provider_get_origins (provider); - - for (node = origins; node; node = node->next) - { - enum_origin_added_cb (provider, - CALLS_ORIGIN (node->data), - params); - } - - g_list_free (origins); -} - - -/** - * calls_enumerateerate: - * @provider: a #CallsProvider - * @params: a #CallsEnumerateParams containing callbacks and state - * - * Enumerate all of the #CallsOrigin objects in the #CallsProvider and - * then all of the #CallsCall objects in those #CallsOrigin objects. - * For any callbacks stored in @params, connect them to the - * enumerated objects and connect them to any future objects that - * appear. Call the "origin-added" callback for a #CallsProvider and - * "call-added" for a #CallsOrigin if the target objects are - * enumerated. - */ -void -calls_enumerate (CallsProvider *provider, - CallsEnumerateParams *params) -{ - gboolean add_callback; - - // Connect user's callbacks - calls_enumerate_params_connect (params, G_OBJECT (provider)); - - // We add a callback for ourselves if we have to set callbacks on - // anything lower in the hierarchy in future - add_callback = - calls_enumerate_params_have_callbacks (params, CALLS_TYPE_ORIGIN) - || - calls_enumerate_params_have_callbacks (params, CALLS_TYPE_CALL); - - if (add_callback) - { - g_object_ref (params); - g_signal_connect_data (provider, - "origin-added", - G_CALLBACK (enum_origin_added_cb), - params, - (GClosureNotify)g_object_unref, - 0); - - } - - // We enumerate if we've added callbacks and if there's the specific - // "origin-added" callback for this level - if (add_callback || - calls_enumerate_params_lookup (params, CALLS_TYPE_PROVIDER, - "origin-added")) - { - enum_provider_origins (provider, params); - } - - calls_enumerate_params_set_enumerating (params, FALSE); -} diff --git a/src/calls-enumerate.h b/src/calls-enumerate.h deleted file mode 100644 index 74b4eac..0000000 --- a/src/calls-enumerate.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2018 Purism SPC - * - * This file is part of Calls. - * - * Calls is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calls is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calls. If not, see . - * - * Author: Bob Ham - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - */ - -#ifndef CALLS_ENUMERATE_H__ -#define CALLS_ENUMERATE_H__ - -#include "calls-provider.h" -#include "calls-enumerate-params.h" - -#include - -G_BEGIN_DECLS - -void calls_enumerate (CallsProvider *provider, - CallsEnumerateParams *params); - -G_END_DECLS - -#endif /* CALLS_ENUMERATE_H__ */ diff --git a/src/meson.build b/src/meson.build index df8e7b4..fdbdf85 100644 --- a/src/meson.build +++ b/src/meson.build @@ -68,8 +68,6 @@ calls_sources = files(['calls-message-source.c', 'calls-message-source.h', 'calls-call.c', 'calls-origin.c', 'calls-origin.h', 'calls-provider.c', 'calls-provider.h', - 'calls-enumerate-params.c', 'calls-enumerate-params.h', - 'calls-enumerate.c', 'calls-enumerate.h', 'calls-party.c', 'calls-party.h', 'calls-call-data.c', 'calls-call-data.h', 'calls-call-holder.c', 'calls-call-holder.h',