src/hbplugins/inputmethods/touchinput/hbinputtouchkeypadbutton.cpp
changeset 5 627c4a0fd0e7
parent 3 11d3954df52a
child 6 c3690ec91ef8
--- a/src/hbplugins/inputmethods/touchinput/hbinputtouchkeypadbutton.cpp	Thu May 27 13:10:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbPlugins module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-#include <QGraphicsScene>
-#include <QGraphicsSceneMouseEvent>
-
-#include <hbframedrawer.h>
-#include <hbframedrawerpool_p.h>
-#include <hbframeitem.h>
-#include <QGraphicsSceneResizeEvent>
-#include <hbtextitem.h>
-#include <hbiconitem.h>
-#include <hbevent.h>
-#ifdef HB_EFFECTS
-#include <hbeffect.h>
-#endif
-#include <hbtapgesture.h>
-
-#include "hbinputtouchkeypadbutton.h"
-#include "hbinputvkbwidget.h"
-#include "hbinputvkbwidget_p.h"
-
-/// @cond
-
-/*!
-@proto
-@hbinput
-\class HbTouchKeypadButton
-\brief A button widget to be used in touch keypads.
-
-Expands HbPushButton functionality to suit touch keypad purposes. It handles virtual keyboard closing gesture
-that is initiated from within the button area and knows how to act as a sticky input button. Sticky buttons propagate
-mouse press state to neighboring button when a drag event crosses widget boundary. This is needed for example in virtual qwerty where
-user must be able to slide finger across the keyboard.  
-*/
-
-const QString HbNormalBackground("qtg_fr_input_btn_keypad_normal");
-const QString HbNormalPressedBackground("qtg_fr_input_btn_keypad_pressed");
-const QString HbNormalInActiveBackground("qtg_fr_input_btn_keypad_disabled");
-const QString HbNormalLatchedBackground("qtg_fr_input_btn_keypad_latched");
-
-const QString HbFunctionBackground("qtg_fr_input_btn_function_normal");
-const QString HbFunctionPressedBackground("qtg_fr_input_btn_function_pressed");
-const QString HbFuncInActiveBackground("qtg_fr_input_btn_function_disabled");
-const QString HbFunctionLatchedBackground("qtg_fr_input_btn_function_latched");
-
-inline HbTouchKeypadButton* hbtouchkeypadbutton_cast(QGraphicsItem *item)
-{
-    if( item->isWidget() && qobject_cast<HbTouchKeypadButton *>(static_cast<QGraphicsWidget*>(item)) ) {
-        return static_cast<HbTouchKeypadButton *>(item);
-    }
-    return 0;
-}
-
-class HbTouchKeypadButtonPrivate
-{
-public:
-    HbTouchKeypadButtonPrivate(HbInputVkbWidget* owner)
-        : mOwner(owner),
-          mFaded(false),
-          mButtonType(HbTouchKeypadButton::HbTouchButtonNormal),
-          mFrameIcon(0),
-          mStickyKey(false),
-          mLatch(false)
-    {}
-
-public:
-    HbInputVkbWidget* mOwner;
-    bool mFaded;
-    HbTouchKeypadButton::HbTouchButtonType mButtonType;
-    HbFrameItem *mFrameIcon;
-    bool mStickyKey;
-    bool mLatch;
-    int mKeyCode;
-};
-
-HbTouchKeypadButton::HbTouchKeypadButton(HbInputVkbWidget *owner,
-                                         const QString &text,
-                                         QGraphicsWidget *parent)
-                                         : HbPushButton(text, parent), d_ptr(new HbTouchKeypadButtonPrivate(owner))
-{
-    #ifdef HB_EFFECTS
-        HbEffect::disable(this);
-    #endif
-
-    this->setToolTip(QString());
-    setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-    setProperty("buttonType", "normal");
-}
-
-HbTouchKeypadButton::HbTouchKeypadButton(HbInputVkbWidget *owner,
-                                         const HbIcon &icon,
-                                         const QString &text,
-                                         QGraphicsItem *parent)
-                                         : HbPushButton(icon, text, parent), d_ptr(new HbTouchKeypadButtonPrivate(owner))
-{
-    #ifdef HB_EFFECTS
-        HbEffect::disable(this);
-    #endif
-
-    this->setToolTip(QString());
-    setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-    setProperty("buttonType", "normal");
-}
-
-HbTouchKeypadButton::~HbTouchKeypadButton()
-{
-    delete d_ptr;
-}
-
-void HbTouchKeypadButton::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event)
-}
-
-void HbTouchKeypadButton::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event)
-}
-
-void HbTouchKeypadButton::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event)
-}
-
-void HbTouchKeypadButton::gestureEvent(QGestureEvent *event)
-{
-    Q_D(HbTouchKeypadButton);
-    if (HbTapGesture *tap = qobject_cast<HbTapGesture*>(event->gesture(Qt::TapGesture))) {
-        switch(tap->state()) {
-        case Qt::GestureStarted:
-            if (d->mOwner && d->mOwner->d_func()) {
-                d->mOwner->d_func()->updateMouseHitItem(this, tap->scenePosition());
-            }
-            if (!(d->mButtonType == HbTouchButtonNormalInActive && text().isEmpty())) {
-                setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonPressed);
-            }
-            break;
-        case Qt::GestureUpdated:
-            // Handle tap-and-hold?
-            break;
-        case Qt::GestureFinished:
-            if (!(d->mButtonType == HbTouchButtonNormalInActive && text().isEmpty())) {
-                if (d->mLatch) {
-                    setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonLatched);
-                } else {
-                    setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-                }
-                break;
-        case Qt::GestureCanceled:
-                setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-                break;
-        default:
-                break;
-            }
-        }
-    }
-    HbPushButton::gestureEvent(event);
-}
-
-void HbTouchKeypadButton::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
-    Q_D(HbTouchKeypadButton);
-
-    HbPushButton::resizeEvent(event);
-
-    // setting the draw rect for the frameitem in this button
-    // get the new size, and use the new size to the frameitem
-    if (d->mFrameIcon ) {
-        QSizeF mySize = event->newSize();
-        QRectF rect = QRectF(mySize.width()*0.1, mySize.height()*0.3, mySize.width()*0.8, mySize.height());
-        d->mFrameIcon->setGeometry( rect );
-    }
-}
-
-bool HbTouchKeypadButton::isFaded()
-{
-    Q_D(HbTouchKeypadButton);
-    return d->mFaded;
-}
-
-void HbTouchKeypadButton::setFade(bool fade)
-{
-    Q_D(HbTouchKeypadButton);
-    if (d->mFaded == fade) {
-        return;
-    }
-
-    d->mFaded =  fade;
-
-    // now set button's text, type and background attributes based on d->mFaded value
-    if(d->mFaded) {
-        if (d->mFrameIcon) {
-            d->mFrameIcon->setOpacity(0.2);
-        }
-        if(HbTouchButtonNormal == getButtonType() ){
-            setButtonType(HbTouchKeypadButton::HbTouchButtonNormalInActive);
-        } else if(HbTouchButtonFunction == getButtonType()) {
-            setButtonType(HbTouchKeypadButton::HbTouchButtonFnInActive);
-        }
-    } else { 
-        if (d->mFrameIcon) {
-            d->mFrameIcon->setOpacity(1.0);
-        }
-        if(HbTouchButtonNormalInActive == getButtonType()){
-            setButtonType(HbTouchKeypadButton::HbTouchButtonNormal);
-        } else if(HbTouchButtonFnInActive == getButtonType()) {
-            setButtonType(HbTouchKeypadButton::HbTouchButtonFunction);
-        }
-    }
-    setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-}
-
-void HbTouchKeypadButton::setButtonType(HbTouchButtonType buttonType)
-{
-    Q_D(HbTouchKeypadButton);
-    d->mButtonType = buttonType;
-    if (buttonType == HbTouchButtonNormal ||
-        buttonType == HbTouchButtonNormalInActive) {
-        setProperty("buttonType", "normal");
-    } else if (buttonType == HbTouchButtonFunction ||
-               buttonType == HbTouchButtonFnInActive){
-        setProperty("buttonType", "function");
-    }
-}
-
-int HbTouchKeypadButton::getButtonType()
-{
-    Q_D(HbTouchKeypadButton);
-    return d->mButtonType;
-}
-
-HbFrameItem * HbTouchKeypadButton::getFrameIcon()
-{
-    Q_D(HbTouchKeypadButton);
-    return d->mFrameIcon;
-}
-
-void HbTouchKeypadButton::setBackgroundAttributes(HbTouchButtonState buttonState)
-{
-    Q_D(HbTouchKeypadButton);
-
-    if(d->mButtonType == HbTouchButtonNormal) {
-        if(buttonState == HbTouchKeypadButton::HbTouchButtonPressed) {
-            setBackground(HbNormalPressedBackground);
-        } else if (buttonState == HbTouchKeypadButton::HbTouchButtonLatched) {
-            setBackground(HbNormalLatchedBackground);
-        } else {
-            setBackground(HbNormalBackground);
-        }
-    } else if(d->mButtonType == HbTouchButtonFunction) {
-        if(buttonState == HbTouchKeypadButton::HbTouchButtonPressed) {
-            setBackground(HbFunctionPressedBackground);
-        } else if (buttonState == HbTouchKeypadButton::HbTouchButtonLatched) {
-            setBackground(HbFunctionLatchedBackground);
-        } else{
-            setBackground(HbFunctionBackground);
-        }
-    } else if(d->mButtonType == HbTouchButtonFnInActive){
-        setBackground(HbFuncInActiveBackground);
-    } else if(d->mButtonType == HbTouchButtonNormalInActive) {
-        setBackground(HbNormalInActiveBackground);
-    } else {
-        setBackground(HbFuncInActiveBackground);
-    }
-}
-
-void HbTouchKeypadButton::setBackground(const QString& backgroundFrameFilename)
-{
-    HbFrameDrawer* drawer = frameBackground();
-    if (!drawer || drawer->frameGraphicsName() != backgroundFrameFilename) {
-        setFrameBackground(HbFrameDrawerPool::get(backgroundFrameFilename, HbFrameDrawer::NinePieces, size()));
-        update();
-    }
-}
-
-void HbTouchKeypadButton::setFrameIcon(const QString& frameIconFileName )
-{
-    Q_D(HbTouchKeypadButton);
-
-    if (!d->mFrameIcon ) {
-        d->mFrameIcon = new HbFrameItem(this);
-        HbFrameDrawer *framedrawer = new HbFrameDrawer(frameIconFileName, HbFrameDrawer::ThreePiecesHorizontal);
-        d->mFrameIcon->setFrameDrawer(framedrawer);
-    } else {
-        d->mFrameIcon->frameDrawer().setFrameGraphicsName(frameIconFileName);
-    }
-}
-
-int HbTouchKeypadButton::type() const
-{
-    Q_D(const HbTouchKeypadButton);
-
-    if (d->mButtonType == HbTouchButtonFunction ||
-        d->mButtonType == HbTouchButtonFnInActive) {
-        return Hb::ItemType_InputFunctionButton;
-    } else if (d->mButtonType == HbTouchButtonNormal ||
-        d->mButtonType == HbTouchButtonNormalInActive) {
-        return Hb::ItemType_InputCharacterButton;
-    } else {
-        return Hb::ItemType_InputCharacterButton;
-    }
-}
-
-void HbTouchKeypadButton::setAsStickyButton(bool isSticky)
-{
-    Q_D(HbTouchKeypadButton);
-    d->mStickyKey = isSticky;
-}
-
-bool HbTouchKeypadButton::isStickyButton() const
-{
-    Q_D(const HbTouchKeypadButton);
-    return d->mStickyKey;
-}
-
-void HbTouchKeypadButton::setLatch(bool enable)
-{
-    Q_D(HbTouchKeypadButton);
-
-    d->mLatch = enable;
-    if (d->mLatch) {
-        setProperty("state", "latched");
-        setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonLatched);
-    } else {
-        setProperty("state", "normal");
-        setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-    }
-}
-
-bool HbTouchKeypadButton::isLatched() const
-{
-    Q_D(const HbTouchKeypadButton);
-    return d->mLatch;
-}
-
-int HbTouchKeypadButton::keyCode() const
-{
-    Q_D(const HbTouchKeypadButton);
-    return d->mKeyCode;
-}
-
-void HbTouchKeypadButton::setKeyCode(int code)
-{
-    Q_D(HbTouchKeypadButton);
-    d->mKeyCode = code;
-}
-
-void HbTouchKeypadButton::setText(const QString &text)
-{
-    // Workaround for pushbutton feature
-    if (!text.isNull()) {
-        HbPushButton::setText(text);
-    } else {
-        HbPushButton::setText(QString(""));
-    }
-}
-
-void HbTouchKeypadButton::setAdditionalText(const QString &additionalText)
-{
-    if (!additionalText.isNull()) {
-        HbPushButton::setAdditionalText(additionalText);
-    } else {
-        HbPushButton::setAdditionalText(QString(""));
-    }
-}
-
-void HbTouchKeypadButton::changeEvent( QEvent *event )
-{
-    if ( event->type() == HbEvent::ThemeChanged ) {
-        updatePrimitives();
-        setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-    }
-    HbPushButton::changeEvent(event);
-}
-
-void HbTouchKeypadButton::updatePrimitives()
-{
-    Q_D(HbTouchKeypadButton);
-    HbPushButton::updatePrimitives();
-
-    if (d->mFrameIcon && d->mFaded) {
-        d->mFrameIcon->setOpacity(0.2);
-    }
-}
-
-QSizeF HbTouchKeypadButton::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
-{
-    QSizeF sh;
-    switch (which) {
-        case Qt::MinimumSize:
-            sh = QSizeF(50, 50);
-            break;
-        case Qt::PreferredSize:
-            sh = HbAbstractButton::sizeHint(which, constraint);
-            break;
-        case Qt::MaximumSize:
-            sh = QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
-            break;
-        default:
-            sh = HbAbstractButton::sizeHint(which, constraint);
-            break;
-    }
-    return sh;
-}
-
-QVariant HbTouchKeypadButton::itemChange( GraphicsItemChange change, const QVariant & value )
-{
-	// If the button is being hidden and it has the press background, 
-	// need to set it to released background. This fix is needed for the error:
-	// In ITU-T long press * key and then return back to alpha mode, the * key 
-	// has button pressed background.
-	if (QGraphicsItem::ItemVisibleHasChanged == change && !value.toBool()) { 
-		if (isDown()) {
-			setBackgroundAttributes(HbTouchKeypadButton::HbTouchButtonReleased);
-		}
-	}
-	return HbPushButton::itemChange(change, value);
-}
-
-void HbTouchKeypadButton::setInitialSize(const QSizeF& initialSize)
-{
-    setPreferredSize(initialSize);
-    QGraphicsItem* backgroundPrimitive = primitive(HbStyle::P_PushButton_background);
-    if (backgroundPrimitive) {
-        HbIconItem *iconItem = static_cast<HbIconItem*>(backgroundPrimitive);
-        iconItem->setSize(initialSize);
-    }
-}
-
-/// @endcond
-
-// End of file