From 51f77f649b27e6013038c642c532d0547c7fdddd Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Sun, 12 Aug 2001 14:00:02 +0000 Subject: [Finally! Fix #413, "Support for stock folders", and #786, "i18n: default folder names are not translated".] * e-local-storage.c (setup_folder_as_stock): New helper function. (setup_stock_folders): Use it to set the default folders as "stock" folders. This will give them a translated name and also make them unmodifiable. (load_all_folders): Call `setup_stock_folders()' here. * e-shell-folder-commands.c (delete_cb): Display an error dialog if the deletion fails. (e_shell_command_delete_folder): Pass the shell view to the delete callback. * e-storage.c (e_storage_result_to_string): Add a string for `E_STORAGE_CANTCHANGESTOCKFOLDER' as well. * e-local-storage.c (remove_folder): Don't allow a stock folder to be removed. (impl_async_xfer_folder): Don't allow a stock folder to be moved. * e-corba-storage.c (async_remove_folder): Don't allow a stock folder to be removed. * e-storage.h: New enum value `E_STORAGE_CANTCHANGESTOCKFOLDER' in `EStorageResult'. * e-folder.c: Make member `self_highlight' a :1 int. New :1 int member `is_stock'. (init): Init `is_stock' to %FALSE. (e_folder_set_is_stock): New. (e_folder_get_is_stock): New. * e-local-storage.c (bonobo_interface_update_folder_cb): For now, don't set the display name. svn path=/trunk/; revision=11931 --- shell/e-folder.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'shell/e-folder.c') diff --git a/shell/e-folder.c b/shell/e-folder.c index f582c9e40b..017b258766 100644 --- a/shell/e-folder.c +++ b/shell/e-folder.c @@ -41,9 +41,12 @@ struct _EFolderPrivate { char *type; char *description; char *physical_uri; - gboolean self_highlight; + int child_highlight; int unread_count; + + int self_highlight : 1; + int is_stock : 1; }; #define EF_CLASS(obj) \ @@ -148,9 +151,10 @@ init (EFolder *folder) priv->name = NULL; priv->description = NULL; priv->physical_uri = NULL; - priv->self_highlight = FALSE; priv->child_highlight = 0; priv->unread_count = 0; + priv->self_highlight = FALSE; + priv->is_stock = FALSE; folder->priv = priv; } @@ -251,6 +255,15 @@ e_folder_get_highlighted (EFolder *folder) return folder->priv->child_highlight || folder->priv->unread_count; } +gboolean +e_folder_get_is_stock (EFolder *folder) +{ + g_return_val_if_fail (folder != NULL, FALSE); + g_return_val_if_fail (E_IS_FOLDER (folder), FALSE); + + return folder->priv->is_stock; +} + void e_folder_set_name (EFolder *folder, @@ -327,11 +340,25 @@ e_folder_set_child_highlight (EFolder *folder, g_return_if_fail (folder != NULL); g_return_if_fail (E_IS_FOLDER (folder)); + /* FIXME: Doesn't emit CHANGED. */ + if (highlighted) folder->priv->child_highlight++; else folder->priv->child_highlight--; } +void +e_folder_set_is_stock (EFolder *folder, + gboolean is_stock) +{ + g_return_if_fail (folder != NULL); + g_return_if_fail (E_IS_FOLDER (folder)); + + folder->priv->is_stock = !! is_stock; + + gtk_signal_emit (GTK_OBJECT (folder), signals[CHANGED]); +} + E_MAKE_TYPE (e_folder, "EFolder", EFolder, class_init, init, PARENT_TYPE) -- cgit v1.2.3