#ifndef _AD_GK_H_
#define _AD_GK_H_
#include <stdio.h>
#include <stdint.h>
#include <glib.h>
#include <gnome-keyring.h>

#define SUCCESS 0
#define FAILURE -1

#define KEY_SIZE 128
#define VAL_SIZE 128

typedef struct _KeyringInfo
{
    int32_t lockOnIdle;
    uint32_t lockTimeout;
    uint32_t mTime;
    uint32_t cTime;
    int32_t isLocked;
}KeyringInfo;

typedef struct _ItemInfo
{
    int32_t itemType;
    char *displayName;
    char *secret;
    uint32_t mTime;
    uint32_t cTime;    
}ItemInfo;

typedef struct _Attribute
{
    uint32_t type;
    char *key;
    char *value;    
}Attribute;


int GetKeyrings(GList **retList);
int GetKeyringInfo(char *keyring,KeyringInfo *info);
int GetItems(char *keyring, GList **itemList);
int GetItemInfo(char *keyring, int itemId, ItemInfo *info);
int GetAttributeList(char *keyring, int itemId, GList **);
int FreeAttributeList(GList *attrList);

typedef struct _GetKeyringsCbData
{
    GList **keyringList;    
    GMainLoop *loop;
}GetKeyringsCbData;

typedef struct _GetKeyringInfoCbData
{
    KeyringInfo *info;
    GMainLoop *loop;
}GetKeyringInfoCbData;

typedef struct _GetItemsCbData
{
    GList **itemList;
    GMainLoop *loop;
}GetItemsCbData;

typedef struct _GetItemInfoCbData
{
    ItemInfo *info;
    GMainLoop *loop;
}GetItemInfoCbData;

typedef struct _GetAttributeListCbData
{
    GList **attrList;
    GMainLoop *loop;
}GetAttributeListCbData;
#endif