--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,242 @@
+/*
+* 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:
+*
+*/
+
+#include <QMetaObject>
+#include <QMetaProperty>
+#include <QTextStream>
+#include <QFile>
+
+#include <HbDeviceProfile>
+
+#include "hsconfiguration.h"
+#include "hsdatabase.h"
+
+/*!
+ \class HsConfiguration
+ \ingroup group_hsdomainmodel
+ \brief
+*/
+
+/*!
+
+*/
+HsConfiguration::HsConfiguration(QObject *parent)
+ : QObject(parent),
+ mBounceEffect(20),
+ mPageChangeAnimationDuration(300),
+ mPageChangeZoneAnimationDuration(600),
+ mPageChangeZoneReverseAnimationDuration(200),
+ mPageRemovedAnimationDuration(1000),
+ mNewPageAddedAnimationDuration(1000),
+ mWidgetDragEffectDuration(250),
+ mWidgetDropEffectDuration(200),
+ mDefaultPageId(1),
+ mMaximumPageCount(8),
+ mIsShortcutLabelVisible(true),
+ mBounceFeedbackEffectDistance(3),
+ mPageChangeZoneWidth(30),
+ mPageIndicatorSpacing(8),
+ mMaximumWidgetHeight(39),
+ mMaximumWidgetWidth(48),
+ mMinimumWidgetHeight(8.75),
+ mMinimumWidgetWidth(8.75),
+ mPageChangePanDistance(120),
+ mPageChangeFeedbackEffect(HbFeedback::Sensitive),
+ mWidgetPickFeedbackEffect(HbFeedback::ItemPick),
+ mWidgetDropFeedbackEffect(HbFeedback::ItemDrop),
+ mWidgetRepositionFeedbackEffect(HbFeedback::BounceEffect),
+ mWidgetOverTrashbinFeedbackEffect(HbFeedback::ItemMoveOver),
+ mWidgetDropToTrashbinFeedbackEffect(HbFeedback::ItemDrop),
+ mShortcutWidgetTapFeedbackEffect(HbFeedback::BasicItem),
+ mWidgetMoveBlockedFeedbackEffect(HbFeedback::Basic),
+ mClockWidgetTapFeedbackEffect(HbFeedback::BasicItem),
+ mWidgetSnappingFeedbackEffect(HbFeedback::ItemMoveOver),
+ mIsSnapEnabled(true),
+ mSnapTimeout(300),
+ mSnapForce(30),
+ mSnapGap(6),
+ mPageMargin(0),
+ mSnapLineFadeInDuration(100),
+ mSnapLineFadeOutDuration(100),
+ mIsSnapEffectsEnabled(true),
+ mSceneType(PageWallpapers),
+ mBounceAnimationEasingCurve(QEasingCurve::Linear),
+ mPageChangeAnimationEasingCurve(QEasingCurve::Linear)
+{
+}
+
+/*!
+
+*/
+HsConfiguration::~HsConfiguration()
+{
+}
+
+/*!
+
+*/
+QSizeF HsConfiguration::minimumWidgetSizeInUnits() const
+{
+ return QSizeF(mMinimumWidgetWidth, mMinimumWidgetHeight);
+}
+
+/*!
+
+*/
+QSizeF HsConfiguration::maximumWidgetSizeInUnits() const
+{
+ return QSizeF(mMaximumWidgetWidth, mMaximumWidgetHeight);
+}
+
+/*!
+
+*/
+QSizeF HsConfiguration::minimumWidgetSizeInPixels() const
+{
+ HbDeviceProfile profile;
+ qreal factor = profile.unitValue();
+ return factor * minimumWidgetSizeInUnits();
+}
+
+/*!
+
+*/
+QSizeF HsConfiguration::maximumWidgetSizeInPixels() const
+{
+ HbDeviceProfile profile;
+ qreal factor = profile.unitValue();
+ return factor * maximumWidgetSizeInUnits();
+}
+
+/*!
+
+*/
+bool HsConfiguration::load()
+{
+ QVariantHash configuration;
+
+ HsDatabase *db = HsDatabase::instance();
+ if (!db->configuration(configuration)) {
+ return false;
+ }
+
+ const QMetaObject *mo = metaObject();
+ QHashIterator<QString, QVariant> i(configuration);
+ while (i.hasNext()) {
+ i.next();
+ QByteArray name = i.key().toLatin1();
+ QVariant value = i.value();
+ QMetaProperty mp = mo->property(mo->indexOfProperty(name));
+ if (mp.isEnumType()) {
+ bool ok;
+ value.toString().toInt(&ok);
+ if (ok) {
+ setProperty(name, value.toInt());
+ } else {
+ setProperty(name, mp.enumerator().keyToValue(value.toString().toLatin1()));
+ }
+ } else {
+ setProperty(name, value);
+ }
+ }
+
+ return true;
+}
+
+/*!
+
+*/
+bool HsConfiguration::importFromFile(const QString &path)
+{
+ QFile file(path);
+ if (!file.open(QIODevice::ReadOnly)) {
+ return false;
+ }
+ QTextStream in(&file);
+
+ const QMetaObject *mo = metaObject();
+ while (!in.atEnd()) {
+ QStringList list = in.readLine().split(QLatin1String(" = "));
+ QByteArray name = list.at(0).toLatin1();
+ QByteArray value = list.at(1).toLatin1();
+ QMetaProperty mp = mo->property(mo->indexOfProperty(name));
+ if (mp.isEnumType()) {
+ setProperty(name, mp.enumerator().keyToValue(value));
+ } else {
+ setProperty(name, value);
+ }
+ }
+
+ return true;
+}
+
+/*!
+
+*/
+bool HsConfiguration::exportToFile(const QString &path)
+{
+ QFile file(path);
+ if (!file.open(QIODevice::WriteOnly)) {
+ return false;
+ }
+ QTextStream out(&file);
+
+ const QMetaObject *mo = this->metaObject();
+ for (int i = mo->propertyOffset(); i < mo->propertyCount(); ++i) {
+ QMetaProperty mp = mo->property(i);
+ out << mp.name() << " = ";
+ if (mp.isEnumType()) {
+ out << mp.enumerator().valueToKey(mp.read(this).toInt());
+ } else {
+ out << mp.read(this).toString();
+ }
+ out << endl;
+ }
+
+ return true;
+}
+
+/*!
+
+*/
+HsConfiguration *HsConfiguration::instance()
+{
+ return mInstance;
+}
+
+/*!
+
+*/
+HsConfiguration *HsConfiguration::takeInstance()
+{
+ HsConfiguration *instance = mInstance;
+ mInstance = 0;
+ return instance;
+}
+
+/*!
+
+*/
+void HsConfiguration::setInstance(HsConfiguration *instance)
+{
+ if (mInstance != instance) {
+ delete mInstance;
+ mInstance = instance;
+ }
+}
+
+HsConfiguration *HsConfiguration::mInstance(0);