messagingapp/shareui/inc/shareuiprivate.h
changeset 31 ebfee66fde93
child 44 36f374c67aa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/shareui/inc/shareuiprivate.h	Fri Jun 04 10:25:39 2010 +0100
@@ -0,0 +1,236 @@
+/*
+* 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:  Offers file share services.
+*
+*/
+
+#ifndef __SHARE_UI_PRIVATE_H__
+#define __SHARE_UI_PRIVATE_H__
+
+#include <QObject>
+#include <QMap>
+#include <QAction>
+#include <QModelIndex>
+#include <QStandardItemModel>
+#include <HbListViewItem>
+#include <xqappmgr.h>
+
+// FORWARD DECLARATIONS
+class XQAiwRequest;
+class XQAiwInterfaceDescriptor;
+class HbAction;
+class HbDialog;
+class HbListView;
+class HbListViewItem;
+class HbTextItem;
+class HbIconItem;
+
+#define SERVICE_INTERFACE "com.nokia.symbian.IFileShare"
+#define SHARE_OP "send(QVariant)"
+
+/**
+ * Data roles for list
+ */
+enum ShareItemDataRole {
+    ProviderNameRole = 10000,
+    ProviderIconRole = 10001
+};
+
+/**
+ * Share List item prototype
+ */
+class ShareListItem : public HbListViewItem
+    {
+    Q_OBJECT
+    
+public:
+    ShareListItem(QGraphicsItem* parent=0);
+    HbAbstractViewItem* createItem();
+    void updateChildItems();
+private:
+    HbIconItem* mProviderIcon;
+    HbTextItem *mProviderName;
+    };
+
+/**
+ * Private implementaion of shareui.
+ * implements showing sending services dialog and sending files
+ */
+class ShareUiPrivate : public QObject
+    {
+    Q_OBJECT
+    
+public:
+    
+    /**
+     * Constructor
+     */
+    ShareUiPrivate();
+    
+    /**
+     * Destructor
+     */
+    virtual ~ShareUiPrivate();
+    
+    /**
+     * Initiate share for the specified files.
+     * @param fileList list of paths to files.eg: c:\images\sunset.jpg
+     * @param embedded true if service launched is embedded in the 
+     * launched application.
+     * 
+     * @return bool true if dialog initialization successfull. Otherwise false.
+     */
+    bool init(QStringList& fileList, bool embedded);
+    
+public slots:
+
+    /**
+     * Handles setting the arguments for triggered service.
+     */
+    void onTriggered(void); 
+    
+    /**
+     * Slot for handling valid returns from the framework.
+     * @param result const QVariant&
+     */
+    void handleOk(const QVariant& result);
+    
+    /**
+     * Slot for handling errors. Error ids are provided as 
+     * 32-bit integers.
+     * @param errorCode qint32
+     */
+    void handleError(int errorCode, const QString& errorMessage);
+
+private slots:
+
+    /** 
+     * When a list box item is pressed, this slot should be invoked. The action
+     * corresponding to the clicked list item should be invoked with the stored lis
+     * of files.
+     * 
+     * @param index QModelIndex
+     * 
+     */
+    void itemActivated(QModelIndex index);
+    
+private:
+    /**
+     * Fetch the action associated with a specified interface descriptor.
+     * @param interfaceDescriptor Descriptor got from application manager.
+     * @return The action.
+     */
+    HbAction* fetchServiceAction(XQAiwInterfaceDescriptor interfaceDescriptor);    
+    
+    /**
+     * Creates the view for the share ui dialog.
+     */
+    void initializeUi();
+    
+    /**
+     * Update the shareui dialog (and associated list items) once the required
+     * information has been fetched.
+     * @param action HbAction* The action associated with list entry.
+     * @param iconName The icon to be displayed 
+     */
+    void updateShareUiDialogList(HbAction* action, QString iconName);
+    
+    /**
+     * Convert a QAction to HbAction.
+     * @param action QAction*
+     * @return HbAction* 
+     */
+    HbAction* convertAction(QAction *action);
+
+#ifdef __SHAREUI_MIME_HANDLING__  
+    /**
+     * Checks if the specified content type is allowed as per the 
+     * specified MIME pattern strings.
+     * @param mimeType List of file MIME types
+     * @param mimePattern List of file MIME patterns
+     * @return true if the content is allowed.
+     */
+    bool isContentAllowed ( QStringList mimeType, QString mimePattern );
+    
+    /** Checks if the specified content type is blocked as per the 
+     * specified MIME pattern strings.
+     * @param mimeType List of file MIME types
+     * @param mimePattern List of file MIME patterns
+     * @return true if the content is blocked.
+     */
+    bool isContentBlocked ( QStringList mimeType, QString mimePattern );
+    
+    /**
+     * Get file attributes
+     * @param fileList List of files.
+     * @param mimeTypeList (out) List of MIME types corresponding to the files.
+     * @param forwardStatusList (out) List of forward status corresponding to the files.
+     */
+    void getFileAttributes ( QStringList& fileList, QStringList& mimeTypeList,
+            QStringList& forwardStatusList );
+#endif
+    
+    /**
+     * Show notes
+     */
+    void showNote(QString text);
+    
+    /**
+     * Reset internal data structures
+     */
+    void reset();
+    
+private:
+    /**
+     * List of files to be sent.
+     */
+    QList<QVariant> mFileList;
+    
+    /**
+     * Service List
+     */
+    QList<XQAiwRequest*> mAiwRequestList;
+    
+    /**
+     * ShareUi dialog
+     */
+    HbDialog* mSharePopup;
+    
+    /**
+     * item model for content list view.
+     */    
+    QStandardItemModel* mContentItemModel;
+    
+    /**
+     * content view
+     */    
+    HbListView* mContentListView;
+    
+    /**
+     * mapping qmodelindex to the action
+     */    
+    QMap<QModelIndex, HbAction*> mIndexActionMap;
+    
+    /**
+     * Application Manager.
+     */
+    XQApplicationManager mAppManager;
+    
+    /**
+     * Whether to launch the sending application as embedded or not.
+     */
+    bool mIsEmbedded;  
+    };
+
+#endif /* __SHARE_UI_PRIVATE_H__ */