#ifndef __kaddressbook_idl__
#define __kaddressbook_idl__
#include <openparts.idl>
module KAddressBook
{
enum EntityType { EntityTypeEntity, EntityTypeGroup };
//forward references
interface AddressBook;
interface Group;
interface Entity;
interface Field;
typedef sequence<wstring> StringList;
typedef sequence<Field> FieldList;
typedef wstring Key;
typedef sequence<char> Data;
interface Field
{
Key key ();
wstring type ();
wstring subType ();
Data value ();
void setKey (in Key k);
void setType (in wstring t);
void setSubType (in wstring t);
void setValue (in Data v);
};
interface Entity : KOM::Component
{
Key id ();
wstring name ();
EntityType type ();
Field field (in wstring n);
FieldList fieldList ();
bool rename (in wstring n);
bool add (in Field f);
bool remove (in Field f);
bool removeByName (in wstring n);
};
interface Group : Entity
{
wstring name ();
StringList members ();
void addEntity (in Entity e);
void addGroup (in Group g);
void removeEntity (in Entity e);
void removeGroup (in Group g);
};
interface AddressBook
{
Entity entity (in Key k);
Group group (in Key k);
bool addEntity (in Entity e);
bool addGroup (in Group g);
bool addByKey (in Key k);
bool remove (in Key k);
bool replaceEntity (in Entity e);
bool replaceGroup (in Group g);
};
};
#endif