summaryrefslogtreecommitdiffstats
path: root/kolf/scoreboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kolf/scoreboard.cpp')
-rw-r--r--kolf/scoreboard.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/kolf/scoreboard.cpp b/kolf/scoreboard.cpp
new file mode 100644
index 00000000..a750156f
--- /dev/null
+++ b/kolf/scoreboard.cpp
@@ -0,0 +1,94 @@
+#include <kdebug.h>
+#include <klocale.h>
+
+#include <qlayout.h>
+#include <qtable.h>
+#include <qwidget.h>
+#include <qheader.h>
+#include <qstring.h>
+
+#include "scoreboard.h"
+
+ScoreBoard::ScoreBoard(QWidget *parent, const char *name)
+ : QTable(1, 1, parent, name)
+{
+ vh = verticalHeader();
+ hh = horizontalHeader();
+ vh->setLabel(numRows() - 1, i18n("Par"));
+ hh->setLabel(numCols() - 1, i18n("Total"));
+
+ setFocusPolicy(QWidget::NoFocus);
+ setRowReadOnly(0, true);
+ setRowReadOnly(1, true);
+}
+
+void ScoreBoard::newHole(int par)
+{
+ int _numCols = numCols();
+ insertColumns(_numCols - 1);
+ hh->setLabel(numCols() - 2, QString::number(numCols() - 1));
+ setText(numRows() - 1, numCols() - 2, QString::number(par));
+ setColumnWidth(numCols() - 2, 40);
+
+ // update total
+ int tot = 0;
+ for (int i = 0; i < numCols() - 1; ++i)
+ tot += text(numRows() - 1, i).toInt();
+ setText(numRows() - 1, numCols() - 1, QString::number(tot));
+
+ // shrink cell...
+ setColumnWidth(numCols() - 2, 3);
+ // and make it big enough for the numbers
+ adjustColumn(numCols() - 2);
+}
+
+void ScoreBoard::newPlayer(const QString &name)
+{
+ //kdDebug(12007) << "name of new player is " << name << endl;
+ insertRows(numRows() - 1);
+ vh->setLabel(numRows() - 2, name);
+ setRowReadOnly(numRows() - 2, true);
+}
+
+void ScoreBoard::setScore(int id, int hole, int score)
+{
+ //kdDebug(12007) << "set score\n";
+ setText(id - 1, hole - 1, score > 0? QString::number(score) : QString(""));
+
+ QString name;
+ setText(id - 1, numCols() - 1, QString::number(total(id, name)));
+ if (hole >= numCols() - 2)
+ ensureCellVisible(id - 1, numCols() - 1);
+ else
+ ensureCellVisible(id - 1, hole - 1);
+
+ // shrink cell...
+ setColumnWidth(hole - 1, 3);
+ // and make it big enough for the numbers
+ adjustColumn(hole - 1);
+
+ setCurrentCell(id - 1, hole - 1);
+}
+
+void ScoreBoard::parChanged(int hole, int par)
+{
+ setText(numRows() - 1, hole - 1, QString::number(par));
+
+ // update total
+ int tot = 0;
+ for (int i = 0; i < numCols() - 1; ++i)
+ tot += text(numRows() - 1, i).toInt();
+ setText(numRows() - 1, numCols() - 1, QString::number(tot));
+}
+
+int ScoreBoard::total(int id, QString &name)
+{
+ int tot = 0;
+ for (int i = 0; i < numCols() - 1; i++)
+ tot += text(id - 1, i).toInt();
+ name = vh->label(id - 1);
+ //kdDebug(12007) << "tot is " << tot << endl;
+ return tot;
+}
+
+#include "scoreboard.moc"