show player name while typing
[multypo.git] / qt / player.cpp
index 485382300e993e7913e1b3508d2ca5f6295f9b31..c75bb4614ec71fb004c41e8dda348dddb55f3452 100644 (file)
@@ -2,9 +2,11 @@
 
 #include <QLayout>
 #include <QDebug>
+#include <QTextDocument>
 
 Player::Player(QWidget* parent) : score(0), state(Naming) {
        theLabel = new QLabel (parent);
+    theLabel->setTextFormat(Qt::RichText);
        parent->layout()->addWidget(theLabel);
        qDebug() << "Player created";
 }
@@ -21,26 +23,36 @@ void Player::handleKey(QString str)
     // see if this does anything useful
     switch (state) {
         case Naming:
-            theLabel->setText(currentWord);
+            setLabel(currentWord, BASE_COLOR);
             if (str == "Return") {
                 name = currentWord;
                 state = Waiting;
-                theLabel->setText("<READY>");
+                setLabel(name, READY_COLOR);
             }
             break;
         case Waiting:
             break;
         case Typing:
-            theLabel->setText(currentWord);
+            setLabel(currentWord, BASE_COLOR, name+":");
             break;
     }
 }
 
+void Player::setLabel(QString body, QString color, QString header)
+{
+    QString text = QString("<font color=%1>").arg(color);
+    if (!header.isEmpty()) {
+        text += QString("<font size=-3>%1</font><br>").arg(Qt::escape(header));
+    }
+    text += Qt::escape(body);
+    theLabel->setText(text);
+}
+
 void Player::wordComplete(int points)
 {
     score += points;
     state = Waiting;
-    theLabel->setText("<COMPLETE>");
+    setLabel(currentWord, READY_COLOR, name+":");
 }
 
 QString Player::getCurrentWord() {
@@ -49,12 +61,13 @@ QString Player::getCurrentWord() {
 }
 
 void Player::nextWord() {
+    Q_ASSERT(state == Waiting);
        currentWord = "";
-    theLabel->setText(currentWord);
+    setLabel("<Eingabe erscheint hier>", BASE_COLOR, name+":");
        state = Typing;
 }
 
 void Player::showScore() {
     Q_ASSERT(state == Waiting);
-    theLabel->setText(QString ("Spieler %1 hat %2 Punkte.").arg(name).arg(score));
+    setLabel(QString ("Spieler %1 hat %2 Punkte.").arg(name).arg(score), READY_COLOR);
 }