#ifndef __SHELL_ACTIVITIES_H__
#define __SHELL_ACTIVITIES_H__

#include <glib-object.h>

G_BEGIN_DECLS

typedef struct _ShellActivities      ShellActivities;
typedef struct _ShellActivitiesClass ShellActivitiesClass;

#define SHELL_TYPE_ACTIVITIES              (shell_activities_get_type ())
#define SHELL_ACTIVITIES(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_ACTIVITIES, ShellActivities))
#define SHELL_ACTIVITIES_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_ACTIVITIES, ShellActivitiesClass))
#define SHELL_IS_ACTIVITIES(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_ACTIVITIES))
#define SHELL_IS_ACTIVITIES_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_ACTIVITIES))
#define SHELL_ACTIVITIES_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_ACTIVITIES, ShellActivitiesClass))

struct _ShellActivitiesClass
{
  GObjectClass parent_class;
};

struct ShellActivity {
  int id;
  char *name;
  gboolean running;
};

typedef struct ShellActivity ShellActivity;

#define SHELL_TYPE_ACTIVITY	(shell_activity_get_type ())
GType         shell_activity_get_type    (void) G_GNUC_CONST;

GType shell_activities_get_type (void) G_GNUC_CONST;

ShellActivities *shell_activities_new (void);

int shell_activities_get_current (ShellActivities *activities,
                                  guint32          timestamp);

gboolean shell_activities_set_current (ShellActivities *activities,
                                       int              activity,
                                       guint32          timestamp);

int shell_activities_create (ShellActivities *activities,
                             char            *name);

gboolean shell_activities_rename (ShellActivities *activities,
                                  int              id,
                                  const char      *name);

const char *shell_activities_get_name (ShellActivities *activities,
                                       int              id);

gboolean shell_activities_associate_workspace (ShellActivities *activities,
                                               int              activity_id,
                                               int              workspace_index);

int shell_activities_get_from_workspace (ShellActivities *activities,
                                         int              workspace_index);

GSList *shell_activities_get_list (ShellActivities *activities);

G_END_DECLS

#endif /* __SHELL_ACTIVITIES_H__ */