You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
3.2 KiB
152 lines
3.2 KiB
// (c) 2000 Peter Putzer
|
|
#ifndef KSCROLLER_H
|
|
#define KSCROLLER_H
|
|
|
|
#include <tqframe.h>
|
|
|
|
class TQScrollBar;
|
|
|
|
/**
|
|
* A window that automatically enables scrollbars
|
|
* if it's smaller than the content.
|
|
*
|
|
* @author Peter Putzer <putzer@kde.org>
|
|
* @version $Id$
|
|
*/
|
|
class KScroller : public TQFrame
|
|
{
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param parent the parent of this widget (passed on as ususal).
|
|
* @param name the name of this widget (as above).
|
|
*/
|
|
KScroller (TQWidget* parent = 0L, const char* name = 0L);
|
|
|
|
/**
|
|
* Destructor.
|
|
*/
|
|
virtual ~KScroller ();
|
|
|
|
/**
|
|
* @return the vertical scrollbar.
|
|
*/
|
|
inline TQScrollBar* verticalScrollBar () { return mVertical; }
|
|
|
|
/**
|
|
* @return the horizontal scrollbar.
|
|
*/
|
|
inline TQScrollBar* horizontalScrollBar () { return mHorizontal; }
|
|
|
|
/**
|
|
* @return the current content, or 0L if none set.
|
|
*/
|
|
inline TQWidget* content () { return mContent; }
|
|
|
|
/**
|
|
* @return the current corner widget, or 0L if none set.
|
|
*/
|
|
TQWidget* cornerWidget ();
|
|
|
|
public slots:
|
|
/**
|
|
* Sets the content. Ownership is transfered to the scroller, any
|
|
* previously set content will be deleted!
|
|
*
|
|
* @param content has to be a child of the KScroller.
|
|
*/
|
|
void setContent (TQWidget* content);
|
|
|
|
/**
|
|
* Sets the corner widget (the small widget that's located where the vertical and horizontal scrollbars
|
|
* allmost meet).
|
|
*
|
|
* @param corner has to be a child of the KScroller.
|
|
*/
|
|
void setCornerWidget (TQWidget* corner);
|
|
|
|
/**
|
|
* Update the scrollbars. Call whenever you change the contents minimumSize.
|
|
*/
|
|
void updateScrollBars ();
|
|
|
|
protected:
|
|
/**
|
|
* Reimplemented for internal reasons, the API is not affected.
|
|
*/
|
|
virtual void resizeEvent (TQResizeEvent*);
|
|
|
|
/**
|
|
* Reimplemented for internal reasons, the API is not affected.
|
|
*/
|
|
virtual TQSize sizeHint() const;
|
|
|
|
/**
|
|
* Reimplemented for internal reasons, the API is not affected.
|
|
*/
|
|
virtual TQSize minimumSizeHint() const;
|
|
|
|
|
|
private slots:
|
|
/**
|
|
* Scroll vertically.
|
|
*
|
|
* @param value is the new slider value.
|
|
*/
|
|
void scrollVertical (int value);
|
|
|
|
/**
|
|
* Scroll horizontally.
|
|
*
|
|
* @param value is the new slider value.
|
|
*/
|
|
void scrollHorizontal (int value);
|
|
|
|
private:
|
|
/**
|
|
* Set up the horizontal scrollbar.
|
|
*
|
|
* @param cw is the width of the content.
|
|
* @param ch is the height of the content.
|
|
* @param w is the width of the scroller.
|
|
* @param h is the height of the scroller.
|
|
*/
|
|
void setupHorizontal (int cw, int ch, int w, int h);
|
|
|
|
/**
|
|
* Set up the vertical scrollbar
|
|
*
|
|
* @param cw is the width of the content.
|
|
* @param ch is the height of the content.
|
|
* @param w is the width of the scroller.
|
|
* @param h is the height of the scroller.
|
|
*/
|
|
void setupVertical (int cw, int ch, int w, int h);
|
|
|
|
/**
|
|
* Set up the corner widget.
|
|
*
|
|
* @param w is the width of the scroller.
|
|
* @param h is the height of the scroller.
|
|
*/
|
|
void setupCornerWidget (int w, int h);
|
|
|
|
class KScrollerPrivate;
|
|
KScrollerPrivate* d;
|
|
|
|
TQScrollBar* mVertical;
|
|
TQScrollBar* mHorizontal;
|
|
TQWidget* mCornerWidget;
|
|
|
|
TQWidget* mContent;
|
|
|
|
int mVerticalOld;
|
|
int mHorizontalOld;
|
|
};
|
|
|
|
#endif // KSCROLLER_H
|