libkdegames Library API Documentation

kgamelcd.cpp

00001 /* 00002 This file is part of the KDE games library 00003 Copyright (C) 2001,2002,2003 Nicolas Hadacek (hadacek@kde.org) 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License version 2 as published by the Free Software Foundation. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00017 Boston, MA 02111-1307, USA. 00018 */ 00019 00020 #include "kgamelcd.h" 00021 #include "kgamelcd.moc" 00022 00023 #include <qlayout.h> 00024 #include <qlabel.h> 00025 #include <qtimer.h> 00026 00027 #include <kglobal.h> 00028 00029 00030 //----------------------------------------------------------------------------- 00031 KGameLCD::KGameLCD(uint nbDigits, QWidget *parent, const char *name) 00032 : QLCDNumber(nbDigits, parent, name), _htime(800) 00033 { 00034 const QPalette &p = palette(); 00035 _fgColor = p.color(QPalette::Active, QColorGroup::Foreground); 00036 _hlColor = p.color(QPalette::Active, QColorGroup::HighlightedText); 00037 00038 _timer = new QTimer(this); 00039 connect(_timer, SIGNAL(timeout()), SLOT(timeout())); 00040 00041 setFrameStyle(Panel | Plain); 00042 setSegmentStyle(Flat); 00043 00044 displayInt(0); 00045 } 00046 00047 KGameLCD::~KGameLCD() 00048 {} 00049 00050 void KGameLCD::setDefaultBackgroundColor(const QColor &color) 00051 { 00052 QPalette p = palette(); 00053 p.setColor(QColorGroup::Background, color); 00054 setPalette(p); 00055 } 00056 00057 void KGameLCD::setDefaultColor(const QColor &color) 00058 { 00059 _fgColor = color; 00060 QPalette p = palette(); 00061 p.setColor(QColorGroup::Foreground, color); 00062 setPalette(p); 00063 } 00064 00065 void KGameLCD::setHighlightColor(const QColor &color) 00066 { 00067 _hlColor = color; 00068 } 00069 00070 void KGameLCD::setLeadingString(const QString &s) 00071 { 00072 _lead = s; 00073 displayInt(0); 00074 } 00075 00076 void KGameLCD::setHighlightTime(uint time) 00077 { 00078 _htime = time; 00079 } 00080 00081 void KGameLCD::resetColor() 00082 { 00083 setColor(QColor()); 00084 } 00085 00086 void KGameLCD::setColor(const QColor &color) 00087 { 00088 const QColor &c = (color.isValid() ? color : _fgColor); 00089 QPalette p = palette(); 00090 p.setColor(QColorGroup::Foreground, c); 00091 setPalette(p); 00092 } 00093 00094 void KGameLCD::displayInt(int v) 00095 { 00096 int n = numDigits() - _lead.length(); 00097 display(_lead + QString::number(v).rightJustify(n)); 00098 } 00099 00100 void KGameLCD::highlight() 00101 { 00102 highlight(true); 00103 _timer->start(_htime, true); 00104 } 00105 00106 void KGameLCD::highlight(bool light) 00107 { 00108 if (light) setColor(_hlColor); 00109 else resetColor(); 00110 } 00111 00112 //----------------------------------------------------------------------------- 00113 KGameLCDClock::KGameLCDClock(QWidget *parent, const char *name) 00114 : KGameLCD(5, parent, name) 00115 { 00116 _timerClock = new QTimer(this); 00117 connect(_timerClock, SIGNAL(timeout()), SLOT(timeoutClock())); 00118 } 00119 00120 KGameLCDClock::~KGameLCDClock() 00121 {} 00122 00123 void KGameLCDClock::timeoutClock() 00124 { 00125 // waiting an hour does not restart timer 00126 if ( _min==59 && _sec==59 ) return; 00127 _sec++; 00128 if (_sec==60) { 00129 _min++; 00130 _sec = 0; 00131 } 00132 showTime(); 00133 } 00134 00135 QString KGameLCDClock::pretty() const 00136 { 00137 QString sec = QString::number(_sec).rightJustify(2, '0', true); 00138 QString min = QString::number(_min).rightJustify(2, '0', true); 00139 return min + ':' + sec; 00140 } 00141 00142 void KGameLCDClock::showTime() 00143 { 00144 display(pretty()); 00145 } 00146 00147 void KGameLCDClock::reset() 00148 { 00149 _timerClock->stop(); 00150 _sec = 0; 00151 _min = 0; 00152 showTime(); 00153 } 00154 00155 void KGameLCDClock::start() 00156 { 00157 _timerClock->start(1000); // 1 second 00158 } 00159 00160 void KGameLCDClock::stop() 00161 { 00162 _timerClock->stop(); 00163 } 00164 00165 uint KGameLCDClock::seconds() const 00166 { 00167 return _min*60 + _sec; 00168 } 00169 00170 void KGameLCDClock::setTime(uint sec) 00171 { 00172 Q_ASSERT( sec<3600 ); 00173 _sec = sec % 60; 00174 _min = sec / 60; 00175 showTime(); 00176 } 00177 00178 void KGameLCDClock::setTime(const QString &s) 00179 { 00180 Q_ASSERT( s.length()==5 && s[2]==':' ); 00181 uint min = kMin(s.section(':', 0, 0).toUInt(), uint(59)); 00182 uint sec = kMin(s.section(':', 1, 1).toUInt(), uint(59)); 00183 setTime(sec + min*60); 00184 } 00185 00186 00187 //----------------------------------------------------------------------------- 00188 KGameLCDList::KGameLCDList(const QString &title, QWidget *parent, 00189 const char *name) 00190 : QWidget(parent, name) 00191 { 00192 init(title); 00193 } 00194 00195 KGameLCDList::KGameLCDList(QWidget *parent, const char *name) 00196 : QWidget(parent, name) 00197 { 00198 init(QString::null); 00199 } 00200 00201 KGameLCDList::~KGameLCDList() 00202 {} 00203 00204 void KGameLCDList::init(const QString &title) 00205 { 00206 QVBoxLayout *top = new QVBoxLayout(this, 5); 00207 00208 _title = new QLabel(title, this); 00209 _title->setAlignment(AlignCenter); 00210 top->addWidget(_title, AlignCenter); 00211 } 00212 00213 void KGameLCDList::append(QLCDNumber *lcd) 00214 { 00215 _lcds.push_back(lcd); 00216 static_cast<QVBoxLayout *>(layout())->addWidget(lcd); 00217 } 00218 00219 void KGameLCDList::clear() 00220 { 00221 for (uint i=0; i<_lcds.size(); i++) 00222 delete _lcds[i]; 00223 _lcds.clear(); 00224 }
KDE Logo
This file is part of the documentation for libkdegames Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jul 28 14:18:46 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003