wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUITlsHolder.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUITlsHolder.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,139 @@
+/*
+* Copyright (c) 2003 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:  Tls holder used to check if resource file is loaded or not
+*
+*/
+
+#ifndef CWVSETTINGSUITLSHOLDER_H
+#define CWVSETTINGSUITLSHOLDER_H
+
+//  INCLUDES
+#include <E32Base.h>
+
+
+// FORWARD DECLARATIONS
+
+
+// CLASS DECLARATION
+
+/**
+*  TLS holder used to check if resource file is loaded or not
+*  and if it can be unloaded or not.
+*
+*  @lib WVServiceSettingsUi.dll
+*  @since 2.1
+*/
+NONSHARABLE_CLASS( CWVSettingsUITlsHolder ) : public CBase
+    {
+public:  // Constructors and destructor
+
+    /**
+     * Singleton pointer retrieve method.
+     */
+    static CWVSettingsUITlsHolder* InstanceL();
+
+
+    /**
+     * Trys to delete all owned singletons and
+     * also this holder object.
+     * If NULLing the TLS pointer, pointing to this
+     * holder object fails, doesn't delete holder, only
+     * owned singletons. After that this TLS holder can
+     * be still reused, by issuing again first InstanceL()
+     * and to the retrived pointer one of existing sinleton
+     * retrieve requests,
+     *
+     * NOTE!! After calling DestroySingletonsAndHolder()
+     * all singleton object pointers must be retrived
+     * again before using them!!
+     *
+     * @since 2.1
+     * @return If fully succesfull  KErrNone. Else one of
+     * system wide errorcodes.
+     */
+    static TInt DestroySingletonsAndHolder();
+
+
+public: // New functions
+
+    /**
+    * Tells if the resource is loaded
+    * @since 2.1
+    */
+    TBool ResourceIsLoaded() const;
+
+    /**
+    * Adds one to the reference count of the resource file
+    * @since 2.1
+    */
+    void ResourceLoaded();
+
+    /**
+    * Removes one to the reference count of the resource file
+    * @since 2.1
+    */
+    void ResourceUnLoaded();
+
+    TBool OkToUnloadResource() const;
+
+private: //new functions
+
+
+    /**
+     * Deletes owned singleton objects.
+     *
+     * @since 2.1
+     */
+    void DoReleaseSingletons();
+
+private:
+
+    /**
+    * Two-phased constructor.
+    * Leaves created object on the cleanupstack.
+    * @since 2.1
+    */
+    static CWVSettingsUITlsHolder* NewLC();
+
+
+    /**
+    * C++ default constructor.
+    */
+    CWVSettingsUITlsHolder();
+
+
+    /**
+    * Protected destructor.
+    *
+    * Singleton holder can be only destroyed trough
+    * DestroySingletonsAndHolder() method.
+    */
+    virtual ~CWVSettingsUITlsHolder();
+
+
+private:    // Data
+
+    ///Publish level manager singleton, owned
+    TBool iResourceLoaded;
+
+    ///Spare member for future extensions
+    TAny* iReserved;
+
+    TInt iResourceReferenceCount;
+
+    };
+
+#endif      // CWVSETTINGSUITLSHOLDER_H
+
+// End of File