~ubuntu-branches/ubuntu/utopic/kdebase/utopic

« back to all changes in this revision

Viewing changes to apps/dolphin/src/dolphinviewautoscroller.h

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2010-11-25 16:00:47 UTC
  • mfrom: (1.1.53 upstream)
  • Revision ID: james.westby@ubuntu.com-20101125160047-bsycodsp50o8su5s
Tags: 4:4.5.80-0ubuntu1
* New upstream beta release
* Drop kubuntu_06_simple_aboutpage.diff, didn't apply and no point
  keeping a distro patch to an app we don't ship by default
* Drop kubuntu_23_konqueror_spinner_in_toolbar.diff now upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/***************************************************************************
2
 
 *   Copyright (C) 2008 by Peter Penz <peter.penz@gmx.at>                  *
3
 
 *                                                                         *
4
 
 *   This program is free software; you can redistribute it and/or modify  *
5
 
 *   it under the terms of the GNU General Public License as published by  *
6
 
 *   the Free Software Foundation; either version 2 of the License, or     *
7
 
 *   (at your option) any later version.                                   *
8
 
 *                                                                         *
9
 
 *   This program is distributed in the hope that it will be useful,       *
10
 
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11
 
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12
 
 *   GNU General Public License for more details.                          *
13
 
 *                                                                         *
14
 
 *   You should have received a copy of the GNU General Public License     *
15
 
 *   along with this program; if not, write to the                         *
16
 
 *   Free Software Foundation, Inc.,                                       *
17
 
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
18
 
 ***************************************************************************/
19
 
 
20
 
#ifndef DOLPHINVIEWAUTOSCROLLER_H
21
 
#define DOLPHINVIEWAUTOSCROLLER_H
22
 
 
23
 
#include <QTime>
24
 
#include <QObject>
25
 
 
26
 
class QAbstractItemView;
27
 
class QModelIndex;
28
 
class QTimer;
29
 
 
30
 
/**
31
 
 * @brief Assures that an autoscrolling is done for item views.
32
 
 *
33
 
 * This is a workaround as QAbstractItemView::setAutoScroll() is not usable
34
 
 * when selecting items (see Qt issue #214542).
35
 
 */
36
 
class DolphinViewAutoScroller : public QObject
37
 
{
38
 
    Q_OBJECT
39
 
 
40
 
public:
41
 
    DolphinViewAutoScroller(QAbstractItemView* parent);
42
 
    virtual ~DolphinViewAutoScroller();
43
 
    bool isActive() const;
44
 
 
45
 
    /**
46
 
     * Must be invoked by the parent item view, when QAbstractItemView::currentChanged()
47
 
     * has been called. Assures that the current item stays visible when it has been
48
 
     * changed by the keyboard.
49
 
     */
50
 
    void handleCurrentIndexChange(const QModelIndex& current, const QModelIndex& previous);
51
 
 
52
 
protected:
53
 
    virtual bool eventFilter(QObject* watched, QEvent* event);
54
 
 
55
 
private slots:
56
 
    void scrollViewport();
57
 
 
58
 
private:
59
 
    void triggerAutoScroll();
60
 
    void stopAutoScroll();
61
 
 
62
 
    /**
63
 
     * Calculates the scroll increment dependent from
64
 
     * the cursor position \a cursorPos and the range 0 - \a rangeSize - 1.
65
 
     */
66
 
    int calculateScrollIncrement(int cursorPos, int rangeSize) const;
67
 
 
68
 
private:
69
 
    bool m_rubberBandSelection;
70
 
    bool m_keyPressed;
71
 
    bool m_initializedTimestamp;
72
 
    int m_horizontalScrollInc;
73
 
    int m_verticalScrollInc;
74
 
    QAbstractItemView* m_itemView;
75
 
    QTimer* m_timer;
76
 
    QTime m_timestamp;
77
 
};
78
 
 
79
 
#endif