summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-progress-persistence-handler.c92
1 files changed, 16 insertions, 76 deletions
diff --git a/src/nautilus-progress-persistence-handler.c b/src/nautilus-progress-persistence-handler.c
index 9f07909f5..774d392e0 100644
--- a/src/nautilus-progress-persistence-handler.c
+++ b/src/nautilus-progress-persistence-handler.c
@@ -1,5 +1,5 @@
/*
- * nautilus-progress-persistence-handler.c: file operation progress systray icon and notification handler.
+ * nautilus-progress-persistence-handler.c: file operation progress notification handler.
*
* Copyright (C) 2007, 2011, 2015 Red Hat, Inc.
*
@@ -39,8 +39,6 @@ struct _NautilusProgressPersistenceHandlerPriv {
NautilusApplication *app;
guint active_infos;
-
- GtkStatusIcon *status_icon;
};
G_DEFINE_TYPE (NautilusProgressPersistenceHandler, nautilus_progress_persistence_handler, G_TYPE_OBJECT);
@@ -49,16 +47,16 @@ G_DEFINE_TYPE (NautilusProgressPersistenceHandler, nautilus_progress_persistence
* - file operations that end within two seconds do not get notified in any way
* - if no file operations are running, and one passes the two seconds
* timeout, a window is displayed with the progress
- * - if the window is closed, we show a resident notification, or a status icon, depending on
+ * - if the window is closed, we show a resident notification, depending on
* the capabilities of the notification daemon running in the session
* - if some file operations are running, and another one passes the two seconds
* timeout, and the window is showing, we add it to the window directly
* - in the same case, but when the window is not showing, we update the resident
- * notification, changing its message, or the status icon's tooltip
+ * notification, changing its message
* - when one file operation finishes, if it's not the last one, we only update the
- * resident notification's message, or the status icon's tooltip
+ * resident notification's message
* - in the same case, if it's the last one, we close the resident notification,
- * or the status icon, and trigger a transient one
+ * and trigger a transient one
* - in the same case, but the window was showing, we just hide the window
*/
@@ -91,41 +89,15 @@ static GActionEntry progress_persistence_entries[] = {
};
static void
-status_icon_activate_cb (GtkStatusIcon *icon,
- NautilusProgressPersistenceHandler *self)
-{
- gtk_status_icon_set_visible (icon, FALSE);
- show_file_transfers (self);
-}
-
-static void
-progress_persistence_handler_ensure_status_icon (NautilusProgressPersistenceHandler *self)
-{
- GIcon *icon;
- GtkStatusIcon *status_icon;
-
- if (self->priv->status_icon != NULL) {
- return;
- }
-
- icon = g_themed_icon_new_with_default_fallbacks ("system-file-manager-symbolic");
- status_icon = gtk_status_icon_new_from_gicon (icon);
- g_signal_connect (status_icon, "activate",
- (GCallback) status_icon_activate_cb,
- self);
-
- gtk_status_icon_set_visible (status_icon, FALSE);
- g_object_unref (icon);
-
- self->priv->status_icon = status_icon;
-}
-
-static void
progress_persistence_handler_update_notification (NautilusProgressPersistenceHandler *self)
{
GNotification *notification;
gchar *body;
+ if (!server_has_persistence ()) {
+ return;
+ }
+
notification = g_notification_new (_("File Operations"));
g_notification_set_default_action (notification, "app.show-file-transfers");
g_notification_add_button (notification, _("Show Details"),
@@ -144,23 +116,6 @@ progress_persistence_handler_update_notification (NautilusProgressPersistenceHan
g_free (body);
}
-static void
-progress_persistence_handler_update_status_icon (NautilusProgressPersistenceHandler *self)
-{
- gchar *tooltip;
-
- progress_persistence_handler_ensure_status_icon (self);
-
- tooltip = g_strdup_printf (ngettext ("%'d file operation active",
- "%'d file operations active",
- self->priv->active_infos),
- self->priv->active_infos);
- gtk_status_icon_set_tooltip_text (self->priv->status_icon, tooltip);
- g_free (tooltip);
-
- gtk_status_icon_set_visible (self->priv->status_icon, TRUE);
-}
-
void
nautilus_progress_persistence_handler_make_persistent (NautilusProgressPersistenceHandler *self)
{
@@ -169,30 +124,15 @@ nautilus_progress_persistence_handler_make_persistent (NautilusProgressPersisten
windows = nautilus_application_get_windows (self->priv->app);
if (self->priv->active_infos > 0 &&
g_list_length (windows) == 0) {
- if (server_has_persistence ()) {
- progress_persistence_handler_update_notification (self);
- } else {
- progress_persistence_handler_update_status_icon (self);
- }
+ progress_persistence_handler_update_notification (self);
}
}
static void
-progress_persistence_handler_update_notification_or_status (NautilusProgressPersistenceHandler *self)
-{
- if (server_has_persistence ()) {
- progress_persistence_handler_update_notification (self);
- } else {
- progress_persistence_handler_update_status_icon (self);
- }
-}
-
-static void
progress_persistence_handler_show_complete_notification (NautilusProgressPersistenceHandler *self)
{
GNotification *complete_notification;
- /* don't display the notification if we'd be using a status icon */
if (!server_has_persistence ()) {
return;
}
@@ -208,10 +148,10 @@ progress_persistence_handler_show_complete_notification (NautilusProgressPersist
}
static void
-progress_persistence_handler_hide_notification_or_status (NautilusProgressPersistenceHandler *self)
+progress_persistence_handler_hide_notification (NautilusProgressPersistenceHandler *self)
{
- if (self->priv->status_icon != NULL) {
- gtk_status_icon_set_visible (self->priv->status_icon, FALSE);
+ if (!server_has_persistence ()) {
+ return;
}
nautilus_application_withdraw_notification (self->priv->app,
@@ -229,10 +169,10 @@ progress_info_finished_cb (NautilusProgressInfo *info,
windows = nautilus_application_get_windows (self->priv->app);
if (self->priv->active_infos > 0) {
if (g_list_length (windows) == 0) {
- progress_persistence_handler_update_notification_or_status (self);
+ progress_persistence_handler_update_notification (self);
}
} else if (g_list_length (windows) == 0) {
- progress_persistence_handler_hide_notification_or_status (self);
+ progress_persistence_handler_hide_notification (self);
progress_persistence_handler_show_complete_notification (self);
}
@@ -250,7 +190,7 @@ handle_new_progress_info (NautilusProgressPersistenceHandler *self,
windows = nautilus_application_get_windows (self->priv->app);
if (g_list_length (windows) == 0) {
- progress_persistence_handler_update_notification_or_status (self);
+ progress_persistence_handler_update_notification (self);
}
}