window: remove hash table usage
Replaced by g_object_{get|set}_data methods
This commit is contained in:
committed by
Erick Pérez Castellanos
parent
491e9d3e85
commit
6657dad17f
+36
-86
@@ -117,8 +117,6 @@ typedef struct
|
|||||||
|
|
||||||
ESource *removed_source;
|
ESource *removed_source;
|
||||||
|
|
||||||
GHashTable *calendar_source_to_row;
|
|
||||||
|
|
||||||
/* temp to keep event_creation */
|
/* temp to keep event_creation */
|
||||||
gboolean open_edit_dialog;
|
gboolean open_edit_dialog;
|
||||||
} GcalWindowPrivate;
|
} GcalWindowPrivate;
|
||||||
@@ -437,34 +435,13 @@ calendar_listbox_sort_func (GtkListBoxRow *row1,
|
|||||||
GtkListBoxRow *row2,
|
GtkListBoxRow *row2,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalWindowPrivate *priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
|
||||||
ESource *source1, *source2;
|
ESource *source1, *source2;
|
||||||
GList *l, *aux;
|
|
||||||
|
|
||||||
l = g_hash_table_get_keys (priv->calendar_source_to_row);
|
source1 = g_object_get_data (G_OBJECT (row1), "source");
|
||||||
source1 = source2 = NULL;
|
source2 = g_object_get_data (G_OBJECT (row2), "source");
|
||||||
|
|
||||||
for (aux = l; aux != NULL; aux = aux->next)
|
|
||||||
{
|
|
||||||
GtkWidget *current_row;
|
|
||||||
|
|
||||||
current_row = g_hash_table_lookup (priv->calendar_source_to_row, aux->data);
|
|
||||||
|
|
||||||
/* Enable/disable the toggled calendar */
|
|
||||||
if (current_row == GTK_WIDGET (row1))
|
|
||||||
source1 = aux->data;
|
|
||||||
|
|
||||||
if (current_row == GTK_WIDGET (row2))
|
|
||||||
source2 = aux->data;
|
|
||||||
|
|
||||||
if (source1 != NULL && source2 != NULL)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (source1 == NULL && source2 == NULL)
|
if (source1 == NULL && source2 == NULL)
|
||||||
return -1;
|
return 0;
|
||||||
|
|
||||||
g_list_free (l);
|
|
||||||
|
|
||||||
return g_strcmp0 (e_source_get_display_name (source1), e_source_get_display_name (source2));
|
return g_strcmp0 (e_source_get_display_name (source1), e_source_get_display_name (source2));
|
||||||
}
|
}
|
||||||
@@ -824,10 +801,9 @@ add_source (GcalManager *manager,
|
|||||||
GtkWidget *row;
|
GtkWidget *row;
|
||||||
|
|
||||||
priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
||||||
row = make_row_from_source (GCAL_WINDOW (user_data), source);
|
|
||||||
|
|
||||||
/* add to the hash */
|
row = make_row_from_source (GCAL_WINDOW (user_data), source);
|
||||||
g_hash_table_insert (priv->calendar_source_to_row, source, row);
|
g_object_set_data (G_OBJECT (row), "source", source);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (priv->calendar_listbox), row);
|
gtk_container_add (GTK_CONTAINER (priv->calendar_listbox), row);
|
||||||
}
|
}
|
||||||
@@ -892,15 +868,24 @@ remove_source (GcalManager *manager,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalWindowPrivate *priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
GcalWindowPrivate *priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
||||||
|
GtkWidget *row;
|
||||||
|
GList *children, *aux;
|
||||||
|
|
||||||
/**
|
children = gtk_container_get_children (GTK_CONTAINER (priv->calendar_listbox));
|
||||||
* Since a destroyer function was
|
row = NULL;
|
||||||
* defined, simply removing the
|
|
||||||
* source will call gtk_widget_destroy
|
for (aux = children; aux != NULL; aux = aux->next)
|
||||||
* on the row, which will remove it
|
{
|
||||||
* from the listbox.
|
ESource *child_source = g_object_get_data (G_OBJECT (aux->data), "source");
|
||||||
*/
|
|
||||||
g_hash_table_remove (priv->calendar_source_to_row, source);
|
if (child_source != NULL && child_source == source)
|
||||||
|
row = aux->data;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (row != NULL)
|
||||||
|
gtk_widget_destroy (row);
|
||||||
|
|
||||||
|
g_list_free (children);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -926,26 +911,9 @@ source_row_activated (GtkListBox *listbox,
|
|||||||
GtkWidget *new_row;
|
GtkWidget *new_row;
|
||||||
ESource *source;
|
ESource *source;
|
||||||
gint response;
|
gint response;
|
||||||
GList *l, *aux;
|
|
||||||
|
|
||||||
l = g_hash_table_get_keys (priv->calendar_source_to_row);
|
source = g_object_get_data (G_OBJECT (row), "source");
|
||||||
source = NULL;
|
|
||||||
|
|
||||||
for (aux = l; aux != NULL; aux = aux->next)
|
|
||||||
{
|
|
||||||
GtkWidget *current_row;
|
|
||||||
|
|
||||||
current_row = g_hash_table_lookup (priv->calendar_source_to_row, aux->data);
|
|
||||||
|
|
||||||
/* Enable/disable the toggled calendar */
|
|
||||||
if (current_row == GTK_WIDGET (row))
|
|
||||||
{
|
|
||||||
source = aux->data;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* double check the source */
|
|
||||||
if (source == NULL)
|
if (source == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -958,8 +926,8 @@ source_row_activated (GtkListBox *listbox,
|
|||||||
|
|
||||||
gtk_widget_hide (priv->source_dialog);
|
gtk_widget_hide (priv->source_dialog);
|
||||||
|
|
||||||
/* update the source */
|
/* remove the row */
|
||||||
g_hash_table_remove (priv->calendar_source_to_row, source);
|
gtk_widget_destroy (GTK_WIDGET (row));
|
||||||
|
|
||||||
if (response == GCAL_RESPONSE_REMOVE_SOURCE)
|
if (response == GCAL_RESPONSE_REMOVE_SOURCE)
|
||||||
{
|
{
|
||||||
@@ -978,13 +946,10 @@ source_row_activated (GtkListBox *listbox,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
new_row = make_row_from_source (GCAL_WINDOW (user_data), source);
|
new_row = make_row_from_source (GCAL_WINDOW (user_data), source);
|
||||||
|
g_object_set_data (G_OBJECT (new_row), "source", source);
|
||||||
g_hash_table_insert (priv->calendar_source_to_row, source, new_row);
|
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (priv->calendar_listbox), new_row);
|
gtk_container_add (GTK_CONTAINER (priv->calendar_listbox), new_row);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_list_free (l);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -995,31 +960,20 @@ on_calendar_toggled (GObject *object,
|
|||||||
GcalWindowPrivate *priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
GcalWindowPrivate *priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
|
||||||
gboolean active;
|
gboolean active;
|
||||||
GtkWidget *row;
|
GtkWidget *row;
|
||||||
GList *l, *aux;
|
ESource *source;
|
||||||
|
|
||||||
row = gtk_widget_get_parent (gtk_widget_get_parent (GTK_WIDGET (object)));
|
|
||||||
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object));
|
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object));
|
||||||
l = g_hash_table_get_keys (priv->calendar_source_to_row);
|
row = gtk_widget_get_parent (gtk_widget_get_parent (GTK_WIDGET (object)));
|
||||||
|
source = g_object_get_data (G_OBJECT (row), "source");
|
||||||
|
|
||||||
for (aux = l; aux != NULL; aux = aux->next)
|
if (source == NULL)
|
||||||
{
|
return;
|
||||||
GtkWidget *current_row;
|
|
||||||
|
|
||||||
current_row = g_hash_table_lookup (priv->calendar_source_to_row, aux->data);
|
/* Enable/disable the toggled calendar */
|
||||||
|
if (active)
|
||||||
/* Enable/disable the toggled calendar */
|
gcal_manager_enable_source (priv->manager, source);
|
||||||
if (current_row == row)
|
else
|
||||||
{
|
gcal_manager_disable_source (priv->manager, source);
|
||||||
if (active)
|
|
||||||
gcal_manager_enable_source (priv->manager, E_SOURCE (aux->data));
|
|
||||||
else
|
|
||||||
gcal_manager_disable_source (priv->manager, E_SOURCE (aux->data));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
g_list_free (l);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -1590,10 +1544,6 @@ gcal_window_constructed (GObject *object)
|
|||||||
g_signal_connect (gtk_bin_get_child (GTK_BIN (priv->search_bar)), "notify::child-revealed",
|
g_signal_connect (gtk_bin_get_child (GTK_BIN (priv->search_bar)), "notify::child-revealed",
|
||||||
G_CALLBACK (search_bar_revealer_toggled), object);
|
G_CALLBACK (search_bar_revealer_toggled), object);
|
||||||
|
|
||||||
/* calendars menu */
|
|
||||||
priv->calendar_source_to_row = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
|
|
||||||
(GDestroyNotify) gtk_widget_destroy);
|
|
||||||
|
|
||||||
/* XXX: Week view disabled until after the release when we restart the work on it*/
|
/* XXX: Week view disabled until after the release when we restart the work on it*/
|
||||||
//priv->views[GCAL_WINDOW_VIEW_WEEK] = gcal_week_view_new ();
|
//priv->views[GCAL_WINDOW_VIEW_WEEK] = gcal_week_view_new ();
|
||||||
//gcal_week_view_set_manager (GCAL_WEEK_VIEW (priv->views[GCAL_WINDOW_VIEW_WEEK]), priv->manager);
|
//gcal_week_view_set_manager (GCAL_WEEK_VIEW (priv->views[GCAL_WINDOW_VIEW_WEEK]), priv->manager);
|
||||||
|
|||||||
Reference in New Issue
Block a user