camerauis/cameraapp/generic/GsCamcorderPlugin/inc/CamAlbumSettingItem.h
branchRCL_3
changeset 24 bac7acad7cb3
parent 0 1ddebce53859
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/inc/CamAlbumSettingItem.h	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 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:  Setting item type for "Add to album".*
+*/
+
+
+
+
+#ifndef CAMALBUMSETTINGITEM_H
+#define CAMALBUMSETTINGITEM_H
+
+//  INCLUDES
+#include <AknSettingItemList.h>
+
+
+class CAknSingleGraphicPopupMenuStyleListBox;
+class CCamStaticSettingsModel;
+
+/**
+*  Setting item class similar to standard avkon CAknEnumeratedTextPopupSettingItem.
+*  Allows the setting list array to be updated dynamically to show a currently selected album
+*  name. The setting page displays "Yes" and "No options and displays an album selection list 
+*  popup if the user selects the "Yes" option.
+*
+*/
+
+class CCamAlbumSettingItem : public CAknEnumeratedTextPopupSettingItem
+	{
+public:
+	/**
+	* Construct a list, storing in it a resource (to be read at 2nd stage construction)
+	* and a reference to an externally owned integer - the value to be manipulated
+    * @since 2.8
+    * @param aSettingItemId the setting item being constructed
+    * @param aValue the current value of the item
+	*/
+	CCamAlbumSettingItem( TInt aSettingItemId, TInt& aValue );
+
+	/**
+	* Destructor
+    * @since 2.8
+	*/
+	~CCamAlbumSettingItem();
+
+public:  // Functions from base classes
+
+    /**
+    * From MAknSettingPageObserver
+	* Virtual Method called by framework to handle events in the
+    * setting page. Used to launch an album selection list.
+    * @since 2.8
+    * @param aSettingPage the setting page reporting the event
+    * @param aEventType the type of event reported
+	*/
+	void HandleSettingPageEventL( CAknSettingPage* aSettingPage,
+                                  TAknSettingPageEvent aEventType );
+
+public:  // New methods
+
+	/**
+	* Replace the "Yes" text in the setting list with the currently 
+    * selected capture album. Text in the setting page is unchanged.
+    * @since 2.8
+	*/
+    void UpdateListTextL();
+
+private: // Functions from base classes
+
+	/**
+    * From CAknEnumeratedTextPopupSettingItem
+	* Virtual Method called by framework to complete the construction.  
+	* Calls UpdateListTextL to set the list text when the item is first 
+    * constructed
+    * @since 2.8
+	*/
+	void CompleteConstructionL();
+
+private: // New methods
+
+    /**
+	* Launches an album selection list
+    * @since 2.8
+    * @return Whether or not an album was selected from the list
+	*/
+    void DisplayAlbumSelectionListL();
+
+    /**
+	* Handle situations where the capture album does not exist or a request for
+    * information on the capture album fails
+    * @since 2.8
+	*/
+    void HandleAlbumError();
+
+private: // data
+
+    // List of Album IDs - One for each unique album name
+    TBool iAlbumExists;
+    HBufC* iAlbumTitle;
+	};
+
+#endif // CAMALBUMSETTINGITEM_H
+
+// End of File