aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-folder.c
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2001-08-12 22:00:02 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2001-08-12 22:00:02 +0800
commit51f77f649b27e6013038c642c532d0547c7fdddd (patch)
tree4f06a410fd1c1a908baf01196929daf88998977d /shell/e-folder.c
parentca62294adb3b70870297ffb9b18bde44899f2af3 (diff)
downloadgsoc2013-evolution-51f77f649b27e6013038c642c532d0547c7fdddd.tar.gz
gsoc2013-evolution-51f77f649b27e6013038c642c532d0547c7fdddd.tar.zst
gsoc2013-evolution-51f77f649b27e6013038c642c532d0547c7fdddd.zip
[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
Diffstat (limited to 'shell/e-folder.c')
-rw-r--r--shell/e-folder.c31
1 files changed, 29 insertions, 2 deletions
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)