homescreenapp/hsdomainmodel/src/hsconfiguration.cpp
branchRCL_3
changeset 82 5f0182e07bfb
--- /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);