phoneuis/bubblemanager2/bubblecore/src/bubbleeffecthandler.cpp
changeset 37 ba76fc04e6c2
parent 27 2f8f8080a020
child 46 bc5a64e5bc3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleeffecthandler.cpp	Fri Jun 04 10:19:18 2010 +0100
@@ -0,0 +1,105 @@
+/*!
+* Copyright (c) 2010 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 <QtCore>
+#include "bubbleeffecthandler.h"
+
+const char *BUBBLE_MUTED_APPEAR_FXML = ":/bubble_muted_appear.fxml";
+const char *BUBBLE_MUTED_DISAPPEAR_FXML = ":/bubble_muted_disappear.fxml";
+const char *BUBBLE_APPEAR_EVENT = "appear";
+const char *BUBBLE_DISAPPEAR_EVENT = "disappear";
+
+
+BubbleEffectHandler::BubbleEffectHandler(QObject* parent)
+    : QObject(parent)
+{
+}
+
+BubbleEffectHandler::~BubbleEffectHandler()
+{
+}
+
+void BubbleEffectHandler::addEffect(QGraphicsItem* item, BubbleEffect effect)
+{
+    switch (effect) {
+    case BubbleMutedAppear:
+        HbEffect::add(item, BUBBLE_MUTED_APPEAR_FXML, BUBBLE_APPEAR_EVENT);
+        mEffectItem.insert(effect,item);
+        break;
+    case BubbleMutedDisappear:
+        HbEffect::add(item, BUBBLE_MUTED_DISAPPEAR_FXML, BUBBLE_DISAPPEAR_EVENT);
+        mEffectItem.insert(effect,item);
+        break;
+    default:
+        break;
+    }
+}
+
+void BubbleEffectHandler::removeEffect(QGraphicsItem* item, BubbleEffect effect)
+{
+    switch (effect) {
+    case BubbleMutedAppear:
+        HbEffect::remove(item, BUBBLE_MUTED_APPEAR_FXML, BUBBLE_APPEAR_EVENT);
+        mEffectItem.remove(effect);
+        break;
+    case BubbleMutedDisappear:
+        HbEffect::remove(item, BUBBLE_MUTED_DISAPPEAR_FXML, BUBBLE_DISAPPEAR_EVENT);
+        mEffectItem.remove(effect);
+        break;
+    default:
+        break;
+    }
+}
+
+void BubbleEffectHandler::startEffect(BubbleEffect effect)
+{
+    QGraphicsItem* item;
+
+    switch (effect) {
+    case BubbleMutedAppear:
+        item = mEffectItem.value(effect);
+        Q_ASSERT(item);
+        item->setVisible(true);
+        HbEffect::start(item, BUBBLE_APPEAR_EVENT);
+        break;
+    case BubbleMutedDisappear:
+        item = mEffectItem.value(effect);
+        Q_ASSERT(item);
+        item->setVisible(true);
+        HbEffect::start(item, BUBBLE_DISAPPEAR_EVENT,
+                        this, "handleEffectFinished", QVariant(effect));
+        break;
+    default:
+        break;
+    }
+}
+
+void BubbleEffectHandler::handleEffectFinished(
+    const HbEffect::EffectStatus &status)
+{
+    int effect = status.userData.toInt();
+
+    switch (effect) {
+    case BubbleMutedDisappear:
+        if (status.item) {
+            status.item->setVisible(false);
+        }
+        break;
+    default:
+        break;
+    }
+}