/***************************************************************************
 *   Copyright (C) 2003 by Hans Karlsson                                   *
 *   karlsson.h@home.se                                                      *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 ***************************************************************************/
#ifndef TEXTLABEL_H
#define TEXTLABEL_H
#include "meter.h"
#include <tqstring.h>
#include <tqpainter.h>
#include <tqcolor.h>
#include <tqfont.h>
#include <tqfontmetrics.h>
#include <tqstringlist.h>
#include <tqrect.h>

#include "textfield.h"

class TextLabel : public Meter
{
Q_OBJECT
  
public:
    enum ScrollType { ScrollNone, ScrollNormal,
                      ScrollBackAndForth, ScrollOnePass };

    TextLabel(karamba *k, int x,int y,int w,int h);
    TextLabel(karamba *k);
    ~TextLabel();

    void setTextProps( TextField* );
    void setValue( TQString );
    void setValue( long );
    //virtual TQString getStringValue() const { return value.join("\n"); };
    TQString getStringValue() const { return value.join("\n"); };
    void setFontSize( int );
    void setBGColor(TQColor clr);
    void setFont( TQString );
    void setAlignment( TQString );
    void setFixedPitch( bool );
    void setShadow( int );
    void mUpdate( TQPainter * );

    virtual void show();
    virtual void hide();
    int getFontSize() const;
    TQColor getBGColor() const;
    TQString getFont() const;
    TQString getAlignment() const;
    bool getFixedPitch() const;
    int getShadow() const;
    void setScroll(ScrollType type, TQPoint speed, int gap, int pause);
    void setScroll(char* type, TQPoint speed, int gap, int pause);

    void attachClickArea(TQString leftMouseButton, TQString middleMouseButton,
                         TQString rightMouseButton);

    virtual bool click(TQMouseEvent*);

private:
    int alignment;
    int clip;
    TQStringList value;
    TQFont font;
    TQColor bgColor;
    int lineHeight;
    TQSize textSize;
    int shadow;
    TextField text;
    TQPoint scrollSpeed;
    TQPoint scrollPos;
    int scrollGap;
    int scrollPause;
    int pauseCounter;
    ScrollType scrollType;

    int drawText(TQPainter *p, int x, int y, int width, int height,
                 TQString text);
    bool calculateScrollCoords(TQRect meterRect, TQRect &textRect,
                               TQPoint &next, int &x, int &y);
    void calculateTextSize();
};

#endif // TEXTLABEL_H
