diff options
-rw-r--r-- | shell/ChangeLog | 57 | ||||
-rw-r--r-- | shell/Makefile.am | 12 | ||||
-rw-r--r-- | shell/apps_evolution_shell.schemas | 241 | ||||
-rw-r--r-- | shell/e-folder-list.c | 2 | ||||
-rw-r--r-- | shell/e-setup.c | 83 | ||||
-rw-r--r-- | shell/e-setup.h | 5 | ||||
-rw-r--r-- | shell/e-shell-config-autocompletion.c | 21 | ||||
-rw-r--r-- | shell/e-shell-config-default-folders.c | 57 | ||||
-rw-r--r-- | shell/e-shell-config-offline.c | 2 | ||||
-rw-r--r-- | shell/e-shell-startup-wizard.c | 47 | ||||
-rw-r--r-- | shell/e-shell-view.c | 290 | ||||
-rw-r--r-- | shell/e-shell-view.h | 11 | ||||
-rw-r--r-- | shell/e-shell.c | 188 | ||||
-rw-r--r-- | shell/e-shell.h | 6 | ||||
-rw-r--r-- | shell/main.c | 105 |
15 files changed, 659 insertions, 468 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 9def45b217..c4f1bd4cba 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,60 @@ +2002-11-19 Ettore Perazzoli <ettore@ximian.com> + + * main.c (upgrade_from_1_0_if_needed): Disabled for now. + + * e-shell-startup-wizard.c: Removed member config_listener from + struct SWData. + (e_shell_startup_wizard_create): Updated accordingly, just use + GConf, checking the /apps/evolution/mail/account-list key. + (finish_func): Use GConf. + + * e-shell-config-default-folders.c: Removed member config_listener + in struct EvolutionDefaultFolderConfig. + (e_shell_config_default_folders_create_widget): Do not initialize + here. GConfified the paths. + (config_control_destroy_notify): No unref of the config_listener + anymore. + (config_control_apply_cb): Use GConf. + (setup_folder_selector): Likewise. + + * e-shell-config-autocompletion.c: Removed member config_listener + from EvolutionAutocompletionConfig. + (config_control_destroy_notify): Do not unref. + (config_control_apply_callback): Use a GConfClient. + + * e-folder-list.c (e_folder_list_init): Add missing cast. + + * main.c (show_development_warning): Use GConf. + + * e-setup.c (e_setup_check_config): Removed arg @listener. + GConfified. + + * e-shell-view.c (e_shell_view_save_defaults): New. + (e_shell_view_save_settings): Removed. + (e_shell_view_load_settings): Removed. + (setup_defaults): New helper function. + (e_shell_view_construct): New arg @uri. + (e_shell_view_new): New arg @uri. + + * e-shell.c: Removed member config_listener in struct + EShellPrivate. + (impl_dispose): Do not unref. + (init): Do not initialize. + (get_config_start_offline): New helper function. + (e_shell_construct): Use this to get the startup mode in case + E_SHELL_STARTUP_LINE_MODE_CONFIG. + (save_misc_settings): Changed to use GConfClient instead of + EConfigListener. + (e_shell_create_view_from_settings): Removed. + (e_shell_restore_from_settings): Removed. + (e_shell_get_config_listener): Removed. + (e_shell_disconnect_db): Removed. + (parse_default_uri): Use GConf. + + * main.c (idle_cb): Simplified the logic here. Always assume that + the view will be created with the default folder open by just + using e_shell_create_view(). + 2002-11-19 Not Zed <NotZed@Ximian.com> * e-shell-shared-folder-picker-dialog.c (show_dialog): Pass type diff --git a/shell/Makefile.am b/shell/Makefile.am index 8e38448ad5..f2891e6fbb 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -269,6 +269,18 @@ icons = \ check-filled.xpm \ check-missing.xpm +# GConf schemas + +schemadir = $(GCONF_SCHEMA_FILE_DIR) +schema_DATA = apps_evolution_shell.schemas + +install-data-local: + if test -z "$(DESTDIR)" ; then \ + for p in $(schema_DATA) ; do \ + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \ + done \ + fi + # GLib marshalling cruft diff --git a/shell/apps_evolution_shell.schemas b/shell/apps_evolution_shell.schemas new file mode 100644 index 0000000000..62adc3dab2 --- /dev/null +++ b/shell/apps_evolution_shell.schemas @@ -0,0 +1,241 @@ +<gconfschemafile> + <schemalist> + + <!-- Default mail folder --> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/mail_path</key> + <applyto>/apps/evolution/shell/default_folders/mail_path</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Path to the default mail folder</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/mail_uri</key> + <applyto>/apps/evolution/shell/default_folders/mail_uri</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Physical URI to the default mail folder</short> + </locale> + </schema> + + <!-- Default contacts folder --> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/contacts_path</key> + <applyto>/apps/evolution/shell/default_folders/contacts_path</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Path to the default contacts folder</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/contacts_uri</key> + <applyto>/apps/evolution/shell/default_folders/contacts_uri</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Physical URI to the default contacts folder</short> + </locale> + </schema> + + <!-- Default calendar folder --> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/calendar_path</key> + <applyto>/apps/evolution/shell/default_folders/calendar_path</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Path to the default calendar folder</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/calendar_uri</key> + <applyto>/apps/evolution/shell/default_folders/calendar_uri</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Physical URI to the default calendar folder</short> + </locale> + </schema> + + <!-- Default tasks folder --> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/tasks_path</key> + <applyto>/apps/evolution/shell/default_folders/tasks_path</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Path to the default tasks folder</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/default_folders/tasks_uri</key> + <applyto>/apps/evolution/shell/default_folders/tasks_uri</applyto> + <owner>evolution</owner> + <type>string</type> + <default></default> + <locale name="C"> + <short>Physical URI to the default tasks folder</short> + </locale> + </schema> + + <!-- Development warning dialog --> + + <schema> + <key>/schemas/apps/evolution/shell/skip_warning_dialog</key> + <applyto>/apps/evolution/shell/skip_warning_dialog</applyto> + <owner>evolution</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Whether to skip the development warning dialog</short> + <long> + If set to true, the warning dialog in development versions + of Evolution is not displayed. + </long> + </locale> + </schema> + + <!-- Offline Mode --> + + <schema> + <key>/schemas/apps/evolution/shell/start_offline</key> + <applyto>/apps/evolution/shell/start_offline</applyto> + <owner>evolution</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Whether Evolution should start up in offline mode</short> + <long> + If set to true, Evolution will start up in offline mode + instead of online mode. + </long> + </locale> + </schema> + + <!-- View defaults --> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/width</key> + <applyto>/apps/evolution/shell/view_defaults/width</applyto> + <owner>evolution</owner> + <type>int</type> + <default>640</default> + <locale name="C"> + <short>Default window width</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/height</key> + <applyto>/apps/evolution/shell/view_defaults/height</applyto> + <owner>evolution</owner> + <type>int</type> + <locale name="C"> + <default>480</default> + <short>Default window height</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/selected_shortcut_group</key> + <applyto>/apps/evolution/shell/view_defaults/selected_shortcut_group</applyto> + <owner>evolution</owner> + <type>int</type> + <default>0</default> + <locale name="C"> + <short>Default shortcut group</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/show_folder_bar</key> + <applyto>/apps/evolution/shell/view_defaults/show_folder_bar</applyto> + <owner>evolution</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Whether to show the folder bar</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/show_shortcut_bar</key> + <applyto>/apps/evolution/shell/view_defaults/show_shortcut_bar</applyto> + <owner>evolution</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether to show the shortcut bar</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/folder_path</key> + <applyto>/apps/evolution/shell/view_defaults/folder_path</applyto> + <owner>evolution</owner> + <type>string</type> + <locale name="C"> + <default>/Summary</default> + <short>Path to the folder to be displayed by default</short> + </locale> + </schema> + + <!-- Folder bar --> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/folder_bar/width</key> + <applyto>/apps/evolution/shell/view_defaults/folder_bar/width</applyto> + <owner>evolution</owner> + <type>int</type> + <default>100</default> + <locale name="C"> + <short>Default width of the folder bar pane</short> + </locale> + </schema> + + <!-- Shortcut bar --> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/shortcut_bar/width</key> + <applyto>/apps/evolution/shell/view_defaults/shortcut_bar/width</applyto> + <owner>evolution</owner> + <type>int</type> + <default>100</default> + <locale name="C"> + <short>Default width of the shortcut bar pane</short> + </locale> + </schema> + + <schema> + <key>/schemas/apps/evolution/shell/view_defaults/shortcut_bar/icon_types</key> + <key>/apps/evolution/shell/view_defaults/shortcut_bar/icon_types</key> + <owner>evolution</owner> + <type>list</type> + <list_type>int</list_type> + <default>[]</default> + <locale name="C"> + <short>Icon sizes for the shortcut bar groups</short> + </locale> + </schema> + + </schemalist> +</gconfschemafile> diff --git a/shell/e-folder-list.c b/shell/e-folder-list.c index a33856a20f..6f5057b4bc 100644 --- a/shell/e-folder-list.c +++ b/shell/e-folder-list.c @@ -444,7 +444,7 @@ e_folder_list_init (EFolderList *efl) /* XXX libglade2 seems to not show custom widgets even when they're flagged Visible.*/ - gtk_widget_show_all (efl->priv->scrolled_table); + gtk_widget_show_all (GTK_WIDGET (efl->priv->scrolled_table)); efl->priv->possible_types = NULL; set_frame_label (efl); diff --git a/shell/e-setup.c b/shell/e-setup.c index 2ad5c0c151..6befdb8e92 100644 --- a/shell/e-setup.c +++ b/shell/e-setup.c @@ -25,6 +25,21 @@ #include <config.h> #endif +#include "e-setup.h" + +#include "e-local-folder.h" +#include "e-shell-config.h" +#include "e-shell-constants.h" + +#include <gconf/gconf-client.h> + +#include <gtk/gtklabel.h> + +#include <gal/widgets/e-gui-utils.h> + +#include <libgnome/gnome-i18n.h> +#include <libgnome/gnome-util.h> + #include <errno.h> #include <sys/stat.h> #include <sys/types.h> @@ -33,17 +48,6 @@ #include <string.h> #include <unistd.h> -#include <gtk/gtklabel.h> -#include <libgnome/gnome-i18n.h> -#include <libgnome/gnome-util.h> -#include <gal/widgets/e-gui-utils.h> - -#include "e-local-folder.h" -#include "e-shell-config.h" -#include "e-shell-constants.h" - -#include "e-setup.h" - static GList * check_dir_recur (const char *evolution_directory, @@ -417,34 +421,39 @@ e_setup (const char *evolution_directory) void -e_setup_check_config (EConfigListener *listener, - const char *evolution_directory) +e_setup_check_config (const char *evolution_directory) { + GConfClient *client; + char *tmp; char *uri; - if (e_config_listener_get_string_with_default (listener, "/DefaultFolders/mail_path", NULL, NULL) == NULL) { - e_config_listener_set_string (listener, "/DefaultFolders/mail_path", E_LOCAL_INBOX_URI); - uri = g_strconcat ("file://", evolution_directory, "/local", - strrchr (E_LOCAL_INBOX_URI, '/'), NULL); - e_config_listener_set_string (listener, "/DefaultFolders/mail_uri", uri); - g_free (uri); - - e_config_listener_set_string (listener, "/DefaultFolders/contacts_path", E_LOCAL_CONTACTS_URI); - uri = g_strconcat ("file://", evolution_directory, "/local", - strrchr (E_LOCAL_CONTACTS_URI, '/'), NULL); - e_config_listener_set_string (listener, "/DefaultFolders/contacts_uri", uri); - g_free (uri); - - e_config_listener_set_string (listener, "/DefaultFolders/calendar_path", E_LOCAL_CALENDAR_URI); - uri = g_strconcat ("file://", evolution_directory, "/local", - strrchr (E_LOCAL_CALENDAR_URI, '/'), NULL); - e_config_listener_set_string (listener, "/DefaultFolders/calendar_uri", uri); - g_free (uri); - - e_config_listener_set_string (listener, "/DefaultFolders/tasks_path", E_LOCAL_TASKS_URI); - uri = g_strconcat ("file://", evolution_directory, "/local", - strrchr (E_LOCAL_TASKS_URI, '/'), NULL); - e_config_listener_set_string (listener, "/DefaultFolders/tasks_uri", uri); - g_free (uri); + client = gconf_client_get_default (); + + tmp = gconf_client_get_string (client, "/apps/evolution/shell/default_folders/mail_path", NULL); + if (tmp != NULL && *tmp != 0) { + g_object_unref (client); + return; } + + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/mail_path", E_LOCAL_INBOX_URI, NULL); + uri = g_strconcat ("file://", evolution_directory, "/local", strrchr (E_LOCAL_INBOX_URI, '/'), NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/mail_uri", uri, NULL); + g_free (uri); + + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/contacts_path", E_LOCAL_CONTACTS_URI, NULL); + uri = g_strconcat ("file://", evolution_directory, "/local", strrchr (E_LOCAL_CONTACTS_URI, '/'), NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/contacts_uri", uri, NULL); + g_free (uri); + + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/tasks_path", E_LOCAL_TASKS_URI, NULL); + uri = g_strconcat ("file://", evolution_directory, "/local", strrchr (E_LOCAL_TASKS_URI, '/'), NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/tasks_uri", uri, NULL); + g_free (uri); + + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/calendar_path", E_LOCAL_CALENDAR_URI, NULL); + uri = g_strconcat ("file://", evolution_directory, "/local", strrchr (E_LOCAL_CALENDAR_URI, '/'), NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/calendar_uri", uri, NULL); + g_free (uri); + + g_object_unref (client); } diff --git a/shell/e-setup.h b/shell/e-setup.h index e9b228dc1c..214dbcdd9e 100644 --- a/shell/e-setup.h +++ b/shell/e-setup.h @@ -23,13 +23,10 @@ #ifndef _E_SETUP_H #define _E_SETUP_H -#include "e-util/e-config-listener.h" - #include <glib.h> gboolean e_setup (const char *evolution_directory); -void e_setup_check_config (EConfigListener *config_listener, - const char *evolution_directory); +void e_setup_check_config (const char *evolution_directory); #endif /* _E_SETUP_H */ diff --git a/shell/e-shell-config-autocompletion.c b/shell/e-shell-config-autocompletion.c index b3b72bb954..4cb498dba1 100644 --- a/shell/e-shell-config-autocompletion.c +++ b/shell/e-shell-config-autocompletion.c @@ -38,13 +38,14 @@ #include <gtk/gtkwidget.h> #include <gtk/gtksignal.h> +#include <gconf/gconf-client.h> + typedef struct { EvolutionConfigControl *config_control; GtkWidget *control_widget; - EConfigListener *config_listener; EvolutionShellClient *shell_client; } EvolutionAutocompletionConfig; @@ -62,7 +63,6 @@ config_control_destroy_notify (void *data, EvolutionAutocompletionConfig *ac = (EvolutionAutocompletionConfig *) data; g_object_unref (ac->shell_client); - g_object_unref (ac->config_listener); g_free (ac); } @@ -72,11 +72,16 @@ static void config_control_apply_callback (EvolutionConfigControl *config_control, EvolutionAutocompletionConfig *ac) { + GConfClient *client; char *xml; + client = gconf_client_get_default (); + xml = e_folder_list_get_xml (E_FOLDER_LIST (ac->control_widget)); - e_config_listener_set_string (ac->config_listener, "/Addressbook/Completion/uris", xml); + gconf_client_set_string (client, "/apps/evolution/addressbook/completion/uris", xml, NULL); g_free (xml); + + g_object_unref (client); } GtkWidget * @@ -84,21 +89,21 @@ e_shell_config_autocompletion_create_widget (EShell *shell, EvolutionConfigContr { GNOME_Evolution_Shell shell_dup; EvolutionAutocompletionConfig *ac; - char *xml; CORBA_Environment ev; + GConfClient *client; static const char *possible_types[] = { "contacts/*", NULL }; + char *xml; ac = g_new0 (EvolutionAutocompletionConfig, 1); - ac->config_listener = e_config_listener_new (); CORBA_exception_init (&ev); shell_dup = CORBA_Object_duplicate (BONOBO_OBJREF (shell), &ev); ac->shell_client = evolution_shell_client_new (shell_dup); - xml = e_config_listener_get_string_with_default (ac->config_listener, - "/Addressbook/Completion/uris", - NULL, NULL); + client = gconf_client_get_default (); + xml = gconf_client_get_string (client, "/apps/evolution/addressbook/completion/uris", NULL); + g_object_unref (client); ac->control_widget = e_folder_list_new (ac->shell_client, xml); g_free (xml); diff --git a/shell/e-shell-config-default-folders.c b/shell/e-shell-config-default-folders.c index d409eaa469..1966df05a9 100644 --- a/shell/e-shell-config-default-folders.c +++ b/shell/e-shell-config-default-folders.c @@ -29,14 +29,14 @@ #include "evolution-folder-selector-button.h" -#include "e-util/e-config-listener.h" - #include <glade/glade-xml.h> #include <gtk/gtktogglebutton.h> #include <gtk/gtksignal.h> #include <libgnome/gnome-i18n.h> +#include <gconf/gconf-client.h> + typedef struct { GladeXML *glade; @@ -47,7 +47,6 @@ typedef struct { char *calendar_uri, *calendar_path; char *tasks_uri, *tasks_path; - EConfigListener *config_listener; EvolutionShellClient *shell_client; } EvolutionDefaultFolderConfig; @@ -84,14 +83,21 @@ static void config_control_apply_cb (EvolutionConfigControl *control, EvolutionDefaultFolderConfig *dfc) { - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/mail_path", dfc->mail_path); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/mail_uri", dfc->mail_uri); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/contacts_path", dfc->contacts_path); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/contacts_uri", dfc->contacts_uri); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/calendar_path", dfc->calendar_path); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/calendar_uri", dfc->calendar_uri); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/tasks_path", dfc->tasks_path); - e_config_listener_set_string (dfc->config_listener, "/DefaultFolders/tasks_uri", dfc->tasks_uri); + GConfClient *client; + + client = gconf_client_get_default (); + + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/mail_path", dfc->mail_path, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/mail_uri", dfc->mail_uri, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/contacts_path", dfc->contacts_path, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/contacts_uri", dfc->contacts_uri, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/calendar_path", dfc->calendar_path, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/calendar_uri", dfc->calendar_uri, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/tasks_path", dfc->tasks_path, NULL); + gconf_client_set_string (client, "/apps/evolution/shell/default_folders/tasks_uri", dfc->tasks_uri, NULL); + + + g_object_unref (client); } static void @@ -100,8 +106,6 @@ config_control_destroy_notify (void *data, { EvolutionDefaultFolderConfig *dfc = (EvolutionDefaultFolderConfig *) data; - g_object_unref (dfc->config_listener); - g_free (dfc->mail_uri); g_free (dfc->mail_path); g_free (dfc->contacts_uri); @@ -129,10 +133,15 @@ setup_folder_selector (EvolutionDefaultFolderConfig *dfc, char **uri_ptr, char *uri_dbpath, const char **types) { + GConfClient *client; GtkWidget *button; - *path_ptr = e_config_listener_get_string_with_default (dfc->config_listener, path_dbpath, NULL, NULL); - *uri_ptr = e_config_listener_get_string_with_default (dfc->config_listener, uri_dbpath, NULL, NULL); + client = gconf_client_get_default (); + + *path_ptr = gconf_client_get_string (client, path_dbpath, NULL); + *uri_ptr = gconf_client_get_string (client, uri_dbpath, NULL); + + g_object_unref (client); button = glade_xml_get_widget (dfc->glade, widget_name); evolution_folder_selector_button_construct ( @@ -160,8 +169,6 @@ e_shell_config_default_folders_create_widget (EShell *shell, EvolutionConfigCont dfc = g_new0 (EvolutionDefaultFolderConfig, 1); - dfc->config_listener = e_config_listener_new (); - CORBA_exception_init (&ev); shell_dup = CORBA_Object_duplicate (BONOBO_OBJREF (shell), &ev); CORBA_exception_free (&ev); @@ -170,20 +177,20 @@ e_shell_config_default_folders_create_widget (EShell *shell, EvolutionConfigCont dfc->glade = glade_xml_new (EVOLUTION_GLADEDIR "/e-shell-config-default-folders.glade", NULL, NULL); setup_folder_selector (dfc, "default_mail_button", - &dfc->mail_path, "/DefaultFolders/mail_path", - &dfc->mail_uri, "/DefaultFolders/mail_uri", + &dfc->mail_path, "/apps/evolution/shell/default_folders/mail_path", + &dfc->mail_uri, "/apps/evolution/shell/default_folders/mail_uri", mail_types); setup_folder_selector (dfc, "default_contacts_button", - &dfc->contacts_path, "/DefaultFolders/contacts_path", - &dfc->contacts_uri, "/DefaultFolders/contacts_uri", + &dfc->contacts_path, "/apps/evolution/shell/default_folders/contacts_path", + &dfc->contacts_uri, "/apps/evolution/shell/default_folders/contacts_uri", contacts_types); setup_folder_selector (dfc, "default_calendar_button", - &dfc->calendar_path, "/DefaultFolders/calendar_path", - &dfc->calendar_uri, "/DefaultFolders/calendar_uri", + &dfc->calendar_path, "/apps/evolution/shell/default_folders/calendar_path", + &dfc->calendar_uri, "/apps/evolution/shell/default_folders/calendar_uri", calendar_types); setup_folder_selector (dfc, "default_tasks_button", - &dfc->tasks_path, "/DefaultFolders/tasks_path", - &dfc->tasks_uri, "/DefaultFolders/tasks_uri", + &dfc->tasks_path, "/apps/evolution/shell/default_folders/tasks_path", + &dfc->tasks_uri, "/apps/evolution/shell/default_folders/tasks_uri", tasks_types); widget = glade_xml_get_widget (dfc->glade, "default_folders_table"); diff --git a/shell/e-shell-config-offline.c b/shell/e-shell-config-offline.c index d331fbbc01..fa8b804691 100644 --- a/shell/e-shell-config-offline.c +++ b/shell/e-shell-config-offline.c @@ -30,8 +30,6 @@ #include "evolution-config-control.h" #include "e-storage-set-view.h" -#include "e-util/e-config-listener.h" - #include "Evolution.h" #include <bonobo/bonobo-exception.h> diff --git a/shell/e-shell-startup-wizard.c b/shell/e-shell-startup-wizard.c index c693243f47..e2728211f0 100644 --- a/shell/e-shell-startup-wizard.c +++ b/shell/e-shell-startup-wizard.c @@ -26,7 +26,13 @@ #include "e-shell-startup-wizard.h" -#include <errno.h> +#include "e-timezone-dialog/e-timezone-dialog.h" +#include "e-util/e-gtk-utils.h" + +#include <gconf/gconf-client.h> + +#include <evolution-wizard.h> +#include "Evolution.h" #include <glib.h> #include <gtk/gtk.h> @@ -44,13 +50,6 @@ #include <widgets/e-timezone-dialog/e-timezone-dialog.h> -#include "e-timezone-dialog/e-timezone-dialog.h" -#include "e-util/e-gtk-utils.h" -#include "e-util/e-config-listener.h" - -#include <evolution-wizard.h> -#include "Evolution.h" - typedef struct _TimezoneDialogPage { GtkWidget *page; GtkWidget *vbox; @@ -95,8 +94,6 @@ typedef struct _SWData { CORBA_Object mailer; Bonobo_EventSource event_source; BonoboListener *listener; - - EConfigListener *config_listener; } SWData; typedef struct _IntelligentImporterData { @@ -338,6 +335,7 @@ finish_func (GnomeDruidPage *page, GnomeDruid *druid, SWData *data) { + GConfClient *client; CORBA_Environment ev; const char *displayname; char *tz; @@ -358,8 +356,11 @@ finish_func (GnomeDruidPage *page, tz = g_strdup ("UTC"); else tz = g_strdup (icaltimezone_get_location (zone)); - - e_config_listener_set_string (data->config_listener, "/Calendar/Display/Timezone", tz); + + client = gconf_client_get_default (); + gconf_client_set_string (client, "/apps/evolution/calendar/display/timezone", tz, NULL); + g_object_unref (client); + g_free (tz); do_import (data); @@ -843,23 +844,24 @@ startup_wizard_cancel (GnomeDruid *druid, gboolean e_shell_startup_wizard_create (void) { + GConfClient *client; SWData *data; - int num_accounts; + GSList *accounts; return TRUE; - data = g_new0 (SWData, 1); + client = gconf_client_get_default (); + accounts = gconf_client_get_list (client, "/apps/evolution/mail/accounts", GCONF_VALUE_STRING, NULL); + g_object_unref (client); - data->config_listener = e_config_listener_new(); - - num_accounts = e_config_listener_get_long_with_default (data->config_listener, "/Mail/Accounts/num", 0, NULL); - - if (num_accounts != 0) { - g_object_unref (data->config_listener); - g_free (data); + if (accounts != NULL) { + g_slist_foreach (accounts, (GFunc) g_free, NULL); + g_slist_free (accounts); return TRUE; } + data = g_new0 (SWData, 1); + data->wizard = glade_xml_new (EVOLUTION_GLADEDIR "/evolution-startup-wizard.glade", NULL, NULL); g_return_val_if_fail (data->wizard != NULL, FALSE); data->dialog = glade_xml_get_widget (data->wizard, "startup-wizard"); @@ -907,8 +909,5 @@ e_shell_startup_wizard_create (void) gtk_main (); - g_object_unref (data->config_listener); - data->config_listener = NULL; - return !data->cancel; } diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 0b48bc3c2c..94b0d33e65 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -1,7 +1,7 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* e-shell-view.c * - * Copyright (C) 2000, 2001 Ximian, Inc. + * Copyright (C) 2000, 2001, 2002 Ximian, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public @@ -64,6 +64,8 @@ #include <libgnomeui/gnome-window-icon.h> #include <libgnomeui/gnome-app.h> +#include <gconf/gconf-client.h> + #include <bonobo/bonobo-socket.h> #include <bonobo/bonobo-ui-util.h> #include <bonobo/bonobo-ui-container.h> @@ -380,6 +382,82 @@ remove_uri_from_history (EShellView *shell_view, } +static void +setup_defaults (EShellView *shell_view, + gboolean setup_default_uri) +{ + EShellViewPrivate *priv; + EShortcutBar *shortcut_bar; + GConfClient *client; + GSList *icon_types_list; + GSList *p; + char *path; + char *uri; + int shortcut_group; + int width; + int i; + + g_return_if_fail (shell_view != NULL); + g_return_if_fail (E_IS_SHELL_VIEW (shell_view)); + + priv = shell_view->priv; + shortcut_bar = E_SHORTCUT_BAR (priv->shortcut_bar); + + client = gconf_client_get_default (); + + gtk_window_set_default_size (GTK_WINDOW (shell_view), + gconf_client_get_int (client, "/apps/evolution/shell/view_defaults/width", NULL), + gconf_client_get_int (client, "/apps/evolution/shell/view_defaults/height", NULL)); + + shortcut_group = gconf_client_get_int (client, "/apps/evolution/shell/view_defaults/selected_shortcut_group", NULL); + e_shell_view_set_current_shortcuts_group_num (shell_view, shortcut_group); + + e_shell_view_show_folder_bar (shell_view, + gconf_client_get_bool (client, "/apps/evolution/shell/view_defaults/show_folder_bar", NULL)); + e_shell_view_show_shortcut_bar (shell_view, + gconf_client_get_bool (client, "/apps/evolution/shell/view_defaults/show_shortcut_bar", NULL)); + + width = gconf_client_get_int (client, "/apps/evolution/shell/view_defaults/shortcut_bar/width", NULL); + if (priv->shortcut_bar_shown) + e_paned_set_position (E_PANED (priv->hpaned), width); + priv->hpaned_position = width; + + width = gconf_client_get_int (client, "/apps/evolution/shell/view_defaults/folder_bar/width", NULL); + if (priv->folder_bar_shown) + e_paned_set_position (E_PANED (priv->view_hpaned), width); + priv->view_hpaned_position = width; + + if (setup_default_uri) { + path = gconf_client_get_string (client, "/apps/evolution/shell/view_defaults/folder_path", NULL); + uri = g_strconcat (E_SHELL_URI_PREFIX, path, NULL); + + if (! e_shell_view_display_uri (shell_view, uri, FALSE)) { + e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI, FALSE); + e_shell_view_display_uri (shell_view, uri, TRUE); + } + + g_free (path); + g_free (uri); + } + + icon_types_list = gconf_client_get_list (client, "/apps/evolution/shell/view_defaults/shortcut_bar/icon_types", + GCONF_VALUE_INT, NULL); + for (p = icon_types_list, i = 0; p != NULL; p = p->next, i++) + e_shortcut_bar_set_view_type (shortcut_bar, i, GPOINTER_TO_INT (p->data)); + g_slist_free (icon_types_list); + +#if 0 + /* Load the expanded state for the ShellView's StorageSetView */ + filename = g_strdup_printf ("%s/config/storage-set-view-expanded:view_%d", + e_shell_get_local_directory (priv->shell), + view_num); + e_tree_load_expanded_state (E_TREE (priv->storage_set_view), + filename); + g_free (filename); +#endif +} + + /* This implements the behavior for when the folder which is currently displayed gets deleted. */ @@ -1681,7 +1759,8 @@ delete_event_cb (GtkWidget *widget, EShellView * e_shell_view_construct (EShellView *shell_view, - EShell *shell) + EShell *shell, + const char *uri) { EShellViewPrivate *priv; EShellView *view; @@ -1744,6 +1823,8 @@ e_shell_view_construct (EShellView *shell_view, e_shell_user_creatable_items_handler_attach_menus (e_shell_get_user_creatable_items_handler (priv->shell), shell_view); + setup_defaults (view, uri != NULL); + return view; } @@ -1753,7 +1834,8 @@ e_shell_view_construct (EShellView *shell_view, bookkeeping for the created views. Instead, the right way to create a new view is calling `e_shell_create_view()'. */ EShellView * -e_shell_view_new (EShell *shell) +e_shell_view_new (EShell *shell, + const char *uri) { GtkWidget *new; @@ -1762,7 +1844,7 @@ e_shell_view_new (EShell *shell) new = g_object_new (e_shell_view_get_type (), NULL); - return e_shell_view_construct (E_SHELL_VIEW (new), shell); + return e_shell_view_construct (E_SHELL_VIEW (new), shell, uri); } const GNOME_Evolution_ShellView @@ -2676,92 +2758,78 @@ e_shell_view_get_current_component_id (EShellView *shell_view) /** - * e_shell_view_save_settings: + * e_shell_view_save_defaults: * @shell_view: - * @prefix: - * - * Save settings for @shell_view at the specified gnome config @prefix - * - * Return value: TRUE if successful, FALSE if not. **/ -gboolean -e_shell_view_save_settings (EShellView *shell_view, - int view_num) +void +e_shell_view_save_defaults (EShellView *shell_view) { - EConfigListener *config_listener; + GConfClient *client; EShellViewPrivate *priv; EShortcutBar *shortcut_bar; + GSList *shortcut_view_type_list; const char *uri; - char *prefix, *key; char *filename; int num_groups; int group; struct stat temp; - g_return_val_if_fail (shell_view != NULL, FALSE); - g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), FALSE); + g_return_if_fail (shell_view != NULL); + g_return_if_fail (E_IS_SHELL_VIEW (shell_view)); priv = shell_view->priv; shortcut_bar = E_SHORTCUT_BAR (priv->shortcut_bar); - config_listener = e_config_listener_new (); - - prefix = g_strdup_printf ("/Shell/Views/%d/", view_num); - - key = g_strconcat (prefix, "Width", NULL); - e_config_listener_set_long (config_listener, key, GTK_WIDGET (shell_view)->allocation.width); - g_free (key); + client = gconf_client_get_default (); - key = g_strconcat (prefix, "Height", NULL); - e_config_listener_set_long (config_listener, key, GTK_WIDGET (shell_view)->allocation.height); - g_free (key); + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/width", + GTK_WIDGET (shell_view)->allocation.width, NULL); + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/height", + GTK_WIDGET (shell_view)->allocation.height, NULL); - key = g_strconcat (prefix, "CurrentShortcutsGroupNum", NULL); - e_config_listener_set_long (config_listener, key, - e_shell_view_get_current_shortcuts_group_num (shell_view)); - g_free (key); + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/selected_shortcut_group", + e_shell_view_get_current_shortcuts_group_num (shell_view), NULL); - key = g_strconcat (prefix, "FolderBarShown", NULL); - e_config_listener_set_long (config_listener, key, e_shell_view_folder_bar_shown (shell_view)); - g_free (key); + gconf_client_set_bool (client, "/apps/evolution/shell/view_defaults/show_folder_bar", + e_shell_view_folder_bar_shown (shell_view), NULL); + gconf_client_set_bool (client, "/apps/evolution/shell/view_defaults/show_shortcut_bar", + e_shell_view_shortcut_bar_shown (shell_view), NULL); - key = g_strconcat (prefix, "ShortcutBarShown", NULL); - e_config_listener_set_long (config_listener, key, e_shell_view_shortcut_bar_shown (shell_view)); - g_free (key); - - key = g_strconcat (prefix, "HPanedPosition", NULL); - if (GTK_WIDGET_VISIBLE (priv->shortcut_frame)) - e_config_listener_set_long (config_listener, key, E_PANED (priv->hpaned)->child1_size); + if (priv->shortcut_bar_shown) + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/shortcut_bar/width", + E_PANED (priv->hpaned)->child1_size, NULL); else - e_config_listener_set_long (config_listener, key, priv->hpaned_position); - g_free (key); + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/shortcut_bar/width", + priv->hpaned_position, NULL); - key = g_strconcat (prefix, "ViewHPanedPosition", NULL); - if (GTK_WIDGET_VISIBLE (priv->storage_set_view_box)) - e_config_listener_set_long (config_listener, key, E_PANED (priv->view_hpaned)->child1_size); + if (priv->folder_bar_shown) + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/folder_bar/width", + E_PANED (priv->view_hpaned)->child1_size, NULL); else - e_config_listener_set_long (config_listener, key, priv->view_hpaned_position); - g_free (key); + gconf_client_set_int (client, "/apps/evolution/shell/view_defaults/folder_bar/width", + priv->view_hpaned_position, NULL); - key = g_strconcat (prefix, "DisplayedURI", NULL); uri = e_shell_view_get_current_uri (shell_view); if (uri != NULL) - e_config_listener_set_string (config_listener, key, uri); + gconf_client_set_string (client, "/apps/evolution/shell/view_defaults/folder_path", + uri + E_SHELL_URI_PREFIX_LEN, NULL); else - e_config_listener_set_string (config_listener, key, E_SHELL_VIEW_DEFAULT_URI); - g_free (key); + gconf_client_unset (client, "/apps/evolution/shell/view_defaults/folder_path", NULL); num_groups = e_shortcut_model_get_num_groups (shortcut_bar->model); + shortcut_view_type_list = NULL; for (group = 0; group < num_groups; group++) { - key = g_strdup_printf ("%sShortcutBarGroup%dIconMode", prefix, - group); - e_config_listener_set_long (config_listener, key, - e_shortcut_bar_get_view_type (shortcut_bar, group)); - g_free (key); + EIconBarViewType view_type; + + view_type = e_shortcut_bar_get_view_type (shortcut_bar, group); + shortcut_view_type_list = g_slist_prepend (shortcut_view_type_list, GINT_TO_POINTER (view_type)); } - g_free (prefix); + gconf_client_set_list (client, "/apps/evolution/shell/view_defaults/shortcut_bar/icon_types", + GCONF_VALUE_INT, shortcut_view_type_list, NULL); + + g_slist_free (shortcut_view_type_list); /* If ~/evolution/config/ doesn't exist yet, make it */ filename = g_strdup_printf ("%s/config/", e_shell_get_local_directory (priv->shell)); @@ -2769,6 +2837,7 @@ e_shell_view_save_settings (EShellView *shell_view, mkdir (filename, S_IRWXU); g_free (filename); +#if 0 /* Save the expanded state for this ShellView's StorageSetView */ filename = g_strdup_printf ("%s/config/storage-set-view-expanded:view_%d", e_shell_get_local_directory (priv->shell), @@ -2776,110 +2845,9 @@ e_shell_view_save_settings (EShellView *shell_view, e_tree_save_expanded_state (E_TREE (priv->storage_set_view), filename); g_free (filename); +#endif - return TRUE; -} - -/** - * e_shell_view_load_settings: - * @shell_view: - * @prefix: - * - * Load settings for @shell_view at the specified gnome config @prefix - * - * Return value: - **/ -gboolean -e_shell_view_load_settings (EShellView *shell_view, - int view_num) -{ - EShellViewPrivate *priv; - EShortcutBar *shortcut_bar; - EConfigListener *config_listener; - int num_groups, val; - long width, height; - char *stringval, *prefix, *filename, *key; - CORBA_Environment ev; - - g_return_val_if_fail (shell_view != NULL, FALSE); - g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), FALSE); - - priv = shell_view->priv; - shortcut_bar = E_SHORTCUT_BAR (priv->shortcut_bar); - - config_listener = e_config_listener_new (); - - prefix = g_strdup_printf ("/Shell/Views/%d/", view_num); - - CORBA_exception_init (&ev); - key = g_strconcat (prefix, "Width", NULL); - width = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - g_free (key); - - key = g_strconcat (prefix, "Height", NULL); - height = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - g_free (key); - - gtk_window_set_default_size (GTK_WINDOW (shell_view), width, height); - - key = g_strconcat (prefix, "CurrentShortcutsGroupNum", NULL); - val = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - e_shell_view_set_current_shortcuts_group_num (shell_view, val); - g_free (key); - - key = g_strconcat (prefix, "FolderBarShown", NULL); - val = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - e_shell_view_show_folder_bar (shell_view, val); - g_free (key); - - key = g_strconcat (prefix, "ShortcutBarShown", NULL); - val = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - e_shell_view_show_shortcut_bar (shell_view, val); - g_free (key); - - key = g_strconcat (prefix, "HPanedPosition", NULL); - val = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - if (priv->shortcut_bar_shown) - e_paned_set_position (E_PANED (priv->hpaned), val); - priv->hpaned_position = val; - g_free (key); - - key = g_strconcat (prefix, "ViewHPanedPosition", NULL); - val = e_config_listener_get_long_with_default (config_listener, key, 0, NULL); - if (priv->folder_bar_shown) - e_paned_set_position (E_PANED (priv->view_hpaned), val); - priv->view_hpaned_position = val; - g_free (key); - - if (priv->uri == NULL && priv->delayed_selection == NULL) { - key = g_strconcat (prefix, "DisplayedURI", NULL); - stringval = e_config_listener_get_string_with_default (config_listener, key, NULL, NULL); - if (stringval) { - if (! e_shell_view_display_uri (shell_view, stringval, FALSE)) { - e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI, FALSE); - e_shell_view_display_uri (shell_view, stringval, TRUE); - } - } else { - e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI, TRUE); - } - - g_free (stringval); - g_free (key); - } - - num_groups = e_shortcut_model_get_num_groups (shortcut_bar->model); - - g_free (prefix); - - /* Load the expanded state for the ShellView's StorageSetView */ - filename = g_strdup_printf ("%s/config/storage-set-view-expanded:view_%d", - e_shell_get_local_directory (priv->shell), - view_num); - e_tree_load_expanded_state (E_TREE (priv->storage_set_view), - filename); - g_free (filename); - - return TRUE; + g_object_unref (client); } diff --git a/shell/e-shell-view.h b/shell/e-shell-view.h index 72c76fbd2c..7e3ec94806 100644 --- a/shell/e-shell-view.h +++ b/shell/e-shell-view.h @@ -81,8 +81,10 @@ struct _EShellViewClass { GtkType e_shell_view_get_type (void); EShellView *e_shell_view_construct (EShellView *shell_view, - EShell *shell); -EShellView *e_shell_view_new (EShell *shell); + EShell *shell, + const char *uri); +EShellView *e_shell_view_new (EShell *shell, + const char *uri); const GNOME_Evolution_ShellView e_shell_view_get_corba_interface (EShellView *view); @@ -110,10 +112,7 @@ const char *e_shell_view_get_current_folder_type (EShellView *shell_vi const char *e_shell_view_get_current_component_id (EShellView *shell_view); const char *e_shell_view_get_current_path (EShellView *shell_view); -gboolean e_shell_view_save_settings (EShellView *shell_view, - int view_num); -gboolean e_shell_view_load_settings (EShellView *shell_view, - int view_num); +void e_shell_view_save_defaults (EShellView *shell_view); int e_shell_view_get_current_shortcuts_group_num (EShellView *shell_view); void e_shell_view_set_current_shortcuts_group_num (EShellView *shell_view, diff --git a/shell/e-shell.c b/shell/e-shell.c index 36b14f4d2b..7a608ee0ad 100644 --- a/shell/e-shell.c +++ b/shell/e-shell.c @@ -24,28 +24,7 @@ #include <config.h> #endif -#include <glib.h> - -#include <gtk/gtkmain.h> -#include <gtk/gtksignal.h> -#include <gdk/gdkx.h> - -#include <X11/Xatom.h> - -#include <libgnome/gnome-i18n.h> -#include <libgnome/gnome-util.h> - -/* (For the displayName stuff.) */ -#include <gdk/gdkprivate.h> -#include <X11/Xlib.h> - -#include <bonobo/bonobo-exception.h> -#include <bonobo/bonobo-moniker-util.h> - -#include <gal/widgets/e-gui-utils.h> -#include <gal/util/e-util.h> - -#include "Evolution.h" +#include "e-shell.h" #include "e-util/e-dialog-utils.h" @@ -74,10 +53,33 @@ #include "evolution-shell-component-utils.h" #include "evolution-storage-set-view-factory.h" -#include "e-shell.h" - #include "importer/intelligent.h" +#include <glib.h> + +#include <gtk/gtkmain.h> +#include <gtk/gtksignal.h> +#include <gdk/gdkx.h> + +#include <X11/Xatom.h> + +#include <libgnome/gnome-i18n.h> +#include <libgnome/gnome-util.h> + +/* (For the displayName stuff.) */ +#include <gdk/gdkprivate.h> +#include <X11/Xlib.h> + +#include <bonobo/bonobo-exception.h> +#include <bonobo/bonobo-moniker-util.h> + +#include <gal/widgets/e-gui-utils.h> +#include <gal/util/e-util.h> + +#include <gconf/gconf-client.h> + +#include "Evolution.h" + #define PARENT_TYPE bonobo_x_object_get_type () static BonoboXObjectClass *parent_class = NULL; @@ -124,9 +126,6 @@ struct _EShellPrivate { /* Settings Dialog */ GtkWidget *settings_dialog; - /* Configuration Database */ - EConfigListener *config_listener; - /* Whether the shell is succesfully initialized. This is needed during the start-up sequence, to avoid CORBA calls to do make wrong things to happen while the shell is initializing. */ @@ -179,6 +178,21 @@ pop_up_activation_error_dialog (ESplash *splash, g_free (error_message); } +static gboolean +get_config_start_offline (void) +{ + GConfClient *client; + gboolean value; + + client = gconf_client_get_default (); + + value = gconf_client_get_bool (client, "/apps/evolution/shell/start_offline", NULL); + + g_object_unref (client); + + return value; +} + /* Interactivity handling. */ @@ -415,7 +429,7 @@ impl_Shell_createNewView (PortableServer_Servant servant, return CORBA_OBJECT_NIL; } - shell_view = e_shell_create_view_from_uri_and_settings (shell, uri, 0); + shell_view = e_shell_create_view (shell, uri, NULL); if (shell_view == NULL) { CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Shell_NotFound, NULL); @@ -452,7 +466,7 @@ impl_Shell_handleURI (PortableServer_Servant servant, if (strncmp (uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0 || strncmp (uri, E_SHELL_DEFAULTURI_PREFIX, E_SHELL_DEFAULTURI_PREFIX_LEN) == 0) { - e_shell_create_view_from_uri_and_settings (shell, uri, 0); + e_shell_create_view (shell, uri, NULL); return; } @@ -1008,7 +1022,7 @@ create_view (EShell *shell, priv = shell->priv; - view = e_shell_view_new (shell); + view = e_shell_view_new (shell, uri); g_signal_connect (view, "delete_event", G_CALLBACK (view_delete_event_cb), shell); @@ -1121,11 +1135,6 @@ impl_dispose (GObject *object) priv->settings_dialog = NULL; } - if (priv->config_listener != NULL) { - g_object_unref (priv->config_listener); - priv->config_listener = NULL; - } - (* G_OBJECT_CLASS (parent_class)->dispose) (object); } @@ -1229,7 +1238,6 @@ init (EShell *shell) priv->crash_type_names = NULL; priv->line_status = E_SHELL_LINE_STATUS_OFFLINE; priv->settings_dialog = NULL; - priv->config_listener = e_config_listener_new(); priv->is_initialized = FALSE; priv->is_interactive = FALSE; priv->preparing_to_quit = FALSE; @@ -1299,7 +1307,7 @@ e_shell_construct (EShell *shell, if (! setup_corba_storages (shell)) return FALSE; - e_setup_check_config (priv->config_listener, local_directory); + e_setup_check_config (local_directory); /* Now we can register into OAF. Notice that we shouldn't be registering into OAF until we are sure we can complete. */ @@ -1369,9 +1377,7 @@ e_shell_construct (EShell *shell, switch (startup_line_mode) { case E_SHELL_STARTUP_LINE_MODE_CONFIG: - start_online = ! e_config_listener_get_boolean_with_default (priv->config_listener, - "/Shell/StartOffline", FALSE, - NULL); + start_online = ! get_config_start_offline (); break; case E_SHELL_STARTUP_LINE_MODE_ONLINE: start_online = TRUE; @@ -1475,28 +1481,6 @@ e_shell_create_view (EShell *shell, return view; } -EShellView * -e_shell_create_view_from_uri_and_settings (EShell *shell, - const char *uri, - int view_num) -{ - EShellView *view; - - g_return_val_if_fail (shell != NULL, NULL); - g_return_val_if_fail (E_IS_SHELL (shell), NULL); - - view = create_view (shell, uri, NULL); - e_shell_view_load_settings (view, view_num); - - gtk_widget_show (GTK_WIDGET (view)); - while (gtk_events_pending ()) - gtk_main_iteration (); - - set_interactive (shell, TRUE); - - return view; -} - gboolean e_shell_request_close_view (EShell *shell, EShellView *shell_view) @@ -1696,13 +1680,17 @@ save_settings_for_components (EShell *shell) static gboolean save_misc_settings (EShell *shell) { + GConfClient *client; EShellPrivate *priv; gboolean is_offline; priv = shell->priv; is_offline = ( e_shell_get_line_status (shell) == E_SHELL_LINE_STATUS_OFFLINE ); - e_config_listener_set_boolean (priv->config_listener, "/Shell/StartOffline", is_offline); + + client = gconf_client_get_default (); + gconf_client_set_bool (client, "/apps/evolution/shell/start_offline", is_offline, NULL); + g_object_unref (client); return TRUE; } @@ -1733,45 +1721,6 @@ e_shell_save_settings (EShell *shell) } /** - * e_shell_restore_from_settings: - * @shell: An EShell object. - * @restore_all_views: whether to restore all the views - * - * Restore the existing views from the saved configuration. The shell must - * have no views for this to work. If @restore_all_views is TRUE, restore all - * the views; otherwise, just the first one. - * - * Return value: %FALSE if the shell has some open views or there is no saved - * configuration. %TRUE if the configuration could be restored successfully. - **/ -gboolean -e_shell_restore_from_settings (EShell *shell, - gboolean restore_all_views) -{ - EShellPrivate *priv; - int num_views; - int i; - - g_return_val_if_fail (shell != NULL, FALSE); - g_return_val_if_fail (E_IS_SHELL (shell), FALSE); - g_return_val_if_fail (shell->priv->views == NULL, FALSE); - - priv = shell->priv; - - num_views = e_config_listener_get_long_with_default (priv->config_listener, - "/Shell/Views/NumberOfViews", 0, NULL); - - for (i = 0; i < num_views; i++) { - e_shell_create_view_from_uri_and_settings (shell, NULL, i); - - if (! restore_all_views) - break; - } - - return (num_views > 0); -} - -/** * e_shell_destroy_all_views: * @shell: * @@ -2087,14 +2036,6 @@ e_shell_show_settings (EShell *shell, const char *type, EShellView *shell_view) } -EConfigListener * -e_shell_get_config_listener (EShell *shell) -{ - g_return_val_if_fail (E_IS_SHELL (shell), CORBA_OBJECT_NIL); - - return shell->priv->config_listener; -} - EComponentRegistry * e_shell_get_component_registry (EShell *shell) { @@ -2133,22 +2074,6 @@ e_shell_unregister_all (EShell *shell) priv->component_registry = NULL; } -void -e_shell_disconnect_db (EShell *shell) -{ - EShellPrivate *priv; - - g_return_if_fail (E_IS_SHELL (shell)); - - priv = shell->priv; - - if (priv->config_listener == NULL) - return; - - g_object_unref (priv->config_listener); - priv->config_listener = NULL; -} - const char * e_shell_construct_result_to_string (EShellConstructResult result) @@ -2243,10 +2168,11 @@ parse_default_uri (EShell *shell, char **path_return, char **extra_return) { + GConfClient *client; const char *component_start; const char *component; const char *p; - char *db_path; + char *config_path; char *path; gboolean is_default; @@ -2258,9 +2184,11 @@ parse_default_uri (EShell *shell, else component = g_strndup (component_start, p - component_start); - db_path = g_strdup_printf ("/DefaultFolders/%s_path", component); - path = e_config_listener_get_string_with_default (shell->priv->config_listener, - db_path, NULL, &is_default); + client = gconf_client_get_default (); + + config_path = g_strdup_printf ("/apps/evolution/shell/default_folders/%s_path", component); + path = gconf_client_get_string (client, config_path, NULL); + g_object_unref (client); /* We expect an evolution: URI here, if we don't get it then something is messed up. */ diff --git a/shell/e-shell.h b/shell/e-shell.h index 246d301375..323e5f61ff 100644 --- a/shell/e-shell.h +++ b/shell/e-shell.h @@ -23,8 +23,6 @@ #ifndef _E_SHELL_H_ #define _E_SHELL_H_ -#include "e-util/e-config-listener.h" - #include <bonobo-activation/bonobo-activation.h> #include <bonobo/bonobo-xobject.h> @@ -130,13 +128,10 @@ EFolderTypeRegistry *e_shell_get_folder_type_registry (EShell *shell); EUriSchemaRegistry *e_shell_get_uri_schema_registry (EShell *shell); gboolean e_shell_save_settings (EShell *shell); -gboolean e_shell_restore_from_settings (EShell *shell, - gboolean restore_all_views); void e_shell_destroy_all_views (EShell *shell); void e_shell_unregister_all (EShell *shell); -void e_shell_disconnect_db (EShell *shell); void e_shell_component_maybe_crashed (EShell *shell, const char *uri, @@ -157,7 +152,6 @@ void e_shell_show_settings (EShell *shell, const char *type, EShellView *shell_view); -EConfigListener *e_shell_get_config_listener (EShell *shell); EComponentRegistry *e_shell_get_component_registry (EShell *shell); EShellUserCreatableItemsHandler *e_shell_get_user_creatable_items_handler (EShell *shell); diff --git a/shell/main.c b/shell/main.c index 0e09e8338f..cab1d3c5ad 100644 --- a/shell/main.c +++ b/shell/main.c @@ -1,7 +1,7 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* main.c * - * Copyright (C) 2000 Ximian, Inc. + * Copyright (C) 2000, 2001, 2002 Ximian, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public @@ -21,9 +21,17 @@ */ #include <config.h> -#include <fcntl.h> -#include <glib.h> -#include <stdio.h> + +#include "e-util/e-gtk-utils.h" + +#include "e-icon-factory.h" +#include "e-shell-constants.h" +#include "e-shell-config.h" +#include "e-setup.h" + +#include "e-shell.h" + +#include <gconf/gconf-client.h> #include <gtk/gtkalignment.h> #include <gtk/gtkframe.h> @@ -55,18 +63,12 @@ #include <gal/widgets/e-gui-utils.h> #include <gal/widgets/e-cursors.h> +#include <fcntl.h> #include <string.h> +#include <sys/types.h> +#include <sys/stat.h> #include <unistd.h> -#include "e-util/e-gtk-utils.h" - -#include "e-icon-factory.h" -#include "e-shell-constants.h" -#include "e-shell-config.h" -#include "e-setup.h" - -#include "e-shell.h" - static EShell *shell = NULL; static char *evolution_directory = NULL; @@ -142,29 +144,6 @@ no_views_left_cb (EShell *shell, gpointer data) e_shell_unregister_all (shell); - /* FIXME: And this is another ugly hack. We have a strange race - condition that I cannot work around. What happens is that the - EShell object gets unreffed and its aggregate EActivityHandler gets - destroyed too. But for some reason, the EActivityHanlder GtkObject - gets freed, while its CORBA object counterpart is still an active - server. So there is a slight chance that we receive CORBA - invocation that act on an uninitialized object, and we crash. (See - #8615.) - - The CORBA invocation on the dead object only happens because we - ::unref the BonoboConf database server in the ::destroy method of - the shell. Since this is a CORBA call, it allows incoming CORBA - calls to happen -- and these get invoked on the partially - uninitialized object. - - Since I am not 100% sure what the reason for this half-stale object - is, I am just going to make sure that no CORBA ops happen in - ::destroy... And this is achieved by placing this call here. (If - the DB is disconnected, there will be no ::unref of it in - ::destroy.) */ - - e_shell_disconnect_db (shell); - bonobo_object_unref (BONOBO_OBJECT (shell)); if (quit_box != NULL) @@ -189,16 +168,15 @@ warning_dialog_clicked_callback (GnomeDialog *dialog, void *data) { GtkCheckButton *dont_bother_me_again_checkbox; - EConfigListener *config_listener; + GConfClient *client; dont_bother_me_again_checkbox = GTK_CHECK_BUTTON (data); - config_listener = e_config_listener_new (); - - e_config_listener_set_boolean (config_listener, "/Shell/skip_warning_dialog_1_1", - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dont_bother_me_again_checkbox))); - - g_object_unref (config_listener); + client = gconf_client_get_default (); + gconf_client_set_bool (client, "/apps/evolution/shell/skip_warning_dialog", + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dont_bother_me_again_checkbox)), + NULL); + g_object_unref (client); gtk_widget_destroy (GTK_WIDGET (dialog)); } @@ -210,11 +188,16 @@ show_development_warning (GtkWindow *parent) GtkWidget *warning_dialog; GtkWidget *dont_bother_me_again_checkbox; GtkWidget *alignment; - EConfigListener *config_listener; - - config_listener = e_shell_get_config_listener (shell); - if (e_config_listener_get_boolean_with_default (config_listener, "/Shell/skip_warning_dialog_1_1", FALSE, NULL)) + GConfClient *client; + + client = gconf_client_get_default (); + + if (gconf_client_get_bool (client, "/apps/evolution/shell/skip_warning_dialog", NULL)) { + g_object_unref (client); return; + } + + g_object_unref (client); warning_dialog = gnome_dialog_new ("Ximian Evolution " VERSION, GNOME_STOCK_BUTTON_OK, NULL); gtk_window_set_transient_for (GTK_WINDOW (warning_dialog), parent); @@ -242,11 +225,8 @@ show_development_warning (GtkWindow *parent) gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (warning_dialog)->vbox), label, TRUE, TRUE, 4); - label = gtk_label_new ( - _( - "Thanks\n" - "The Ximian Evolution Team\n" - )); + label = gtk_label_new (_("Thanks\n" + "The Ximian Evolution Team\n")); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); gtk_misc_set_alignment(GTK_MISC(label), 1, .5); @@ -299,6 +279,7 @@ new_view_created_callback (EShell *shell, static void upgrade_from_1_0_if_needed (void) { +#if 0 EConfigListener *config_listener; int result; @@ -321,6 +302,7 @@ upgrade_from_1_0_if_needed (void) e_config_listener_set_boolean (config_listener, "/Shell/upgrade_from_1_0_to_1_2_performed", TRUE); g_object_unref (config_listener); +#endif /* FIXME */ } @@ -402,24 +384,19 @@ idle_cb (void *data) } if (shell == NULL) { - /* We're talking to a remote shell. If the user didn't - * ask us to open any particular URI, then open another - * view of the default URI - */ + /* We're talking to a remote shell. If the user didn't ask us to open any particular + URI, then open another view of the default URI. */ if (uri_list == NULL) display_default = TRUE; else display_default = FALSE; } else { - /* We're starting a new shell. If the user didn't specify - * any evolution: URIs to view, AND we can't load the - * user's previous settings, then show the default URI. - */ + /* We're starting a new shell. If the user didn't specify any evolution: URIs to + view, AND we can't load the user's previous settings, then show the default + URI. */ if (! have_evolution_uri) { - if (! e_shell_restore_from_settings (shell, FALSE)) - display_default = TRUE; - else - display_default = FALSE; + e_shell_create_view (shell, NULL, NULL); + display_default = TRUE; } else { display_default = FALSE; } |