videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h
changeset 15 cf5481c2bc0b
child 17 69946d1824c4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videofiledetailsview/inc/videofiledetailsviewplugin.h	Fri Apr 16 14:59:52 2010 +0300
@@ -0,0 +1,299 @@
+/*
+* 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:   VideoFileDetailsViewPlugin class definition
+*
+*/
+
+#ifndef VIDEOFILEDETAILSPLUGIN_H
+#define VIDEOFILEDETAILSPLUGIN_H
+
+
+// INCLUDES
+#include <qobject.h>
+#include <mpxviewpluginqt.h>
+#include <hbdocumentloader.h>
+#include <qpixmap.h>
+#include <mpxitemid.h>
+
+class VideoSortFilterProxyModel;
+class QModelIndex;
+class HbAction;
+class HbMarqueeItem;
+class ThumbnailManager;
+class VideoServices;
+class VideoCollectionWrapper;
+class VideoDetailsLabel;
+
+class VideoFileDetailsViewPlugin : public MpxViewPlugin
+	{
+
+    Q_OBJECT
+
+public: // Constructor / destructor
+
+    /**
+     * Contructor.
+     *
+     */
+    VideoFileDetailsViewPlugin();
+
+    /**
+     * Destructor.
+     *
+     */
+    virtual ~VideoFileDetailsViewPlugin();
+
+public: // from QViewPlugin
+
+    /**
+     * Initializes view creation.
+     *
+     */
+    void createView();
+
+    /**
+     * Deallocates view and it's objects.
+     */
+    void destroyView();
+
+    /**
+     * Activates view
+     *
+     */
+    void activateView();
+
+    /**
+     * Deactivates view
+     *
+     */
+    void deactivateView();
+
+    /**
+     * Returns a pointer to the view read from the XML
+     *
+     * @return QGraphicsWidget*
+     */
+    QGraphicsWidget* getView();
+
+signals:
+    /**
+     * Command signal, plugin user shoulf connect this in case it wants
+     * to receive commands emitted from the view.
+     *
+     * @param command id
+     */
+    void command( int );
+
+    /**
+     * Signals the URI of the current video to VideoServices
+     *
+     * @param URI of the video
+     */
+    void fileUri(const QString&);
+
+public slots: // from QViewPlugin
+
+    /**
+     * Plugin user can notify orientation changes by connecting into this slot
+     * ti it's signal. In normal cases, view handles orientation chages itself.
+     *
+     * @param orientation new orientation
+     */
+    void orientationChange( Qt::Orientation orientation );
+
+    /**
+     * Plugin user can notify back button changes by connecting into this slot
+     *
+     */
+    void back();
+
+private slots:
+
+    /**
+     * Signaled when attach button is clicked, only when started as a service.
+	 * Gets the URI of the current video
+     *
+     */
+	void getFileUri();
+
+    /**
+     * Signaled when short details are ready.
+     *
+     * @param id Mpx id of the clip, needed when getting the data from model.
+     */
+    void shortDetailsReadySlot(TMPXItemId id);
+
+    /**
+     * Signaled when full details are ready.
+     *
+     * @param id Mpx id of the clip, needed when getting the data from model.
+     */
+    void fullDetailsReadySlot(TMPXItemId id);
+
+    /**
+     * Slot that receives signal from play button to start playback.
+     */
+    void startPlaybackSlot();
+
+    /**
+     * Slot that receives signal from send button
+     */
+    void sendVideoSlot();
+
+    /**
+     * Slot that receives signal from delete button
+     */
+    void deleteVideoSlot();
+
+    /**
+     * Slot that receives signal when video(s) removed.
+     * If video to be removed is the one whose details
+     * are visible, this view is deactivated and collection
+     * list view is put back on.
+     *
+     * @param parent parent item index (not used at the moment)
+     * @param first first item to remove
+     * @param last last item to remove
+     */
+    void rowsRemovedSlot(const QModelIndex &parent, int first, int last);
+
+    /**
+     * Slot is connected into videocollection wrapper's asyncStatus -signal
+     *
+     * Handles possible collection error; usually by just showing error msg
+     *
+     * @param errorCode error code
+     * @param additional additional data gotten from the error
+     */
+    void handleErrorSlot(int errorCode, QVariant &additional);
+
+    /**
+     * Slot that is connected to thumbnailReady signal in tnwrapper, which
+     * signals when thumbnail loading has been completed.
+     *
+     * @param pixmap     An object representing the resulting thumbnail.
+     * @param clientData Client data
+     * @param id         Request ID for the operation
+     * @param errorCode  error code
+     */
+    void thumbnailReadySlot(QPixmap pixmap, void * clientData, int id, int errorCode);
+
+private:
+
+    /**
+     * Signaled for one item deletion.
+     *
+     */
+    void deleteItem(QModelIndex index);
+
+    /**
+     * Starts fetching the large thumbnail with tnwrapper.
+     */
+    void startFetchingThumbnail();
+    
+    /**
+     * Gets the play icon for thumbnail.
+     */
+    const QPixmap &playIcon();
+
+    /**
+     * Finds and return the widget from document loader with the given name. Casts
+     * to templated type.
+     *
+     * @param name Name of the widget
+     * @return The widget.
+     */
+    template<class T>
+    T* findWidget(QString name);
+
+    template<class T>
+    T* findObject(QString name);
+
+private:
+
+    /**
+     * Document loader that holds the view object
+     */
+    HbDocumentLoader mLoader;
+
+    /**
+     * Pointer to the model that holds video details. Not owned.
+     */
+    VideoSortFilterProxyModel* mModel;
+
+    /**
+     * pointer to videoservices instance
+     */
+    VideoServices* mVideoServices;
+
+    /**
+     * Activated flag. Set as true when view is properly activated.
+     * If flag is false, no operations can be do to the view.
+     */
+    bool mActivated;
+
+    /**
+     * Boolean for knowing when the app was started as a service.
+     */
+    bool mIsService;
+
+    /**
+     * Mpx id of the video clip.
+     */
+    TMPXItemId mVideoId;
+    
+    /**
+     * Index of the clip to be deleted in the proxy model.
+     */
+    int mDeletedIndex;
+    
+    /**
+     * Previously loaded orientation.
+     */
+    Qt::Orientation mPreviousOrietation;
+
+	/**
+     * Navigation softkey action object for back.
+     */
+	HbAction *mNavKeyBackAction;
+
+    /**
+     * Title animation widget
+     */
+    HbMarqueeItem *mTitleAnim;
+
+    /**
+     * Thumbnail label
+     */
+    VideoDetailsLabel *mThumbLabel;
+
+    /**
+     * Thumbnail manager.
+     */
+    ThumbnailManager* mThumbnailManager;
+
+    /**
+     * Collection wrapper.
+     */
+    VideoCollectionWrapper &mCollectionWrapper;
+    
+    /**
+     * Play icon with transparent background.
+     */
+    QPixmap mPlayIcon;
+    };
+
+#endif  // VIDEOFILEDETAILSPLUGIN_H
+
+// End of File