data/publisherif/inc/transaction.h
changeset 0 b856a9924bbc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/publisherif/inc/transaction.h	Wed Jun 02 13:22:05 2010 +0300
@@ -0,0 +1,286 @@
+/*
+* Copyright (c) {Year(s)} {Copyright owner}.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* {Name} {Company} ? Initial contribution
+*
+* Contributors:
+* {Name} {Company} ? {{Description of contribution}}
+*
+* Description:
+* {{Description of the file}}
+*
+*/
+
+
+#ifndef __TRANSACTION_H__
+#define __TRANSACTION_H__
+
+// System includes 
+#include <e32base.h>
+
+// User includes
+
+// Forward declarations
+
+// Constants
+
+// CTransactionItem Class declaration
+NONSHARABLE_CLASS( CTransactionItem ) : public CBase
+    {
+public:
+    // constrcutor and destructor
+
+    /**
+     * C++ constructor
+     */
+    CTransactionItem( const TDesC8& aElementId );        
+    
+    /**
+     * Destructor
+     */
+    ~CTransactionItem();
+
+public:
+    // new functions
+    
+    /**
+     * Returns this transaction's element id.
+     * 
+     * @return Transaction element id.
+     */
+    const TDesC8& ElementId() const;
+    
+    /**
+     * Returns this transaction's content type.
+     * To be overriden by sub-classes.
+     * 
+     * @return Transaction element type. 
+     */
+    virtual const TDesC8& Type() const = 0;
+    
+protected:
+    // data
+    
+    /** Transaction's element id, owned */
+    HBufC8* iElementId;
+    };
+
+// CImageTransactionItem Class declaration
+NONSHARABLE_CLASS( CImageTransactionItem ) : public CTransactionItem
+    {
+public:
+    // constructors and destructor
+
+    /**
+     * C++ constructor
+     */
+    CImageTransactionItem( 
+        const TDesC8& aElementId, 
+        TInt aImageHandle, 
+        TInt aMaskHandle );
+    
+    /**
+     * C++ constructor
+     */    
+    CImageTransactionItem( 
+        const TDesC8& aElementId, 
+        const TDesC& aPath );
+    
+    /**
+     * Destructor
+     */    
+    ~CImageTransactionItem();
+    
+public:
+    // from CTransactionItem
+    
+    /**
+     * @see CTransactionItem
+     */
+    const TDesC8& Type() const;
+    
+public:
+    // new functions
+    
+    /** 
+     * Gets transaction's image handle.
+     * Notice that path and handles are mutually exclusice in one transaction.
+     * 
+     * @return Image handle
+     */
+    TInt ImageHandle() const;
+
+    /** 
+     * Gets transaction's mask handle.
+     * Notice that path and handles are mutually exclusice in one transaction.
+     * 
+     * @return Mask handle
+     */    
+    TInt MaskHandle() const;
+
+    /** 
+     * Gets transaction's path. 
+     * Notice that path and handles are mutually exclusice in one transaction.
+     * 
+     * @return Path
+     */        
+    const TDesC& Path() const;
+    
+private:
+    // data
+            
+    /** Transaction's data, caller must maintain the bitmap alive */
+    TInt iImageHandle;
+    /** Transaction's data, caller must maintain the bitmap alive */
+    TInt iMaskHandle;
+    /** Transaction's data, owned */
+    HBufC* iPath;
+    };
+
+// CTextTransactionItem Class declaration
+NONSHARABLE_CLASS( CTextTransactionItem ) : public CTransactionItem 
+    {
+public:    
+    // constructors and destructor
+
+    /**
+     * C++ constructor
+     */
+    CTextTransactionItem( 
+        const TDesC8& aElementId, 
+        const TDesC& aText );
+    
+    /**
+     * Destructor
+     */        
+    ~CTextTransactionItem();
+    
+public:
+    // from CTransactionItem
+
+    /**
+     * @see CTransactionItem
+     */
+    const TDesC8& Type() const;
+
+public:
+    // new functions
+    
+    /**
+     * Gets transaction's text
+     * 
+     * @return Text
+     */
+    const TDesC& Text() const;
+    
+private:
+    // data
+    
+    /** Transaction's data, owned */
+    HBufC* iText;
+    };
+
+// CDataTransactionItem Class declaration
+NONSHARABLE_CLASS( CDataTransactionItem ) : public CTransactionItem 
+    {
+public:    
+    // constructors and destructor
+
+    /**
+     * C++ constructor
+     */
+    CDataTransactionItem( 
+        const TDesC8& aElementId, 
+        const TDesC8& aData );
+    
+    /**
+     * Destructor
+     */        
+    ~CDataTransactionItem();
+    
+public:
+    // from CTransactionItem
+
+    /**
+     * @see CTransactionItem
+     */
+    const TDesC8& Type() const;
+
+public:
+    // new functions
+    
+    /**
+     * Gets transaction's data
+     * 
+     * @return Data
+     */
+    const TDesC8& Data() const;
+    
+private:
+    // data
+    
+    /** Transaction's data, owned */
+    HBufC8* iData;
+    };
+
+
+// CTransaction Class declaration
+NONSHARABLE_CLASS( CTransaction ) : public CBase
+    {
+public:
+    // constructors and destructor
+
+    /**
+     * C++ constructor
+     */
+    CTransaction( 
+        const TDesC& aWidgetId ); 
+    
+    /**
+     * Destructor
+     */            
+    ~CTransaction();
+
+public:
+    // new functions
+    
+    /**
+     * Equals operator
+     * 
+     * @param aWidgetId Widget id to use in comparision
+     * @return ETrue if this transaction matches to aWidgetId, EFalse otherwise
+     */
+    TBool operator== ( const TDesC& aWidgetId ) const;
+
+    /**
+     * Appends transaction item to transaction items array.
+     * 
+     * @param aItem Transaction item. This transaction takes item's ownership.
+     */
+    void AppendL( CTransactionItem* aItem );
+
+    /**
+     * Gets transaction items from this transaction.
+     * 
+     * @return Transaction items. 
+     */    
+    const RPointerArray< CTransactionItem >& Items() const;
+    
+private:    
+    // data
+    
+    /** Transaction items, owned */
+    mutable RPointerArray< CTransactionItem > iItems;
+    /** Transaction's id, same as widget id */
+    const TDesC& iWidgetId;    
+    };
+
+#endif // __TRANSACTION_H__
+
+// End of file