videocollection/hgmyvideos/inc/vcxhgmyvideosvideocopier.h
changeset 71 60b4b6493d7b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideosvideocopier.h	Thu Nov 04 11:16:56 2010 +0200
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:      Class for handling move/copy related notes and operations.*
+*/
+
+
+
+
+#ifndef VCXHGMYVIDEOSVIDEOCOPIER_H
+#define VCXHGMYVIDEOSVIDEOCOPIER_H
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <AknProgressDialog.h>
+
+// FORWARD DECLARATIONS
+class CVcxHgMyVideosVideoListImpl;
+class CVcxHgMyVideosVideoModelHandler;
+class CVcxHgMyVideosModel;
+class CAknWaitDialog;
+
+/**
+ * Class for handling move/copy related notes and operations.
+ * 
+ * @lib vcxhgmyvideos.lib 
+ */
+NONSHARABLE_CLASS( CVcxHgMyVideosVideoCopier ) : public CBase,
+                                                 public MProgressDialogCallback
+    {
+    public:
+
+        /**
+         * Two-phased constructor.
+         * 
+         * @param aVideoList Video list implementation.
+         * @param aVideoModel Video model handler.
+         * @param aModel Component's model.
+         */
+        static CVcxHgMyVideosVideoCopier* NewL( CVcxHgMyVideosVideoListImpl& aVideoList,
+                                                CVcxHgMyVideosVideoModelHandler& aVideoModel,
+                                                CVcxHgMyVideosModel& aModel );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CVcxHgMyVideosVideoCopier();
+    
+        /**
+         * Cheks status of currently selected items and UI list. Returns
+         * flags that tell which move/copy realted menu items can be shown. 
+         * 
+         * @param aOperationTargets List of operation targets on UI.
+         * @param aShowMoveAndCopySubmenu On return, ETrue if move/copy submenu can be shown.
+         * @param aShowCopy On return, ETrue if copy menu item can be shown.
+         * @param aShowMove On return, ETrue if move menu item can be shown.
+         */
+        void ShowMenuItemsL( 
+                const RArray<TInt>& aOperationTargets,
+                TBool& aShowMoveAndCopySubmenu,
+                TBool& aShowCopy,
+                TBool& aShowMove );
+
+        /**
+         * Moves or copies videos. Also shows memory selection dialog and
+         * move/copy wait note.
+         *
+         * @param aOperationTargets List of operation targets on UI.
+         * @param aCopy ETrue for copy operation, EFalse for move. 
+         */        
+        void MoveOrCopyL( 
+                const RArray<TInt>& aOperationTargets,
+                TBool aCopy );
+
+        /**
+         * Called by video list impl when move or copy command is completed.
+         * 
+         * @param aFailedCount Count of items that could not be moved/copied.
+         * @param aFailedName Name of video where move/copy failed, if there was only one.
+         */
+        void VideoMoveOrCopyCompletedL( TInt aFailedCount, const TDesC& aFailedName );           
+
+    public: // From MProgressDialogCallback
+
+        /**
+         * Called when (move/copy) wait dialog is dismissed.
+         *
+         * @aButtonId Button with which dialog was dismissed.
+         */     
+        void DialogDismissedL( TInt aButtonId );           
+        
+    protected:
+
+        CVcxHgMyVideosVideoCopier( CVcxHgMyVideosVideoListImpl& aVideoList,
+                                   CVcxHgMyVideosVideoModelHandler& aVideoModel,
+                                   CVcxHgMyVideosModel& aModel );                
+
+        void ConstructL();
+
+        /**
+         * Queries user for target drive.
+         * 
+         * @param aCopy ETrue for copy operation, EFalse for move.
+         * @param aTargetDrive On return, target drive.
+         * @return ETrue if user accepted target.
+         */
+        TBool QueryTargetDriveL( TBool aCopy, TInt& aTargetDrive );
+        
+        /**
+         * Opens the move/copy wait note.
+         * 
+         * @param aOperationTargets Operation targets.
+         * @param aCopy ETrue for copy operation, EFalse for move.
+         */
+        void OpenMoveCopyWaitNoteL( const RArray<TInt>& aOperationTargets,
+                                    TBool aCopy );
+
+        /**
+         * Closes the move/copy wait note.
+         */
+        void CloseMoveCopyWaitNote();         
+
+    protected: // data
+
+        /**
+         * Reference to video list implementation.
+         * Not own.
+         */
+        CVcxHgMyVideosVideoListImpl& iVideoList;
+        
+        /**
+         * Reference to video model handler.
+         * Not own.
+         */        
+        CVcxHgMyVideosVideoModelHandler& iVideoModel;
+        
+        /**
+         * Reference to component's model.
+         * Not own.
+         */
+        CVcxHgMyVideosModel& iModel;
+
+        /**
+         * Move/copy wait dialog.
+         * Own.
+         */
+        CAknWaitDialog* iMoveCopyWaitDialog;
+        
+        /**
+         * Flag telling if latest operation was copy (ETrue) or move (EFalse).
+         */
+        TBool iCopy;
+    };
+
+#endif // VCXHGMYVIDEOSVIDEOCOPIER_H