show player name while typing
[multypo.git] / qt / player.cpp
1 #include "player.h"
2
3 #include <QLayout>
4 #include <QDebug>
5 #include <QTextDocument>
6
7 Player::Player(QWidget* parent) : score(0), state(Naming) {
8         theLabel = new QLabel (parent);
9     theLabel->setTextFormat(Qt::RichText);
10         parent->layout()->addWidget(theLabel);
11         qDebug() << "Player created";
12 }
13
14 void Player::handleKey(QString str)
15 {
16     // edit "current line"
17     if (str.length() == 1) {
18         currentWord += str;
19     }
20     else if (str == "BackSpace") {
21         currentWord.chop(1);
22     }
23     // see if this does anything useful
24     switch (state) {
25         case Naming:
26             setLabel(currentWord, BASE_COLOR);
27             if (str == "Return") {
28                 name = currentWord;
29                 state = Waiting;
30                 setLabel(name, READY_COLOR);
31             }
32             break;
33         case Waiting:
34             break;
35         case Typing:
36             setLabel(currentWord, BASE_COLOR, name+":");
37             break;
38     }
39 }
40
41 void Player::setLabel(QString body, QString color, QString header)
42 {
43     QString text = QString("<font color=%1>").arg(color);
44     if (!header.isEmpty()) {
45         text += QString("<font size=-3>%1</font><br>").arg(Qt::escape(header));
46     }
47     text += Qt::escape(body);
48     theLabel->setText(text);
49 }
50
51 void Player::wordComplete(int points)
52 {
53     score += points;
54     state = Waiting;
55     setLabel(currentWord, READY_COLOR, name+":");
56 }
57
58 QString Player::getCurrentWord() {
59     Q_ASSERT(state == Typing);
60         return currentWord;
61 }
62
63 void Player::nextWord() {
64     Q_ASSERT(state == Waiting);
65         currentWord = "";
66     setLabel("<Eingabe erscheint hier>", BASE_COLOR, name+":");
67         state = Typing;
68 }
69
70 void Player::showScore() {
71     Q_ASSERT(state == Waiting);
72     setLabel(QString ("Spieler %1 hat %2 Punkte.").arg(name).arg(score), READY_COLOR);
73 }