/*
* 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:
*
*/
#ifndef HSDATABASE_H
#define HSDATABASE_H
#include <QObject>
#include <QVariantHash>
#include "hsdomainmodel_global.h"
#include "hstest_global.h"
HOMESCREEN_TEST_CLASS(TestHsDomainModel)
class HsSceneData;
class HsPageData;
class HsWidgetData;
class HsWidgetPresentationData;
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:
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 &data);
bool pages(QList<HsPageData> &data);
bool page(HsPageData &data);
bool insertPage(HsPageData &data);
bool updatePage(const HsPageData &data);
bool deletePage(int id);
bool widgets(int pageId, QList<HsWidgetData> &data);
bool widgets(const QString &uri, QList<HsWidgetData> &data);
bool widgets(const QString &uri, const QVariantHash &preferences, int &count);
bool widget(HsWidgetData &data);
bool insertWidget(HsWidgetData &data);
bool updateWidget(const HsWidgetData &data);
bool deleteWidget(int id);
bool deleteWidgets(const QString &uri);
bool widgetPresentation(HsWidgetPresentationData &data);
bool setWidgetPresentation(const HsWidgetPresentationData &data);
bool deleteWidgetPresentation(int widgetId, Qt::Orientation orientation);
bool widgetPreferences(int widgetId, QVariantHash &data);
bool widgetPreference(int widgetId, const QString &key, QVariant &value);
bool setWidgetPreferences(int widgetId, const QVariantHash &data);
bool configuration(QVariantHash &configuration);
public:
static void setInstance(HsDatabase *instance);
static HsDatabase *instance();
static HsDatabase *takeInstance();
private:
Q_DISABLE_COPY(HsDatabase)
bool checkConnection() const;
bool matchWidgetPreferences(const QVariantHash &preferences, const QMultiMap<QString, QString>& storedPreferences);
private:
QString mConnectionName;
QString mDatabaseName;
static HsDatabase *mInstance;
HOMESCREEN_TEST_FRIEND_CLASS(TestHsDomainModel)
};
#endif // HSDATABASE_H