summaryrefslogtreecommitdiffstats
path: root/libtdegames/kgamelcd.h
diff options
context:
space:
mode:
Diffstat (limited to 'libtdegames/kgamelcd.h')
-rw-r--r--libtdegames/kgamelcd.h252
1 files changed, 252 insertions, 0 deletions
diff --git a/libtdegames/kgamelcd.h b/libtdegames/kgamelcd.h
new file mode 100644
index 00000000..6b84f012
--- /dev/null
+++ b/libtdegames/kgamelcd.h
@@ -0,0 +1,252 @@
+/*
+ This file is part of the KDE games library
+ Copyright (C) 2001,2002,2003 Nicolas Hadacek ([email protected])
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __KGAMELCD_H
+#define __KGAMELCD_H
+
+#include <tqlcdnumber.h>
+#include <tqvaluevector.h>
+#include <kdemacros.h>
+
+class TQLabel;
+class TQTimer;
+
+//-----------------------------------------------------------------------------
+/**
+ * This class is a visually enhanced @ref TQLCDNumber:
+ * <ul>
+ * <li> It can show an additional string before the integer being
+ * displayed.</li>
+ * <li> Its foreground and background colors can easily be modified. </li>
+ * <li> It can be highlighted for a short time. </li>
+ * </ul>
+ *
+ * @since 3.2
+ */
+class KDE_EXPORT KGameLCD : public TQLCDNumber
+{
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ KGameLCD(uint nbDigits, TQWidget *parent = 0, const char *name = 0);
+
+ ~KGameLCD();
+
+ /**
+ * Set the default background color.
+ */
+ void setDefaultBackgroundColor(const TQColor &color);
+
+ /**
+ * Set the default foreground color.
+ */
+ void setDefaultColor(const TQColor &color);
+
+ /**
+ * Set highlight color.
+ */
+ void setHighlightColor(const TQColor &color);
+
+ /**
+ * Set the string that will be displayed before the integer number to be
+ * displayed. By default this string is null.
+ */
+ void setLeadingString(const TQString &s);
+
+ /**
+ * Set the highlight duration in milliseconds. The default value is
+ * 800 milliseconds.
+ */
+ void setHighlightTime(uint time);
+
+ /**
+ * Reset the foreground color to the default one.
+ */
+ void resetColor();
+
+ /**
+ * Set the foreground color.
+ */
+ void setColor(const TQColor &color);
+
+public slots:
+ /**
+ * Highlight the LCD with the TQColorGourp::HighlightedText color
+ * for a small time (setHighlightTime).
+ */
+ void highlight();
+
+ /**
+ * Display the given integer with the (optionnal) leading string.
+ *
+ * Note: we cannot use display(int) since TQLCDNumber::display is
+ * not virtual... And you cannot use TQLCDNumber::intValue() to retrieve
+ * the given value.
+ */
+ void displayInt(int value);
+
+private slots:
+ void timeout() { highlight(false); }
+
+private:
+ TQColor _fgColor, _hlColor;
+ TQString _lead;
+ uint _htime;
+ TQTimer *_timer;
+
+ class KGameLCDPrivate;
+ KGameLCDPrivate *d;
+
+ void highlight(bool light);
+
+};
+
+//-----------------------------------------------------------------------------
+/**
+ * This class is a digital clock widget. It has a maximum duration of
+ * 3599 seconds (one hour) and it gets updated every second.
+ *
+ * @since 3.2
+ */
+class KDE_EXPORT KGameLCDClock : public KGameLCD
+{
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ KGameLCDClock(TQWidget *parent = 0, const char *name = 0);
+
+ ~KGameLCDClock();
+
+ /**
+ * @return the total number of seconds elapsed.
+ */
+ uint seconds() const;
+
+ /**
+ * @return the time as a string to be displayed: "mm:ss".
+ */
+ TQString pretty() const;
+
+ /**
+ * Set the time.
+ */
+ void setTime(uint seconds);
+
+ /**
+ * Set the time (format should be "mm:ss").
+ */
+ void setTime(const TQString &s);
+
+public slots:
+ /**
+ * Stop the clock and reset it to zero.
+ */
+ virtual void reset();
+
+ /**
+ * Stop the clock but do not reset it to zero.
+ */
+ virtual void stop();
+
+ /**
+ * Start the clock from the current time.
+ */
+ virtual void start();
+
+protected slots:
+ virtual void timeoutClock();
+
+private:
+ TQTimer *_timerClock;
+ uint _sec, _min;
+
+ class KGameLCDClockPrivate;
+ KGameLCDClockPrivate *d;
+
+ void showTime();
+};
+
+//-----------------------------------------------------------------------------
+/**
+ * This widget holds a list of @ref TQLCDNumber arranged in a vertical tqlayout.
+ * It also shows a label at the top of the list.
+ *
+ * @since 3.2
+ */
+class KDE_EXPORT KGameLCDList : public TQWidget
+{
+ Q_OBJECT
+ TQ_OBJECT
+public:
+ /**
+ * Constructor.
+ *
+ * @param title is the content of the top label.
+ * @param parent passed to the TQWidget constructor
+ * @param name passed to the TQWidget constructor
+ */
+ KGameLCDList(const TQString &title,
+ TQWidget *parent = 0, const char *name = 0);
+ KGameLCDList(TQWidget *parent = 0, const char *name = 0);
+
+ ~KGameLCDList();
+
+ /**
+ * Append a TQLCDNumber at the bottom of the list.
+ * The TQLCDNumber should have the KGameLCDList as parent.
+ */
+ void append(TQLCDNumber *lcd);
+
+ /**
+ * Append a TQLCDNumber at the bottom of the list.
+ * The TQLCDNumber should have the KGameLCDList as parent.
+ */
+ void append(const TQString &leading, TQLCDNumber *lcd);
+
+ /**
+ * Delete all @ref TQLCDNumber and clear the list.
+ */
+ void clear();
+
+ /**
+ * @return the title label.
+ */
+ TQLabel *title() const { return _title; }
+
+ /**
+ * @return the TQLCDNumber at index @param i
+ */
+ TQLCDNumber *lcd(uint i) const { return _lcds[i]; }
+
+ /**
+ * @return the number of TQLCDNumber in the list.
+ */
+ uint size() const { return _lcds.size(); }
+
+private:
+ TQLabel *_title;
+ TQValueVector<TQLCDNumber *> _lcds;
+
+ class KGameLCDListPrivate;
+ KGameLCDListPrivate *d;
+
+ void init(const TQString &title);
+};
+
+#endif