aboutsummaryrefslogtreecommitdiff
path: root/src/views/mpositionindicatorview.h
blob: 4ad46e3aceeb077b4559bf274705c23aba95b387 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/***************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (directui@nokia.com)
**
** This file is part of libmeegotouch.
**
** If you have questions regarding the use of this file, please contact
** Nokia at directui@nokia.com.
**
** This library is free software; you can redistribute it and/or
** modify it 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.
**
****************************************************************************/

#ifndef MPOSITIONINDICATORVIEW_H
#define MPOSITIONINDICATORVIEW_H

#include "mwidgetview.h"
#include <mpositionindicatormodel.h>
#include <mpositionindicatorstyle.h>

class MPositionIndicator;
class QGraphicsSceneResizeEvent;
class QRegion;
class MPositionIndicatorViewPrivate;

/*!
  \class MPositionIndicatorView
  \brief MPositionIndicatorView implements a view for MPositionIndicator

  This class draws indicators on the right edge of a pannable viewport
  (vertical panning), on the bottom edge (horizontal panning), or
  both. Position indicators are drawn only when the panned widget is
  moving, and the indicator hides itself when the panned widget stops
  moving.

*/

class M_EXPORT MPositionIndicatorView : public MWidgetView
{
    Q_OBJECT
    M_VIEW(MPositionIndicatorModel, MPositionIndicatorStyle)

public:
    /*!
      \brief Constructor
    */
    MPositionIndicatorView(MPositionIndicator *controller);

    /*!
      \brief Destructor
    */
    virtual ~MPositionIndicatorView();

    //! \reimp
    virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
    virtual void changeEvent(QEvent *event);
    //! \reimp_end

protected:
    //! \reimp
    virtual void drawBackground(QPainter *painter, const QStyleOptionGraphicsItem *option) const;
    virtual void drawContents(QPainter *painter, const QStyleOptionGraphicsItem *option) const;
    virtual void setupModel();
    //! \reimp_end

protected Q_SLOTS:
    //! \reimp
    virtual void updateData(const QList<const char *>& modifications);
    //! \reimp_end


private Q_SLOTS:
    /*!
      \brief Hides the position indicator
     */
    virtual void hide();

private:
    /*!
      \brief Restarts timer which is used to hide position indicator after pannable widget has stopped moving
     */
    void resetHideTimer();

    Q_DISABLE_COPY(MPositionIndicatorView)
    Q_DECLARE_PRIVATE(MPositionIndicatorView)

    friend class  Ut_MPositionIndicatorView;
};

#endif