homescreenapp/hsdomainmodel/inc/hswidgethost.h
changeset 55 03646e8da489
parent 51 4785f57bf3d4
child 60 30f14686fb04
child 62 341166945d65
--- a/homescreenapp/hsdomainmodel/inc/hswidgethost.h	Thu May 27 12:46:08 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hswidgethost.h	Fri Jun 11 13:30:16 2010 +0300
@@ -18,118 +18,125 @@
 #ifndef HSWIDGETHOST_H
 #define HSWIDGETHOST_H
 
-#include <QVariantMap>
+#include <HbWidget>
 #include <QMetaMethod>
 #include <QMetaProperty>
 
-#include <HbWidget>
+#include "hsdomainmodel_global.h"
+#include "hsdomainmodeldatastructures.h"
 
-#include "hsdomainmodeldatastructures.h"
-#include "hsdomainmodel_global.h"
 #include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(TestRuntimeServices)
 
+class QStateMachine;
+
+class HsWidgetComponent;
 class HsPage;
 
-HOMESCREEN_TEST_CLASS(TestRuntimeServices)
-
 class HSDOMAINMODEL_EXPORT HsWidgetHost : public HbWidget
 {
     Q_OBJECT
 
 public:
-    enum State {
-        Unloaded,
-        Loaded,
-        Initialized,
-        Visible,
-        Hidden,
-        Uninitialized,
-        Finished,
-        Faulted,
-        UninstallingOrUpdating
-    };
+    HsWidgetHost(int databaseId, QGraphicsItem *parent = 0);
+    ~HsWidgetHost();
 
-public:
-    static HsWidgetHost *createInstance(HsWidgetData &widgetData, 
-                                        const QVariantHash &preferences = QVariantHash());
-
-    HsWidgetHost(int databaseId, QGraphicsItem *parent = 0);
-    
-    ~HsWidgetHost();
-    
-    bool load();
-    void unload();
-    
-    bool setPage(HsPage *page);
-    HsPage *page() const;
-
-    bool isValid() const;
+    static HsWidgetHost *createInstance(
+        HsWidgetData &widgetData, 
+        const QVariantHash &preferences = QVariantHash());
 
     int databaseId() const;
 
-    State state() const { return mState; }
+    bool setPage(HsPage *page);
+    HsPage *page() const; 
 
-    bool deleteFromDatabase();
+    bool isPannable(QGraphicsSceneMouseEvent *event);
     
-    bool setWidgetPresentation();
-    bool setWidgetPresentationData(HsWidgetPresentationData &presentationData);
-    bool widgetPresentationData(const QString &key, HsWidgetPresentationData &presentationData);
+    bool loadPresentation();
+    bool loadPresentation(Qt::Orientation orientation);
+    bool savePresentation();
+    bool savePresentation(Qt::Orientation orientation);    
+    bool savePresentation(HsWidgetPresentationData &presentation);
+    bool getPresentation(HsWidgetPresentationData &presentation);
+    bool removePresentation(Qt::Orientation orientation);
 
-    HsWidgetPresentationData widgetPresentation(Qt::Orientation orientation);
-    bool loadWidgetPresentation();
-    bool deleteWidgetPresentation(Qt::Orientation orientation);
-    bool isPannable(QGraphicsSceneMouseEvent *event);
 signals:
-    void widgetFinished(HsWidgetHost *widget);
-    void widgetError(HsWidgetHost *widget);
-    void widgetResized(HsWidgetHost *widget);
-   
+    void event_startAndShow();
+    void event_startAndHide();
+    void event_unload();
+    void event_show();
+    void event_hide();
+    void event_remove();
+    void event_close();
+    void event_finished();
+    void event_faulted();
+    
+    void finished();
+    void faulted();
+    void resized();
+    void available();
+    void unavailable();
+
 public slots:
-    void initializeWidget();
+    void startWidget(bool show = true);
     void showWidget();
     void hideWidget();
-    void uninitializeWidget();
     void setOnline(bool online = true);
+    
+    void remove();
+    void close();
 
     void startDragEffect();
     void startDropEffect();
-  
-protected:    
-    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-    bool eventFilter(QObject *obj, QEvent *event);
-    
+
+protected:
+    bool eventFilter(QObject *watched, QEvent *event);    
+    void mousePressEvent(QGraphicsSceneMouseEvent *) {}
+
 private:
+    Q_DISABLE_COPY(HsWidgetHost)    
+    void setupEffects();
+    void setupStates();
+
     bool setProperty(const char *name, QMetaProperty &property); 
     bool setMethod(const char *signature, QMetaMethod &method);    
     bool hasSignal(const char *signature);
+
+    void setNewSize(const QSizeF &size);
+
     bool setPreferencesToWidget();
-    void setNewSize(const QSizeF &newSize);
 
 private slots:
-    void onSetPreferences(const QStringList &names);
+    void action_connectComponent();
+    void action_disconnectComponent();
+    void action_load();
+    void action_unload();
+    void action_initialize();
+    void action_uninitialize();
+    void action_show();
+    void action_hide();
+    void action_finished();
+    void action_faulted();
+    void action_remove();
+    
     void onFinished();
     void onError();
-    void onAboutToUninstall();
-    void onUpdated();
-    void onUnavailable();
-    void onAvailable();
+    void onSetPreferences(const QStringList &names);
+
 private:
-    Q_DISABLE_COPY(HsWidgetHost)
+    int mDatabaseId;        
+    QStateMachine *mStateMachine;
     QGraphicsWidget *mWidget;
-    HsPage *mPage;
+    HsPage *mPage;    
+    HsWidgetComponent *mComponent;    
     QMetaMethod mOnInitializeMethod;
     QMetaMethod mOnShowMethod;
     QMetaMethod mOnHideMethod;
     QMetaMethod mOnUninitializeMethod;
+    QMetaMethod mIsPannableMethod;
     QMetaProperty mIsOnlineProperty;
-	QMetaProperty mRootPathProperty;
-    QMetaMethod mIsPannable;
-    State mState;
-    QString mUri;
-    int mDatabaseId;
+	QMetaProperty mRootPathProperty;        
+    bool mIsFinishing;
 
     HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
 };