--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/inc/videolistwidget.h Thu Apr 01 22:38:49 2010 +0300
@@ -0,0 +1,347 @@
+/*
+* 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 "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: Videolist content widget
+*
+*/
+
+
+#ifndef VIDEOLISTWIDGET_H
+#define VIDEOLISTWIDGET_H
+
+#include <QGraphicsWidget>
+#include <QPixmap>
+#include <QModelIndex>
+#include <qmap.h>
+#include <qpoint.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <mpxitemid.h>
+
+class VideoSortFilterProxyModel;
+class HbAction;
+class HbMenu;
+class QTimer;
+
+class QItemSelection;
+class VideoServices;
+
+/**
+ * Widget for displaying all videos, either using list- or grid view.
+ * Widget contains 2 widgets to be used for different orientation in the stacked layout.
+ *
+ * Depending on the orientation and it's change, corresponding view is set active.
+ *
+ */
+class VideoListWidget : public HbListView
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(VideoListWidget)
+public:
+
+ enum TVideoListLevel
+ {
+ ELevelCategory = 2,
+ ELevelVideos = 3
+ };
+
+ enum TVideoListType
+ {
+ EUnknown,
+ EAllVideos, // list displaying all videos
+ ECollections, // list displaying all collections
+ EDefaultColItems, // list displying videos in default collection
+ EUserColItems // list displaying videos in user defined collection
+ };
+
+ /**
+ * Contructor.
+ *
+ * @param parent parent of this widget
+ */
+ VideoListWidget(HbView *parent = 0);
+
+ /**
+ * Destructor.
+ *
+ */
+ virtual ~VideoListWidget();
+
+ /**
+ * Method creates colleciton wrapper, grid and list views,
+ * layout and activates correct view based on the current orientation
+ *
+ * @param model Model for this list view.
+ * @return int 0 initialization ok, < 0 if fails.
+ */
+ int initialize(VideoSortFilterProxyModel &model, VideoServices* videoServices = 0);
+
+ /**
+ * Method enables and displays current active view
+ *
+ * @return int 0 initialization ok, < 0 if fails.
+ */
+ int activate();
+
+ /**
+ * Method enables and displays current active view
+ *
+ * @return int 0 initialization ok, < 0 if fails.
+ */
+ int activate(VideoListWidget::TVideoListLevel role);
+
+ /**
+ * Method disables and hides current active view
+ *
+ */
+ void deactivate();
+
+ /**
+ * Used for resolving widget's current type
+ *
+ * @return TVideoListType current level.
+ */
+ TVideoListType getType();
+
+ /**
+ * returns widget's model
+ *
+ * @return VideoSortFilterProxyModel*
+ */
+ VideoSortFilterProxyModel& getModel();
+
+protected:
+
+ /**
+ * Called by the fw when some item is tapped. Method check that
+ * index is valid and calls open item for collectionwrapper to
+ * open media object throught collection.
+ *
+ * @param midelIndex, item's index
+ */
+ void emitActivated (const QModelIndex &modelIndex);
+
+signals:
+
+ /**
+ * Command signal.
+ *
+ * @param int command id
+ */
+ void command(int);
+
+ /**
+ * Signals collection view's state. Used to indicate
+ * view incase some collection item is opened
+ *
+ * @param true if opened, false if closed.
+ * @param optional name string
+ */
+ void collectionOpened(bool, const QString&);
+
+ /**
+ * signal is connected to service's itemSelected -slot
+ */
+ void fileUri(const QString&);
+
+protected slots:
+ /**
+ * Signaled by the fw during long press and indicating that popupmenu
+ * concerning particular item is to be opened.
+ * Saves current selected item's index to mCurrentIndex
+ */
+ void longPressGesture (const QPointF &point);
+
+private slots:
+
+ /**
+ * Signaled for item share.
+ *
+ */
+ void shareItemSlot();
+
+ /**
+ * Signaled for one item deletion.
+ *
+ */
+ void deleteItemSlot();
+
+ /**
+ * Signaled for item rename.
+ *
+ */
+ void renameSlot();
+
+ /**
+ * Signaled to play all items.
+ *
+ */
+ void playAllSlot();
+
+ /**
+ * Signaled to add an item into currently open collection.
+ *
+ */
+ void addItemSlot();
+
+ /**
+ * Signaled to add an item into a collection.
+ *
+ */
+ void addToCollectionSlot();
+
+ /**
+ * Signaled when details will be selected from the videolist's
+ * context menu. Maps mCurrentIndex to model's source index and
+ * calls collection wrapper to open details
+ *
+ */
+ void openDetailsSlot();
+
+ /**
+ * Signaled when the application has been lauched as a service and
+ * playback is initialized from context menu.
+ *
+ */
+ void playItemSlot();
+
+ /**
+ * Signaled when stepping back from collection in collection view
+ *
+ */
+ void back();
+
+ /**
+ * Signaled when view scrolling ends, initiates thumbnail fetching
+ * at index of first visible item.
+ *
+ */
+ void scrollingEndedSlot();
+
+ /**
+ * Signaled when view scroll position changes, initiates timer to
+ * fetch thumbnails at index of first visible item.
+ */
+ void scrollPositionChangedSlot(const QPointF &newPosition);
+
+ // TODO: following can be removed after all implementation ready
+ /**
+ * Slot is connected into item signals that are not yet implemented.
+ * Slot shows "Not yet implemented" note
+ */
+ void debugNotImplementedYet();
+
+private:
+
+ enum TContextActionIds
+ {
+ EActionShare = 1,
+ EActionDelete,
+ EActionDetails,
+ EACtionRemoveFromCollection,
+ EACtionAddToCollection,
+ EACtionRemoveCollection,
+ EActionAddVideos,
+ EActionRename,
+ EActionSetThumb,
+ EActionPlay
+ };
+
+ /**
+ * Method creates popup menu for list items.
+ *
+ */
+ void createContextMenu();
+
+ /**
+ * Method sets correct popup menu for specific list items.
+ *
+ */
+ void setContextMenu(bool isDefaultCollection);
+
+ /**
+ * Method connects signals needed by the widget
+ *
+ * @return int 0 if connect ok, < 0 if connect fails
+ */
+ int connectSignals();
+
+ /**
+ * Method disconnects signals needed by the widget
+ *
+ */
+ void disConnectSignals();
+
+private:
+
+ /**
+ * Provided model
+ * Not own.
+ */
+ VideoSortFilterProxyModel *mModel;
+
+ /**
+ * pointer to videoservices instance
+ */
+ VideoServices* mVideoServices;
+
+ /**
+ * map containing pointers to main menu actions
+ */
+ QMap<TContextActionIds, HbAction*> mContextMenuActions;
+
+ /**
+ * current level indicating content currently showing:
+ * category or videos
+ */
+ VideoListWidget::TVideoListLevel mCurrentLevel;
+
+ /**
+ * True if signals have been connected
+ */
+ bool mSignalsConnected;
+
+ /**
+ * True if details plugin is ready
+ */
+ bool mDetailsReady;
+
+ /**
+ * Boolean for knowing when the app was started as a service.
+ */
+ bool mIsService;
+
+ /**
+ * Secondary softkey action object
+ */
+ HbAction *mSecSkAction;
+
+ /**
+ * Item sensitive context menu
+ */
+ HbMenu *mContextMenu;
+
+ /**
+ * Last opened item id is saved when collection is opened from the
+ * collections -list. Value used to indentify the type of list.
+ */
+ TMPXItemId mLastOpenItemId;
+
+ /**
+ * Timer used to report thumbnail fetches class index of
+ * first visible item when view is scrolling.
+ */
+ QTimer *mScrollPositionTimer;
+};
+
+#endif // VIDEOLISTWIDGET_H