/***********************************************************************
 * 
 *  Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; version 2.1
 *  of the License.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Library Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, Novell, Inc.
 * 
 *  To contact Novell about this file by physical or electronic mail, 
 *  you may find current contact information at www.novell.com.
 * 
 ***********************************************************************/


// -*- c++ -*-
#ifndef _DCOP_CASA_RW_H
#define _DCOP_CASA_RW_H
#include <qvbox.h>

                                                                              
enum KWalletResult
{       KWALLET_RESULT_OK,
                                                                              
        KWALLET_RESULT_CANNOT_OPEN_WALLET,
        KWALLET_RESULT_CANNOT_OPEN_FOLDER,
        KWALLET_RESULT_CANNOT_WRITE_ENTRY,
        KWALLET_RESULT_MALFORMED_XML,
        KWALLET_RESULT_CANNOT_CREATE_FOLDER,
        KWALLET_RESULT_CANNOT_CREATE_WALLET,
        KWALLET_RESULT_CANNOT_REMOVE_ENTRY,
        KWALLET_RESULT_UNKNOWN_ERROR
};




/**
 * Adding DCOP interface to an app.
 */


struct EnumSecretList
{
	char *walletName;
	char *folderName;
	int entryType;
        char *secretVal;
        struct EnumSecretList *next;
};


struct TryEnumSecretList
{
    char *name;
    struct TryEnumSecretList *next;
};




class DCOPCASAConnector : public QObject
{

 Q_OBJECT

public:
    DCOPCASAConnector();
    ~DCOPCASAConnector();

public slots:

//    void dump();
	int ReadAllWalletSecrets(struct EnumSecretList **);
//	int ReadWalletSecret(QString, QString, QString, QByteArray*);
//	int WriteWalletSecret(QString, QString, QString, QByteArray , int);
	int SetEntry(char *, char *, int , char *, char *, int);
        int SetMap(char *, char *, char *, char** , int );
        int RemoveEntry(char *,  char *, char *);


private:

	int ReadKey(Wallet*, QString, QByteArray*);

};

#endif