qnetdice

annotate 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
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 }