qnetdice

view src/mainwin.cc @ 3:2e57c80653af

more stuff
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 23 Dec 2013 06:09:25 +0200
parents 92377189a5c6
children
line source
1 #include <QDialog>
2 #include "mainwin.h"
3 #include "ui_mainwin.h"
4 #include "ui_server.h"
5 #include "rollwidget.h"
6 #include "main.h"
7 #include "logger.h"
9 MainWindow::MainWindow(QWidget *parent)
10 : QMainWindow(parent),
11 ui(new Ui::MainWindow)
12 {
13 ui->setupUi(this);
15 dicebox = new QVBoxLayout;
16 ui->sarea_main_cont->setLayout(dicebox);
18 connect(ui->bn_add, SIGNAL(clicked()), this, SLOT(add_dice()));
19 connect(ui->bn_clear, SIGNAL(clicked()), this, SLOT(clear_dice()));
20 connect(ui->bn_roll_all, SIGNAL(clicked()), this, SLOT(roll_all()));
22 connect(ui->action_connect, SIGNAL(triggered()), this, SLOT(start_client()));
23 connect(ui->action_start_server, SIGNAL(triggered()), this, SLOT(start_server()));
25 connect(ui->action_quit, SIGNAL(triggered()), this, SLOT(close()));
26 }
28 MainWindow::~MainWindow()
29 {
30 delete ui;
31 }
34 void MainWindow::roll_all()
35 {
36 for(int i=0; i<dicebox->count() - 1; i++) {
37 RollWidget *roll = (RollWidget*)dicebox->itemAt(i)->widget();
38 roll->roll();
39 }
40 }
43 void MainWindow::add_dice()
44 {
45 RollWidget *w = new RollWidget;
46 dicebox->takeAt(dicebox->count() - 1);
47 dicebox->addWidget(w);
48 dicebox->addStretch();
50 Roll *roll = new Roll;
51 roll->set_sides(4);
52 dice.push_back(roll);
53 w->set_roll(roll);
54 }
56 void MainWindow::clear_dice()
57 {
58 while(!dicebox->isEmpty()) {
59 RollWidget *roll = (RollWidget*)dicebox->takeAt(0)->widget();
60 delete roll;
61 }
63 for(size_t i=0; i<dice.size(); i++) {
64 delete dice[i];
65 }
66 dice.clear();
67 }
69 void MainWindow::start_client()
70 {
71 }
73 void MainWindow::start_server()
74 {
75 QDialog *dlg_server = new QDialog(0, 0);
76 Ui_ServerDialog ui;
77 ui.setupUi(dlg_server);
79 if(dlg_server->exec()) {
80 bool valid;
81 int port = ui.tx_port->text().toInt(&valid);
83 if(!valid) {
84 log_message("invalid port: %s\n", ui.tx_port->text().toUtf8().data());
85 return;
86 }
88 std::string passwd = ui.tx_passwd->text().toUtf8().data();
89 if(passwd.empty()) {
90 log_message("failed to start server: empty password field\n");
91 return;
92 }
94 ::start_server(port, passwd.c_str());
95 }
96 }