homescreenapp/hsdomainmodel/inc/hsdatabase.h
changeset 36 cdae8c6c3876
parent 35 f9ce957a272c
child 46 23b5d6a29cce
--- a/homescreenapp/hsdomainmodel/inc/hsdatabase.h	Fri Mar 19 09:27:44 2010 +0200
+++ b/homescreenapp/hsdomainmodel/inc/hsdatabase.h	Fri Apr 16 14:54:01 2010 +0300
@@ -11,20 +11,18 @@
 *
 * Contributors:
 *
-* Description:  Implementation for SQLite content store.
+* Description:
 *
 */
 
 #ifndef HSDATABASE_H
 #define HSDATABASE_H
 
+#include <QObject>
 #include <QScopedPointer>
-#include <QtSql>
+#include <QVariantHash>
+
 #include "hsdomainmodel_global.h"
-#include "hstest_global.h"
-
-HOMESCREEN_TEST_CLASS(TestRuntimeServices)
-HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
 
 class HsSceneData;
 class HsPageData;
@@ -34,60 +32,64 @@
 class HSDOMAINMODEL_EXPORT HsDatabase : public QObject
 {
     Q_OBJECT
-
+    Q_PROPERTY(QString connectionName READ connectionName WRITE setConnectionName)
+    Q_PROPERTY(QString databaseName READ databaseName WRITE setDatabaseName)
+    
 public:
-    static void setDatabaseName(const QString& dbName);
-    static HsDatabase *instance();
+    HsDatabase(QObject *parent = 0);
     ~HsDatabase();
 
+    void setConnectionName(const QString &name);
+    QString connectionName() const;    
+    void setDatabaseName(const QString &name);
+    QString databaseName() const;
+
+    bool open();
+    void close();
+
     bool transaction();
     bool rollback();
     bool commit();
 
-    bool scene(HsSceneData &scene);
-    bool updateScene(const HsSceneData &scene);
+    bool scene(HsSceneData &data);
+    bool updateScene(const HsSceneData &data);
+
+    bool pages(QList<HsPageData> &data);
+    bool page(HsPageData &data);
+    bool insertPage(HsPageData &data);
+    bool updatePage(const HsPageData &data);
+    bool deletePage(int id);
     
-    bool pages(QList<HsPageData> &pages);
-    bool page(int id, HsPageData &page, bool getChildren = true);
-    bool insertPage(HsPageData &page);
-    bool updatePage(const HsPageData &page, bool updateChildren = true);
-    bool deletePage(int id);
-
-    bool widget(int id, HsWidgetData &widget, bool getChildren = true);
-    bool insertWidget(HsWidgetData &widget);
-    bool insertWidget(const HsWidgetData &widget,int &databaseId);
-    bool updateWidget(const HsWidgetData &widget, bool updateChildren = true);
+    bool widgets(int pageId, QList<HsWidgetData> &data);
+    bool widgets(const QString &uri, QList<HsWidgetData> &data);
+    bool widget(HsWidgetData &data);
+    bool insertWidget(HsWidgetData &data);
+    bool updateWidget(const HsWidgetData &data);
     bool deleteWidget(int id);
     bool deleteWidgets(const QString &uri);
 
-    bool widgetPresentation(int widgetId, const QString &key, HsWidgetPresentationData &presentation);
-    bool insertWidgetPresentation(HsWidgetPresentationData &presentation);
-    bool updateWidgetPresentation(const HsWidgetPresentationData &presentation);
-    bool deleteWidgetPresentation(int id);
+    bool widgetPresentation(HsWidgetPresentationData &data);
+    bool setWidgetPresentation(const HsWidgetPresentationData &data);
+    bool deleteWidgetPresentation(int widgetId, const QString &key);
 
-    bool setWidgetPreferenceForKey(int widgetId, const QString &key, const QString &value);
-    bool widgetPreferenceForKey(int widgetId, const QString &key, QString &value);
-    bool setWidgetPreferences(int widgetId, const QVariantMap &preferences);
-    bool widgetPreferences(int widgetId, QVariantMap &preferences);
-    bool widgetIds(const QString &uri, QList<int>& ids);
+    bool widgetPreferences(int widgetId, QVariantHash &data);
+    bool widgetPreference(int widgetId, const QString &key, QVariant &value);
+    bool setWidgetPreferences(int widgetId, const QVariantHash &data);
+            
+public:
+    static void setInstance(HsDatabase *instance);
+    static HsDatabase *instance();
+    static HsDatabase *takeInstance();
+
+private:    
+    Q_DISABLE_COPY(HsDatabase)
+    bool checkConnection() const;
 
 private:
-    HsDatabase();
-    bool openDatabase(const QString &databaseName);
-    Q_DISABLE_COPY(HsDatabase)
-
-    bool parsePage(const QSqlQuery &query, bool getChildren, HsPageData &page);
-    bool parseWidget(const QSqlQuery &query, bool getChildren, HsWidgetData &widget);
-    bool parseWidgetPresentation(const QSqlQuery &query, HsWidgetPresentationData &presentation);
+    QString mConnectionName;
+    QString mDatabaseName;
 
-    QVariant columnValue(const QSqlQuery &query, const QString &columnName) const;
-    QSqlDatabase database() const;
-
-private:
     static QScopedPointer<HsDatabase> mInstance;
-    static QString  mDatabaseName;
-    HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
-    HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
 };
 
 #endif // HSDATABASE_H