Sophie

Sophie

distrib > Mandriva > 2011.0 > i586 > media > contrib-release-debug > by-pkgid > f90b8a36a33ce30f61d88e24153e9f71 > files > 94

desktop-data-model-debug-1.2.5-6mdv2011.0.i586.rpm

/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
#ifndef __HIPPO_PLATFORM_H__
#define __HIPPO_PLATFORM_H__

#include <engine/hippo-engine-basics.h>

G_BEGIN_DECLS

typedef struct {
    const char *name;         /* "windows" or "linux" */
    const char *distribution; /* Not used on Windows. "Fedora", "Ubuntu", etc, on Linux */
    const char *version;      /* May be NULL if we don't know anything better */
    const char *architecture; /* May be NULL for "unknown" */
} HippoPlatformInfo;

typedef enum {
    HIPPO_NETWORK_STATUS_UNKNOWN,
    HIPPO_NETWORK_STATUS_DOWN,
    HIPPO_NETWORK_STATUS_UP
} HippoNetworkStatus;

typedef struct _HippoPlatform      HippoPlatform;
typedef struct _HippoPlatformClass HippoPlatformClass;

#define HIPPO_TYPE_PLATFORM              (hippo_platform_get_type ())
#define HIPPO_PLATFORM(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_PLATFORM, HippoPlatform))
#define HIPPO_PLATFORM_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_PLATFORM, HippoPlatformClass))
#define HIPPO_IS_PLATFORM(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_PLATFORM))
#define HIPPO_IS_PLATFORM_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_PLATFORM))
#define HIPPO_PLATFORM_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_INTERFACE ((obj), HIPPO_TYPE_PLATFORM, HippoPlatformClass))

struct _HippoPlatformClass {
    GTypeInterface base_iface;

    void (* get_platform_info) (HippoPlatform     *platform,
                                HippoPlatformInfo *info);
    
    gboolean  (* read_login_cookie)   (HippoPlatform    *platform,
                                       HippoServerType   web_server_type,
                                       HippoBrowserKind *origin_browser_p,
                                       char            **username,
                                       char            **password);
    void      (* delete_login_cookie) (HippoPlatform  *platform);                                   
    
    const char* (* get_jabber_resource) (HippoPlatform  *platform);

    void      (* open_url)            (HippoPlatform   *platform,
                                       HippoBrowserKind browser,
                                       const char      *url);

    HippoNetworkStatus (* get_network_status) (HippoPlatform *platform);
    
    /* Preferences */
    char*     (* get_message_server)  (HippoPlatform  *platform,
                                       HippoServerType server_type);
    char*     (* get_web_server)      (HippoPlatform  *platform,
                                       HippoServerType server_type);
    gboolean  (* get_signin)          (HippoPlatform  *platform);
    
    void     (* set_message_server)  (HippoPlatform *platform, const char *value);
    void     (* set_web_server)      (HippoPlatform *platform, const char *value);
    void     (* set_signin)          (HippoPlatform *platform, gboolean    value);

    /* Create a suitable filename for storing the cache via SQLite; it should be
     * machine-specific or live in a location that is visible only to this machine
     * and not network mounted, since SQLite databases can't reliably be shared
     * between machines. */
    char *   (* make_cache_filename) (HippoPlatform  *platform,
                                      const char     *server,
                                      const char     *user_id);

    HippoInstanceType (* get_instance_type) (HippoPlatform *platform);
};

GType            hippo_platform_get_type               (void) G_GNUC_CONST;

void             hippo_platform_get_platform_info      (HippoPlatform     *platform,
                                                        HippoPlatformInfo *info);

gboolean         hippo_platform_read_login_cookie      (HippoPlatform    *platform,
                                                        HippoServerType   server_type,
                                                        HippoBrowserKind *origin_browser_p,
                                                        char            **username_p,
                                                        char            **password_p);
void             hippo_platform_delete_login_cookie    (HippoPlatform *platform);

const char*      hippo_platform_get_jabber_resource    (HippoPlatform *platform); 

void             hippo_platform_open_url               (HippoPlatform   *platform,
                                                        HippoBrowserKind browser,
                                                        const char      *url);

HippoNetworkStatus hippo_platform_get_network_status (HippoPlatform *platform);

void               hippo_platform_emit_network_status_changed (HippoPlatform *platform,
                                                               HippoNetworkStatus status);
void               hippo_platform_emit_cookies_maybe_changed  (HippoPlatform *platform);

/* Preferences */
HippoInstanceType hippo_platform_get_instance_type (HippoPlatform *platform);

char*            hippo_platform_get_message_server     (HippoPlatform  *platform,
                                                        HippoServerType server_type); 
char*            hippo_platform_get_web_server         (HippoPlatform  *platform,
                                                        HippoServerType server_type); 
gboolean         hippo_platform_get_signin             (HippoPlatform *platform); 

void             hippo_platform_set_message_server     (HippoPlatform  *platform,
                                                        const char     *value); 
void             hippo_platform_set_web_server         (HippoPlatform  *platform,
                                                        const char     *value); 
void             hippo_platform_set_signin             (HippoPlatform  *platform,
                                                        gboolean        value);

char *           hippo_platform_make_cache_filename    (HippoPlatform  *platform,
                                                        const char     *server,
                                                        const char     *user_id);

/* Convenience wrappers on get_server stuff that parse the host/port */
void             hippo_platform_get_message_host_port  (HippoPlatform  *platform,
                                                        HippoServerType server_type,
                                                        char          **host_p,
                                                        int            *port_p);
void             hippo_platform_get_web_host_port      (HippoPlatform  *platform,
                                                        HippoServerType server_type,
                                                        char          **host_p,
                                                        int            *port_p);

G_END_DECLS

#endif /* __HIPPO_PLATFORM_H__ */