diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2009-02-08 04:04:52 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2009-02-08 04:04:52 +0800 |
commit | 14e8637d6b1a98b4ed6bedc70d0fca744b7b3e0f (patch) | |
tree | ec49b42bc6e0cfb3115ca56f41106e63a0b67d85 /shell | |
parent | fee5916b60c605ff5086d8fdc2a85c5ea21351f6 (diff) | |
download | gsoc2013-evolution-14e8637d6b1a98b4ed6bedc70d0fca744b7b3e0f.tar.gz gsoc2013-evolution-14e8637d6b1a98b4ed6bedc70d0fca744b7b3e0f.tar.zst gsoc2013-evolution-14e8637d6b1a98b4ed6bedc70d0fca744b7b3e0f.zip |
Rewrite the mail label code from top to bottom.
- Kill the e-util-labels API and read label information into a
single-column GtkListStore. Use GConfBridge to automatically
keep GConf synched with the list store.
- The list store (a singleton instance) is stored in EShellSettings
so it's available everywhere.
- The list store serves as the model for EMailLabelTreeView,
which itself is embedded in EMailLabelManager; a complete
label management UI as seen in the preferences dialog.
- EMailLabelDialog is used to add or edit a label. Avoid using a
color button, instead embed a GtkColorSelection directly in the
dialog so everything is in one window.
Open issues:
- The weird toggle/color/text menu items in the popup menu aren't
there. For now they're just regular toggle items. I'll deal
with it later.
- Filter intergration is broken at the moment.
svn path=/branches/kill-bonobo/; revision=37233
Diffstat (limited to 'shell')
-rw-r--r-- | shell/e-shell-content.c | 13 | ||||
-rw-r--r-- | shell/e-shell-content.h | 3 | ||||
-rw-r--r-- | shell/e-shell-settings.c | 58 | ||||
-rw-r--r-- | shell/e-shell-settings.h | 5 |
4 files changed, 79 insertions, 0 deletions
diff --git a/shell/e-shell-content.c b/shell/e-shell-content.c index 4c02ba3709..aaa4bb47fa 100644 --- a/shell/e-shell-content.c +++ b/shell/e-shell-content.c @@ -1045,6 +1045,19 @@ e_shell_content_set_filter_visible (EShellContent *shell_content, } void +e_shell_content_add_filter_separator_before (EShellContent *shell_content, + gint action_value) +{ + EActionComboBox *combo_box; + + g_return_if_fail (E_IS_SHELL_CONTENT (shell_content)); + + combo_box = E_ACTION_COMBO_BOX (shell_content->priv->filter_combo_box); + + e_action_combo_box_add_separator_before (combo_box, action_value); +} + +void e_shell_content_add_filter_separator_after (EShellContent *shell_content, gint action_value) { diff --git a/shell/e-shell-content.h b/shell/e-shell-content.h index 035168d0c4..98ec2c8f68 100644 --- a/shell/e-shell-content.h +++ b/shell/e-shell-content.h @@ -101,6 +101,9 @@ gboolean e_shell_content_get_filter_visible void e_shell_content_set_filter_visible (EShellContent *shell_content, gboolean filter_visible); +void e_shell_content_add_filter_separator_before + (EShellContent *shell_content, + gint action_value); void e_shell_content_add_filter_separator_after (EShellContent *shell_content, gint action_value); diff --git a/shell/e-shell-settings.c b/shell/e-shell-settings.c index b529130fd1..d887f39e6a 100644 --- a/shell/e-shell-settings.c +++ b/shell/e-shell-settings.c @@ -442,3 +442,61 @@ e_shell_settings_set_string (EShellSettings *shell_settings, g_object_set_property (object, property_name, &value); g_value_unset (&value); } + +/** + * e_shell_settings_get_object: + * @shell_settings: an #EShellSettings + * @property_name: an installed property name + * + * Returns the contents of an #EShellSettings property of type + * #G_TYPE_OBJECT. The caller owns the reference to the returned + * object, and should call g_object_unref() when finished with it. + * + * Returns: a new reference to the object under @property_name + **/ +gpointer +e_shell_settings_get_object (EShellSettings *shell_settings, + const gchar *property_name) +{ + GObject *object; + GValue value = { 0, }; + gpointer v_object; + + g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL); + g_return_val_if_fail (property_name != NULL, NULL); + + object = G_OBJECT (shell_settings); + g_value_init (&value, G_TYPE_OBJECT); + g_object_get_property (object, property_name, &value); + v_object = g_value_dup_object (&value); + g_value_unset (&value); + + return v_object; +} + +/** + * e_shell_settings_set_object: + * @shell_settings: an #EShellSettings + * @property_name: an installed property name + * @v_object: object to be set + * + * Sets the contents of an #EShellSettings property of type #G_TYPE_OBJECT + * to @v_object. + **/ +void +e_shell_settings_set_object (EShellSettings *shell_settings, + const gchar *property_name, + gpointer v_object) +{ + GObject *object; + GValue value = { 0, }; + + g_return_if_fail (E_IS_SHELL_SETTINGS (shell_settings)); + g_return_if_fail (property_name != NULL); + + object = G_OBJECT (shell_settings); + g_value_init (&value, G_TYPE_OBJECT); + g_value_set_object (&value, v_object); + g_object_set_property (object, property_name, &value); + g_value_unset (&value); +} diff --git a/shell/e-shell-settings.h b/shell/e-shell-settings.h index d983a3291f..fb53d800d4 100644 --- a/shell/e-shell-settings.h +++ b/shell/e-shell-settings.h @@ -98,6 +98,11 @@ gchar * e_shell_settings_get_string (EShellSettings *shell_settings, void e_shell_settings_set_string (EShellSettings *shell_settings, const gchar *property_name, const gchar *v_string); +gpointer e_shell_settings_get_object (EShellSettings *shell_settings, + const gchar *property_name); +void e_shell_settings_set_object (EShellSettings *shell_settings, + const gchar *property_name, + gpointer v_object); G_END_DECLS |