src/hbwidgets/editors/hbmagnifier_p.h
author hgs
Mon, 18 Oct 2010 18:23:13 +0300
changeset 34 ed14f46c0e55
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
hgs
parents:
diff changeset
     1
/****************************************************************************
hgs
parents:
diff changeset
     2
**
hgs
parents:
diff changeset
     3
** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     4
** All rights reserved.
hgs
parents:
diff changeset
     5
** Contact: Nokia Corporation (developer.feedback@nokia.com)
hgs
parents:
diff changeset
     6
**
hgs
parents:
diff changeset
     7
** This file is part of the HbWidgets module of the UI Extensions for Mobile.
hgs
parents:
diff changeset
     8
**
hgs
parents:
diff changeset
     9
** GNU Lesser General Public License Usage
hgs
parents:
diff changeset
    10
** This file may be used under the terms of the GNU Lesser General Public
hgs
parents:
diff changeset
    11
** License version 2.1 as published by the Free Software Foundation and
hgs
parents:
diff changeset
    12
** appearing in the file LICENSE.LGPL included in the packaging of this file.
hgs
parents:
diff changeset
    13
** Please review the following information to ensure the GNU Lesser General
hgs
parents:
diff changeset
    14
** Public License version 2.1 requirements will be met:
hgs
parents:
diff changeset
    15
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
hgs
parents:
diff changeset
    16
**
hgs
parents:
diff changeset
    17
** In addition, as a special exception, Nokia gives you certain additional
hgs
parents:
diff changeset
    18
** rights.  These rights are described in the Nokia Qt LGPL Exception
hgs
parents:
diff changeset
    19
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
hgs
parents:
diff changeset
    20
**
hgs
parents:
diff changeset
    21
** If you have questions regarding the use of this file, please contact
hgs
parents:
diff changeset
    22
** Nokia at developer.feedback@nokia.com.
hgs
parents:
diff changeset
    23
**
hgs
parents:
diff changeset
    24
****************************************************************************/
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
//
hgs
parents:
diff changeset
    27
//  W A R N I N G
hgs
parents:
diff changeset
    28
//  -------------
hgs
parents:
diff changeset
    29
//
hgs
parents:
diff changeset
    30
// This file is not part of the Hb API.  It exists purely as an
hgs
parents:
diff changeset
    31
// implementation detail.  This file may change from version to
hgs
parents:
diff changeset
    32
// version without notice, or even be removed.
hgs
parents:
diff changeset
    33
//
hgs
parents:
diff changeset
    34
// We mean it.
hgs
parents:
diff changeset
    35
//
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
#ifndef HBMAGNIFIER_P_H
hgs
parents:
diff changeset
    39
#define HBMAGNIFIER_P_H
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
#include "hbglobal.h"
hgs
parents:
diff changeset
    42
#include "hbnamespace_p.h"
hgs
parents:
diff changeset
    43
#include "hbwidget.h"
hgs
parents:
diff changeset
    44
#include "hbeffect.h"
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
QT_FORWARD_DECLARE_CLASS(QGraphicsItem)
hgs
parents:
diff changeset
    48
QT_FORWARD_DECLARE_CLASS(QStyleOptionGraphicsItem)
hgs
parents:
diff changeset
    49
QT_FORWARD_DECLARE_CLASS(QPainter)
hgs
parents:
diff changeset
    50
QT_FORWARD_DECLARE_CLASS(QPointF)
hgs
parents:
diff changeset
    51
QT_FORWARD_DECLARE_CLASS(QGraphicsSceneResizeEvent)
hgs
parents:
diff changeset
    52
QT_FORWARD_DECLARE_CLASS(QVariant)
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
class HB_AUTOTEST_EXPORT HbMagnifierDelegate
hgs
parents:
diff changeset
    56
{
hgs
parents:
diff changeset
    57
public:
hgs
parents:
diff changeset
    58
    virtual void drawContents(QPainter *painter, const QStyleOptionGraphicsItem *option) = 0;
hgs
parents:
diff changeset
    59
    virtual ~HbMagnifierDelegate() {}
hgs
parents:
diff changeset
    60
};
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
class HbMagnifierPrivate;
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
class HB_AUTOTEST_EXPORT HbMagnifier : public HbWidget
hgs
parents:
diff changeset
    66
{
hgs
parents:
diff changeset
    67
    Q_OBJECT
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
public:
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
    enum ContentLockStyle {
hgs
parents:
diff changeset
    72
        ContentLockStyleFrozen, // Content position is frozen regardless of magnifier postion
hgs
parents:
diff changeset
    73
        ContentLockStyleSmooth  // Content position depends on magnifier postion and scale factor
hgs
parents:
diff changeset
    74
    };
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    explicit HbMagnifier(QGraphicsItem *parent = 0);
hgs
parents:
diff changeset
    77
    virtual ~HbMagnifier();
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
    void setBackground(const QString& graphicsName);
hgs
parents:
diff changeset
    80
    void setMask(const QString& graphicsName);
hgs
parents:
diff changeset
    81
    void setOverlay(const QString& graphicsName);
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
    void setContentDelegate(HbMagnifierDelegate * delegate);
hgs
parents:
diff changeset
    84
    HbMagnifierDelegate * contentDelegate() const;
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
    void setContentScale(qreal factor);
hgs
parents:
diff changeset
    87
    qreal contentScale() const;
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    void centerOnContent ( const QPointF & pos );
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    bool isContentPositionLocked() const;
hgs
parents:
diff changeset
    92
    void lockContentPosition();
hgs
parents:
diff changeset
    93
    void unlockContentPosition();
hgs
parents:
diff changeset
    94
    void setContentLockstyle(ContentLockStyle contentLockStyle);
hgs
parents:
diff changeset
    95
    HbMagnifier::ContentLockStyle contentLockstyle() const;
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    enum { Type = HbPrivate::ItemType_Magnifier };
hgs
parents:
diff changeset
    98
    int type() const { return Type; }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
hgs
parents:
diff changeset
   101
    void hideWithEffect();
hgs
parents:
diff changeset
   102
    void showWithEffect();
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
protected:
hgs
parents:
diff changeset
   105
    HbMagnifier(HbMagnifierPrivate &dd, QGraphicsItem *parent);
hgs
parents:
diff changeset
   106
    QVariant itemChange(GraphicsItemChange change, const QVariant & value);
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    void resizeEvent(QGraphicsSceneResizeEvent *event);
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
private:
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    Q_PRIVATE_SLOT(d_func(), void _q_hidingEffectFinished(const HbEffect::EffectStatus &status))
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
private:
hgs
parents:
diff changeset
   115
    Q_DECLARE_PRIVATE_D(d_ptr, HbMagnifier)
hgs
parents:
diff changeset
   116
    Q_DISABLE_COPY(HbMagnifier)
hgs
parents:
diff changeset
   117
};
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
#endif // HBMAGNIFIER_P_H