Source Code (Use browser search to find items of interest.)

Class Index

ksirtet'GiftPool (./kdegames/ksirtet/misc_ui.h:87)

class GiftPool : public QHBox
{
 Q_OBJECT

 public:
    GiftPool(uint nbLeds, uint maxToSend,
			 QWidget *parent, const char *name=0);

	QSize sizeHint() const;
	QSizePolicy sizePolicy() const;

	void put(uint);
	uint take();
	bool pending() const { return ready; }

 private slots:
    void timeout() { ready = TRUE; }

 private:
	QArray<Led *> leds;
	uint          _timeout, nb, max;
	bool          ready;
};

ksirtet'GiftPool::GiftPool() (./kdegames/ksirtet/misc_ui.cpp:171)

GiftPool::GiftPool(uint nbLeds, uint m,
				   QWidget *parent, const char *name)
: QHBox(parent, name), _timeout(GIFT_POOL_TIMEOUT), nb(0), max(m), ready(false)
{
	setSpacing(LED_SPACING);
	leds.resize(nbLeds);
	for (uint i=0; i<nbLeds; i++) leds[i] = new Led(yellow, this);
}


ksirtet'GiftPool::sizeHint() (./kdegames/ksirtet/misc_ui.cpp:180)

QSize GiftPool::sizeHint() const
{
	QSize s = (leds.size() ? leds[0]->sizeHint() : QSize());
	return QSize((s.width()+LED_SPACING)*leds.size()-LED_SPACING, s.height());
}


ksirtet'GiftPool::sizePolicy() (./kdegames/ksirtet/misc_ui.cpp:186)

QSizePolicy GiftPool::sizePolicy() const
{
	return QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
}


ksirtet'GiftPool::put() (./kdegames/ksirtet/misc_ui.cpp:191)

void GiftPool::put(uint n)
{
	if ( n==0 ) return;
	if ( nb==0 && !ready ) QTimer::singleShot(_timeout, this, SLOT(timeout()));
	uint e = QMIN(nb+n, leds.size());
	for (uint i=nb; i<e; i++) leds[i]->on();
	uint f = QMIN(nb+n-e, leds.size());
	for (uint i=0; i<f; i++) leds[i]->setColor(red);
	nb += n;
}


ksirtet'GiftPool::take() (./kdegames/ksirtet/misc_ui.cpp:202)

uint GiftPool::take()
{
	ASSERT(ready);
	for (uint i=0; i<leds.size(); i++) {
		leds[i]->setColor(yellow);
		leds[i]->off();
	}
	if ( nb>max ) {
		uint p = nb - max;
		nb = 0;
		put(p);
		return max;
	} else {
		ready = FALSE;
		uint t = nb;
		nb = 0;
		return t;
	}
}