[calls] account-provider: Repurpose to allow graphical credential editing
- From: Evangelos Ribeiro Tzaras <devrtz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [calls] account-provider: Repurpose to allow graphical credential editing
- Date: Tue, 20 Jul 2021 10:33:28 +0000 (UTC)
commit 64bb170efaa355457137fe6f934501571d256078
Author: Evangelos Ribeiro Tzaras <evangelos tzaras puri sm>
Date: Sun Jul 4 01:09:18 2021 +0200
account-provider: Repurpose to allow graphical credential editing
src/calls-account-provider.c | 84 +++++++++++++++++++++++++++++++++++++++++---
src/calls-account-provider.h | 13 +++++--
2 files changed, 90 insertions(+), 7 deletions(-)
---
diff --git a/src/calls-account-provider.c b/src/calls-account-provider.c
index 92239c3f..5ac0279b 100644
--- a/src/calls-account-provider.c
+++ b/src/calls-account-provider.c
@@ -28,19 +28,93 @@
/**
* SECTION:account-provider
- * @short_description: An interface for CallsProvider to use online accounts
- * @Title: CallsOnlineAccount
+ * @short_description: An interface for #CallsProvider using online accounts
+ * @Title: CallsAccountProvider
*
- * #CallsAccountProvider is an interface that should be implemented by a
- * #CallsProvider when it provides accounts. See #CallsAccount and
- * #CallsCredentials.
+ * A provider for accounts.
*/
G_DEFINE_INTERFACE (CallsAccountProvider, calls_account_provider, CALLS_TYPE_PROVIDER)
+enum {
+ WIDGET_EDIT_DONE,
+ LAST_SIGNAL,
+};
+static guint signals[LAST_SIGNAL];
static void
calls_account_provider_default_init (CallsAccountProviderInterface *iface)
{
+ /* The account provider should emit this signal when the widget is not needed anymore */
+ signals[WIDGET_EDIT_DONE] =
+ g_signal_new ("widget-edit-done",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_FIRST,
+ 0, NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 0);
}
+
+/**
+ * calls_account_provider_get_account_widget:
+ * @self: A #CallsAccountProvider
+ *
+ * Returns: (transfer none): A #GtkWidget for adding or editing account credentials.
+ */
+GtkWidget *
+calls_account_provider_get_account_widget (CallsAccountProvider *self)
+{
+ CallsAccountProviderInterface *iface;
+
+ g_return_val_if_fail (CALLS_IS_ACCOUNT_PROVIDER (self), NULL);
+
+ iface = CALLS_ACCOUNT_PROVIDER_GET_IFACE (self);
+ g_return_val_if_fail (iface->get_account_widget, NULL);
+
+ return iface->get_account_widget (self);
+}
+
+/**
+ * calls_account_provider_add_new_account:
+ * @self: A #CallsAccountProvider
+ *
+ * Prepares the #GtkWidget to add a new account (clear any forms).
+ * See calls_account_provider_get_account_widget().
+ *
+ * The caller is responsible for embedding the widget somewhere visible.
+ */
+void
+calls_account_provider_add_new_account (CallsAccountProvider *self)
+{
+ CallsAccountProviderInterface *iface;
+
+ g_return_if_fail (CALLS_IS_ACCOUNT_PROVIDER (self));
+
+ iface = CALLS_ACCOUNT_PROVIDER_GET_IFACE (self);
+ g_return_if_fail (iface->add_new_account);
+
+ iface->add_new_account (self);
+}
+
+/**
+ * calls_account_provider_edit_account:
+ * @self: A #CallsAccountProvider
+ * @account: A #CallsAccount to edit
+ *
+ * Prepares the #GtkWidget to edit the given @account (prepulate forms).
+ * See calls_account_provider_get_account_widget().
+ */
+void
+calls_account_provider_edit_account (CallsAccountProvider *self,
+ CallsAccount *account)
+{
+ CallsAccountProviderInterface *iface;
+
+ g_return_if_fail (CALLS_IS_ACCOUNT_PROVIDER (self));
+
+ iface = CALLS_ACCOUNT_PROVIDER_GET_IFACE (self);
+ g_return_if_fail (iface->edit_account);
+
+ iface->edit_account (self, account);
+}
diff --git a/src/calls-account-provider.h b/src/calls-account-provider.h
index 82907e52..cfd8a968 100644
--- a/src/calls-account-provider.h
+++ b/src/calls-account-provider.h
@@ -24,21 +24,30 @@
#pragma once
+#include "calls-account.h"
#include "calls-provider.h"
-#include <glib-object.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
#define CALLS_TYPE_ACCOUNT_PROVIDER (calls_account_provider_get_type ())
-G_DECLARE_INTERFACE (CallsAccountProvider, calls_account_provider, CALLS, ACCOUNT_PROVIDER, CallsProvider);
+G_DECLARE_INTERFACE (CallsAccountProvider, calls_account_provider, CALLS, ACCOUNT_PROVIDER, CallsProvider)
struct _CallsAccountProviderInterface
{
GTypeInterface parent_iface;
+ GtkWidget *(*get_account_widget) (CallsAccountProvider *self);
+ void (*add_new_account) (CallsAccountProvider *self);
+ void (*edit_account) (CallsAccountProvider *self,
+ CallsAccount *account);
};
+GtkWidget *calls_account_provider_get_account_widget (CallsAccountProvider *self);
+void calls_account_provider_add_new_account (CallsAccountProvider *self);
+void calls_account_provider_edit_account (CallsAccountProvider *self,
+ CallsAccount *account);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]