aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shortcuts.c
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2002-07-09 04:45:49 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2002-07-09 04:45:49 +0800
commit82c99d625bf2d763adf0b812dd59b92a4aaa4735 (patch)
treebbd0e022c15bf6e947f47bcb2bb1950444785d9b /shell/e-shortcuts.c
parentb749cf077233687b34a5ae0aed1ee33d23b76471 (diff)
downloadgsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.tar
gsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.tar.gz
gsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.tar.bz2
gsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.tar.lz
gsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.tar.xz
gsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.tar.zst
gsoc2013-evolution-82c99d625bf2d763adf0b812dd59b92a4aaa4735.zip
Change the group icon size using e_shortcuts_set_group_uses_small_icons()
* e-shortcuts-view.c (toggle_large_icons_cb): Change the group icon size using e_shortcuts_set_group_uses_small_icons() instead of changing it on the widget directly. (toggle_small_icons_cb): Likewise. (group_change_icon_size_callback): New, callback for the "group_change_icon_size" signal on the EShortcuts object. (e_shortcuts_view_construct): Connect. Also, initialize the icon sizes in the icon bars from the EShortcuts object. * e-shell-view.c (e_shell_view_load_settings): Don't set the shortcut group icon modes here anymore. * e-shortcuts.c: New member use_small_icons in struct ShortcutGroup. (shortcut_group_new): Init to FALSE. (e_shortcuts_set_group_uses_small_icons): New. (e_shortcuts_get_group_uses_small_icons): New. (class_init): Install "group_change_icon_size" signal. (save_shortcuts): Save the icon size per-group here, i.e. <group title="foo" icon_size="small">. (load_shortcuts): Set the icon size from the group's definition here. * e-shortcuts.h: New signal "group_change_icon_size" in EShortcutsClass. svn path=/trunk/; revision=17386
Diffstat (limited to 'shell/e-shortcuts.c')
-rw-r--r--shell/e-shortcuts.c81
1 files changed, 79 insertions, 2 deletions
diff --git a/shell/e-shortcuts.c b/shell/e-shortcuts.c
index fffedfbaf3..e253764571 100644
--- a/shell/e-shortcuts.c
+++ b/shell/e-shortcuts.c
@@ -76,6 +76,9 @@ struct _ShortcutGroup {
/* A list of shortcuts. */
GSList *shortcuts;
+
+ /* Whether to use small icons for this group. */
+ unsigned int use_small_icons : 1;
};
typedef struct _ShortcutGroup ShortcutGroup;
@@ -111,6 +114,7 @@ enum {
NEW_GROUP,
REMOVE_GROUP,
RENAME_GROUP,
+ GROUP_CHANGE_ICON_SIZE,
NEW_SHORTCUT,
REMOVE_SHORTCUT,
UPDATE_SHORTCUT,
@@ -200,8 +204,9 @@ shortcut_group_new (const char *title)
ShortcutGroup *new;
new = g_new (ShortcutGroup, 1);
- new->title = g_strdup (title);
- new->shortcuts = NULL;
+ new->title = g_strdup (title);
+ new->shortcuts = NULL;
+ new->use_small_icons = FALSE;
return new;
}
@@ -307,6 +312,7 @@ load_shortcuts (EShortcuts *shortcuts,
for (p = root->childs; p != NULL; p = p->next) {
ShortcutGroup *shortcut_group;
xmlChar *shortcut_group_title;
+ xmlChar *icon_size;
if (strcmp ((char *) p->name, "group") != 0)
continue;
@@ -318,6 +324,13 @@ load_shortcuts (EShortcuts *shortcuts,
shortcut_group = shortcut_group_new (shortcut_group_title);
xmlFree (shortcut_group_title);
+ icon_size = xmlGetProp (p, "icon_size");
+ if (icon_size != NULL && strcmp (icon_size, "small") == 0)
+ shortcut_group->use_small_icons = TRUE;
+ else
+ shortcut_group->use_small_icons = FALSE;
+ xmlFree (icon_size);
+
for (q = p->childs; q != NULL; q = q->next) {
EShortcutItem *shortcut_item;
xmlChar *uri;
@@ -399,6 +412,11 @@ save_shortcuts (EShortcuts *shortcuts,
xmlSetProp (group_node, (xmlChar *) "title", group->title);
+ if (group->use_small_icons)
+ xmlSetProp (group_node, (xmlChar *) "icon_size", "small");
+ else
+ xmlSetProp (group_node, (xmlChar *) "icon_size", "large");
+
for (q = group->shortcuts; q != NULL; q = q->next) {
EShortcutItem *shortcut;
xmlNode *shortcut_node;
@@ -663,6 +681,16 @@ class_init (EShortcutsClass *klass)
GTK_TYPE_INT,
GTK_TYPE_STRING);
+ signals[GROUP_CHANGE_ICON_SIZE]
+ = gtk_signal_new ("group_change_icon_size",
+ GTK_RUN_FIRST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (EShortcutsClass, group_change_icon_size),
+ gtk_marshal_NONE__INT_INT,
+ GTK_TYPE_NONE, 2,
+ GTK_TYPE_INT,
+ GTK_TYPE_INT);
+
signals[NEW_SHORTCUT]
= gtk_signal_new ("new_shortcut",
GTK_RUN_FIRST,
@@ -1147,5 +1175,54 @@ e_shortcuts_get_group_title (EShortcuts *shortcuts,
return group->title;
}
+void
+e_shortcuts_set_group_uses_small_icons (EShortcuts *shortcuts,
+ int group_num,
+ gboolean use_small_icons)
+{
+ EShortcutsPrivate *priv;
+ ShortcutGroup *group;
+ GSList *group_element;
+
+ g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
+
+ priv = shortcuts->priv;
+
+ group_element = g_slist_nth (priv->groups, group_num);
+ if (group_element == NULL)
+ return;
+
+ group = (ShortcutGroup *) group_element->data;
+
+ use_small_icons = !! use_small_icons;
+ if (group->use_small_icons != use_small_icons) {
+ group->use_small_icons = use_small_icons;
+ gtk_signal_emit (GTK_OBJECT (shortcuts), signals[GROUP_CHANGE_ICON_SIZE],
+ group_num, use_small_icons);
+
+ make_dirty (shortcuts);
+ }
+}
+
+gboolean
+e_shortcuts_get_group_uses_small_icons (EShortcuts *shortcuts,
+ int group_num)
+{
+ EShortcutsPrivate *priv;
+ ShortcutGroup *group;
+ GSList *group_element;
+
+ g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), FALSE);
+
+ priv = shortcuts->priv;
+
+ group_element = g_slist_nth (priv->groups, group_num);
+ if (group_element == NULL)
+ return FALSE;
+
+ group = (ShortcutGroup *) group_element->data;
+ return group->use_small_icons;
+}
+
E_MAKE_TYPE (e_shortcuts, "EShortcuts", EShortcuts, class_init, init, PARENT_TYPE)