From e8979406add3d80ff89c5a0707effc0a603eaa77 Mon Sep 17 00:00:00 2001 From: David Barth Date: Thu, 22 Jul 2010 19:15:46 +0200 Subject: make sure we get the right glib version with gsettings support --- configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f8997bf..58018cf 100644 --- a/configure.ac +++ b/configure.ac @@ -35,7 +35,8 @@ PKG_PROG_PKG_CONFIG INDICATOR_REQUIRED_VERSION=0.3.0 DBUSMENUGLIB_REQUIRED_VERSION=0.1.1 DBUSMENUGTK_REQUIRED_VERSION=0.1.1 -GIO_REQUIRED_VERSION=2.25.0 +GIO_REQUIRED_VERSION=2.25.11 +# Note: the GIO check below also ensures the proper glib with gsettings support is present PKG_CHECK_MODULES(INDICATOR, indicator >= $INDICATOR_REQUIRED_VERSION dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION -- cgit v1.2.3 From 497a7116e0c02f8073a2e975a03d27cb713299aa Mon Sep 17 00:00:00 2001 From: David Barth Date: Thu, 22 Jul 2010 19:23:07 +0200 Subject: make sure we get the new IDO calendar menu item --- configure.ac | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configure.ac b/configure.ac index 58018cf..2300d7f 100644 --- a/configure.ac +++ b/configure.ac @@ -37,10 +37,12 @@ DBUSMENUGLIB_REQUIRED_VERSION=0.1.1 DBUSMENUGTK_REQUIRED_VERSION=0.1.1 GIO_REQUIRED_VERSION=2.25.11 # Note: the GIO check below also ensures the proper glib with gsettings support is present +INDICATOR_DISPLAY_OBJECTS=0.1.10 PKG_CHECK_MODULES(INDICATOR, indicator >= $INDICATOR_REQUIRED_VERSION dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION + libido-0.1 >= $INDICATOR_DISPLAY_OBJECTS gio-2.0 >= $GIO_REQUIRED_VERSION) AC_SUBST(INDICATOR_CFLAGS) -- cgit v1.2.3 From f1e5569348a935def97ed99708864aa6b8096d5e Mon Sep 17 00:00:00 2001 From: David Barth Date: Thu, 22 Jul 2010 21:13:36 +0200 Subject: add a calendar widget to the menu --- src/Makefile.am | 2 + src/calendar-menu-item.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++ src/calendar-menu-item.h | 59 ++++++++++++++++++++++++++++ src/datetime-service.c | 3 +- src/dbus-shared.h | 2 + src/indicator-datetime.c | 34 ++++++++++++++++ 6 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 src/calendar-menu-item.c create mode 100644 src/calendar-menu-item.h diff --git a/src/Makefile.am b/src/Makefile.am index fe3db2e..330f09d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,6 +2,8 @@ libexec_PROGRAMS = indicator-datetime-service indicator_datetime_service_SOURCES = \ + calendar-menu-item.c \ + calendar-menu-item.h \ datetime-service.c \ dbus-shared.h indicator_datetime_service_CFLAGS = \ diff --git a/src/calendar-menu-item.c b/src/calendar-menu-item.c new file mode 100644 index 0000000..c2ceec3 --- /dev/null +++ b/src/calendar-menu-item.c @@ -0,0 +1,100 @@ +/* +Calendar menu item dbusmenu "transport" for the corresponding IDO widget. + +Copyright 2010 Canonical Ltd. + +Authors: + David Barth + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include "calendar-menu-item.h" + +#include "dbus-shared.h" + +#include +#include +#include + +enum { + LAST_SIGNAL +}; + +/* static guint signals[LAST_SIGNAL] = { }; */ + +typedef struct _CalendarMenuItemPrivate CalendarMenuItemPrivate; +struct _CalendarMenuItemPrivate +{ + void * placeholder; +}; + +#define CALENDAR_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CALENDAR_MENU_ITEM_TYPE, CalendarMenuItemPrivate)) + +/* Prototypes */ +static void calendar_menu_item_class_init (CalendarMenuItemClass *klass); +static void calendar_menu_item_init (CalendarMenuItem *self); +static void calendar_menu_item_dispose (GObject *object); +static void calendar_menu_item_finalize (GObject *object); + +G_DEFINE_TYPE (CalendarMenuItem, calendar_menu_item, DBUSMENU_TYPE_MENUITEM); + +static void +calendar_menu_item_class_init (CalendarMenuItemClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (CalendarMenuItemPrivate)); + + object_class->dispose = calendar_menu_item_dispose; + object_class->finalize = calendar_menu_item_finalize; + + return; +} + +static void +calendar_menu_item_init (CalendarMenuItem *self) +{ + return; +} + +static void +calendar_menu_item_dispose (GObject *object) +{ + G_OBJECT_CLASS (calendar_menu_item_parent_class)->dispose (object); +} + +static void +calendar_menu_item_finalize (GObject *object) +{ + G_OBJECT_CLASS (calendar_menu_item_parent_class)->finalize (object); + + return; +} + +CalendarMenuItem * +calendar_menu_item_new () +{ + CalendarMenuItem * self = g_object_new(CALENDAR_MENU_ITEM_TYPE, NULL); + + dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_CALENDAR_MENUITEM_TYPE); + + return self; +} + diff --git a/src/calendar-menu-item.h b/src/calendar-menu-item.h new file mode 100644 index 0000000..7a56f96 --- /dev/null +++ b/src/calendar-menu-item.h @@ -0,0 +1,59 @@ +/* +Calendar menu item dbusmenu "transport" for the corresponding IDO widget. + +Copyright 2010 Canonical Ltd. + +Authors: + David Barth + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + +#ifndef __CALENDAR_MENU_ITEM_H__ +#define __CALENDAR_MENU_ITEM_H__ + +#include +#include + +#include + +G_BEGIN_DECLS + +#define CALENDAR_MENU_ITEM_TYPE (calendar_menu_item_get_type ()) +#define CALENDAR_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CALENDAR_MENU_ITEM_TYPE, CalendarMenuItem)) +#define CALENDAR_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CALENDAR_MENU_ITEM_TYPE, CalendarMenuItemClass)) +#define IS_CALENDAR_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CALENDAR_MENU_ITEM_TYPE)) +#define IS_CALENDAR_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CALENDAR_MENU_ITEM_TYPE)) +#define CALENDAR_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CALENDAR_MENU_ITEM_TYPE, CalendarMenuItemClass)) + +#define CALENDAR_MENU_ITEM_SIGNAL_ACTIVATE "activate" +#define CALENDAR_MENUITEM_PROP_TEXT "text" + +typedef struct _CalendarMenuItem CalendarMenuItem; +typedef struct _CalendarMenuItemClass CalendarMenuItemClass; + +struct _CalendarMenuItemClass { + DbusmenuMenuitemClass parent_class; +}; + +struct _CalendarMenuItem { + DbusmenuMenuitem parent; +}; + +GType calendar_menu_item_get_type (void); +CalendarMenuItem * calendar_menu_item_new (); + +G_END_DECLS + +#endif /* __CALENDAR_MENU_ITEM_H__ */ + diff --git a/src/datetime-service.c b/src/datetime-service.c index 2137065..5c7b76f 100644 --- a/src/datetime-service.c +++ b/src/datetime-service.c @@ -141,7 +141,8 @@ build_menus (DbusmenuMenuitem * root) if (calendar == NULL) { calendar = dbusmenu_menuitem_new(); - dbusmenu_menuitem_property_set (calendar, DBUSMENU_MENUITEM_PROP_LABEL, _("Open Calendar")); + /* dbusmenu_menuitem_property_set (calendar, DBUSMENU_MENUITEM_PROP_LABEL, _("Open Calendar")); */ + dbusmenu_menuitem_property_set (calendar, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_CALENDAR_MENUITEM_TYPE); /* insensitive until we check for available apps */ dbusmenu_menuitem_property_set_bool(calendar, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); g_signal_connect (G_OBJECT(calendar), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, diff --git a/src/dbus-shared.h b/src/dbus-shared.h index aa6d933..d943cb0 100644 --- a/src/dbus-shared.h +++ b/src/dbus-shared.h @@ -27,3 +27,5 @@ with this program. If not, see . #define MENU_OBJ "/org/ayatana/indicator/datetime/menu" +#define DBUSMENU_CALENDAR_MENUITEM_TYPE "x-canonical-calendar-item" + diff --git a/src/indicator-datetime.c b/src/indicator-datetime.c index 7034fb8..e1f6571 100644 --- a/src/indicator-datetime.c +++ b/src/indicator-datetime.c @@ -36,6 +36,7 @@ with this program. If not, see . /* DBusMenu */ #include +#include #include "dbus-shared.h" @@ -78,6 +79,8 @@ struct _IndicatorDatetimePrivate { IndicatorServiceManager * sm; DbusmenuGtkMenu * menu; + IdoCalendarMenuItem *ido_calendar; + GSettings * settings; }; @@ -882,6 +885,32 @@ generate_format_string (IndicatorDatetime * self) return g_strdup_printf(_("%s, %s"), date_string, time_string); } +static gboolean +new_calendar_item (DbusmenuMenuitem * newitem, + DbusmenuMenuitem * parent, + DbusmenuClient * client) +{ + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); + g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); + /* Note: not checking parent, it's reasonable for it to be NULL */ + + IndicatorObject *io = g_object_get_data (G_OBJECT (client), "indicator"); + if (io == NULL) { + g_warning ("found no indicator to attach the caledar to"); + return FALSE; + } + + IndicatorDatetime *self = INDICATOR_DATETIME(io); + self->priv = INDICATOR_DATETIME_GET_PRIVATE(self); + + IdoCalendarMenuItem *ido = IDO_CALENDAR_MENU_ITEM (ido_calendar_menu_item_new ()); + self->priv->ido_calendar = ido; + + dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, GTK_MENU_ITEM(ido), parent); + + return TRUE; +} + /* Grabs the label. Creates it if it doesn't exist already */ static GtkLabel * @@ -915,5 +944,10 @@ get_menu (IndicatorObject * io) self->priv->menu = dbusmenu_gtkmenu_new(SERVICE_NAME, MENU_OBJ); } + DbusmenuGtkClient *client = dbusmenu_gtkmenu_get_client(self->priv->menu); + g_object_set_data (G_OBJECT (client), "indicator", io); + + dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_CALENDAR_MENUITEM_TYPE, new_calendar_item); + return GTK_MENU(self->priv->menu); } -- cgit v1.2.3 From 2564f8526c2508be8847024f5aad6324db4fb256 Mon Sep 17 00:00:00 2001 From: David Barth Date: Thu, 22 Jul 2010 21:14:47 +0200 Subject: updates the label for changing settings --- src/datetime-service.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/datetime-service.c b/src/datetime-service.c index 5c7b76f..57dcc5e 100644 --- a/src/datetime-service.c +++ b/src/datetime-service.c @@ -141,7 +141,6 @@ build_menus (DbusmenuMenuitem * root) if (calendar == NULL) { calendar = dbusmenu_menuitem_new(); - /* dbusmenu_menuitem_property_set (calendar, DBUSMENU_MENUITEM_PROP_LABEL, _("Open Calendar")); */ dbusmenu_menuitem_property_set (calendar, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_CALENDAR_MENUITEM_TYPE); /* insensitive until we check for available apps */ dbusmenu_menuitem_property_set_bool(calendar, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); @@ -157,7 +156,7 @@ build_menus (DbusmenuMenuitem * root) dbusmenu_menuitem_child_append(root, separator); settings = dbusmenu_menuitem_new(); - dbusmenu_menuitem_property_set (settings, DBUSMENU_MENUITEM_PROP_LABEL, _("Set Time and Date...")); + dbusmenu_menuitem_property_set (settings, DBUSMENU_MENUITEM_PROP_LABEL, _("Time & Date Settings...")); /* insensitive until we check for available apps */ dbusmenu_menuitem_property_set_bool(settings, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); g_signal_connect(G_OBJECT(settings), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(activate_cb), "time-admin"); -- cgit v1.2.3 From d0f7670cc5c25a89c734ace8a442278b982c3caa Mon Sep 17 00:00:00 2001 From: David Barth Date: Thu, 22 Jul 2010 21:26:41 +0200 Subject: version 0.0.5 --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 2300d7f..726fe16 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ -AC_INIT(indicator-datetime, 0.0.4, ted@canonical.com) +AC_INIT(indicator-datetime, 0.0.5, ted@canonical.com) AC_COPYRIGHT([Copyright 2009,2010 Canonical]) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-datetime, 0.0.4) +AM_INIT_AUTOMAKE(indicator-datetime, 0.0.5) AM_MAINTAINER_MODE -- cgit v1.2.3 From 5c882ecc2474d48fbe7675b76cb23f9875905483 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 30 Aug 2010 22:11:36 -0500 Subject: Copyright stuffs --- src/datetime-interface.c | 21 +++++++++++++++++++++ src/datetime-interface.h | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/datetime-interface.c b/src/datetime-interface.c index 246fcb3..c58c5af 100644 --- a/src/datetime-interface.c +++ b/src/datetime-interface.c @@ -1,3 +1,24 @@ +/* +An indicator to time and date related information in the menubar. + +Copyright 2010 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + #ifdef HAVE_CONFIG_H #include "config.h" #endif diff --git a/src/datetime-interface.h b/src/datetime-interface.h index c422b2a..60ead1b 100644 --- a/src/datetime-interface.h +++ b/src/datetime-interface.h @@ -1,3 +1,24 @@ +/* +An indicator to time and date related information in the menubar. + +Copyright 2010 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + #ifndef __DATETIME_INTERFACE_H__ #define __DATETIME_INTERFACE_H__ -- cgit v1.2.3