summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2000-10-25 15:39:39 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2000-10-25 15:39:39 +0000
commite2312c84db078a93e15aa72df91971e50bdaea4b (patch)
treeba5bc276dd83b014660a65365f8b78a4e10de5e3 /components
parent9d7b99e6f6bb593999fedd41d136e7f69a62131a (diff)
downloadnautilus-e2312c84db078a93e15aa72df91971e50bdaea4b.tar.gz
Removed. It was a bad try. Stuff is now in eazel-services-extensions.h.
* components/services/nautilus-dependent-shared/eazel-services-constants.h: Removed. It was a bad try. Stuff is now in eazel-services-extensions.h. * components/services/nautilus-dependent-shared/Makefile.am: * components/services/nautilus-dependent-shared/eazel-services-extensions.c: (pixbuf_new_from_name), (eazel_services_image_new), (eazel_services_label_new): * components/services/nautilus-dependent-shared/eazel-services-extensions.h: Add a place to put shared services extensions. * components/services/nautilus-dependent-shared/eazel-services-footer.c: (footer_item_new), (footer_remainder_new), (eazel_services_footer_update): * components/services/nautilus-dependent-shared/eazel-services-header.c: (eazel_services_header_new): * components/services/nautilus-dependent-shared/test-footer-header.c: Remove a bunch of duplicated code and put it in a shared extensions location. Make the footer real. Add an item_clicked signal to the footer. * components/services/summary/nautilus-view/nautilus-summary-view.c: Hook up the footer for item clicks. * libnautilus-extensions/nautilus-image.c: (nautilus_image_new_loaded): * libnautilus-extensions/nautilus-image.h: * libnautilus-extensions/nautilus-label.c: (nautilus_label_new_loaded): * libnautilus-extensions/nautilus-label.h: Add constructors that take a bunch of arguments for the various widgets attributes. Makes the widgets easier to use for callers that need to tweak many attributes (like eazel services).
Diffstat (limited to 'components')
-rw-r--r--components/services/nautilus-dependent-shared/Makefile.am3
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-extensions.c133
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-extensions.h (renamed from components/services/nautilus-dependent-shared/eazel-services-constants.h)33
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-footer.c305
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-footer.h3
-rw-r--r--components/services/nautilus-dependent-shared/eazel-services-header.c144
-rw-r--r--components/services/nautilus-dependent-shared/test-footer-header.c24
-rw-r--r--components/services/summary/nautilus-summary-view.c184
-rw-r--r--components/services/summary/nautilus-view/nautilus-summary-view.c184
9 files changed, 527 insertions, 486 deletions
diff --git a/components/services/nautilus-dependent-shared/Makefile.am b/components/services/nautilus-dependent-shared/Makefile.am
index 1cb7fa8af..cf2155491 100644
--- a/components/services/nautilus-dependent-shared/Makefile.am
+++ b/components/services/nautilus-dependent-shared/Makefile.am
@@ -10,6 +10,7 @@ CPPFLAGS = \
INCLUDES = \
-I$(top_srcdir) \
-I$(top_builddir) \
+ -I$(top_srcdir)/components/services/nautilus-dependent-shared \
-I$(top_srcdir)/components/services/trilobite \
-I$(top_builddir)/components/services/trilobite \
-I$(top_srcdir)/components/services/trilobite/lib \
@@ -22,6 +23,7 @@ INCLUDES = \
noinst_LIBRARIES = libnautilusdepshared.a
noinst_HEADERS =\
+ eazel-services-extensions.h \
eazel-services-footer.h \
eazel-services-header.h \
shared-service-utilities.h \
@@ -29,6 +31,7 @@ noinst_HEADERS =\
$(NULL)
libnautilusdepshared_a_SOURCES =\
+ eazel-services-extensions.c \
eazel-services-footer.c \
eazel-services-header.c \
shared-service-utilities.c \
diff --git a/components/services/nautilus-dependent-shared/eazel-services-extensions.c b/components/services/nautilus-dependent-shared/eazel-services-extensions.c
new file mode 100644
index 000000000..2d54a5df7
--- /dev/null
+++ b/components/services/nautilus-dependent-shared/eazel-services-extensions.c
@@ -0,0 +1,133 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+
+/* eazel-services-extensions.c - Extensions to Nautilus and gtk widget.
+
+ Copyright (C) 2000 Eazel, Inc.
+
+ The Gnome Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The Gnome Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the Gnome Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+ Authors: Ramiro Estrugo <ramiro@eazel.com>
+*/
+
+#include <config.h>
+
+#include "eazel-services-extensions.h"
+
+#include <libgnome/gnome-defs.h>
+#include <libgnome/gnome-i18n.h>
+
+#include <libnautilus-extensions/nautilus-image.h>
+#include <libnautilus-extensions/nautilus-label.h>
+#include <libnautilus-extensions/nautilus-theme.h>
+
+#include <time.h>
+
+GdkPixbuf *
+eazel_services_pixbuf_new (const char *name)
+{
+ char *path;
+ GdkPixbuf *pixbuf;
+
+ g_return_val_if_fail (name != NULL, NULL);
+
+ path = nautilus_theme_get_image_path (name);
+
+ g_return_val_if_fail (path != NULL, NULL);
+
+ pixbuf = gdk_pixbuf_new_from_file (path);
+ g_free (path);
+
+ return pixbuf;
+}
+
+GtkWidget *
+eazel_services_image_new (const char *icon_name, const char *tile_name, guint32 background_color)
+{
+ GtkWidget *image;
+ GdkPixbuf *pixbuf = NULL;
+ GdkPixbuf *tile_pixbuf = NULL;
+
+ g_return_val_if_fail (icon_name || tile_name, NULL);
+
+ if (icon_name) {
+ pixbuf = eazel_services_pixbuf_new (icon_name);
+ }
+
+ if (tile_name) {
+ tile_pixbuf = eazel_services_pixbuf_new (tile_name);
+ }
+
+ g_return_val_if_fail (pixbuf || tile_pixbuf, NULL);
+
+ image = nautilus_image_new_loaded (pixbuf, 0, 0, 0, 0, background_color, tile_pixbuf);
+
+ nautilus_gdk_pixbuf_unref_if_not_null (pixbuf);
+ nautilus_gdk_pixbuf_unref_if_not_null (tile_pixbuf);
+
+ return image;
+}
+
+GtkWidget *
+eazel_services_label_new (const char *text,
+ gboolean bold,
+ guint font_size,
+ gint xpadding,
+ gint ypadding,
+ guint vertical_offset,
+ guint horizontal_offset,
+ guint32 background_color,
+ const char *tile_name)
+{
+ GtkWidget *label;
+ GdkPixbuf *text_tile;
+
+ text_tile = eazel_services_pixbuf_new (tile_name);
+
+ label = nautilus_label_new_loaded (text,
+ EAZEL_SERVICES_FONT_FAMILY,
+ bold ? "bold" : NULL,
+ font_size,
+ 1, /* drop_shadow_offset */
+ EAZEL_SERVICES_DROP_SHADOW_COLOR_RGBA,
+ EAZEL_SERVICES_TEXT_COLOR_RGBA,
+ xpadding,
+ ypadding,
+ vertical_offset,
+ horizontal_offset,
+ EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
+ text_tile);
+
+ nautilus_gdk_pixbuf_unref_if_not_null (text_tile);
+
+ return label;
+}
+
+char *
+eazel_services_get_current_date_string (void)
+{
+ time_t my_time;
+ struct tm *my_localtime;
+
+ my_time = time (NULL);
+
+ if (my_time == -1) {
+ return g_strdup (_("Unknown Date"));
+ }
+
+ my_localtime = localtime (&my_time);
+
+ return nautilus_strdup_strftime (_("%A, %B %e"), my_localtime);
+}
diff --git a/components/services/nautilus-dependent-shared/eazel-services-constants.h b/components/services/nautilus-dependent-shared/eazel-services-extensions.h
index fd4c804c2..e5cd1e0c1 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-constants.h
+++ b/components/services/nautilus-dependent-shared/eazel-services-extensions.h
@@ -1,6 +1,6 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* eazel-services-constants.h - Constants used in services widgets.
+/* eazel-services-extensions.h - Extensions to Nautilus and gtk widget.
Copyright (C) 2000 Eazel, Inc.
@@ -22,8 +22,14 @@
Authors: Ramiro Estrugo <ramiro@eazel.com>
*/
-#ifndef EAZEL_SERVICES_CONSTANTS_H
-#define EAZEL_SERVICES_CONSTANTS_H
+#ifndef EAZEL_SERVICES_EXTENSIONS_H
+#define EAZEL_SERVICES_EXTENSIONS_H
+
+#include <libgnome/gnome-defs.h>
+#include <libnautilus-extensions/nautilus-gdk-extensions.h>
+#include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h>
+#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-gtk-extensions.h>
#define EAZEL_SERVICES_BACKGROUND_COLOR_STRING "white"
#define EAZEL_SERVICES_BACKGROUND_COLOR_RGBA NAUTILUS_RGB_COLOR_WHITE
@@ -45,8 +51,27 @@
#define EAZEL_SERVICES_REMAINDER_FILL "summary-service-remainder-fill.png"
#define EAZEL_SERVICES_REMAINDER_RIGHT_BUMPER "summary-service-remainder-right-bumper.png"
+#define EAZEL_SERVICES_FONT_FAMILY "helvetica"
+
+BEGIN_GNOME_DECLS
+
+GdkPixbuf *eazel_services_pixbuf_new (const char *name);
+GtkWidget *eazel_services_image_new (const char *icon_name,
+ const char *tile_name,
+ guint32 background_color);
+GtkWidget *eazel_services_label_new (const char *text,
+ gboolean bold,
+ guint font_size,
+ gint xpadding,
+ gint ypadding,
+ guint vertical_offset,
+ guint horizontal_offset,
+ guint32 background_color,
+ const char *tile_name);
+char * eazel_services_get_current_date_string (void);
+
END_GNOME_DECLS
-#endif /* EAZEL_SERVICES_CONSTANTS_H */
+#endif /* EAZEL_SERVICES_EXTENSIONS_H */
diff --git a/components/services/nautilus-dependent-shared/eazel-services-footer.c b/components/services/nautilus-dependent-shared/eazel-services-footer.c
index b11013693..0507f925d 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-footer.c
+++ b/components/services/nautilus-dependent-shared/eazel-services-footer.c
@@ -23,14 +23,10 @@
*/
#include <config.h>
+
#include "eazel-services-footer.h"
-#include "eazel-services-constants.h"
+#include "eazel-services-extensions.h"
-#include <libnautilus-extensions/nautilus-file-utilities.h>
-#include <libnautilus-extensions/nautilus-gdk-extensions.h>
-#include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h>
-#include <libnautilus-extensions/nautilus-glib-extensions.h>
-#include <libnautilus-extensions/nautilus-gtk-extensions.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-image.h>
#include <libnautilus-extensions/nautilus-label.h>
@@ -41,9 +37,19 @@
struct _EazelServicesFooterDetails
{
- GList *items;
+ GtkWidget *date;
};
+/* Signals */
+typedef enum
+{
+ ITEM_CLICKED,
+ LAST_SIGNAL
+} FooterSignal;
+
+/* Signals */
+static guint footer_signals[LAST_SIGNAL] = { 0 };
+
/* GtkObjectClass methods */
static void eazel_services_footer_initialize_class (EazelServicesFooterClass *klass);
static void eazel_services_footer_initialize (EazelServicesFooter *footer);
@@ -61,6 +67,18 @@ eazel_services_footer_initialize_class (EazelServicesFooterClass *footer_class)
/* GtkObjectClass */
object_class->destroy = footer_destroy;
+
+ /* Signals */
+ footer_signals[ITEM_CLICKED] = gtk_signal_new ("item_clicked",
+ GTK_RUN_LAST,
+ object_class->type,
+ 0,
+ gtk_marshal_NONE__INT,
+ GTK_TYPE_NONE,
+ 1,
+ GTK_TYPE_INT);
+
+ gtk_object_class_add_signals (object_class, footer_signals, LAST_SIGNAL);
}
static void
@@ -80,74 +98,14 @@ footer_destroy (GtkObject *object)
footer = EAZEL_SERVICES_FOOTER (object);
g_free (footer->details);
+
+ g_print ("%s()\n", __FUNCTION__);
/* Chain destroy */
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object));
}
/* Private stuff */
-static GdkPixbuf *
-pixbuf_new_from_name (const char *name)
-{
- char *path;
- GdkPixbuf *pixbuf;
-
- g_return_val_if_fail (name != NULL, NULL);
-
- path = nautilus_theme_get_image_path (name);
-
- g_return_val_if_fail (path != NULL, NULL);
-
- pixbuf = gdk_pixbuf_new_from_file (path);
- g_free (path);
-
- return pixbuf;
-}
-
-static GtkWidget *
-label_new (const char *text,
- guint font_size,
- guint drop_shadow_offset,
- guint vertical_offset,
- guint horizontal_offset,
- gint xpadding,
- gint ypadding,
- guint32 background_color,
- guint32 drop_shadow_color,
- guint32 text_color,
- const char *tile_name)
-{
- GtkWidget *label;
-
- g_return_val_if_fail (text != NULL, NULL);
-
- label = nautilus_label_new (text);
- nautilus_label_set_font_size (NAUTILUS_LABEL (label), font_size);
- nautilus_label_set_drop_shadow_offset (NAUTILUS_LABEL (label), drop_shadow_offset);
- nautilus_buffered_widget_set_background_type (NAUTILUS_BUFFERED_WIDGET (label), NAUTILUS_BACKGROUND_SOLID);
- nautilus_buffered_widget_set_background_color (NAUTILUS_BUFFERED_WIDGET (label), background_color);
- nautilus_label_set_drop_shadow_color (NAUTILUS_LABEL (label), drop_shadow_color);
- nautilus_label_set_text_color (NAUTILUS_LABEL (label), background_color);
-
- nautilus_buffered_widget_set_vertical_offset (NAUTILUS_BUFFERED_WIDGET (label), vertical_offset);
- nautilus_buffered_widget_set_horizontal_offset (NAUTILUS_BUFFERED_WIDGET (label), horizontal_offset);
-
- gtk_misc_set_padding (GTK_MISC (label), xpadding, ypadding);
-
- if (tile_name != NULL) {
- GdkPixbuf *tile_pixbuf;
-
- tile_pixbuf = pixbuf_new_from_name (tile_name);
-
- if (tile_pixbuf != NULL) {
- nautilus_buffered_widget_set_tile_pixbuf (NAUTILUS_BUFFERED_WIDGET (label), tile_pixbuf);
- }
-
- nautilus_gdk_pixbuf_unref_if_not_null (tile_pixbuf);
- }
-
- return label;
-}
typedef struct
{
@@ -156,27 +114,25 @@ typedef struct
char *prelight_tile_name;
GdkPixbuf *tile_pixbuf;
GdkPixbuf *prelight_tile_pixbuf;
-} PrelightLabelData;
+} PrelightData;
static gint
-label_enter_event (GtkWidget *event_box,
- GdkEventCrossing *event,
- gpointer client_data)
+footer_item_enter_event (GtkWidget *event_box,
+ GdkEventCrossing *event,
+ gpointer client_data)
{
- PrelightLabelData *data;
+ PrelightData *data;
g_return_val_if_fail (GTK_IS_EVENT_BOX (event_box), TRUE);
g_return_val_if_fail (client_data != NULL, TRUE);
- data = (PrelightLabelData *) client_data;
+ data = (PrelightData *) client_data;
g_return_val_if_fail (data->prelight_tile_name, TRUE);
g_return_val_if_fail (NAUTILUS_IS_BUFFERED_WIDGET (data->buffered_widget), TRUE);
- //g_print ("%s(%p)\n", __FUNCTION__, data);
-
if (data->prelight_tile_pixbuf == NULL) {
- data->prelight_tile_pixbuf = pixbuf_new_from_name (data->prelight_tile_name);
+ data->prelight_tile_pixbuf = eazel_services_pixbuf_new (data->prelight_tile_name);
}
if (data->prelight_tile_pixbuf != NULL) {
@@ -188,22 +144,22 @@ label_enter_event (GtkWidget *event_box,
}
static gint
-label_leave_event (GtkWidget *event_box,
- GdkEventCrossing *event,
- gpointer client_data)
+footer_item_leave_event (GtkWidget *event_box,
+ GdkEventCrossing *event,
+ gpointer client_data)
{
- PrelightLabelData *data;
+ PrelightData *data;
g_return_val_if_fail (GTK_IS_EVENT_BOX (event_box), TRUE);
g_return_val_if_fail (client_data != NULL, TRUE);
- data = (PrelightLabelData *) client_data;
+ data = (PrelightData *) client_data;
g_return_val_if_fail (data->tile_name, TRUE);
g_return_val_if_fail (NAUTILUS_IS_BUFFERED_WIDGET (data->buffered_widget), TRUE);
if (data->tile_pixbuf == NULL) {
- data->tile_pixbuf = pixbuf_new_from_name (data->tile_name);
+ data->tile_pixbuf = eazel_services_pixbuf_new (data->tile_name);
}
if (data->tile_pixbuf != NULL) {
@@ -214,33 +170,41 @@ label_leave_event (GtkWidget *event_box,
return TRUE;
}
+typedef struct
+{
+ EazelServicesFooter *footer;
+ int index;
+} ButtonPressData;
+
static gint
-label_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
- gpointer client_data)
+footer_item_button_press_event (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer client_data)
{
- const char *uri;
-
+ ButtonPressData *data;
+
g_return_val_if_fail (GTK_IS_EVENT_BOX (widget), TRUE);
g_return_val_if_fail (client_data != NULL, TRUE);
- uri = (const char *) client_data;
+ data = (ButtonPressData *) client_data;
- g_print ("%s(%s)\n", __FUNCTION__, uri);
+ g_return_val_if_fail (EAZEL_SERVICES_IS_FOOTER (data->footer), TRUE);
+
+ gtk_signal_emit (GTK_OBJECT (data->footer), footer_signals[ITEM_CLICKED], data->index);
return TRUE;
}
static void
-label_free_data (GtkWidget *event_box,
- gpointer client_data)
+footer_item_prelight_data_free_callback (GtkWidget *event_box,
+ gpointer client_data)
{
- PrelightLabelData *data;
+ PrelightData *data;
g_return_if_fail (GTK_IS_EVENT_BOX (event_box));
g_return_if_fail (client_data != NULL);
- data = (PrelightLabelData *) client_data;
+ data = (PrelightData *) client_data;
g_free (data->tile_name);
g_free (data->prelight_tile_name);
@@ -250,8 +214,8 @@ label_free_data (GtkWidget *event_box,
}
static void
-label_free_uri (GtkWidget *event_box,
- gpointer client_data)
+free_data_callback (GtkWidget *event_box,
+ gpointer client_data)
{
g_return_if_fail (GTK_IS_EVENT_BOX (event_box));
g_return_if_fail (client_data != NULL);
@@ -259,131 +223,77 @@ label_free_uri (GtkWidget *event_box,
g_free (client_data);
}
-static GtkWidget *
-image_new (GdkPixbuf *pixbuf, GdkPixbuf *tile_pixbuf, guint32 background_color)
-{
- GtkWidget *image;
-
- g_return_val_if_fail (pixbuf || tile_pixbuf, NULL);
-
- image = nautilus_image_new ();
-
- nautilus_buffered_widget_set_background_type (NAUTILUS_BUFFERED_WIDGET (image), NAUTILUS_BACKGROUND_SOLID);
- nautilus_buffered_widget_set_background_color (NAUTILUS_BUFFERED_WIDGET (image), background_color);
-
- if (pixbuf != NULL) {
- nautilus_image_set_pixbuf (NAUTILUS_IMAGE (image), pixbuf);
- }
-
- if (tile_pixbuf != NULL) {
- nautilus_buffered_widget_set_tile_pixbuf (NAUTILUS_BUFFERED_WIDGET (image), tile_pixbuf);
- }
-
- return image;
-}
-
-static GtkWidget *
-image_new_from_name (const char *icon_name, const char *tile_name, guint32 background_color)
-{
- GtkWidget *image;
- GdkPixbuf *pixbuf = NULL;
- GdkPixbuf *tile_pixbuf = NULL;
-
- g_return_val_if_fail (icon_name || tile_name, NULL);
-
- if (icon_name) {
- pixbuf = pixbuf_new_from_name (icon_name);
- }
-
- if (tile_name) {
- tile_pixbuf = pixbuf_new_from_name (tile_name);
- }
-
- g_return_val_if_fail (pixbuf || tile_pixbuf, NULL);
-
- image = image_new (pixbuf, tile_pixbuf, background_color);
-
- nautilus_gdk_pixbuf_unref_if_not_null (pixbuf);
- nautilus_gdk_pixbuf_unref_if_not_null (tile_pixbuf);
-
- return image;
-}
-
static void
buffered_widget_add_prelighting (GtkWidget *buffered_widget,
GtkWidget *event_box,
const char *tile_name,
const char *prelight_tile_name)
{
- PrelightLabelData *data;
+ PrelightData *data;
g_return_if_fail (NAUTILUS_IS_BUFFERED_WIDGET (buffered_widget));
g_return_if_fail (GTK_IS_EVENT_BOX (event_box));
g_return_if_fail (tile_name != NULL);
g_return_if_fail (prelight_tile_name != NULL);
- data = g_new0 (PrelightLabelData, 1);
+ data = g_new0 (PrelightData, 1);
data->buffered_widget = buffered_widget;
data->tile_name = g_strdup (tile_name);
data->prelight_tile_name = g_strdup (prelight_tile_name);
- gtk_signal_connect (GTK_OBJECT (event_box), "enter_notify_event", GTK_SIGNAL_FUNC (label_enter_event), data);
- gtk_signal_connect (GTK_OBJECT (event_box), "leave_notify_event", GTK_SIGNAL_FUNC (label_leave_event), data);
- gtk_signal_connect (GTK_OBJECT (event_box), "destroy", GTK_SIGNAL_FUNC (label_free_data), data);
+ gtk_signal_connect (GTK_OBJECT (event_box), "enter_notify_event", GTK_SIGNAL_FUNC (footer_item_enter_event), data);
+ gtk_signal_connect (GTK_OBJECT (event_box), "leave_notify_event", GTK_SIGNAL_FUNC (footer_item_leave_event), data);
+ gtk_signal_connect (GTK_OBJECT (event_box), "destroy", GTK_SIGNAL_FUNC (footer_item_prelight_data_free_callback), data);
}
static GtkWidget *
-footer_item_new (const char *text, const char *uri, gboolean has_left_bumper, gboolean has_right_bumper)
+footer_item_new (EazelServicesFooter *footer,
+ const char *text,
+ int index,
+ gboolean has_left_bumper,
+ gboolean has_right_bumper)
{
GtkWidget *hbox;
GtkWidget *event_box;
GtkWidget *label;
- char *uri_copy;
+ ButtonPressData *data;
+ g_return_val_if_fail (EAZEL_SERVICES_IS_FOOTER (footer), NULL);
g_return_val_if_fail (text != NULL, NULL);
g_return_val_if_fail (text[0] != '\0', NULL);
- g_return_val_if_fail (uri != NULL, NULL);
- g_return_val_if_fail (uri[0] != '\0', NULL);
-
event_box = gtk_event_box_new ();
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (event_box), hbox);
if (has_left_bumper) {
GtkWidget *left;
- left = image_new_from_name (EAZEL_SERVICES_NORMAL_LEFT_BUMPER, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+ left = eazel_services_image_new (EAZEL_SERVICES_NORMAL_LEFT_BUMPER, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
buffered_widget_add_prelighting (left, event_box, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_PRELIGHT_FILL);
gtk_box_pack_start (GTK_BOX (hbox), left, FALSE, FALSE, 0);
gtk_widget_show (left);
}
- label = label_new (text,
- 13,
- 1,
- 2,
- 0,
- 5,
- 0,
- EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
- EAZEL_SERVICES_DROP_SHADOW_COLOR_RGBA,
- EAZEL_SERVICES_TEXT_COLOR_RGBA,
- EAZEL_SERVICES_NORMAL_FILL);
+ label = eazel_services_label_new (text, FALSE, 13, 5, 0, 2, 0,
+ EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
+ EAZEL_SERVICES_NORMAL_FILL);
gtk_widget_show (label);
- uri_copy = g_strdup (uri);
+ data = g_new (ButtonPressData, 1);
+ data->index = index;
+ data->footer = footer;
- gtk_signal_connect (GTK_OBJECT (event_box), "button_press_event", GTK_SIGNAL_FUNC (label_button_press_event), uri_copy);
- gtk_signal_connect (GTK_OBJECT (event_box), "destroy", GTK_SIGNAL_FUNC (label_free_uri), uri_copy);
+ gtk_signal_connect (GTK_OBJECT (event_box), "button_press_event", GTK_SIGNAL_FUNC (footer_item_button_press_event), data);
+ gtk_signal_connect (GTK_OBJECT (event_box), "destroy", GTK_SIGNAL_FUNC (free_data_callback), data);
buffered_widget_add_prelighting (label, event_box, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_PRELIGHT_FILL);
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
if (has_right_bumper) {
GtkWidget *right;
- right = image_new_from_name (EAZEL_SERVICES_NORMAL_RIGHT_BUMPER, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+ right = eazel_services_image_new (EAZEL_SERVICES_NORMAL_RIGHT_BUMPER, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
buffered_widget_add_prelighting (right, event_box, EAZEL_SERVICES_NORMAL_FILL, EAZEL_SERVICES_PRELIGHT_FILL);
gtk_box_pack_start (GTK_BOX (hbox), right, FALSE, FALSE, 0);
gtk_widget_show (right);
@@ -404,9 +314,9 @@ footer_remainder_new (void)
hbox = gtk_hbox_new (FALSE, 0);
- left = image_new_from_name (EAZEL_SERVICES_REMAINDER_LEFT_BUMPER, NULL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
- fill = image_new_from_name (NULL, EAZEL_SERVICES_REMAINDER_FILL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
- right = image_new_from_name (EAZEL_SERVICES_REMAINDER_RIGHT_BUMPER, NULL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+ left = eazel_services_image_new (EAZEL_SERVICES_REMAINDER_LEFT_BUMPER, NULL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+ fill = eazel_services_image_new (NULL, EAZEL_SERVICES_REMAINDER_FILL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+ right = eazel_services_image_new (EAZEL_SERVICES_REMAINDER_RIGHT_BUMPER, NULL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
gtk_box_pack_start (GTK_BOX (hbox), left, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), fill, TRUE, TRUE, 0);
@@ -433,22 +343,21 @@ eazel_services_footer_new (void)
void
eazel_services_footer_update (EazelServicesFooter *footer,
const char *items[],
- const char *uris[],
guint num_items)
{
GtkWidget *remainder;
- GtkWidget *date;
guint i;
+ char *date_string;
g_return_if_fail (EAZEL_SERVICES_IS_FOOTER (footer));
g_return_if_fail (items != NULL);
- g_return_if_fail (uris != NULL);
g_return_if_fail (num_items > 0);
for (i = 0; i < num_items; i++) {
GtkWidget *item;
- item = footer_item_new (items[i], uris[i], i > 0, i < (num_items - 1));
+ item = footer_item_new (footer, items[i], i, i > 0, i < (num_items - 1));
+
gtk_box_pack_start (GTK_BOX (footer), item, FALSE, FALSE, 0);
gtk_widget_show (item);
}
@@ -456,20 +365,30 @@ eazel_services_footer_update (EazelServicesFooter *footer,
remainder = footer_remainder_new ();
gtk_box_pack_start (GTK_BOX (footer), remainder, TRUE, TRUE, 0);
- date = label_new ("Friday, October 13th",
- 13,
- 1,
- 2,
- 0,
- 8,
- 0,
- EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
- EAZEL_SERVICES_DROP_SHADOW_COLOR_RGBA,
- EAZEL_SERVICES_TEXT_COLOR_RGBA,
- EAZEL_SERVICES_NORMAL_FILL);
+ date_string = eazel_services_get_current_date_string ();
+ footer->details->date = eazel_services_label_new (date_string,
+ FALSE, 13, 8, 0, 2, 0,
+ EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
+ EAZEL_SERVICES_NORMAL_FILL);
+ g_free (date_string);
+
gtk_widget_show (remainder);
- gtk_widget_show (date);
+ gtk_widget_show (footer->details->date);
+
+ gtk_box_pack_start (GTK_BOX (footer), footer->details->date, FALSE, FALSE, 0);
+}
+
+void
+eazel_services_footer_set_date (EazelServicesFooter *footer,
+ const char *date)
+{
+
+ g_return_if_fail (EAZEL_SERVICES_IS_FOOTER (footer));
+ g_return_if_fail (date != NULL);
+ g_return_if_fail (date[0] != '\0');
+
+ g_return_if_fail (NAUTILUS_IS_LABEL (footer->details->date));
- gtk_box_pack_start (GTK_BOX (footer), date, FALSE, FALSE, 0);
+ nautilus_label_set_text (NAUTILUS_LABEL (footer->details->date), date);
}
diff --git a/components/services/nautilus-dependent-shared/eazel-services-footer.h b/components/services/nautilus-dependent-shared/eazel-services-footer.h
index 79f574445..d689d671f 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-footer.h
+++ b/components/services/nautilus-dependent-shared/eazel-services-footer.h
@@ -59,8 +59,9 @@ GtkType eazel_services_footer_get_type (void);
GtkWidget* eazel_services_footer_new (void);
void eazel_services_footer_update (EazelServicesFooter *footer,
const char *items[],
- const char *uris[],
guint num_items);
+void eazel_services_footer_set_date (EazelServicesFooter *footer,
+ const char *date);
END_GNOME_DECLS
diff --git a/components/services/nautilus-dependent-shared/eazel-services-header.c b/components/services/nautilus-dependent-shared/eazel-services-header.c
index d60622629..a8c6c9cca 100644
--- a/components/services/nautilus-dependent-shared/eazel-services-header.c
+++ b/components/services/nautilus-dependent-shared/eazel-services-header.c
@@ -23,14 +23,10 @@
*/
#include <config.h>
+
#include "eazel-services-header.h"
-#include "eazel-services-constants.h"
+#include "eazel-services-extensions.h"
-#include <libnautilus-extensions/nautilus-file-utilities.h>
-#include <libnautilus-extensions/nautilus-gdk-extensions.h>
-#include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h>
-#include <libnautilus-extensions/nautilus-glib-extensions.h>
-#include <libnautilus-extensions/nautilus-gtk-extensions.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-image.h>
#include <libnautilus-extensions/nautilus-label.h>
@@ -85,120 +81,6 @@ header_destroy (GtkObject *object)
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object));
}
-/* Private stuff */
-static GdkPixbuf *
-pixbuf_new_from_name (const char *name)
-{
- char *path;
- GdkPixbuf *pixbuf;
-
- g_return_val_if_fail (name != NULL, NULL);
-
- path = nautilus_theme_get_image_path (name);
-
- g_return_val_if_fail (path != NULL, NULL);
-
- pixbuf = gdk_pixbuf_new_from_file (path);
- g_free (path);
-
- return pixbuf;
-}
-
-static GtkWidget *
-label_new (const char *text,
- guint font_size,
- guint drop_shadow_offset,
- guint vertical_offset,
- guint horizontal_offset,
- gint xpadding,
- gint ypadding,
- guint32 background_color,
- guint32 drop_shadow_color,
- guint32 text_color,
- const char *tile_name)
-{
- GtkWidget *label;
-
- g_return_val_if_fail (text != NULL, NULL);
-
- label = nautilus_label_new (text);
- nautilus_label_set_font_size (NAUTILUS_LABEL (label), font_size);
- nautilus_label_set_drop_shadow_offset (NAUTILUS_LABEL (label), drop_shadow_offset);
- nautilus_buffered_widget_set_background_type (NAUTILUS_BUFFERED_WIDGET (label), NAUTILUS_BACKGROUND_SOLID);
- nautilus_buffered_widget_set_background_color (NAUTILUS_BUFFERED_WIDGET (label), background_color);
- nautilus_label_set_drop_shadow_color (NAUTILUS_LABEL (label), drop_shadow_color);
- nautilus_label_set_text_color (NAUTILUS_LABEL (label), background_color);
-
- nautilus_buffered_widget_set_vertical_offset (NAUTILUS_BUFFERED_WIDGET (label), vertical_offset);
- nautilus_buffered_widget_set_horizontal_offset (NAUTILUS_BUFFERED_WIDGET (label), horizontal_offset);
-
- gtk_misc_set_padding (GTK_MISC (label), xpadding, ypadding);
-
- if (tile_name != NULL) {
- GdkPixbuf *tile_pixbuf;
-
- tile_pixbuf = pixbuf_new_from_name (tile_name);
-
- if (tile_pixbuf != NULL) {
- nautilus_buffered_widget_set_tile_pixbuf (NAUTILUS_BUFFERED_WIDGET (label), tile_pixbuf);
- }
-
- nautilus_gdk_pixbuf_unref_if_not_null (tile_pixbuf);
- }
-
- return label;
-}
-
-static GtkWidget *
-image_new (GdkPixbuf *pixbuf, GdkPixbuf *tile_pixbuf, guint32 background_color)
-{
- GtkWidget *image;
-
- g_return_val_if_fail (pixbuf || tile_pixbuf, NULL);
-
- image = nautilus_image_new ();
-
- nautilus_buffered_widget_set_background_type (NAUTILUS_BUFFERED_WIDGET (image), NAUTILUS_BACKGROUND_SOLID);
- nautilus_buffered_widget_set_background_color (NAUTILUS_BUFFERED_WIDGET (image), background_color);
-
- if (pixbuf != NULL) {
- nautilus_image_set_pixbuf (NAUTILUS_IMAGE (image), pixbuf);
- }
-
- if (tile_pixbuf != NULL) {
- nautilus_buffered_widget_set_tile_pixbuf (NAUTILUS_BUFFERED_WIDGET (image), tile_pixbuf);
- }
-
- return image;
-}
-
-static GtkWidget *
-image_new_from_name (const char *icon_name, const char *tile_name, guint32 background_color)
-{
- GtkWidget *image;
- GdkPixbuf *pixbuf = NULL;
- GdkPixbuf *tile_pixbuf = NULL;
-
- g_return_val_if_fail (icon_name || tile_name, NULL);
-
- if (icon_name) {
- pixbuf = pixbuf_new_from_name (icon_name);
- }
-
- if (tile_name) {
- tile_pixbuf = pixbuf_new_from_name (tile_name);
- }
-
- g_return_val_if_fail (pixbuf || tile_pixbuf, NULL);
-
- image = image_new (pixbuf, tile_pixbuf, background_color);
-
- nautilus_gdk_pixbuf_unref_if_not_null (pixbuf);
- nautilus_gdk_pixbuf_unref_if_not_null (tile_pixbuf);
-
- return image;
-}
-
/* EazelServicesHeader public methods */
GtkWidget *
eazel_services_header_new (const char *text)
@@ -209,21 +91,13 @@ eazel_services_header_new (const char *text)
header = EAZEL_SERVICES_HEADER (gtk_widget_new (eazel_services_header_get_type (), NULL));
- header->details->text = label_new (text ? text : "foo",
- 18,
- 1,
- 4,
- 0,
- 10,
- 0,
- EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
- EAZEL_SERVICES_DROP_SHADOW_COLOR_RGBA,
- EAZEL_SERVICES_TEXT_COLOR_RGBA,
- EAZEL_SERVICES_LOGO_LEFT_SIDE_REPEAT_ICON);
-
- middle = image_new_from_name (NULL, EAZEL_SERVICES_LOGO_LEFT_SIDE_REPEAT_ICON, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
-
- logo = image_new_from_name (EAZEL_SERVICES_LOGO_RIGHT_SIDE_ICON, NULL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+ header->details->text = eazel_services_label_new (text, TRUE, 18, 10, 0, 4, 0,
+ EAZEL_SERVICES_BACKGROUND_COLOR_RGBA,
+ EAZEL_SERVICES_LOGO_LEFT_SIDE_REPEAT_ICON);
+
+ middle = eazel_services_image_new (NULL, EAZEL_SERVICES_LOGO_LEFT_SIDE_REPEAT_ICON, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
+
+ logo = eazel_services_image_new (EAZEL_SERVICES_LOGO_RIGHT_SIDE_ICON, NULL, EAZEL_SERVICES_BACKGROUND_COLOR_RGBA);
gtk_box_pack_start (GTK_BOX (header), header->details->text, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (header), middle, TRUE, TRUE, 0);
diff --git a/components/services/nautilus-dependent-shared/test-footer-header.c b/components/services/nautilus-dependent-shared/test-footer-header.c
index cdf3acada..1e28301bb 100644
--- a/components/services/nautilus-dependent-shared/test-footer-header.c
+++ b/components/services/nautilus-dependent-shared/test-footer-header.c
@@ -25,18 +25,9 @@
#include <config.h>
#include <gtk/gtk.h>
-#include <libnautilus-extensions/nautilus-gtk-extensions.h>
-#include <libnautilus-extensions/nautilus-glib-extensions.h>
-
-/* #include <libnautilus-extensions/nautilus-gdk-extensions.h> */
-/* #include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h> */
-/* #include <libnautilus-extensions/nautilus-image.h> */
-/* #include <libnautilus-extensions/nautilus-label.h> */
-/* #include <libnautilus-extensions/nautilus-theme.h> */
-
+#include "eazel-services-extensions.h"
#include "eazel-services-footer.h"
#include "eazel-services-header.h"
-#include "eazel-services-constants.h"
static void
delete_event (GtkWidget *widget, GdkEvent *event, gpointer callback_data)
@@ -52,13 +43,11 @@ static const char *footer_items[] =
"Privacy Statement"
};
-static const char *footer_uris[] =
+static void
+footer_item_clicked_callback (GtkWidget *widget, int index, gpointer callback_data)
{
- "eazel:register",
- "eazel:login",
- "eazel:terms",
- "eazel:privacy"
-};
+ g_print ("footer_item_clicked_callback(%d)\n", index);
+}
int
main (int argc, char* argv[])
@@ -87,9 +76,10 @@ main (int argc, char* argv[])
content = gtk_vbox_new (FALSE, 0);
footer = eazel_services_footer_new ();
+ gtk_signal_connect (GTK_OBJECT (footer), "item_clicked", GTK_SIGNAL_FUNC (footer_item_clicked_callback), NULL);
+
eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
footer_items,
- footer_uris,
NAUTILUS_N_ELEMENTS (footer_items));
gtk_box_pack_start (GTK_BOX (vbox), header, FALSE, FALSE, 0);
diff --git a/components/services/summary/nautilus-summary-view.c b/components/services/summary/nautilus-summary-view.c
index 298762db9..a93604074 100644
--- a/components/services/summary/nautilus-summary-view.c
+++ b/components/services/summary/nautilus-summary-view.c
@@ -30,7 +30,7 @@
#include "eazel-services-footer.h"
#include "eazel-services-header.h"
-#include "eazel-services-constants.h"
+#include "eazel-services-extensions.h"
#include <gnome-xml/tree.h>
#include <bonobo/bonobo-control.h>
@@ -210,70 +210,76 @@ struct _NautilusSummaryViewDetails {
GConfEngine * engine_gconf;
};
-static void nautilus_summary_view_initialize_class (NautilusSummaryViewClass *klass);
-static void nautilus_summary_view_initialize (NautilusSummaryView *view);
-static void nautilus_summary_view_destroy (GtkObject *object);
-static void summary_load_location_callback (NautilusView *nautilus_view,
- const char *location,
- NautilusSummaryView *view);
-static void generate_summary_form (NautilusSummaryView *view);
-static void generate_service_entry_row (NautilusSummaryView *view,
- int row);
-static void generate_eazel_news_entry_row (NautilusSummaryView *view,
- int row);
-static void generate_update_news_entry_row (NautilusSummaryView *view,
- int row);
-static void login_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static void preferences_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static void logout_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static void goto_service_cb (GtkWidget *button,
- ServicesButtonCallbackData *cbdata);
-static void goto_update_cb (GtkWidget *button,
- ServicesButtonCallbackData *cbdata);
-static void register_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static gboolean am_i_logged_in (NautilusSummaryView *view);
-static char* who_is_logged_in (NautilusSummaryView *view);
-static gint logged_in_callback (gpointer raw);
-static gint logged_out_callback (gpointer raw);
-static void generate_error_dialog (NautilusSummaryView *view,
- const char *message);
-static void generate_login_dialog (NautilusSummaryView *view);
-static void widget_set_nautilus_background_color (GtkWidget *widget,
- const char *color);
-static void merge_bonobo_menu_items (BonoboControl *control,
- gboolean state,
- gpointer user_data);
-static void update_menu_items (NautilusSummaryView *view,
- gboolean logged_in);
-static void
-service_tab_selected_callback (GtkWidget *widget,
- int which_tab,
- NautilusSummaryView *view);
-static void
-updates_tab_selected_callback (GtkWidget *widget,
- int which_tab,
- NautilusSummaryView *view);
+static void nautilus_summary_view_initialize_class (NautilusSummaryViewClass *klass);
+static void nautilus_summary_view_initialize (NautilusSummaryView *view);
+static void nautilus_summary_view_destroy (GtkObject *object);
+static void summary_load_location_callback (NautilusView *nautilus_view,
+ const char *location,
+ NautilusSummaryView *view);
+static void generate_summary_form (NautilusSummaryView *view);
+static void generate_service_entry_row (NautilusSummaryView *view,
+ int row);
+static void generate_eazel_news_entry_row (NautilusSummaryView *view,
+ int row);
+static void generate_update_news_entry_row (NautilusSummaryView *view,
+ int row);
+static void login_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static void preferences_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static void logout_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static void goto_service_cb (GtkWidget *button,
+ ServicesButtonCallbackData *cbdata);
+static void goto_update_cb (GtkWidget *button,
+ ServicesButtonCallbackData *cbdata);
+static void register_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static gboolean am_i_logged_in (NautilusSummaryView *view);
+static char* who_is_logged_in (NautilusSummaryView *view);
+static gint logged_in_callback (gpointer raw);
+static gint logged_out_callback (gpointer raw);
+static void generate_error_dialog (NautilusSummaryView *view,
+ const char *message);
+static void generate_login_dialog (NautilusSummaryView *view);
+static void widget_set_nautilus_background_color (GtkWidget *widget,
+ const char *color);
+static void merge_bonobo_menu_items (BonoboControl *control,
+ gboolean state,
+ gpointer user_data);
+static void update_menu_items (NautilusSummaryView *view,
+ gboolean logged_in);
+static void service_tab_selected_callback (GtkWidget *widget,
+ int which_tab,
+ NautilusSummaryView *view);
+static void updates_tab_selected_callback (GtkWidget *widget,
+ int which_tab,
+ NautilusSummaryView *view);
+static void footer_item_clicked_callback (GtkWidget *widget,
+ int index,
+ gpointer callback_data);
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusSummaryView, nautilus_summary_view, GTK_TYPE_EVENT_BOX)
-static const char *footer_items[] =
+#define FOOTER_REGISTER_OR_PREFERENCES 0
+#define FOOTER_LOGIN_OR_LOGOUT 1
+#define FOOTER_TERMS_OF_USER 2
+#define FOOTER_PRIVACY_STATEMENT 3
+
+static const char *footer_online_items[] =
{
- "Register",
- "Login",
- "Terms of Use",
- "Privacy Statement"
+ N_("Register"),
+ N_("Login"),
+ N_("Terms of Use"),
+ N_("Privacy Statement")
};
-static const char *footer_uris[] =
+static const char *footer_offline_items[] =
{
- "eazel:register",
- "eazel:login",
- "eazel:terms",
- "eazel:privacy"
+ N_("Account Preferences"),
+ N_("Logout"),
+ N_("Terms of Use"),
+ N_("Privacy Statement")
};
static void
@@ -316,11 +322,7 @@ generate_summary_form (NautilusSummaryView *view)
/* setup the title */
title = eazel_services_header_new ("");
- if (!view->details->logged_in) {
- eazel_services_header_set_text (EAZEL_SERVICES_HEADER (title),
- _("You are not logged in!"));
- }
- else {
+ if (view->details->logged_in) {
char *text;
g_free (view->details->user_name);
view->details->user_name = who_is_logged_in (view);
@@ -328,6 +330,10 @@ generate_summary_form (NautilusSummaryView *view)
eazel_services_header_set_text (EAZEL_SERVICES_HEADER (title), text);
g_free (text);
}
+ else {
+ eazel_services_header_set_text (EAZEL_SERVICES_HEADER (title),
+ _("You are not logged in!"));
+ }
gtk_box_pack_start (GTK_BOX (view->details->form), title, FALSE, FALSE, 0);
gtk_widget_show (title);
@@ -576,11 +582,19 @@ generate_summary_form (NautilusSummaryView *view)
view->details->xml_data = NULL;
footer = eazel_services_footer_new ();
- eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
- footer_items,
- footer_uris,
- NAUTILUS_N_ELEMENTS (footer_items));
-
+ gtk_signal_connect (GTK_OBJECT (footer), "item_clicked", GTK_SIGNAL_FUNC (footer_item_clicked_callback), view);
+
+ if (view->details->logged_in) {
+ eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
+ footer_offline_items,
+ NAUTILUS_N_ELEMENTS (footer_online_items));
+ }
+ else {
+ eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
+ footer_online_items,
+ NAUTILUS_N_ELEMENTS (footer_online_items));
+ }
+
gtk_box_pack_start (GTK_BOX (view->details->form), footer, FALSE, FALSE, 0);
gtk_widget_show (footer);
@@ -1615,3 +1629,37 @@ merge_bonobo_menu_items (BonoboControl *control, gboolean state, gpointer user_d
* views are never explicitly deactivated
*/
}
+
+static void
+footer_item_clicked_callback (GtkWidget *widget, int index, gpointer callback_data)
+{
+ NautilusSummaryView *view;
+
+ g_return_if_fail (NAUTILUS_IS_SUMMARY_VIEW (callback_data));
+ g_return_if_fail (index >= FOOTER_REGISTER_OR_PREFERENCES);
+ g_return_if_fail (index <= FOOTER_PRIVACY_STATEMENT);
+
+ view = NAUTILUS_SUMMARY_VIEW (callback_data);
+
+ switch (index) {
+ case FOOTER_REGISTER_OR_PREFERENCES:
+ register_button_cb (NULL, view);
+ break;
+
+ case FOOTER_LOGIN_OR_LOGOUT:
+ generate_login_dialog (view);
+ break;
+
+ case FOOTER_TERMS_OF_USER:
+ go_to_uri (view->details->nautilus_view, "eazel-services://anonymous/aboutus/terms_of_use");
+ break;
+
+ case FOOTER_PRIVACY_STATEMENT:
+ go_to_uri (view->details->nautilus_view, "eazel-services://anonymous/aboutus/privacy");
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+}
diff --git a/components/services/summary/nautilus-view/nautilus-summary-view.c b/components/services/summary/nautilus-view/nautilus-summary-view.c
index 298762db9..a93604074 100644
--- a/components/services/summary/nautilus-view/nautilus-summary-view.c
+++ b/components/services/summary/nautilus-view/nautilus-summary-view.c
@@ -30,7 +30,7 @@
#include "eazel-services-footer.h"
#include "eazel-services-header.h"
-#include "eazel-services-constants.h"
+#include "eazel-services-extensions.h"
#include <gnome-xml/tree.h>
#include <bonobo/bonobo-control.h>
@@ -210,70 +210,76 @@ struct _NautilusSummaryViewDetails {
GConfEngine * engine_gconf;
};
-static void nautilus_summary_view_initialize_class (NautilusSummaryViewClass *klass);
-static void nautilus_summary_view_initialize (NautilusSummaryView *view);
-static void nautilus_summary_view_destroy (GtkObject *object);
-static void summary_load_location_callback (NautilusView *nautilus_view,
- const char *location,
- NautilusSummaryView *view);
-static void generate_summary_form (NautilusSummaryView *view);
-static void generate_service_entry_row (NautilusSummaryView *view,
- int row);
-static void generate_eazel_news_entry_row (NautilusSummaryView *view,
- int row);
-static void generate_update_news_entry_row (NautilusSummaryView *view,
- int row);
-static void login_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static void preferences_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static void logout_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static void goto_service_cb (GtkWidget *button,
- ServicesButtonCallbackData *cbdata);
-static void goto_update_cb (GtkWidget *button,
- ServicesButtonCallbackData *cbdata);
-static void register_button_cb (GtkWidget *button,
- NautilusSummaryView *view);
-static gboolean am_i_logged_in (NautilusSummaryView *view);
-static char* who_is_logged_in (NautilusSummaryView *view);
-static gint logged_in_callback (gpointer raw);
-static gint logged_out_callback (gpointer raw);
-static void generate_error_dialog (NautilusSummaryView *view,
- const char *message);
-static void generate_login_dialog (NautilusSummaryView *view);
-static void widget_set_nautilus_background_color (GtkWidget *widget,
- const char *color);
-static void merge_bonobo_menu_items (BonoboControl *control,
- gboolean state,
- gpointer user_data);
-static void update_menu_items (NautilusSummaryView *view,
- gboolean logged_in);
-static void
-service_tab_selected_callback (GtkWidget *widget,
- int which_tab,
- NautilusSummaryView *view);
-static void
-updates_tab_selected_callback (GtkWidget *widget,
- int which_tab,
- NautilusSummaryView *view);
+static void nautilus_summary_view_initialize_class (NautilusSummaryViewClass *klass);
+static void nautilus_summary_view_initialize (NautilusSummaryView *view);
+static void nautilus_summary_view_destroy (GtkObject *object);
+static void summary_load_location_callback (NautilusView *nautilus_view,
+ const char *location,
+ NautilusSummaryView *view);
+static void generate_summary_form (NautilusSummaryView *view);
+static void generate_service_entry_row (NautilusSummaryView *view,
+ int row);
+static void generate_eazel_news_entry_row (NautilusSummaryView *view,
+ int row);
+static void generate_update_news_entry_row (NautilusSummaryView *view,
+ int row);
+static void login_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static void preferences_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static void logout_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static void goto_service_cb (GtkWidget *button,
+ ServicesButtonCallbackData *cbdata);
+static void goto_update_cb (GtkWidget *button,
+ ServicesButtonCallbackData *cbdata);
+static void register_button_cb (GtkWidget *button,
+ NautilusSummaryView *view);
+static gboolean am_i_logged_in (NautilusSummaryView *view);
+static char* who_is_logged_in (NautilusSummaryView *view);
+static gint logged_in_callback (gpointer raw);
+static gint logged_out_callback (gpointer raw);
+static void generate_error_dialog (NautilusSummaryView *view,
+ const char *message);
+static void generate_login_dialog (NautilusSummaryView *view);
+static void widget_set_nautilus_background_color (GtkWidget *widget,
+ const char *color);
+static void merge_bonobo_menu_items (BonoboControl *control,
+ gboolean state,
+ gpointer user_data);
+static void update_menu_items (NautilusSummaryView *view,
+ gboolean logged_in);
+static void service_tab_selected_callback (GtkWidget *widget,
+ int which_tab,
+ NautilusSummaryView *view);
+static void updates_tab_selected_callback (GtkWidget *widget,
+ int which_tab,
+ NautilusSummaryView *view);
+static void footer_item_clicked_callback (GtkWidget *widget,
+ int index,
+ gpointer callback_data);
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusSummaryView, nautilus_summary_view, GTK_TYPE_EVENT_BOX)
-static const char *footer_items[] =
+#define FOOTER_REGISTER_OR_PREFERENCES 0
+#define FOOTER_LOGIN_OR_LOGOUT 1
+#define FOOTER_TERMS_OF_USER 2
+#define FOOTER_PRIVACY_STATEMENT 3
+
+static const char *footer_online_items[] =
{
- "Register",
- "Login",
- "Terms of Use",
- "Privacy Statement"
+ N_("Register"),
+ N_("Login"),
+ N_("Terms of Use"),
+ N_("Privacy Statement")
};
-static const char *footer_uris[] =
+static const char *footer_offline_items[] =
{
- "eazel:register",
- "eazel:login",
- "eazel:terms",
- "eazel:privacy"
+ N_("Account Preferences"),
+ N_("Logout"),
+ N_("Terms of Use"),
+ N_("Privacy Statement")
};
static void
@@ -316,11 +322,7 @@ generate_summary_form (NautilusSummaryView *view)
/* setup the title */
title = eazel_services_header_new ("");
- if (!view->details->logged_in) {
- eazel_services_header_set_text (EAZEL_SERVICES_HEADER (title),
- _("You are not logged in!"));
- }
- else {
+ if (view->details->logged_in) {
char *text;
g_free (view->details->user_name);
view->details->user_name = who_is_logged_in (view);
@@ -328,6 +330,10 @@ generate_summary_form (NautilusSummaryView *view)
eazel_services_header_set_text (EAZEL_SERVICES_HEADER (title), text);
g_free (text);
}
+ else {
+ eazel_services_header_set_text (EAZEL_SERVICES_HEADER (title),
+ _("You are not logged in!"));
+ }
gtk_box_pack_start (GTK_BOX (view->details->form), title, FALSE, FALSE, 0);
gtk_widget_show (title);
@@ -576,11 +582,19 @@ generate_summary_form (NautilusSummaryView *view)
view->details->xml_data = NULL;
footer = eazel_services_footer_new ();
- eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
- footer_items,
- footer_uris,
- NAUTILUS_N_ELEMENTS (footer_items));
-
+ gtk_signal_connect (GTK_OBJECT (footer), "item_clicked", GTK_SIGNAL_FUNC (footer_item_clicked_callback), view);
+
+ if (view->details->logged_in) {
+ eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
+ footer_offline_items,
+ NAUTILUS_N_ELEMENTS (footer_online_items));
+ }
+ else {
+ eazel_services_footer_update (EAZEL_SERVICES_FOOTER (footer),
+ footer_online_items,
+ NAUTILUS_N_ELEMENTS (footer_online_items));
+ }
+
gtk_box_pack_start (GTK_BOX (view->details->form), footer, FALSE, FALSE, 0);
gtk_widget_show (footer);
@@ -1615,3 +1629,37 @@ merge_bonobo_menu_items (BonoboControl *control, gboolean state, gpointer user_d
* views are never explicitly deactivated
*/
}
+
+static void
+footer_item_clicked_callback (GtkWidget *widget, int index, gpointer callback_data)
+{
+ NautilusSummaryView *view;
+
+ g_return_if_fail (NAUTILUS_IS_SUMMARY_VIEW (callback_data));
+ g_return_if_fail (index >= FOOTER_REGISTER_OR_PREFERENCES);
+ g_return_if_fail (index <= FOOTER_PRIVACY_STATEMENT);
+
+ view = NAUTILUS_SUMMARY_VIEW (callback_data);
+
+ switch (index) {
+ case FOOTER_REGISTER_OR_PREFERENCES:
+ register_button_cb (NULL, view);
+ break;
+
+ case FOOTER_LOGIN_OR_LOGOUT:
+ generate_login_dialog (view);
+ break;
+
+ case FOOTER_TERMS_OF_USER:
+ go_to_uri (view->details->nautilus_view, "eazel-services://anonymous/aboutus/terms_of_use");
+ break;
+
+ case FOOTER_PRIVACY_STATEMENT:
+ go_to_uri (view->details->nautilus_view, "eazel-services://anonymous/aboutus/privacy");
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+}