--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/controller/inc/calenviewattachmentsdialog.h Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,381 @@
+/*
+* 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 CCALENVIEWATTACHMENTSDIALOG_H
+#define CCALENVIEWATTACHMENTSDIALOG_H
+
+// ========== INCLUDE FILES ================================
+#include <eiklbx.h>
+#include <eikfrlb.h> // for CFormattedCellListBoxItemDrawer
+#include <aknlists.h> // for CAknDoubleLargeStyleListBox
+#include <AknForm.h>
+#include <AknServerApp.h>
+#include <aknlongtapdetector.h>
+#include <calennotificationhandler.h> // MCalenNotificationHandler
+
+#include "calenattalistitemarray.h"
+#include "calenattachmentitemdrawer.h"
+#include "calenattachmentslistbox.h"
+
+// ========== CONSTANTS ====================================
+
+const TInt KCalenAttaItemTextLength = 256;
+
+// ========== FORWARD DECLARATIONS =========================
+
+class MAknLongTapDetectorCallBack;
+
+class CGulIcon;
+class CAknTitlePane;
+class CCalenController;
+class CCalenAttachmentModel;
+class CCalenAttachmentInfo;
+class CDocumentHandler;
+class CAknWaitDialog;
+class CAknNavigationControlContainer;
+class CAiwGenericParamList;
+
+// ========== CLASS DECLARATION ============================
+
+/**
+* View attachments dialog.
+*/
+class CCalenViewAttachmentsDialog : public CAknDialog,
+ public MEikListBoxObserver,
+ public MAknServerAppExitObserver,
+ public MCalenNotificationHandler
+ {
+ public:
+
+ /**
+ * First phase constructor
+ *
+ * @param aController A reference to calencontroller
+ * @return pointer to CCalenAttachmentSelectionObserver
+ */
+ static CCalenViewAttachmentsDialog* NewL( TDesC& aTitle,
+ CCalenAttachmentModel& aAttachmentModel,
+ CCalenController& aController);
+
+ /**
+ * Destructor.
+ */
+ ~CCalenViewAttachmentsDialog();
+
+ /**
+ * 2nd phase constructor.
+ * Deprecated.
+ */
+ void ConstructL();
+
+
+ public: // new functions
+
+ /**
+ * Returns the index of currently selected listbox item or KErrNotFound if list
+ * empty or no selection.
+ * @return current index
+ */
+ TInt CurrentListItemIndex();
+
+ /**
+ * Updates icon of list item indicated by 'aListIndex'.
+ * @param aListIndex
+ */
+ void UpdateIcon( TInt aListIndex );
+
+ /**
+ * Handle listbox item addition. Call this after you have added attachment
+ * to the attachment model. If you inserted attachment to some other
+ * position than last, use same index as aIndex.
+ * @param aIndex item index
+ */
+ void ItemAddedL( TInt aIndex = -1 );
+
+ /**
+ * Handle listbox item removal. Call this after you have removed attachment
+ * from the attachment model.
+ * @param aIndex item index
+ */
+ void ItemRemovedL( TInt aIndex );
+
+ /**
+ * NotifySizeChanged, calls SizeChanged() method of
+ * dialog's listbox
+ *
+ */
+ void NotifySizeChanged();
+
+ /**
+ * Updates all attachments fetched flags
+ * in attachment model.
+ */
+ void UpdateAttachmentsFetchFlags();
+
+ /**
+ * From MEikListBoxObserverClass
+ */
+ void HandleListBoxEventL(
+ CEikListBox* aListBox, TListBoxEvent aEventType );
+
+ /**
+ * Updates list of attatchments if attatchment
+ * dialog is opened before all attatchments
+ * are loaded.
+ */
+ void UpdateAttatchmentListL();
+
+ public: // from CAknDialog
+
+ /**
+ * Processes menu commands.
+ * @param aCommandId
+ */
+ void ProcessCommandL( TInt aCommandId );
+
+ /**
+ * Removes default menu items from CAknFrom and adds own custom menu
+ * items whose resource id was given in construstor.
+ * @param aMenuId
+ * @param aMenuPane
+ */
+ void DynInitMenuPaneL( TInt aMenuId, CEikMenuPane* aMenuPane );
+
+ /**
+ * From CCoeControl
+ */
+ void HandleResourceChange( TInt aType );
+
+ /**
+ * From CCoeControl Handle pointer event
+ * @param aPointerEvent Event to be handled.
+ */
+ void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+ /**
+ * Prepare icons and listbox.
+ */
+ void LoadFormDataL();
+
+ /**
+ * Remove attachment from model.
+ * @param aIndex attachment index
+ */
+ TInt RemoveAttachmentL( TInt aIndex );
+
+ /**
+ * From CCoeControl, return child control count.
+ * @return Control count
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl, return child control pointer.
+ * @param aIndex Child control index
+ * @return Child control pointer.
+ */
+ CCoeControl* ComponentControl(TInt aIndex) const;
+
+
+
+ public: // from MAknServerAppExitObserver
+
+ /**
+ * Handle the exit of a connected server app.
+ * This implementation provides S60 default behavior
+ * for handling of the EAknCmdExit exit code. Derived classes
+ * should base-call this implementation if they override this
+ * function.
+ *
+ * @since S60 5.0
+ *
+ * @param aReason The reason that the server application exited.
+ * This will either be an error code, or the command id that caused
+ * the server app to exit.
+ */
+ void HandleServerAppExit( TInt aReason );
+
+ protected: // from CAknDialog
+
+ /**
+ *
+ * @param aButtonId
+ * @return
+ */
+ TBool OkToExitL( TInt aButtonId );
+
+ /**
+ * Create custom control.
+ * @param aControlType
+ * @return
+ */
+ SEikControlInfo CreateCustomControlL( TInt aControlType );
+
+ /**
+ * Set the generic parameter list used in opening content CDocumentHandler
+ * Ownership is transferred to base class
+ */
+ void SetOpenParamList( CAiwGenericParamList* aOpenParamList );
+
+ /**
+ * Set the generic parameter list used in opening content CDocumentHandler
+ * Ownership is transferred to base class
+ */
+ CAiwGenericParamList* OpenParamList();
+
+ protected: // from CEikDialog
+
+ /**
+ *
+ */
+ void PreLayoutDynInitL();
+
+ /**
+ *
+ */
+ void HandleControlStateChangeL( TInt aControlId );
+
+ private:
+
+ /**
+ * Constructor.
+ * @param aTitle title for dialog (shown in title pane)
+ * @param aMenuId resource id for menu
+ * @param aAttachmentModel reference to attachment model
+ * @param aController reference to calencontroller
+ */
+ CCalenViewAttachmentsDialog( TDesC& aTitle,
+ CCalenAttachmentModel& aAttachmentModel,
+ CCalenController& aController);
+
+ /**
+ * Common part for ConstructL methods.
+ */
+ void DoConstructL();
+
+ /**
+ * Function that TCleanupItem calls.
+ */
+ static void CleanupWaitDialog( TAny* aAny );
+
+ /**
+ * Performs UI updating.
+ */
+ void DoUpdateUiL();
+
+ /**
+ * Update CBA button visibility.
+ */
+ void UpdateButtonVisiblity( TInt aCommandId, TBool aValue );
+
+ /**
+ * Handles notifications (Leaving)
+ */
+ void HandleNotificationL( TCalenNotification aNotification );
+
+ // from MCalenNotificationHandler
+
+ /**
+ * Handles notifications
+ */
+ void HandleNotification( const TCalenNotification aNotification );
+
+ /**
+ * Opens the attachment. Its a commadn handler for opening the attachment
+ */
+ void OpenAttachmentL();
+
+ /**
+ * Tell whether attachment can be removed or not
+ */
+ TBool CanRemoveAttachment( CCalenAttachmentInfo& aInfo );
+
+ /**
+ * Sets the text for MSK
+ */
+ void SetMiddleSoftKeyLabelL(TInt aResourceId,
+ TInt aCommandId );
+
+ /**
+ * Updates the text for MSK
+ */
+ void UpdateMiddleSoftKeyL( TInt aIndex );
+
+ /**
+ * Checks if free memory available in the device is below critical level
+ */
+ TBool CheckSpaceBelowCriticalLevelL();
+
+ /// From CCoeControl
+ TKeyResponse OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,TEventCode aType);
+
+ /// From CCoeControl
+ void GetHelpContext( TCoeHelpContext& aContext) const;
+
+ /**
+ * Framework function to handle the back press
+ */
+ TBool HandleOkToExitL( TInt aButtonId );
+
+ /**
+ * Opens the attachment
+ *
+ * @param RFile File handler to be opened
+ * @param aExitObserver Exit observer that listens for exiting from the attahcment viewer
+ * @return None
+ */
+ void OpenAttachmentViewerL(RFile& file, MAknServerAppExitObserver& aExitObserver);
+
+
+ protected: // data
+
+ CCalenAttachmentModel& iAttachmentModel;
+ CCalenAttaListItemArray* iListItems;
+ CArrayPtr<CGulIcon>* iIconArray;
+ CCalenAttachmentsListBox* iListBox;
+ TInt iBusy;
+
+ private: // data
+
+ HBufC* iOldTitle;
+ CAknTitlePane* iTitlePane;
+ TInt iMenuId;
+ CAknWaitDialog* iWaitDialog; //not used as of now.
+ CAknNavigationControlContainer* iNaviPane;
+ RFile iREMOVED;
+ // Kept only for maintaining BC
+ // If opening through CDocumentHandler needs parameters,
+ // derived class must insert parameters here.
+ // The iOpenParamList is initially empty
+
+ CAiwGenericParamList* iOpenParamList;
+ TInt iSelectedCommand;
+
+ // reference to the calencontroller
+ CCalenController& iController;
+ CDocumentHandler* iDocHandler;
+ const TDesC& iNewTitle;
+
+
+ // Internal status flags
+ TInt iFlags;
+ };
+
+#endif // CMSGVIEWATTACHMENTSDIALOG_H
+
+// End of File