static void gcal_application_activate (GApplication *application) { GcalApplicationPrivate *priv; priv = GCAL_APPLICATION (application)->priv; if (priv->window != NULL) { gtk_window_present (GTK_WINDOW (priv->window)); } else { priv->window = gcal_window_new_with_view (GCAL_APPLICATION (application), g_settings_get_enum (priv->settings, "active-view")); g_settings_bind (priv->settings, "active-view", priv->window, "active-view", G_SETTINGS_BIND_SET | G_SETTINGS_BIND_GET); gtk_window_set_title (GTK_WINDOW (priv->window), _("Calendar")); gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (priv->window), TRUE); gtk_window_maximize (GTK_WINDOW (priv->window)); gtk_widget_show_all (priv->window); } }
static gboolean activate_result_cb (GcalShellSearchProvider *search_provider, GDBusMethodInvocation *invocation, gchar *result, gchar **terms, guint32 timestamp, GcalShellSearchProvider2 *skel) { GcalShellSearchProviderPrivate *priv; GApplication *application; GcalEvent *event; GDateTime *dtstart; priv = search_provider->priv; application = g_application_get_default (); event = gcal_manager_get_event_from_shell_search (priv->manager, result); dtstart = gcal_event_get_date_start (event); gcal_application_set_uuid (GCAL_APPLICATION (application), result); gcal_application_set_initial_date (GCAL_APPLICATION (application), dtstart); g_application_activate (application); g_clear_object (&event); return TRUE; }
static gboolean activate_result_cb (GcalShellSearchProvider *search_provider, GDBusMethodInvocation *invocation, gchar *result, gchar **terms, guint32 timestamp, GcalShellSearchProvider2 *skel) { GcalShellSearchProviderPrivate *priv; GApplication *application; GcalEventData *data; ECalComponentDateTime dtstart; priv = search_provider->priv; application = g_application_get_default (); data = gcal_manager_get_event_from_shell_search (priv->manager, result); e_cal_component_get_dtstart (data->event_component, &dtstart); if (dtstart.tzid != NULL) dtstart.value->zone = icaltimezone_get_builtin_timezone_from_tzid (dtstart.tzid); gcal_application_set_uuid (GCAL_APPLICATION (application), result); gcal_application_set_initial_date (GCAL_APPLICATION (application), dtstart.value); e_cal_component_free_datetime (&dtstart); g_application_activate (application); g_object_unref (data->event_component); g_free (data); return TRUE; }
static void gcal_application_startup (GApplication *app) { GcalApplicationPrivate *priv; GError *error; priv = GCAL_APPLICATION (app)->priv; G_APPLICATION_CLASS (gcal_application_parent_class)->startup (app); if (gtk_clutter_init (NULL, NULL) < 0) { g_error (_("Unable to initialize GtkClutter")); g_application_quit (app); } if (priv->provider == NULL) { priv->provider = gtk_css_provider_new (); gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), GTK_STYLE_PROVIDER (priv->provider), G_MAXUINT); error = NULL; gtk_css_provider_load_from_path (priv->provider, CSS_FILE, &error); if (error != NULL) g_warning ("Error loading stylesheet from file %s. %s", CSS_FILE, error->message); } priv->manager = gcal_manager_new (); gcal_application_set_app_menu (app); }
static void gcal_application_change_view (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GcalApplicationPrivate *priv; g_return_if_fail (GCAL_IS_APPLICATION (user_data)); priv = GCAL_APPLICATION (user_data)->priv; g_settings_set_value (priv->settings, "active-view", parameter); }
static void gcal_application_changed_view (GSettings *settings, gchar *key, gpointer user_data) { GcalApplicationPrivate *priv; g_return_if_fail (GCAL_IS_APPLICATION (user_data)); priv = GCAL_APPLICATION (user_data)->priv; g_simple_action_set_state (priv->view, g_settings_get_value (priv->settings, "active-view")); }
static void gcal_application_finalize (GObject *object) { GcalApplicationPrivate *priv; g_return_if_fail (GCAL_IS_APPLICATION (object)); priv = GCAL_APPLICATION (object)->priv; if (priv->settings != NULL) g_clear_object (&(priv->settings)); if (G_OBJECT_CLASS (gcal_application_parent_class)->finalize != NULL) G_OBJECT_CLASS (gcal_application_parent_class)->finalize (object); }
static void gcal_application_set_app_menu (GApplication *app) { GcalApplicationPrivate *priv; GMenu *app_menu; GMenu *view_as; GSimpleAction *about; GSimpleAction *quit; g_return_if_fail (GCAL_IS_APPLICATION (app)); priv = GCAL_APPLICATION (app)->priv; app_menu = g_menu_new (); priv->view = g_simple_action_new_stateful ( "view", G_VARIANT_TYPE_STRING, g_settings_get_value (priv->settings, "active-view")); g_signal_connect (priv->view, "activate", G_CALLBACK (gcal_application_change_view), app); g_action_map_add_action ( G_ACTION_MAP (app), G_ACTION (priv->view)); view_as = g_menu_new (); g_menu_append (view_as, _("Weeks"), "app.view::week"); g_menu_append (view_as, _("Months"), "app.view::month"); g_menu_append_section (app_menu, _("View as"), G_MENU_MODEL (view_as)); about = g_simple_action_new ("about", NULL); g_signal_connect (about, "activate", G_CALLBACK (gcal_application_show_about), app); g_action_map_add_action ( G_ACTION_MAP (app), G_ACTION (about)); g_menu_append (app_menu, _("About"), "app.about"); quit = g_simple_action_new ("quit", NULL); g_signal_connect (quit, "activate", G_CALLBACK (gcal_application_quit), app); g_action_map_add_action ( G_ACTION_MAP (app), G_ACTION (quit)); g_menu_append (app_menu, _("Quit"), "app.quit"); gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (app_menu)); }
static void gcal_application_show_about (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GcalApplication *app = GCAL_APPLICATION (user_data); char *copyright; GDateTime *date; int created_year = 2012; const gchar *authors[] = { "Erick Pérez Castellanos <*****@*****.**>", NULL }; const gchar *artists[] = { "Reda Lazri <*****@*****.**>", NULL }; date = g_date_time_new_now_local (); if (g_date_time_get_year (date) == created_year) { copyright = g_strdup_printf (_("Copyright \xC2\xA9 %Id " "The Calendar authors"), created_year); } else { copyright = g_strdup_printf (_("Copyright \xC2\xA9 %Id\xE2\x80\x93%Id " "The Calendar authors"), created_year, g_date_time_get_year (date)); } gtk_show_about_dialog (GTK_WINDOW (app->priv->window), "program-name", "Calendar", "version", VERSION, "copyright", copyright, "license-type", GTK_LICENSE_GPL_3_0, "authors", authors, "artists", artists, "logo-icon-name", "x-office-calendar", NULL); g_free (copyright); g_date_time_unref (date); }