source-dialog: Receive a context
This commit is contained in:
+105
-62
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#define G_LOG_DOMAIN "GcalSourceDialog"
|
#define G_LOG_DOMAIN "GcalSourceDialog"
|
||||||
|
|
||||||
|
#include "gcal-context.h"
|
||||||
#include "gcal-debug.h"
|
#include "gcal-debug.h"
|
||||||
#include "gcal-source-dialog.h"
|
#include "gcal-source-dialog.h"
|
||||||
#include "gcal-utils.h"
|
#include "gcal-utils.h"
|
||||||
@@ -109,8 +110,7 @@ struct _GcalSourceDialog
|
|||||||
/* auxiliary */
|
/* auxiliary */
|
||||||
GSimpleActionGroup *action_group;
|
GSimpleActionGroup *action_group;
|
||||||
|
|
||||||
/* manager */
|
GcalContext *context;
|
||||||
GcalManager *manager;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -245,7 +245,7 @@ G_DEFINE_TYPE (GcalSourceDialog, gcal_source_dialog, GTK_TYPE_DIALOG)
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_MANAGER,
|
PROP_CONTEXT,
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -271,11 +271,14 @@ add_button_clicked (GtkWidget *button,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
if (self->source != NULL)
|
if (self->source != NULL)
|
||||||
{
|
{
|
||||||
/* Commit the new source */
|
/* Commit the new source */
|
||||||
gcal_manager_save_source (self->manager, self->source);
|
gcal_manager_save_source (manager, self->source);
|
||||||
|
|
||||||
self->source = NULL;
|
self->source = NULL;
|
||||||
|
|
||||||
@@ -288,7 +291,7 @@ add_button_clicked (GtkWidget *button,
|
|||||||
|
|
||||||
/* Commit each new remote source */
|
/* Commit each new remote source */
|
||||||
for (l = self->remote_sources; l != NULL; l = l->next)
|
for (l = self->remote_sources; l != NULL; l = l->next)
|
||||||
gcal_manager_save_source (self->manager, l->data);
|
gcal_manager_save_source (manager, l->data);
|
||||||
|
|
||||||
g_list_free (self->remote_sources);
|
g_list_free (self->remote_sources);
|
||||||
self->remote_sources = NULL;
|
self->remote_sources = NULL;
|
||||||
@@ -326,7 +329,7 @@ add_source (GcalManager *manager,
|
|||||||
GtkWidget *row;
|
GtkWidget *row;
|
||||||
ESource *parent;
|
ESource *parent;
|
||||||
|
|
||||||
parent = gcal_manager_get_source (self->manager, e_source_get_parent (source));
|
parent = gcal_manager_get_source (manager, e_source_get_parent (source));
|
||||||
|
|
||||||
row = make_row_from_source (GCAL_SOURCE_DIALOG (user_data), source);
|
row = make_row_from_source (GCAL_SOURCE_DIALOG (user_data), source);
|
||||||
g_object_set_data (G_OBJECT (row), "source", source);
|
g_object_set_data (G_OBJECT (row), "source", source);
|
||||||
@@ -363,11 +366,14 @@ back_button_clicked (GtkButton *button,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
if (gtk_stack_get_visible_child (GTK_STACK (self->stack)) == self->edit_grid)
|
if (gtk_stack_get_visible_child (GTK_STACK (self->stack)) == self->edit_grid)
|
||||||
{
|
{
|
||||||
/* Save the source before leaving */
|
/* Save the source before leaving */
|
||||||
gcal_manager_save_source (self->manager, self->source);
|
gcal_manager_save_source (manager, self->source);
|
||||||
|
|
||||||
/* Release the source ref we acquired */
|
/* Release the source ref we acquired */
|
||||||
g_clear_object (&self->source);
|
g_clear_object (&self->source);
|
||||||
@@ -382,11 +388,13 @@ calendar_listbox_sort_func (GtkListBoxRow *row1,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self;
|
GcalSourceDialog *self;
|
||||||
|
GcalManager *manager;
|
||||||
ESource *source1, *source2;
|
ESource *source1, *source2;
|
||||||
gboolean is_goa1, is_goa2;
|
gboolean is_goa1, is_goa2;
|
||||||
gint retval;
|
gint retval;
|
||||||
|
|
||||||
self = GCAL_SOURCE_DIALOG (user_data);
|
self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
/* first source */
|
/* first source */
|
||||||
source1 = g_object_get_data (G_OBJECT (row1), "source");
|
source1 = g_object_get_data (G_OBJECT (row1), "source");
|
||||||
@@ -402,8 +410,8 @@ calendar_listbox_sort_func (GtkListBoxRow *row1,
|
|||||||
gchar *parent_name2 = NULL;
|
gchar *parent_name2 = NULL;
|
||||||
|
|
||||||
/* Retrieve parent names */
|
/* Retrieve parent names */
|
||||||
get_source_parent_name_color (self->manager, source1, &parent_name1, NULL);
|
get_source_parent_name_color (manager, source1, &parent_name1, NULL);
|
||||||
get_source_parent_name_color (self->manager, source2, &parent_name2, NULL);
|
get_source_parent_name_color (manager, source2, &parent_name2, NULL);
|
||||||
|
|
||||||
retval = g_strcmp0 (parent_name1, parent_name2);
|
retval = g_strcmp0 (parent_name1, parent_name2);
|
||||||
|
|
||||||
@@ -429,11 +437,14 @@ calendar_visible_check_toggled (GObject *object,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object)))
|
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object)))
|
||||||
gcal_manager_enable_source (self->manager, self->source);
|
gcal_manager_enable_source (manager, self->source);
|
||||||
else
|
else
|
||||||
gcal_manager_disable_source (self->manager, self->source);
|
gcal_manager_disable_source (manager, self->source);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -492,11 +503,14 @@ default_check_toggled (GObject *object,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
/* Retrieve the current default source */
|
/* Retrieve the current default source */
|
||||||
if (self->old_default_source == NULL)
|
if (self->old_default_source == NULL)
|
||||||
{
|
{
|
||||||
self->old_default_source = gcal_manager_get_default_source (self->manager);
|
self->old_default_source = gcal_manager_get_default_source (manager);
|
||||||
g_object_unref (self->old_default_source);
|
g_object_unref (self->old_default_source);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -506,9 +520,9 @@ default_check_toggled (GObject *object,
|
|||||||
* default source.
|
* default source.
|
||||||
*/
|
*/
|
||||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object)))
|
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object)))
|
||||||
gcal_manager_set_default_source (self->manager, self->source);
|
gcal_manager_set_default_source (manager, self->source);
|
||||||
else
|
else
|
||||||
gcal_manager_set_default_source (self->manager, self->old_default_source);
|
gcal_manager_set_default_source (manager, self->old_default_source);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -540,10 +554,12 @@ is_goa_source (GcalSourceDialog *dialog,
|
|||||||
{
|
{
|
||||||
ESource *parent;
|
ESource *parent;
|
||||||
gboolean is_goa;
|
gboolean is_goa;
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
g_assert (source && E_IS_SOURCE (source));
|
g_assert (source && E_IS_SOURCE (source));
|
||||||
|
|
||||||
parent = gcal_manager_get_source (dialog->manager, e_source_get_parent (source));
|
manager = gcal_context_get_manager (dialog->context);
|
||||||
|
parent = gcal_manager_get_source (manager, e_source_get_parent (source));
|
||||||
is_goa = e_source_has_extension (parent, E_SOURCE_EXTENSION_GOA);
|
is_goa = e_source_has_extension (parent, E_SOURCE_EXTENSION_GOA);
|
||||||
g_object_unref (parent);
|
g_object_unref (parent);
|
||||||
|
|
||||||
@@ -591,6 +607,7 @@ make_row_from_source (GcalSourceDialog *dialog,
|
|||||||
{
|
{
|
||||||
ESourceSelectable *extension;
|
ESourceSelectable *extension;
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
|
GcalManager *manager;
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
GtkWidget *bottom_label;
|
GtkWidget *bottom_label;
|
||||||
GtkWidget *top_label;
|
GtkWidget *top_label;
|
||||||
@@ -599,7 +616,8 @@ make_row_from_source (GcalSourceDialog *dialog,
|
|||||||
GdkRGBA color;
|
GdkRGBA color;
|
||||||
gchar *parent_name;
|
gchar *parent_name;
|
||||||
|
|
||||||
get_source_parent_name_color (dialog->manager, source, &parent_name, NULL);
|
manager = gcal_context_get_manager (dialog->context);
|
||||||
|
get_source_parent_name_color (manager, source, &parent_name, NULL);
|
||||||
|
|
||||||
builder = gtk_builder_new_from_resource ("/org/gnome/calendar/calendar-row.ui");
|
builder = gtk_builder_new_from_resource ("/org/gnome/calendar/calendar-row.ui");
|
||||||
|
|
||||||
@@ -763,11 +781,14 @@ response_signal (GtkDialog *dialog,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (dialog);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (dialog);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
/* Save the source */
|
/* Save the source */
|
||||||
if (self->mode == GCAL_SOURCE_DIALOG_MODE_EDIT && self->source != NULL)
|
if (self->mode == GCAL_SOURCE_DIALOG_MODE_EDIT && self->source != NULL)
|
||||||
{
|
{
|
||||||
gcal_manager_save_source (self->manager, self->source);
|
gcal_manager_save_source (manager, self->source);
|
||||||
g_clear_object (&self->source);
|
g_clear_object (&self->source);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -778,7 +799,7 @@ response_signal (GtkDialog *dialog,
|
|||||||
|
|
||||||
/* Commit each new remote source */
|
/* Commit each new remote source */
|
||||||
for (l = self->remote_sources; l != NULL; l = l->next)
|
for (l = self->remote_sources; l != NULL; l = l->next)
|
||||||
gcal_manager_save_source (self->manager, l->data);
|
gcal_manager_save_source (manager, l->data);
|
||||||
|
|
||||||
g_list_free (self->remote_sources);
|
g_list_free (self->remote_sources);
|
||||||
self->remote_sources = NULL;
|
self->remote_sources = NULL;
|
||||||
@@ -852,9 +873,11 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self;
|
GcalSourceDialog *self;
|
||||||
|
GcalManager *manager;
|
||||||
GtkWidget *visible_child;
|
GtkWidget *visible_child;
|
||||||
|
|
||||||
self = GCAL_SOURCE_DIALOG (user_data);
|
self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
visible_child = gtk_stack_get_visible_child (GTK_STACK (object));
|
visible_child = gtk_stack_get_visible_child (GTK_STACK (object));
|
||||||
|
|
||||||
if (visible_child == self->main_scrolledwindow)
|
if (visible_child == self->main_scrolledwindow)
|
||||||
@@ -880,14 +903,14 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
GdkRGBA color;
|
GdkRGBA color;
|
||||||
gboolean creation_mode, is_goa, is_file, is_remote;
|
gboolean creation_mode, is_goa, is_file, is_remote;
|
||||||
|
|
||||||
default_source = gcal_manager_get_default_source (self->manager);
|
default_source = gcal_manager_get_default_source (manager);
|
||||||
creation_mode = (self->mode == GCAL_SOURCE_DIALOG_MODE_CREATE ||
|
creation_mode = (self->mode == GCAL_SOURCE_DIALOG_MODE_CREATE ||
|
||||||
self->mode == GCAL_SOURCE_DIALOG_MODE_CREATE_WEB);
|
self->mode == GCAL_SOURCE_DIALOG_MODE_CREATE_WEB);
|
||||||
is_goa = is_goa_source (GCAL_SOURCE_DIALOG (user_data), self->source);
|
is_goa = is_goa_source (GCAL_SOURCE_DIALOG (user_data), self->source);
|
||||||
is_file = e_source_has_extension (self->source, E_SOURCE_EXTENSION_LOCAL_BACKEND);
|
is_file = e_source_has_extension (self->source, E_SOURCE_EXTENSION_LOCAL_BACKEND);
|
||||||
is_remote = is_remote_source (self->source);
|
is_remote = is_remote_source (self->source);
|
||||||
|
|
||||||
get_source_parent_name_color (self->manager, self->source, &parent_name, NULL);
|
get_source_parent_name_color (manager, self->source, &parent_name, NULL);
|
||||||
|
|
||||||
/* update headerbar buttons */
|
/* update headerbar buttons */
|
||||||
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->headerbar), !creation_mode);
|
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->headerbar), !creation_mode);
|
||||||
@@ -940,7 +963,7 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
{
|
{
|
||||||
gchar *name;
|
gchar *name;
|
||||||
|
|
||||||
get_source_parent_name_color (self->manager, self->source, &name, NULL);
|
get_source_parent_name_color (manager, self->source, &name, NULL);
|
||||||
gtk_label_set_label (GTK_LABEL (self->account_label), name);
|
gtk_label_set_label (GTK_LABEL (self->account_label), name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -962,7 +985,7 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
|
|
||||||
/* default source check button */
|
/* default source check button */
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->default_check), (self->source == default_source));
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->default_check), (self->source == default_source));
|
||||||
gtk_widget_set_visible (self->default_check, gcal_manager_is_client_writable (self->manager, self->source));
|
gtk_widget_set_visible (self->default_check, gcal_manager_is_client_writable (manager, self->source));
|
||||||
|
|
||||||
/* title */
|
/* title */
|
||||||
if (!creation_mode)
|
if (!creation_mode)
|
||||||
@@ -1667,10 +1690,13 @@ notification_child_revealed_changed (GtkWidget *notification,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
if (gtk_revealer_get_child_revealed (GTK_REVEALER (notification)))
|
if (gtk_revealer_get_child_revealed (GTK_REVEALER (notification)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
/* If we have any removed source, delete it */
|
/* If we have any removed source, delete it */
|
||||||
if (self->removed_source != NULL)
|
if (self->removed_source != NULL)
|
||||||
{
|
{
|
||||||
@@ -1681,7 +1707,7 @@ notification_child_revealed_changed (GtkWidget *notification,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* Enable the source again to remove it's name from disabled list */
|
/* Enable the source again to remove it's name from disabled list */
|
||||||
gcal_manager_enable_source (self->manager, self->removed_source);
|
gcal_manager_enable_source (manager, self->removed_source);
|
||||||
|
|
||||||
e_source_remove_sync (self->removed_source, NULL, &error);
|
e_source_remove_sync (self->removed_source, NULL, &error);
|
||||||
|
|
||||||
@@ -1693,12 +1719,12 @@ notification_child_revealed_changed (GtkWidget *notification,
|
|||||||
{
|
{
|
||||||
g_warning ("[source-dialog] Error removing source: %s", error->message);
|
g_warning ("[source-dialog] Error removing source: %s", error->message);
|
||||||
|
|
||||||
add_source (self->manager,
|
add_source (manager,
|
||||||
self->removed_source,
|
self->removed_source,
|
||||||
is_source_enabled (self->removed_source),
|
is_source_enabled (self->removed_source),
|
||||||
user_data);
|
user_data);
|
||||||
|
|
||||||
gcal_manager_enable_source (self->manager, self->removed_source);
|
gcal_manager_enable_source (manager, self->removed_source);
|
||||||
|
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
}
|
}
|
||||||
@@ -1717,14 +1743,17 @@ undo_remove_action (GtkButton *button,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
/* if there's any set source, unremove it */
|
/* if there's any set source, unremove it */
|
||||||
if (self->removed_source != NULL)
|
if (self->removed_source != NULL)
|
||||||
{
|
{
|
||||||
/* Enable the source before adding it again */
|
/* Enable the source before adding it again */
|
||||||
gcal_manager_enable_source (self->manager, self->removed_source);
|
gcal_manager_enable_source (manager, self->removed_source);
|
||||||
|
|
||||||
add_source (self->manager,
|
add_source (manager,
|
||||||
self->removed_source,
|
self->removed_source,
|
||||||
is_source_enabled (self->removed_source),
|
is_source_enabled (self->removed_source),
|
||||||
user_data);
|
user_data);
|
||||||
@@ -1785,6 +1814,9 @@ remove_button_clicked (GtkWidget *button,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
GcalSourceDialog *self = GCAL_SOURCE_DIALOG (user_data);
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
|
manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
if (self->source != NULL)
|
if (self->source != NULL)
|
||||||
{
|
{
|
||||||
@@ -1818,7 +1850,7 @@ remove_button_clicked (GtkWidget *button,
|
|||||||
self->notification_timeout_id = g_timeout_add_seconds (5, hide_notification_scheduled, user_data);
|
self->notification_timeout_id = g_timeout_add_seconds (5, hide_notification_scheduled, user_data);
|
||||||
|
|
||||||
/* Disable the source, so it gets hidden */
|
/* Disable the source, so it gets hidden */
|
||||||
gcal_manager_disable_source (self->manager, self->removed_source);
|
gcal_manager_disable_source (manager, self->removed_source);
|
||||||
|
|
||||||
g_list_free (children);
|
g_list_free (children);
|
||||||
g_free (str);
|
g_free (str);
|
||||||
@@ -2005,6 +2037,7 @@ goa_account_removed_cb (GoaClient *client,
|
|||||||
static void
|
static void
|
||||||
loading_changed_cb (GcalSourceDialog *dialog)
|
loading_changed_cb (GcalSourceDialog *dialog)
|
||||||
{
|
{
|
||||||
|
GcalManager *manager;
|
||||||
GoaClient *client;
|
GoaClient *client;
|
||||||
GList *accounts, *l;
|
GList *accounts, *l;
|
||||||
|
|
||||||
@@ -2012,7 +2045,9 @@ loading_changed_cb (GcalSourceDialog *dialog)
|
|||||||
|
|
||||||
g_return_if_fail (GCAL_IS_SOURCE_DIALOG (dialog));
|
g_return_if_fail (GCAL_IS_SOURCE_DIALOG (dialog));
|
||||||
|
|
||||||
if (gcal_manager_get_loading (dialog->manager))
|
manager = gcal_context_get_manager (dialog->context);
|
||||||
|
|
||||||
|
if (gcal_manager_get_loading (manager))
|
||||||
{
|
{
|
||||||
GCAL_TRACE_MSG ("Not loaded yet");
|
GCAL_TRACE_MSG ("Not loaded yet");
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
@@ -2020,7 +2055,7 @@ loading_changed_cb (GcalSourceDialog *dialog)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add already fetched accounts */
|
/* Add already fetched accounts */
|
||||||
client = gcal_manager_get_goa_client (dialog->manager);
|
client = gcal_manager_get_goa_client (manager);
|
||||||
accounts = goa_client_get_accounts (client);
|
accounts = goa_client_get_accounts (client);
|
||||||
|
|
||||||
for (l = accounts; l != NULL; l = l->next)
|
for (l = accounts; l != NULL; l = l->next)
|
||||||
@@ -2031,13 +2066,39 @@ loading_changed_cb (GcalSourceDialog *dialog)
|
|||||||
g_signal_connect (client, "account-removed", G_CALLBACK (goa_account_removed_cb), dialog);
|
g_signal_connect (client, "account-removed", G_CALLBACK (goa_account_removed_cb), dialog);
|
||||||
|
|
||||||
/* Once we loaded, no need to track it down again */
|
/* Once we loaded, no need to track it down again */
|
||||||
g_signal_handlers_disconnect_by_func (dialog->manager, loading_changed_cb, dialog);
|
g_signal_handlers_disconnect_by_func (manager, loading_changed_cb, dialog);
|
||||||
|
|
||||||
g_list_free (accounts);
|
g_list_free (accounts);
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
setup_context (GcalSourceDialog *self)
|
||||||
|
{
|
||||||
|
GcalManager *manager = gcal_context_get_manager (self->context);
|
||||||
|
|
||||||
|
if (!gcal_manager_get_loading (manager))
|
||||||
|
{
|
||||||
|
GList *sources, *l;
|
||||||
|
|
||||||
|
sources = gcal_manager_get_sources_connected (manager);
|
||||||
|
|
||||||
|
for (l = sources; l != NULL; l = l->next)
|
||||||
|
add_source (manager, l->data, is_source_enabled (l->data), self);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_signal_connect_swapped (manager,
|
||||||
|
"notify::loading",
|
||||||
|
G_CALLBACK (loading_changed_cb),
|
||||||
|
self);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_signal_connect (manager, "source-added", G_CALLBACK (add_source), self);
|
||||||
|
g_signal_connect (manager, "source-removed", G_CALLBACK (remove_source), self);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_source_dialog_constructed (GObject *object)
|
gcal_source_dialog_constructed (GObject *object)
|
||||||
@@ -2092,8 +2153,8 @@ gcal_source_dialog_get_property (GObject *object,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_MANAGER:
|
case PROP_CONTEXT:
|
||||||
g_value_set_object (value, self->manager);
|
g_value_set_object (value, self->context);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2110,30 +2171,12 @@ gcal_source_dialog_set_property (GObject *object,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_MANAGER:
|
case PROP_CONTEXT:
|
||||||
self->manager = g_value_dup_object (value);
|
g_message ("Setting the context");
|
||||||
|
g_assert (self->context == NULL);
|
||||||
if (!gcal_manager_get_loading (self->manager))
|
self->context = g_value_dup_object (value);
|
||||||
{
|
setup_context (self);
|
||||||
GList *sources, *l;
|
g_object_notify_by_pspec (object, properties[PROP_CONTEXT]);
|
||||||
|
|
||||||
sources = gcal_manager_get_sources_connected (self->manager);
|
|
||||||
|
|
||||||
for (l = sources; l != NULL; l = l->next)
|
|
||||||
add_source (self->manager, l->data, is_source_enabled (l->data), self);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_signal_connect_swapped (self->manager,
|
|
||||||
"notify::loading",
|
|
||||||
G_CALLBACK (loading_changed_cb),
|
|
||||||
self);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_signal_connect (self->manager, "source-added", G_CALLBACK (add_source), self);
|
|
||||||
g_signal_connect (self->manager, "source-removed", G_CALLBACK (remove_source), self);
|
|
||||||
|
|
||||||
g_object_notify_by_pspec (object, properties[PROP_MANAGER]);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2159,11 +2202,11 @@ gcal_source_dialog_class_init (GcalSourceDialogClass *klass)
|
|||||||
object_class->get_property = gcal_source_dialog_get_property;
|
object_class->get_property = gcal_source_dialog_get_property;
|
||||||
object_class->set_property = gcal_source_dialog_set_property;
|
object_class->set_property = gcal_source_dialog_set_property;
|
||||||
|
|
||||||
properties[PROP_MANAGER] = g_param_spec_object ("manager",
|
properties[PROP_CONTEXT] = g_param_spec_object ("context",
|
||||||
"Manager",
|
"Context",
|
||||||
"The manager object of the application",
|
"The context object of the application",
|
||||||
GCAL_TYPE_MANAGER,
|
GCAL_TYPE_CONTEXT,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, N_PROPS, properties);
|
g_object_class_install_properties (object_class, N_PROPS, properties);
|
||||||
|
|
||||||
|
|||||||
+1
-5
@@ -1258,8 +1258,8 @@ gcal_window_constructed (GObject *object)
|
|||||||
* these properties using the GtkBuilder .ui file.
|
* these properties using the GtkBuilder .ui file.
|
||||||
*/
|
*/
|
||||||
g_object_bind_property (self, "context", self->weather_settings, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self, "context", self->weather_settings, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
|
g_object_bind_property (self, "context", self->source_dialog, "context", G_BINDING_DEFAULT);
|
||||||
g_object_bind_property (self->context, "manager", self->edit_dialog, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self->context, "manager", self->edit_dialog, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
g_object_bind_property (self->context, "manager", self->source_dialog, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
|
||||||
g_object_bind_property (self->context, "manager", self->week_view, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self->context, "manager", self->week_view, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
g_object_bind_property (self->context, "manager", self->month_view, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self->context, "manager", self->month_view, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
g_object_bind_property (self->context, "manager", self->year_view, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self->context, "manager", self->year_view, "manager", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
@@ -1562,10 +1562,6 @@ gcal_window_init (GcalWindow *self)
|
|||||||
|
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
|
|
||||||
/* source dialog */
|
|
||||||
g_object_bind_property (self, "application", self->source_dialog, "application",
|
|
||||||
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
|
||||||
|
|
||||||
self->views[GCAL_WINDOW_VIEW_WEEK] = self->week_view;
|
self->views[GCAL_WINDOW_VIEW_WEEK] = self->week_view;
|
||||||
self->views[GCAL_WINDOW_VIEW_MONTH] = self->month_view;
|
self->views[GCAL_WINDOW_VIEW_MONTH] = self->month_view;
|
||||||
self->views[GCAL_WINDOW_VIEW_YEAR] = self->year_view;
|
self->views[GCAL_WINDOW_VIEW_YEAR] = self->year_view;
|
||||||
|
|||||||
Reference in New Issue
Block a user