* fix crash in PersonalInviteDialog
[kdenetwork.git] / knewsticker / newsscroller.h
blob707cfd52d59f05198ceeac0e9472bdf70efbf156
1 /*
2 * newsscroller.h
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"
18 #include <q3frame.h>
19 #include <q3ptrlist.h>
20 #include <qpixmap.h>
21 //Added by qt3to4:
22 #include <QMouseEvent>
23 #include <QDragEnterEvent>
24 #include <QWheelEvent>
25 #include <QEvent>
26 #include <QDropEvent>
28 class QTimer;
29 class Headline;
30 template <class> class Q3PtrList;
31 typedef Q3PtrList<Headline> HeadlineList;
33 class NewsScroller : public Q3Frame
35 Q_OBJECT
37 public:
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()));
59 public slots:
60 void clear();
61 void addHeadline(Article::Ptr);
62 void reset(bool bSeparatorOnly = false);
64 signals:
65 void contextMenu();
67 protected:
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 *);
78 protected slots:
79 void scroll(int = 1, bool = true);
80 void slotTimeout();
82 private:
83 int scrollWidth() const;
84 int scrollHeight() const;
85 bool updateActive(const QPoint &);
86 bool isHeadline(const QString &) const;
87 int speedAsInterval( int speed );
89 private:
90 friend class Headline;
91 ConfigAccess *m_cfg;
92 QTimer *m_scrollTimer;
93 mutable HeadlineList m_headlines;
94 Headline *m_activeHeadline;
95 QPixmap m_separator;
96 int m_offset;
97 QPoint m_dragPos;
98 bool m_mouseDrag;
99 QString m_tempHeadline;
100 float m_totalStepping;
101 float m_stepping;
104 #endif // NEWSSCROLLER_H