(update_other_users_folder_items_sensitivity):
New function to toggle the "open other user's folder" menu item sensitivity on or off depending on whether there are any storages that actually support that. (storage_set_removed_storage_callback): New callback for the EStorageSet's "removed_storage" signal; it updates the sensitivity if necessary. (storage_set_new_storage_callback): Likewise, new callback for the EStorageSet's "new_storage" signal. (e_shell_view_construct): Connect these two signal callbacks here. Also, call update_other_users_folder_items_sensitivity() to set up the initial sensitivity of the menu item. (update_for_current_uri): Add a missing EStorageSetView cast here. svn path=/trunk/; revision=20209
This commit is contained in:
@ -1,3 +1,19 @@
|
||||
2003-03-06 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* e-shell-view.c (update_other_users_folder_items_sensitivity):
|
||||
New function to toggle the "open other user's folder" menu item
|
||||
sensitivity on or off depending on whether there are any storages
|
||||
that actually support that.
|
||||
(storage_set_removed_storage_callback): New callback for the
|
||||
EStorageSet's "removed_storage" signal; it updates the sensitivity
|
||||
if necessary.
|
||||
(storage_set_new_storage_callback): Likewise, new callback for the
|
||||
EStorageSet's "new_storage" signal.
|
||||
(e_shell_view_construct): Connect these two signal callbacks here.
|
||||
Also, call update_other_users_folder_items_sensitivity() to set up
|
||||
the initial sensitivity of the menu item.
|
||||
(update_for_current_uri): Add a missing EStorageSetView cast here.
|
||||
|
||||
2003-03-06 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
[#34371]
|
||||
|
||||
@ -224,6 +224,36 @@ view_destroy (View *view)
|
||||
|
||||
/* Utility functions. */
|
||||
|
||||
static void
|
||||
update_other_users_folder_items_sensitivity (EShellView *shell_view)
|
||||
{
|
||||
EShellViewPrivate *priv = shell_view->priv;
|
||||
gboolean a_storage_supports_shared_folders;
|
||||
GList *storage_list, *p;
|
||||
|
||||
storage_list = e_storage_set_get_storage_list (e_shell_get_storage_set (priv->shell));
|
||||
a_storage_supports_shared_folders = FALSE;
|
||||
for (p = storage_list; p != NULL; p = p->next) {
|
||||
if (e_storage_supports_shared_folders (E_STORAGE (p->data)))
|
||||
a_storage_supports_shared_folders = TRUE;
|
||||
}
|
||||
|
||||
if (a_storage_supports_shared_folders) {
|
||||
bonobo_ui_component_set_prop (priv->ui_component, "/commands/FileOpenOtherUsersFolder",
|
||||
"sensitive", "1", NULL);
|
||||
bonobo_ui_component_set_prop (priv->ui_component, "/commands/FileRemoveOtherUsersFolder",
|
||||
"sensitive", "1", NULL);
|
||||
} else {
|
||||
bonobo_ui_component_set_prop (priv->ui_component, "/commands/FileOpenOtherUsersFolder",
|
||||
"sensitive", "0", NULL);
|
||||
bonobo_ui_component_set_prop (priv->ui_component, "/commands/FileRemoveOtherUsersFolder",
|
||||
"sensitive", "0", NULL);
|
||||
}
|
||||
|
||||
g_list_foreach (storage_list, (GFunc) g_object_unref, NULL);
|
||||
g_list_free (storage_list);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
create_label_for_empty_page (void)
|
||||
{
|
||||
@ -569,6 +599,28 @@ handle_current_folder_removed (EShellView *shell_view)
|
||||
|
||||
/* Callbacks for the EStorageSet. */
|
||||
|
||||
static void
|
||||
storage_set_new_storage_callback (EStorageSet *storage_set,
|
||||
EStorage *storage,
|
||||
void *data)
|
||||
{
|
||||
if (e_storage_supports_shared_folders (storage))
|
||||
update_other_users_folder_items_sensitivity (E_SHELL_VIEW (data));
|
||||
}
|
||||
|
||||
static void
|
||||
storage_set_removed_storage_callback (EStorageSet *storage_set,
|
||||
EStorage *storage,
|
||||
void *data)
|
||||
{
|
||||
EShellView *shell_view = E_SHELL_VIEW (data);
|
||||
|
||||
if (! e_storage_supports_shared_folders (storage))
|
||||
return;
|
||||
|
||||
update_other_users_folder_items_sensitivity (shell_view);
|
||||
}
|
||||
|
||||
static void
|
||||
storage_set_removed_folder_callback (EStorageSet *storage_set,
|
||||
const char *path,
|
||||
@ -1743,6 +1795,7 @@ e_shell_view_construct (EShellView *shell_view,
|
||||
const char *uri)
|
||||
{
|
||||
EShellViewPrivate *priv;
|
||||
EStorageSet *storage_set;
|
||||
EShellView *view;
|
||||
char *uri_to_load;
|
||||
|
||||
@ -1760,7 +1813,7 @@ e_shell_view_construct (EShellView *shell_view,
|
||||
if (!view) {
|
||||
g_object_unref (shell_view);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
priv->shell = shell;
|
||||
bonobo_object_ref (BONOBO_OBJECT (priv->shell));
|
||||
@ -1768,10 +1821,6 @@ e_shell_view_construct (EShellView *shell_view,
|
||||
g_signal_connect (view, "delete_event",
|
||||
G_CALLBACK (delete_event_cb), NULL);
|
||||
|
||||
e_signal_connect_while_alive (e_shell_get_storage_set (priv->shell),
|
||||
"updated_folder", G_CALLBACK (updated_folder_cb),
|
||||
shell_view, shell_view);
|
||||
|
||||
priv->ui_container = bonobo_window_get_ui_container (BONOBO_WINDOW (view));
|
||||
g_signal_connect (priv->ui_container, "system_exception",
|
||||
G_CALLBACK (unmerge_on_error), NULL);
|
||||
@ -1800,13 +1849,21 @@ e_shell_view_construct (EShellView *shell_view,
|
||||
g_signal_connect_object (shell, "line_status_changed",
|
||||
G_CALLBACK (shell_line_status_changed_cb), shell_view, 0);
|
||||
|
||||
g_signal_connect_object (GTK_OBJECT (e_shell_get_storage_set (shell)), "removed_folder",
|
||||
storage_set = e_shell_get_storage_set (shell);
|
||||
e_signal_connect_while_alive (storage_set, "updated_folder",
|
||||
G_CALLBACK (updated_folder_cb), shell_view, shell_view);
|
||||
g_signal_connect_object (storage_set, "new_storage",
|
||||
G_CALLBACK (storage_set_new_storage_callback), shell_view, 0);
|
||||
g_signal_connect_object (storage_set, "removed_storage",
|
||||
G_CALLBACK (storage_set_removed_storage_callback), shell_view, 0);
|
||||
g_signal_connect_object (storage_set, "removed_folder",
|
||||
G_CALLBACK (storage_set_removed_folder_callback), shell_view, 0);
|
||||
|
||||
e_shell_user_creatable_items_handler_attach_menus (e_shell_get_user_creatable_items_handler (priv->shell),
|
||||
shell_view);
|
||||
|
||||
setup_defaults (view);
|
||||
update_other_users_folder_items_sensitivity (view);
|
||||
|
||||
if (uri != NULL) {
|
||||
uri_to_load = g_strdup (uri);
|
||||
@ -2016,7 +2073,7 @@ update_for_current_uri (EShellView *shell_view)
|
||||
g_signal_handlers_block_by_func (priv->storage_set_view,
|
||||
G_CALLBACK (folder_selected_cb), shell_view);
|
||||
|
||||
curr_path = e_storage_set_view_get_current_folder (priv->storage_set_view);
|
||||
curr_path = e_storage_set_view_get_current_folder (E_STORAGE_SET_VIEW (priv->storage_set_view));
|
||||
if (path != NULL && (curr_path == NULL || strcmp(path, curr_path)))
|
||||
e_storage_set_view_set_current_folder (E_STORAGE_SET_VIEW (priv->storage_set_view), path);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user