phonebookui/Phonebook2/inc/TPbk2DestructionIndicator.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/inc/TPbk2DestructionIndicator.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2005-2007 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:  Phonebook 2 smart destruction indicator.
+*
+*/
+
+
+#ifndef TPBK2DESTRUCTIONINDICATOR_H
+#define TPBK2DESTRUCTIONINDICATOR_H
+
+// CLASS DECLARATION
+
+/**
+ * Phonebook 2 smart destruction indicator.
+ * Responsible for reseting the destruction indicator pointer in case
+ * the destruction does not happen. This class is meant to be used
+ * in classes that launch waiting dialogs. If application is killed
+ * during the dialog the dialog code will return and run the code of the
+ * deleted object. In that case the deleted object has to perform some checks
+ * to find out if it is deleted. This class is used in that process to
+ * help to perform that task safely.
+ */
+class TPbk2DestructionIndicator
+    {
+    public: // Construction and destruction
+
+        /**
+         * Constructor.
+         *
+         * @param aDestructionIndicator     Pointer to a destruction
+         *                                  indicator.
+         * @param aDestroyedPtr             Reference to a pointer pointing
+         *                                  to given destruction indicator.
+         */
+        TPbk2DestructionIndicator(
+                TBool* aDestructionIndicator,
+                TBool*& aDestroyedPtr );
+
+        /**
+         * Destructor.
+         */
+        ~TPbk2DestructionIndicator();
+
+    private: // Data
+        /// Ref: Destruction indicator
+        TBool* iDestructionIndicator;
+        /// Ref: Points to the destruction indicator
+        TBool*& iDestroyedPtr;
+    };
+
+// INLINE IMPLEMENTATION
+
+// --------------------------------------------------------------------------
+// TPbk2DestructionIndicator::TPbk2DestructionIndicator
+// --------------------------------------------------------------------------
+//
+inline TPbk2DestructionIndicator::TPbk2DestructionIndicator
+        ( TBool* aDestructionIndicator, TBool*& aDestroyedPtr ) :
+            iDestructionIndicator( aDestructionIndicator ),
+            iDestroyedPtr( aDestroyedPtr )
+    {
+    }
+
+// --------------------------------------------------------------------------
+// TPbk2DestructionIndicator::~TPbk2DestructionIndicator
+// --------------------------------------------------------------------------
+//
+inline TPbk2DestructionIndicator::~TPbk2DestructionIndicator()
+    {
+    if ( !*iDestructionIndicator )
+        {
+        // Reset the pointer to destruction indicator if destruction
+        // has not happened (iDestructionIndicator == EFalse)
+        iDestroyedPtr = NULL;
+        }
+    }
+
+#endif // TPBK2DESTRUCTIONINDICATOR_H
+
+// End of File