qnetdice

annotate src/rollwidget.cc @ 1:92377189a5c6

moving along
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 22 Dec 2013 04:08:50 +0200
parents
children
rev   line source
nuclear@1 1 #include <stdio.h>
nuclear@1 2 #include "rollwidget.h"
nuclear@1 3 #include <QHBoxLayout>
nuclear@1 4 #include <QComboBox>
nuclear@1 5 #include <QLineEdit>
nuclear@1 6 #include <QPushButton>
nuclear@1 7
nuclear@1 8 static struct {
nuclear@1 9 const char *name;
nuclear@1 10 int sides;
nuclear@1 11 } dice_types[] = {
nuclear@1 12 { "d4", 4 },
nuclear@1 13 { "d6", 6 },
nuclear@1 14 { "d8", 8 },
nuclear@1 15 { "d10", 10 },
nuclear@1 16 { "d12", 12 },
nuclear@1 17 { "d20", 20 },
nuclear@1 18 { "d100", 100 },
nuclear@1 19 { 0, 0 }
nuclear@1 20 };
nuclear@1 21
nuclear@1 22 RollWidget::RollWidget(QWidget *parent) :
nuclear@1 23 QWidget(parent)
nuclear@1 24 {
nuclear@1 25 dice = 0;
nuclear@1 26
nuclear@1 27 QHBoxLayout *hbox = new QHBoxLayout(this);
nuclear@1 28
nuclear@1 29 cmb_type = new QComboBox;
nuclear@1 30 for(int i=0; dice_types[i].name; i++) {
nuclear@1 31 char buf[64];
nuclear@1 32 sprintf(buf, ":/data/dice/%s.png", dice_types[i].name);
nuclear@1 33 cmb_type->addItem(QIcon(buf), dice_types[i].name);
nuclear@1 34 }
nuclear@1 35 hbox->addWidget(cmb_type);
nuclear@1 36
nuclear@1 37 QPushButton *bn_roll = new QPushButton("roll");
nuclear@1 38 hbox->addWidget(bn_roll);
nuclear@1 39 connect(bn_roll, SIGNAL(clicked()), this, SLOT(roll()));
nuclear@1 40
nuclear@1 41 tx_res = new QLineEdit;
nuclear@1 42 tx_res->setReadOnly(true);
nuclear@1 43 hbox->addWidget(tx_res);
nuclear@1 44
nuclear@1 45 QPushButton *bn_rm = new QPushButton("remove");
nuclear@1 46 hbox->addWidget(bn_rm);
nuclear@1 47 }
nuclear@1 48
nuclear@1 49 void RollWidget::set_roll(Roll *roll)
nuclear@1 50 {
nuclear@1 51 dice = roll;
nuclear@1 52 }
nuclear@1 53
nuclear@1 54 Roll *RollWidget::get_roll() const
nuclear@1 55 {
nuclear@1 56 return dice;
nuclear@1 57 }
nuclear@1 58
nuclear@1 59
nuclear@1 60 void RollWidget::roll()
nuclear@1 61 {
nuclear@1 62 if(!dice) return;
nuclear@1 63
nuclear@1 64 int sel = cmb_type->currentIndex();
nuclear@1 65 dice->set_sides(dice_types[sel].sides);
nuclear@1 66 int value = dice->roll();
nuclear@1 67
nuclear@1 68 QString text;
nuclear@1 69 text.setNum(value);
nuclear@1 70 tx_res->setText(text);
nuclear@1 71
nuclear@1 72 emit value_changed(value);
nuclear@1 73 }