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

Class Index

kmines'WHighScores (./kdegames/kmines/dialogs.h:112)

class WHighScores : public DialogBase
{
 Q_OBJECT
	
 public:
	WHighScores(QWidget *parent, const Score *score = 0);
	static uint time(GameType);

 private slots:
	void writeName();
	void reject();

 private:
	GameType   type;
	QLineEdit *qle;
};

//-----------------------------------------------------------------------------

kmines'WHighScores::time() (./kdegames/kmines/dialogs.cpp:174)

uint WHighScores::time(GameType type)
{
	KConfig *conf = kapp->config();
	conf->setGroup(HS_GRP[type]);

	int sec = conf->readNumEntry(HS_SEC, 59);
	int min = conf->readNumEntry(HS_MIN, 59);
	if ( sec<0 || sec>59 || min<0 || min>59 )
		return DigitalClock::toSec(59, 59);
	return DigitalClock::toSec(sec, min);
}


kmines'WHighScores::WHighScores() (./kdegames/kmines/dialogs.cpp:186)

WHighScores::WHighScores(QWidget *parent, const Score *score)
: DialogBase(i18n("Hall of Fame"), Close, Close, parent), qle(0)
{
	KConfig *conf = kapp->config();

	if (score) { // set highscores
		type = score->type;
		conf->setGroup(HS_GRP[type]);
		conf->writeEntry(HS_NAME, i18n("Anonymous")); // default
		conf->writeEntry(HS_MIN, score->min);
		conf->writeEntry(HS_SEC, score->sec);
	}

	QLabel *lab;
	QFont f( font() );
	f.setBold(TRUE);

/* Grid layout */
	QGridLayout *gl = new QGridLayout(3, 4, spacingHint());
	top->addLayout(gl);

	/* level names */
	QString str;
	for(int k=0; k<3; k++) {
		if ( k==0 ) str = i18n("Easy");
		else if ( k==1 ) str = i18n("Normal");
		else str = i18n("Expert");
		lab = new QLabel(str, plainPage());
		lab->setMinimumSize( lab->sizeHint() );
		gl->addWidget(lab, k, 0);

		lab = new QLabel(":", plainPage());
		lab->setMinimumSize( lab->sizeHint() );
		gl->addWidget(lab, k, 1);
		
		conf->setGroup(HS_GRP[k]);
		int min = conf->readNumEntry(HS_MIN, 0);
		int sec = conf->readNumEntry(HS_SEC, 0);
		bool no_score = FALSE;
		
		if ( !score || (k!=type) ) {
			lab = new QLabel(plainPage());
			lab->setFont(f);
			QString name = conf->readEntry(HS_NAME, "");
			no_score = name.isEmpty() || (!min && !sec);
			
			if (no_score) {
				lab->setText(i18n("no score for this level"));
				lab->setMinimumSize( lab->sizeHint() );
				gl->addWidget(lab, k, 2);
				continue;
			} else {
				lab->setText(name);
				lab->setMinimumSize( lab->sizeHint() );
				gl->addWidget(lab, k, 2);
			}
		} else {
			qle = new QLineEdit(plainPage());
			qle->setMaxLength(10);
			qle->setFont(f);
			qle->setMinimumSize(qle->fontMetrics().maxWidth()*10,
								qle->sizeHint().height());
			qle->setFocus();
			connect(qle, SIGNAL(returnPressed()), SLOT(writeName()));
			gl->addWidget(qle, k, 2);
		}

		if (min) {
			if (sec) str = i18n("in %1 minutes and %2 seconds.")
						 .arg(min).arg(sec);
			else str = i18n("in %1 minutes.").arg(min);
		} else str = i18n("in %1 seconds.").arg(sec);

		lab = new QLabel(str, plainPage());
		lab->setAlignment(AlignCenter);
		lab->setMinimumSize( lab->sizeHint() );
		gl->addWidget(lab, k, 3);
	}

	if (score) enableButton(Close, FALSE);
}


kmines'WHighScores::writeName() (./kdegames/kmines/dialogs.cpp:268)

void WHighScores::writeName()
{
	KConfig *conf = kapp->config();
	conf->setGroup(HS_GRP[type]);
	QString str = qle->text();
	if ( str.length() ) conf->writeEntry(HS_NAME, str);
	conf->sync();
	str = conf->readEntry(HS_NAME);
	qle->setText(str);
	enableButton(Close, TRUE);
}


kmines'WHighScores::reject() (./kdegames/kmines/dialogs.cpp:280)

void WHighScores::reject()
{
	if ( qle && qle->isEnabled() ) {
		qle->setEnabled(FALSE);
		focusNextPrevChild(TRUE); // sort of hack (wonder why its call in
		                          // setEnabled(FALSE) does nothing ...)
	} else DialogBase::reject();
}

//-----------------------------------------------------------------------------