diff -r 1a2a00e78665 -r 7feec50967db contentstorage/caclient/s60/inc/caclientnotifierproxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentstorage/caclient/s60/inc/caclientnotifierproxy.h Tue Mar 23 23:17:02 2010 +0200 @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * + */ + +#ifndef CACLIENTNOTIFIERPROXY_H +#define CACLIENTNOTIFIERPROXY_H + +#include +#include +#include "cadef.h" + +#include "caclient_global.h" +#include "cadefs.h" +#include "canotifier_p.h" +#include "caclientnotifiersession.h" + +class CaEntry; +class CaNotifierFilter; + +/** + * IDataObserver + * + */ +class IDataObserver +{ +public: + /** + * Method invoked when entry is changed. + * @param entryId entry id. + * @param changeType change type. + */ + virtual void entryChanged(TInt entryId, + TChangeType changeType) const = 0; + + /** + * Method invoked when entry is changed. + * @param entry entry. + * @param changeType change type. + */ + virtual void entryChanged(const CCaInnerEntry &entry, + TChangeType changeType) const = 0; + + /** + * Method invoked when entry was changed. + * @param entryId entry id. + */ + virtual void entryTouched(TInt id) const = 0; + + /** + * Method invoked when entry was changed. + * @param groupId group id. + */ + virtual void groupContentChanged(TInt groupId) const = 0; +}; + +class CACLIENT_EXPORT CaClientNotifierProxy: public QObject, + public IDataObserver +{ +Q_OBJECT + +public: + + /** + * Constructor. + * @param parent pointer to parent. Defaults to NULL. + */ + explicit CaClientNotifierProxy(QObject *parent = 0); + + /** + * Destructor. + */ + ~CaClientNotifierProxy(); + + /** + * Method invoked when entry is changed. + * @param entryId entry id. + * @param changeType change type. + */ + virtual void entryChanged(TInt entryId, TChangeType changeType) const; + + /** + * Method invoked when entry is changed. + * @param entry entry. + * @param changeType change type. + */ + virtual void entryChanged(const CCaInnerEntry &entry, + TChangeType changeType) const; + + /** + * Method invoked when entry was changed. + * @param entryId entry id. + */ + virtual void entryTouched(TInt entryId) const; + + /** + * Method invoked when entry was changed. + * @param groupId group id. + */ + virtual void groupContentChanged(TInt groupId) const; + + /** + * Method for registering notifier + * + * @param notifierFilter notifierFilter used to register notifier. + * @param notifierType type of notifier + * @return error code + */ + int registerNotifier( + const CaNotifierFilter *notifierFilter, + CaNotifierPrivate::NotifierType notifierType, + const CaClientNotifierProxy *notifierProxy); + + /** + * Method for unregistering notifier. + * + * @param notifierFilter notifierFilter used to unregister notifier. + * @param notifierType type of notifier + */ + void unregisterNotifier( + const CaNotifierFilter ¬ifierFilter, + CaNotifierPrivate::NotifierType notifierType); + +signals: + + void signalEntryChanged(int entryId, ChangeType changeType) const; + void signalEntryChanged(const CaEntry &entry, + ChangeType changeType) const; + void signalEntryTouched(int id) const; + void signalGroupContentChanged(int groupId) const; + +private: + /** + * Method for finding a session with free slots. + * + * @return a pointer to a session. + */ + RCaClientNotifierSession *findSession(); + + /** + * Method for finding a position of a session with a subsession + * associated with given parameters. + * + * @param notifierFilter notifierFilter used to unregister notifier. + * @param innerNotifierType inner type of notifier + * @return a position of a pointer to a session, + * KErrNotFound when not found. + */ + TInt findSession( + const CaNotifierFilter ¬ifierFilter, + CCaInnerNotifierFilter::TNotifierType innerNotifierType) const; + + /** + * Method for creating a new session. + * + * @param[out] error error code. + * @return a pointer to a newly created session, NULL in case of error. + */ + RCaClientNotifierSession *newSession(TInt &error); + +private: + + // Sessions to server. + RArray mSessions; + + // Mutex to serialize access to mSessions. + QMutex mMutex; + + Q_DISABLE_COPY(CaClientNotifierProxy) + + friend class CaClientProxy; + friend class CaClientObserver; + +}; + +#endif //_CACLIENTNOTIFIERPROXY_H