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