From b106b13525048195d99bcbde31e0e535972cbab4 Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Sat, 23 Jun 2001 06:46:13 +0000 Subject: Implemented an Evolution::Activity interface for keeping track of background tasks. The Activity interface is added to the shell, and the status of the various tasks is now displayed in a task bar widget at the bottom of the EShellView. I also implemented a simple test component to test all this stuff. svn path=/trunk/; revision=10434 --- shell/Evolution-Activity.idl | 108 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 shell/Evolution-Activity.idl (limited to 'shell/Evolution-Activity.idl') diff --git a/shell/Evolution-Activity.idl b/shell/Evolution-Activity.idl new file mode 100644 index 0000000000..a2296d568b --- /dev/null +++ b/shell/Evolution-Activity.idl @@ -0,0 +1,108 @@ +/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Activity management for Evolution. + * + * Authors: + * Ettore Perazzoli + * + * Copyright (C) 2000, 2001 Ximian, Inc. + */ + +module GNOME { +module Evolution { + +interface Activity : Bonobo::Unknown { + typedef long ActivityID; + + enum DialogType { + DIALOG_TYPE_NONE, + DIALOG_TYPE_MESSAGE, + DIALOG_TYPE_WARNING, + DIALOG_TYPE_INPUT, + DIALOG_TYPE_ERROR + }; + + enum DialogAction { + DIALOG_ACTION_DISPLAY, + DIALOG_ACTION_POSTPONE + }; + + exception InvalidIcon {}; + exception IdNotFound {}; + + /* Events propagated through the listener: + + - "Clicked": The status widget has been clicked on. + + - "DisplayProgress": Display a nice progress dialog for this + operation. + + - "DisplayDialog": The dialog that the component has requested + through ::requestDialog() can now be safely displayed. + + - "Cancelled": The user wants the operation to be cancelled. + */ + + /** + * operationStarted: + * @component_id: ID of the component starting the operation. + * @information: Informative string about the operation being performed. + * @cancellable: Whether this operation should be cancellable by + * the user from the shell view. + * @event_listener: Listener which the events for the activity + * widget will be passed to. + * @activity_id: A unique ID for the activity, to be used to update the + * status of the operation. + * @suggest_display: Whether displaying the dialog might be a nice idea. + */ + void operationStarted (in string component_id, + in AnimatedIcon icon, + in string information, + in boolean cancellable, + in Bonobo::Listener event_listener, + out ActivityID activity_id, + out boolean suggest_display) + raises (InvalidIcon); + + /** + * operationProgressing: + * @activity: The unique ID for the activity whose status we want to update. + * @information: New informative string. If empty, the informative string + * isn't changed. + * @progress: A float from 0.0 to 1.0 indicating the status of completion. + * + * Update the status of the specified @activity. + */ + void operationProgressing (in ActivityID activity, + in string information, + in float progress) + raises (IdNotFound); + + /** + * operationFinished: + * @activity: The unique ID for the activity that has been completed. + * + * Report that the specified @activity has been completed. After this + * method is invoked, @activity is not considered to be a valid ID + * anymore. + */ + void operationFinished (in ActivityID activity); + + /** + * requestDialog: + * + * Inform the shell that the specified @activity requires user input + * from a dialog. The returned value specifies whether the shell wants + * the dialog to be shown now (%DIALOG_ACTION_DISPLAY) or postponed + * (%DIALOG_ACTION_POSTPONE). If the return value is + * %DIALOG_ACTION_POSTPONE, the component should wait for the + * "DisplayDialog" event before proceeding further. In that case, the + * shell will flash the label related to this activity, and emit + * "DisplayDialog" through the event source when the user clicks on it. + */ + DialogAction requestDialog (in ActivityID activity, + in DialogType dialog_type); +}; + +}; +}; -- cgit v1.2.3