4 * Copyright (c) 2000, 2001 Frerich Raabe <raabe@kde.org>
5 * Copyright (c) 2001 Malte Starostik <malte@kde.org>
7 * This program is distributed in the hope that it will be useful, but WITHOUT
8 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9 * FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the
10 * accompanying file 'COPYING'.
12 #ifndef NEWSSCROLLER_H
13 #define NEWSSCROLLER_H
15 #include "configaccess.h"
16 #include "newsengine.h"
19 #include <q3ptrlist.h>
22 #include <QMouseEvent>
23 #include <QDragEnterEvent>
24 #include <QWheelEvent>
30 template <class> class Q3PtrList
;
31 typedef Q3PtrList
<Headline
> HeadlineList
;
33 class NewsScroller
: public Q3Frame
38 NewsScroller(QWidget
*, ConfigAccess
*, const char * = 0);
40 virtual QSize
sizeHint() const;
41 virtual QSizePolicy
sizePolicy() const;
43 // Convenience stuff. Somehow ugly, no?
44 inline bool horizontal() const
46 return m_cfg
->horizontal(static_cast<ConfigAccess::Direction
>(m_cfg
->scrollingDirection()));
49 inline bool vertical() const
51 return m_cfg
->vertical(static_cast<ConfigAccess::Direction
>(m_cfg
->scrollingDirection()));
54 inline bool rotated() const
56 return m_cfg
->rotated(static_cast<ConfigAccess::Direction
>(m_cfg
->scrollingDirection()));
61 void addHeadline(Article::Ptr
);
62 void reset(bool bSeparatorOnly
= false);
68 virtual void enterEvent(QEvent
*);
69 virtual void mousePressEvent(QMouseEvent
*);
70 virtual void mouseReleaseEvent(QMouseEvent
*);
71 virtual void mouseMoveEvent(QMouseEvent
*);
72 virtual void wheelEvent(QWheelEvent
*);
73 virtual void leaveEvent(QEvent
*);
74 virtual void drawContents(QPainter
*);
75 virtual void dragEnterEvent( QDragEnterEvent
*);
76 virtual void dropEvent(QDropEvent
*);
79 void scroll(int = 1, bool = true);
83 int scrollWidth() const;
84 int scrollHeight() const;
85 bool updateActive(const QPoint
&);
86 bool isHeadline(const QString
&) const;
87 int speedAsInterval( int speed
);
90 friend class Headline
;
92 QTimer
*m_scrollTimer
;
93 mutable HeadlineList m_headlines
;
94 Headline
*m_activeHeadline
;
99 QString m_tempHeadline
;
100 float m_totalStepping
;
104 #endif // NEWSSCROLLER_H