diff -r 000000000000 -r 16d8024aca5e src/hbcore/gui/hbwidget.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hbcore/gui/hbwidget.h Mon Apr 19 14:02:13 2010 +0300 @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** 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 HbCore 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. +** +****************************************************************************/ + +#ifndef HBWIDGET_H +#define HBWIDGET_H + +#include +#include +#include +#include +#include +#include + +class HbEvent; +class HbStyleOption; +class HbWidgetPrivate; +class HbMainWindow; +#ifdef HB_GESTURE_FW +class QGestureEvent; +#endif + +class HB_CORE_EXPORT HbWidget: public HbWidgetBase +{ + Q_OBJECT + + Q_ENUMS(FocusDelegation FocusMode) + Q_PROPERTY(QString toolTipText READ toolTip WRITE setToolTip) + Q_PROPERTY(HbWidget::FocusDelegation focusDelegation READ focusDelegation WRITE setFocusDelegation) + Q_PROPERTY(bool focusLooping READ hasFocusLooping WRITE setFocusLooping) + Q_PROPERTY(HbWidget::FocusMode focusMode READ focusMode WRITE setFocusMode) + +public: + + enum FocusDelegation + { + FocusDelegationNone, + FocusDelegationFirstChild, + FocusDelegationLastChild, + FocusDelegationBasedOnDirection, + FocusDelegationFocusedChild + }; + + enum FocusMode + { + FocusModeNormal, + FocusModeEdit + }; + + enum FocusHighlight + { + FocusHighlightNone, + FocusHighlightActive, + FocusHighlightResidual + }; + + explicit HbWidget(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0); + virtual ~HbWidget(); + virtual bool event(QEvent *e); + void setStyle(HbStyle *style); + HbStyle *style() const; + void clearActions(); + + enum { Type = Hb::ItemType_Widget }; + int type() const { return Type; } + + int pluginBaseId() const; + + HbMainWindow *mainWindow() const; + + virtual QGraphicsItem *primitive(HbStyle::Primitive primitive) const; + virtual QGraphicsLayoutItem *layoutPrimitive(const QString &itemName) const; + + void setFocusOrientation(Qt::Orientations previous, Qt::Orientations next); + + QKeySequence keyForFocusNextChild() const; + QKeySequence keyForFocusPreviousChild() const; + + void setKeyFocusMode(const QKeySequence &key); + QKeySequence keyFocusMode() const; + + QGraphicsItem *lastFocusedChild() const; + void setFocusOrder(QGraphicsItem *first, QGraphicsItem *second); + + void setFocusDelegation(HbWidget::FocusDelegation focusDelegation); + HbWidget::FocusDelegation focusDelegation() const; + + void setFocusLooping(bool enable); + bool hasFocusLooping() const; + + void setFocusMode(HbWidget::FocusMode); + HbWidget::FocusMode focusMode() const; + + void setFocusHighlight(HbStyle::Primitive type, HbWidget::FocusHighlight focusHighlight); + HbStyle::Primitive focusHighlight(HbWidget::FocusHighlight focusHighlight); + + void setBackgroundItem(HbStyle::Primitive type, int zValue = -1); + void setBackgroundItem(QGraphicsItem *item, int zValue = -1); + QGraphicsItem *backgroundItem() const; + + virtual HbFeedback::InstantEffect overrideFeedback(Hb::InstantInteraction interaction) const; + virtual HbFeedback::ContinuousEffect overrideContinuousFeedback(Hb::ContinuousInteraction interaction, int *intensity) const; + +public slots: + virtual void recreatePrimitives(); + virtual void updatePrimitives(); + +private slots: + virtual void hideFocusHighlight(); + +protected: + virtual void focusInEvent(QFocusEvent *event); + virtual void focusOutEvent(QFocusEvent *event); + virtual void resizeEvent(QGraphicsSceneResizeEvent *event); + virtual void changeEvent(QEvent *event); + QVariant itemChange (GraphicsItemChange change, const QVariant &value); + virtual void polishEvent(); + virtual void polish(HbStyleParameters ¶ms); + void repolish(); + + void setPluginBaseId(int baseId); + +#ifdef HB_GESTURE_FW + virtual void gestureEvent(QGestureEvent *event); +#endif + +protected: + HbWidget(HbWidgetPrivate &dd, QGraphicsItem *parent, Qt::WindowFlags wFlags=0); +private: + Q_DECLARE_PRIVATE_D(d_ptr, HbWidget) + Q_DISABLE_COPY(HbWidget) + friend class HbGraphicsScenePrivate; +}; + +#endif // HBWIDGET_H