|
|
|
/*
|
|
|
|
* newsscroller.h
|
|
|
|
*
|
|
|
|
* Copyright (c) 2000, 2001 Frerich Raabe <raabe@kde.org>
|
|
|
|
* Copyright (c) 2001 Malte Starostik <malte@kde.org>
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
* FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the
|
|
|
|
* accompanying file 'COPYING'.
|
|
|
|
*/
|
|
|
|
#ifndef NEWSSCROLLER_H
|
|
|
|
#define NEWSSCROLLER_H
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "configaccess.h"
|
|
|
|
#include "newsengine.h"
|
|
|
|
|
|
|
|
#include <tqframe.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
#include <tqpixmap.h>
|
|
|
|
|
|
|
|
class TQTimer;
|
|
|
|
class Headline;
|
|
|
|
template <class> class TQPtrList;
|
|
|
|
typedef TQPtrList<Headline> HeadlineList;
|
|
|
|
|
|
|
|
class NewsScroller : public TQFrame
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
NewsScroller(TQWidget *, ConfigAccess *, const char * = 0);
|
|
|
|
|
|
|
|
virtual TQSize sizeHint() const;
|
|
|
|
virtual TQSizePolicy sizePolicy() const;
|
|
|
|
|
|
|
|
// Convenience stuff. Somehow ugly, no?
|
|
|
|
inline bool horizontal() const
|
|
|
|
{
|
|
|
|
return m_cfg->horizontal(static_cast<ConfigAccess::Direction>(m_cfg->scrollingDirection()));
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool vertical() const
|
|
|
|
{
|
|
|
|
return m_cfg->vertical(static_cast<ConfigAccess::Direction>(m_cfg->scrollingDirection()));
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool rotated() const
|
|
|
|
{
|
|
|
|
return m_cfg->rotated(static_cast<ConfigAccess::Direction>(m_cfg->scrollingDirection()));
|
|
|
|
}
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void clear();
|
|
|
|
void addHeadline(Article::Ptr);
|
|
|
|
void reset(bool bSeparatorOnly = false);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void contextMenu();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void enterEvent(TQEvent *);
|
|
|
|
virtual void mousePressEvent(TQMouseEvent *);
|
|
|
|
virtual void mouseReleaseEvent(TQMouseEvent *);
|
|
|
|
virtual void mouseMoveEvent(TQMouseEvent *);
|
|
|
|
virtual void wheelEvent(TQWheelEvent *);
|
|
|
|
virtual void leaveEvent(TQEvent *);
|
|
|
|
virtual void drawContents(TQPainter *);
|
|
|
|
virtual void dragEnterEvent( TQDragEnterEvent *);
|
|
|
|
virtual void dropEvent(TQDropEvent *);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void scroll(int = 1, bool = true);
|
|
|
|
void slotTimeout();
|
|
|
|
|
|
|
|
private:
|
|
|
|
int scrollWidth() const;
|
|
|
|
int scrollHeight() const;
|
|
|
|
bool updateActive(const TQPoint &);
|
|
|
|
bool isHeadline(const TQString &) const;
|
|
|
|
int speedAsInterval( int speed );
|
|
|
|
|
|
|
|
private:
|
|
|
|
friend class Headline;
|
|
|
|
ConfigAccess *m_cfg;
|
|
|
|
TQTimer *m_scrollTimer;
|
|
|
|
mutable HeadlineList m_headlines;
|
|
|
|
Headline *m_activeHeadline;
|
|
|
|
TQPixmap m_separator;
|
|
|
|
int m_offset;
|
|
|
|
TQPoint m_dragPos;
|
|
|
|
bool m_mouseDrag;
|
|
|
|
TQString m_tempHeadline;
|
|
|
|
float m_totalStepping;
|
|
|
|
float m_stepping;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // NEWSSCROLLER_H
|