Browse Source

Merged the version from lab07 into this one. Commented in Spanish and English. Removed (most of) the dead functions.

Rafael Arce Nazario 9 years ago
parent
commit
da280eec82
9 changed files with 684 additions and 1091 deletions
  1. 1
    0
      Testing.pro
  2. 60
    511
      functions.cpp
  3. 296
    8
      functions.h
  4. 1
    49
      main.cpp
  5. 126
    439
      mainwindow.cpp
  6. 160
    45
      mainwindow.h
  7. 13
    37
      mainwindow.ui
  8. 1
    1
      secondwindow.cpp
  9. 26
    1
      secondwindow.h

+ 1
- 0
Testing.pro View File

25
 
25
 
26
 RESOURCES += \
26
 RESOURCES += \
27
     images.qrc
27
     images.qrc
28
+

+ 60
- 511
functions.cpp View File

1
+// RAN - 2015-06-26 - Fixed the issue with the leading zeros in Zulu
2
+
1
 #include "mainwindow.h"
3
 #include "mainwindow.h"
2
 #include "ui_mainwindow.h"
4
 #include "ui_mainwindow.h"
3
 
5
 
14
 #include <unistd.h>
16
 #include <unistd.h>
15
 #endif
17
 #endif
16
 
18
 
19
+
17
 // =========================================================
20
 // =========================================================
18
 // Sort Functions
21
 // Sort Functions
19
 // =========================================================
22
 // =========================================================
108
 }
111
 }
109
 
112
 
110
 
113
 
111
-//This is the correct dice roller
112
-void MainWindow::diceAlpha(){
113
-    QString a, b;
114
-
115
-    //This loop is used to simulate the dice rolling by
116
-    //changing the images at a slowing down speed
117
-    for (int i = 0; i<=150000 ; i=i+5000){
118
-
119
-#ifdef _WIN32
120
-        Sleep(i);
121
-#else
122
-        usleep(i);
123
-#endif
124
-
125
-        //First dice image. Since we want random pictures
126
-        //on each iteration, we get a random number, converted
127
-        //it to string and append it to others string that
128
-        //conform the names of the dices
129
-        a = ":/images/resources/d";
130
-        a.append(QString::number(rand()%6 + 1));
131
-        a.append(".png");
132
-
133
-        b = ":/images/resources/d";
134
-        b.append(QString::number(rand()%6 + 1));
135
-        b.append(".png");
136
-
137
-        //We load the images and check if there is no problem with them
138
-        if(!dice1.load(a) || !dice2.load(b)){
139
-            qDebug() << "Error2 Loading image";
140
-        }
141
-
142
-        //Finally we set the labels with the random dice images
143
-        label[3]->setPixmap(QPixmap::fromImage(dice1));
144
-        label[4]->setPixmap(QPixmap::fromImage(dice2));
145
-
146
-// Is there an option to see the changes of the dice/label
147
-// in this function and no just when we get out of it?
148
-
149
-//        Fail attempts
150
-//        layout->update();
151
-//        repaint();
152
-//        window->repaint();
153
-
154
-//        label[3]->repaint();
155
-//        label[3]->update();
156
-//        label[3]->hide();
157
-//        label[3]->show();
158
-//        label[3]->setVisible(false);
159
-//        label[3]->setVisible(true);
160
-
161
-//        layout->update();
162
-//        update();
163
-//        window->update();
164
-
165
-        window->hide();
166
-        window->show();
167
-    }
168
-
169
-    //Finally, we set the result of the sum of the dices.
170
-    QString a2 = (QString)a[20];
171
-    QString b2 = (QString)b[20];
172
-    int total = a2.toInt() + b2.toInt();
173
-    line[0]->setText(QString::number(total));
174
-}
175
-
176
-//This version sums the first dice twice
177
-void MainWindow::diceBeta(){
178
-    QString a, b;
179
-
180
-    for (int i = 0; i<=150000 ; i=i+5000){
181
-#ifdef _WIN32
182
-        Sleep(i);
183
-#else
184
-        usleep(i);
185
-#endif
186
-        a = ":/images/resources/d";
187
-        a.append(QString::number(rand()%6 + 1));
188
-        a.append(".png");
189
-
190
-        b = ":/images/resources/d";
191
-        b.append(QString::number(rand()%6 + 1));
192
-        b.append(".png");
193
-
194
-        if(!dice1.load(a) || !dice2.load(b)){
195
-            qDebug() << "Error2 Loading image";
196
-        }
197
-
198
-        label[3]->setPixmap(QPixmap::fromImage(dice1));
199
-        label[4]->setPixmap(QPixmap::fromImage(dice2));
200
-
201
-// Is there an option to see the changes of the dice/label
202
-// in this function and no just when we get out of it?
203
-        window->hide();
204
-        window->show();
205
-    }
206
-
207
-    int total = a[20].digitValue() + a[20].digitValue();
208
-    line[0]->setText(QString::number(total));
209
-}
210
-
211
-//This one substracts the second dice to the first one
212
-void MainWindow::diceGamma(){
213
-    QString a, b;
214
-
215
-    for (int i = 0; i<=150000 ; i=i+5000){
216
-#ifdef _WIN32
217
-        Sleep(i);
218
-#else
219
-        usleep(i);
220
-#endif
221
-        a = ":/images/resources/d";
222
-        a.append(QString::number(rand()%6 + 1));
223
-        a.append(".png");
224
-
225
-        b = ":/images/resources/d";
226
-        b.append(QString::number(rand()%6 + 1));
227
-        b.append(".png");
228
-
229
-        if(!dice1.load(a) || !dice2.load(b)){
230
-            qDebug() << "Error2 Loading image";
231
-        }
232
-
233
-        label[3]->setPixmap(QPixmap::fromImage(dice1));
234
-        label[4]->setPixmap(QPixmap::fromImage(dice2));
235
-
236
-// Is there an option to see the changes of the dice/label
237
-// in this function and no just when we get out of it?
238
-        window->hide();
239
-        window->show();
240
-    }
241
-
242
-    QString a2 = (QString)a[20];
243
-    QString b2 = (QString)b[20];
244
-    int total = a2.toInt() - b2.toInt();
245
-    line[0]->setText(QString::number(total));
246
-}
247
-
248
-//This one tooks the number 6 as a 12
249
-void MainWindow::diceDelta(){
250
-    QString a, b;
251
-
252
-    for (int i = 0; i<=150000 ; i=i+5000){
253
-#ifdef _WIN32
254
-        Sleep(i);
255
-#else
256
-        usleep(i);
257
-#endif
258
-        a = ":/images/resources/d";
259
-        a.append(QString::number(rand()%6 + 1));
260
-        a.append(".png");
261
-
262
-        b = ":/images/resources/d";
263
-        b.append(QString::number(rand()%6 + 1));
264
-        b.append(".png");
265
 
114
 
266
-        if(!dice1.load(a) || !dice2.load(b)){
267
-            qDebug() << "Error2 Loading image";
268
-        }
269
-
270
-        label[3]->setPixmap(QPixmap::fromImage(dice1));
271
-        label[4]->setPixmap(QPixmap::fromImage(dice2));
272
-
273
-// Is there an option to see the changes of the dice/label
274
-// in this function and no just when we get out of it?
275
-        window->hide();
276
-        window->show();
277
-    }
278
-
279
-    int x, y;
280
-    QString a2 = (QString)a[20];
281
-    QString b2 = (QString)b[20];
282
-    if (a2.toInt() == 6){
283
-        x = 12;
284
-    }
285
-    else{
286
-        x = a2.toInt();
287
-    }
288
-    if (b2.toInt() == 6){
289
-        y = 12;
290
-    }
291
-    else{
292
-        y = b2.toInt();
293
-    }
294
-
295
-    int total = x + y;
296
-    line[0]->setText(QString::number(total));
297
-}
298
 
115
 
299
 // =========================================================
116
 // =========================================================
300
 // Rock Paper Scissor Functions
117
 // Rock Paper Scissor Functions
301
 // =========================================================
118
 // =========================================================
302
 
119
 
303
 
120
 
304
-///
305
-/// \brief RPSAlpha
306
-/// \param p1
307
-/// \param p2
308
-/// \param score1
309
-/// \param score2
310
-/// \return
311
-///
312
-
313
-int RPSAlpha(char p1, char p2, int &score1, int &score2) {
121
+int RPSAlpha(char p1, char p2) {
314
     p1 = toupper(p1);
122
     p1 = toupper(p1);
315
     p2 = toupper(p2);
123
     p2 = toupper(p2);
316
     if ( p1 == 'P' ) {
124
     if ( p1 == 'P' ) {
317
-        if ( p2 == 'P' ) return 0;
318
-        else if (p2 == 'R') {
319
-            score1++; return 1;
320
-        }
321
-        else {
322
-            score2++; return 2;
323
-        }
125
+        if ( p2 == 'P' )    return TIE;
126
+        else if (p2 == 'R') return P1_WON;
127
+        else                return P2_WON;
324
     }
128
     }
129
+
325
     else if (p1 == 'R') {
130
     else if (p1 == 'R') {
326
-        if ( p2 == 'R' ) return 0;
327
-        else if (p2 == 'S') {
328
-            score1++;    return 1;
329
-        }
330
-        else {
331
-            score2++;    return 2;
332
-        }
131
+        if ( p2 == 'R' )    return TIE;
132
+        else if (p2 == 'S') return P1_WON;
133
+        else                return P2_WON;
333
     }
134
     }
135
+
334
     else {
136
     else {
335
-        if ( p2 == 'S' ) return 0;
336
-        else if (p2 == 'P') {
337
-            score1++;    return 1;
338
-        }
339
-        else {
340
-            score2++;    return 2;
341
-        }
137
+        if ( p2 == 'S' )    return TIE;
138
+        else if (p2 == 'P') return P1_WON;
139
+        else                return P2_WON;
342
     }
140
     }
343
 }
141
 }
344
 
142
 
345
 
143
 
346
-///
347
-/// \brief RPSBeta
348
-/// \param p1
349
-/// \param p2
350
-/// \param score1
351
-/// \param score2
352
-/// \return
353
-///
354
-
355
-int RPSBeta(char p1, char p2, int &score1, int &score2) {
144
+int RPSBeta(char p1, char p2) {
356
     p1 = toupper(p1);
145
     p1 = toupper(p1);
357
     p2 = toupper(p2);
146
     p2 = toupper(p2);
358
     if ( p1 == 'P' ) {
147
     if ( p1 == 'P' ) {
359
-        if ( p2 == 'S' ) return 0;
360
-        else if (p2 == 'R') {
361
-            score1++; return 1;
362
-        }
363
-        else {
364
-            score2++; return 2;
365
-        }
148
+        if ( p2 == 'S' )    return TIE;
149
+        else if (p2 == 'R') return P1_WON;
150
+        else                return P2_WON;
366
     }
151
     }
367
     else if (p1 == 'R') {
152
     else if (p1 == 'R') {
368
-        if ( p2 == 'S' ) return 0;
369
-        else if (p2 == 'P') {
370
-            score1++;    return 1;
371
-        }
372
-        else {
373
-            score2++;    return 2;
374
-        }
153
+        if ( p2 == 'S' )    return TIE;
154
+        else if (p2 == 'P') return P1_WON;
155
+        else                return P2_WON;
375
     }
156
     }
157
+
376
     else {
158
     else {
377
-        if ( p2 == 'S' ) return 0;
378
-        else if (p2 == 'R') {
379
-            score1++;    return 1;
380
-        }
381
-        else {
382
-            score2++;    return 2;
383
-        }
159
+        if ( p2 == 'S' )    return TIE;
160
+        else if (p2 == 'R') return P1_WON;
161
+        else                return P2_WON;
384
     }
162
     }
385
 }
163
 }
386
 
164
 
387
 
165
 
388
-///
389
-/// \brief RPSGamma
390
-/// \param p1
391
-/// \param p2
392
-/// \param score1
393
-/// \param score2
394
-/// \return
395
-///
396
 
166
 
397
-int RPSGamma(char p1, char p2, int &score1, int &score2) {
167
+int RPSGamma(char p1, char p2) {
398
     p1 = toupper(p1);
168
     p1 = toupper(p1);
399
     p2 = toupper(p2);
169
     p2 = toupper(p2);
400
     if ( p1 == 'P' ) {
170
     if ( p1 == 'P' ) {
401
-        if ( p2 == 'P' ) return 0;
402
-        else if (p2 == 'S') {
403
-            score1++; return 1;
404
-        }
405
-        else {
406
-            score2++; return 2;
407
-        }
171
+        if ( p2 == 'P' )    return TIE;
172
+        else if (p2 == 'S') return P1_WON;
173
+        else                return P2_WON;
408
     }
174
     }
409
     else if (p1 == 'R') {
175
     else if (p1 == 'R') {
410
-        if ( p2 == 'R' ) return 0;
411
-        else if (p2 == 'P') {
412
-            score1++;    return 1;
413
-        }
414
-        else {
415
-            score2++;    return 2;
416
-        }
176
+        if ( p2 == 'R' )    return TIE;
177
+        else if (p2 == 'P') return P1_WON;
178
+        else                return P2_WON;
417
     }
179
     }
418
     else {
180
     else {
419
-        if ( p2 == 'P' ) return 0;
420
-        else if (p2 == 'S') {
421
-            score1++;    return 1;
422
-        }
423
-        else {
424
-            score2++;    return 2;
425
-        }
181
+        if ( p2 == 'P' )    return TIE;
182
+        else if (p2 == 'S') return P1_WON;
183
+        else                return P2_WON;
426
     }
184
     }
427
 }
185
 }
428
 
186
 
429
-///
430
-/// \brief RPSDelta
431
-/// \param p1
432
-/// \param p2
433
-/// \param score1
434
-/// \param score2
435
-/// \return
436
-///
437
 
187
 
438
-int RPSDelta(char p1, char p2, int &score1, int &score2) {
188
+int RPSDelta(char p1, char p2) {
439
     p1 = toupper(p1);
189
     p1 = toupper(p1);
440
     p2 = toupper(p2);
190
     p2 = toupper(p2);
441
     if ( p1 == 'P' ) {
191
     if ( p1 == 'P' ) {
442
-        if ( p2 == 'P' ) return 0;
443
-        else if (p2 == 'S') {
444
-            score2++; return 1;
445
-        }
446
-        else {
447
-            score1++; return 2;
448
-        }
192
+        if ( p2 == 'P' )    return TIE;
193
+        else if (p2 == 'S') return P1_WON;
194
+        else                return P2_WON;
449
     }
195
     }
450
     else if (p1 == 'R') {
196
     else if (p1 == 'R') {
451
-        if ( p2 == 'R' ) return 0;
452
-        else if (p2 == 'P') {
453
-            score2++;    return 1;
454
-        }
455
-        else {
456
-            score1++;    return 2;
457
-        }
197
+        if ( p2 == 'R' )    return TIE;
198
+        else if (p2 == 'P') return P1_WON;
199
+        else                return P2_WON;
458
     }
200
     }
459
     else {
201
     else {
460
-        if ( p2 == 'P' ) return 0;
461
-        else if (p2 == 'S') {
462
-            score2++;    return 1;
463
-        }
464
-        else {
465
-            score1++;    return 2;
466
-        }
202
+        if ( p2 == 'P' )    return TIE;
203
+        else if (p2 == 'S') return P1_WON;
204
+        else                return P2_WON;
467
     }
205
     }
468
 }
206
 }
469
 
207
 
475
 
213
 
476
 QMap<int,QString> M;
214
 QMap<int,QString> M;
477
 
215
 
478
-///
479
-/// \brief initCheckWMaps: initialize the values in the dictionary that is used throughout
480
-///                        the check functions.
481
-///
482
-
483
 void initCheckWMaps() {
216
 void initCheckWMaps() {
484
 
217
 
485
     M[1] = "one";       M[2] = "two";       M[3]  = "three";      M[4] = "four";
218
     M[1] = "one";       M[2] = "two";       M[3]  = "three";      M[4] = "four";
493
 }
226
 }
494
 
227
 
495
 
228
 
496
-///
497
-/// \brief validateCheckQty: determines is entered text is a valid number in [0,999999999]
498
-/// \param st text entered by the user
499
-/// \param qty text converted to integer
500
-/// \return true if the entered text is valid
501
-///
502
-
503
 bool validateCheckQty(QString st, unsigned int &qty) {
229
 bool validateCheckQty(QString st, unsigned int &qty) {
504
     int i = 0;
230
     int i = 0;
505
     for (i = 0; i < st.length() ; i++) {
231
     for (i = 0; i < st.length() ; i++) {
512
     return true;
238
     return true;
513
 }
239
 }
514
 
240
 
515
-///
516
-/// \brief wordForNumber: Given a number n in [0,999] returns the word equivalent
517
-/// \param n: the number
518
-/// \return a Qstring containing the number in words
519
-///
520
 
241
 
521
-QString wordForNumber(int n) {
242
+
243
+QString wordForNumber(unsigned int n) {
522
     QString st;
244
     QString st;
523
 
245
 
524
     int tens = n % 100;
246
     int tens = n % 100;
539
 }
261
 }
540
 
262
 
541
 
263
 
542
-///
543
-/// \brief checkWAlpha: One of the functions to convert a number in [0,999999999] to words
544
-/// \param n: the number
545
-/// \return a Qstring containing the number in words
546
-///
547
 
264
 
548
-QString checkWAlpha(int n) {
265
+QString checkWAlpha(unsigned int n) {
549
     QString st;
266
     QString st;
550
 
267
 
551
     // the cents
268
     // the cents
562
     return st;
279
     return st;
563
 }
280
 }
564
 
281
 
565
-///
566
-/// \brief checkWBeta: One of the functions to convert a number in [0,999999999] to words
567
-/// \param n: the number
568
-/// \return a Qstring containing the number in words
569
-///
570
 
282
 
571
-QString checkWBeta(int n) {
283
+QString checkWBeta(unsigned int n) {
572
     QString st;
284
     QString st;
573
 
285
 
574
     st = wordForNumber(n % 1000);
286
     st = wordForNumber(n % 1000);
580
     return st;
292
     return st;
581
 }
293
 }
582
 
294
 
583
-///
584
-/// \brief checkWGamma: One of the functions to convert a number in [0,999999999] to words
585
-/// \param n: the number
586
-/// \return a Qstring containing the number in words
587
-///
588
 
295
 
589
-QString checkWGamma(int n) {
296
+QString checkWGamma(unsigned int n) {
590
     QString st;
297
     QString st;
591
 
298
 
592
     st = wordForNumber(n % 10);
299
     st = wordForNumber(n % 10);
598
     return st;
305
     return st;
599
 }
306
 }
600
 
307
 
601
-///
602
-/// \brief checkWDelta: One of the functions to convert a number in [0,999999999] to words
603
-/// \param n: the number
604
-/// \return a Qstring containing the number in words
605
-///
606
 
308
 
607
 
309
 
608
-QString checkWDelta(int n) {
310
+QString checkWDelta(unsigned int n) {
609
     QString st;
311
     QString st;
610
 
312
 
611
     n /= 10;
313
     n /= 10;
640
     return true;
342
     return true;
641
 }
343
 }
642
 
344
 
643
-//This is the correct one
644
 
345
 
645
 QString zuluAlpha(int hours, int minutes, char zone) {
346
 QString zuluAlpha(int hours, int minutes, char zone) {
646
     int diff = 0;
347
     int diff = 0;
647
-
348
+    zone = toupper(zone);
648
     if (zone <= 'I')         diff = zone - 'A' + 1;
349
     if (zone <= 'I')         diff = zone - 'A' + 1;
649
     else if (zone <= 'M')    diff = 10 + (zone - 'K');
350
     else if (zone <= 'M')    diff = 10 + (zone - 'K');
650
     else if (zone <= 'Y')    diff = -(zone - 'N' + 1);
351
     else if (zone <= 'Y')    diff = -(zone - 'N' + 1);
652
 
353
 
653
     hours = (hours + (24 + diff) ) % 24;
354
     hours = (hours + (24 + diff) ) % 24;
654
 
355
 
655
-    return QString::number(hours) + QString::number(minutes);
356
+    QString qstHours = QString::number(hours);
357
+    if (qstHours.length() == 1) qstHours.prepend("0");
358
+
359
+    QString qstMin = QString::number(minutes);
360
+    if (qstMin.length() == 1) qstMin.prepend("0");
361
+
362
+    return qstHours + qstMin;
656
 }
363
 }
657
 
364
 
658
 QString zuluBeta(int hours, int minutes, char zone) {
365
 QString zuluBeta(int hours, int minutes, char zone) {
692
 
399
 
693
     return QString::number(hours)  + QString::number(minutes);
400
     return QString::number(hours)  + QString::number(minutes);
694
 }
401
 }
695
-
696
-
697
-
698
-// =========================================================
699
-// APFT Functions
700
-// =========================================================
701
-
702
-
703
-//This it the correct one
704
-
705
-void MainWindow::APFTAlpha(){
706
-    //For each one of these variables we apply the formula that they use
707
-    //to set the points
708
-    double sit_ups = qFloor(line[0]->text().toDouble() * 1.6 - 24.8);
709
-
710
-    double push_ups = qFloor(line[1]->text().toInt() * 1.42);
711
-
712
-    double running_time = qFloor((line[2]->text().left(2).append('.' + line[2]->text().right(2))).toDouble());
713
-    double two_mile_run = qFloor((820 / 3) - ((40 * running_time) / 3));
714
-
715
-    //Since the maximum of points that one can obtain
716
-    //on each excercise type is 100, we restrict it
717
-    if (sit_ups > 100){
718
-        sit_ups = 100;
719
-    }
720
-    else if (sit_ups < 0){
721
-        sit_ups = 0;
722
-    }
723
-    if (push_ups > 100){
724
-        push_ups = 100;
725
-    }
726
-    else if (push_ups < 0){
727
-        push_ups = 0;
728
-    }
729
-    if (two_mile_run > 100){
730
-        two_mile_run = 100;
731
-    }
732
-    else if (two_mile_run < 0){
733
-        two_mile_run = 0;
734
-    }
735
-
736
-    //Finally we set the outputs.
737
-    line[3]->setText(QString::number(sit_ups));
738
-    line[4]->setText(QString::number(push_ups));
739
-    line[5]->setText(QString::number(two_mile_run));
740
-    line[6]->setText(QString::number(push_ups + sit_ups + two_mile_run));
741
-    if (push_ups >= 60 && sit_ups >= 60 && two_mile_run >= 60){
742
-        label[7]->setText("PASS");
743
-    }
744
-    else{
745
-        label[7]->setText("FAIL");
746
-    }
747
-}
748
-
749
-//This one do not check if the number is greater than 100
750
-
751
-void MainWindow::APFTBeta(){
752
-    double sit_ups = qFloor(line[0]->text().toDouble() * 1.6 - 24.8);
753
-
754
-    double push_ups = qFloor(line[1]->text().toInt() * 1.42);
755
-
756
-    double running_time = qFloor((line[2]->text().left(2).append('.' + line[2]->text().right(2))).toDouble());
757
-    double two_mile_run = qFloor((820 / 3) - ((40 * running_time) / 3));
758
-
759
-    line[3]->setText(QString::number(sit_ups));
760
-    line[4]->setText(QString::number(push_ups));
761
-    line[5]->setText(QString::number(two_mile_run));
762
-    line[6]->setText(QString::number(push_ups + sit_ups + two_mile_run));
763
-    if (push_ups >= 60 && sit_ups >= 60 && two_mile_run >= 60){
764
-        line[7]->setText("PASS");
765
-    }
766
-    else{
767
-        line[7]->setText("FAIL");
768
-    }
769
-}
770
-
771
-//This one switch the results
772
-
773
-void MainWindow::APFTGamma(){
774
-    double sit_ups = qFloor(line[0]->text().toDouble() * 1.6 - 24.8);
775
-    double push_ups = qFloor(line[1]->text().toInt() * 1.42);
776
-    double running_time = qFloor((line[2]->text().left(2).append('.' + line[2]->text().right(2))).toDouble());
777
-    double two_mile_run = qFloor((820 / 3) - ((40 * running_time) / 3));
778
-
779
-    if (sit_ups > 100){
780
-        sit_ups = 100;
781
-    }
782
-    else if (sit_ups < 0){
783
-        sit_ups = 0;
784
-    }
785
-    if (push_ups > 100){
786
-        push_ups = 100;
787
-    }
788
-    else if (push_ups < 0){
789
-        push_ups = 0;
790
-    }
791
-    if (two_mile_run > 100){
792
-        two_mile_run = 100;
793
-    }
794
-    else if (two_mile_run < 0){
795
-        two_mile_run = 0;
796
-    }
797
-
798
-    line[5]->setText(QString::number(sit_ups));
799
-    line[3]->setText(QString::number(push_ups));
800
-    line[4]->setText(QString::number(two_mile_run));
801
-    line[6]->setText(QString::number(push_ups + sit_ups + two_mile_run));
802
-    if (push_ups >= 60 && sit_ups >= 60 && two_mile_run >= 60){
803
-        line[7]->setText("PASS");
804
-    }
805
-    else{
806
-        line[7]->setText("FAIL");
807
-    }
808
-}
809
-
810
-//This one do not sums the points but the quantities of each excercise
811
-
812
-void MainWindow::APFTDelta(){
813
-    double sit_ups = qFloor(line[0]->text().toDouble() * 1.6 - 24.8);
814
-    double push_ups = qFloor(line[1]->text().toInt() * 1.42);
815
-    double running_time = qFloor((line[2]->text().left(2).append('.'
816
-                                   + line[2]->text().right(2))).toDouble());
817
-    double two_mile_run = qFloor((820 / 3) - ((40 * running_time) / 3));
818
-
819
-    if (sit_ups > 100){
820
-        sit_ups = 100;
821
-    }
822
-    else if (sit_ups < 0){
823
-        sit_ups = 0;
824
-    }
825
-    if (push_ups > 100){
826
-        push_ups = 100;
827
-    }
828
-    else if (push_ups < 0){
829
-        push_ups = 0;
830
-    }
831
-    if (two_mile_run > 100){
832
-        two_mile_run = 100;
833
-    }
834
-    else if (two_mile_run < 0){
835
-        two_mile_run = 0;
836
-    }
837
-
838
-    int sumaTo = line[0]->text().toInt() + line[1]->text().toInt() + running_time;
839
-    line[3]->setText(QString::number(sit_ups));
840
-    line[4]->setText(QString::number(push_ups));
841
-    line[5]->setText(QString::number(two_mile_run));
842
-    line[6]->setText(QString::number(sumaTo));
843
-    if (push_ups >= 60 && sit_ups >= 60 && two_mile_run >= 60){
844
-        line[7]->setText("PASS");
845
-    }
846
-    else{
847
-        line[7]->setText("FAIL");
848
-    }
849
-}
850
-
851
-
852
-

+ 296
- 8
functions.h View File

4
 #include <string>
4
 #include <string>
5
 using namespace std;
5
 using namespace std;
6
 
6
 
7
+
8
+/// \fn validateSorts
9
+/// \~English
10
+/// \brief Function to validate that sort is invoked with non-empty strings
11
+/// \param a first QSring
12
+/// \param b second Qstring
13
+/// \param c third QString
14
+/// \return true if non of the QStrings are empty
15
+/// \~Spanish
16
+/// \brief Valida que los QStrings que se van a ordenar no estén vacios.
17
+/// \param a primer QSring
18
+/// \param b segundo Qstring
19
+/// \param c tercer QString
20
+/// \return true si ninguno de los QString está vacio
7
 bool validateSorts(const QString &a, const QString &b, const QString &c);
21
 bool validateSorts(const QString &a, const QString &b, const QString &c);
22
+
23
+/// \fn mySortAlpha
24
+/// \~English
25
+/// \brief A function to sort the QStrings. Returns the order 
26
+/// strings through the parameters (a is smallest, c is largest).
27
+/// \param a reference to first QSring
28
+/// \param b reference to second Qstring
29
+/// \param c reference to third QString
30
+/// \~Spanish
31
+/// \brief Función para ordenar QStrings. Devuelve los QStrings
32
+/// ordenados a través de los parámetros (a para el menor, c para el mayor).
33
+/// \param a referencia al primer QSring
34
+/// \param b referencia al segundo Qstring
35
+/// \param c referencia al tercer QString
8
 void mySortAlpha(QString &a, QString &b, QString &c);
36
 void mySortAlpha(QString &a, QString &b, QString &c);
37
+
38
+/// \fn mySortBeta
39
+/// \~English
40
+/// \brief A function to sort the QStrings. Returns the order 
41
+/// strings through the parameters (a is smallest, c is largest).
42
+/// \param a reference to first QSring
43
+/// \param b reference to second Qstring
44
+/// \param c reference to third QString
45
+/// \~Spanish
46
+/// \brief Función para ordenar QStrings. Devuelve los QStrings
47
+/// ordenados a través de los parámetros (a para el menor, c para el mayor).
48
+/// \param a referencia al primer QSring
49
+/// \param b referencia al segundo Qstring
50
+/// \param c referencia al tercer QString
9
 void mySortBeta(QString &a, QString &b, QString &c);
51
 void mySortBeta(QString &a, QString &b, QString &c);
52
+
53
+/// \fn mySortGamma
54
+/// \~English
55
+/// \brief A function to sort the QStrings. Returns the order 
56
+/// strings through the parameters (a is smallest, c is largest).
57
+/// \param a reference to first QSring
58
+/// \param b reference to second Qstring
59
+/// \param c reference to third QString
60
+/// \~Spanish
61
+/// \brief Función para ordenar QStrings. Devuelve los QStrings
62
+/// ordenados a través de los parámetros (a para el menor, c para el mayor).
63
+/// \param a referencia al primer QSring
64
+/// \param b referencia al segundo Qstring
65
+/// \param c referencia al tercer QString
10
 void mySortGamma(QString &a, QString &b, QString &c);
66
 void mySortGamma(QString &a, QString &b, QString &c);
67
+
68
+/// \fn mySortDelta
69
+/// \~English
70
+/// \brief First function to sort the QStrings. Returns the order 
71
+/// strings through the parameters (a is smallest, c is largest).
72
+/// \param a reference to first QSring
73
+/// \param b reference to second Qstring
74
+/// \param c reference to third QString
75
+/// \~Spanish
76
+/// \brief Función para ordenar QStrings. Devuelve los QStrings
77
+/// ordenados a través de los parámetros (a para el menor, c para el mayor).
78
+/// \param a referencia al primer QSring
79
+/// \param b referencia al segundo Qstring
80
+/// \param c referencia al tercer QString
11
 void mySortDelta(QString &a, QString &b, QString &c);
81
 void mySortDelta(QString &a, QString &b, QString &c);
12
 
82
 
83
+
84
+/// \fn validZuluTime
85
+/// \~English
86
+/// \brief Function to validate the arguments that will be passed to the
87
+///  Zulu functions.  Returns the integer hour and minutes through last two parameters.
88
+/// \param time QString that contains the time in military format.
89
+/// \param zone  QString that specifies military zone.
90
+/// \param hours hours, extracted from the time parameter
91
+/// \param minutes minutes, extracted from the time parameter
92
+/// \return true if the time and zone are valid. 
93
+/// \~Spanish
94
+/// \brief Función para validar los argumentos que serán pasados a
95
+/// funciones Zulu.  Devuelve (como enteros) la hora y minutos a través de los 
96
+/// últimos dos parámetros.
97
+/// \param time QString que contiene la hora en formato militar, e.g. "15:22"
98
+/// \param zone  QString que contiene zona militar.
99
+/// \param hours horas, extraida del argumento pasado a time.
100
+/// \param minutes minutos, extraidos del argumento pasado a time.
101
+/// \return true si la hora (time) y la zona son válidas. 
13
 bool validZuluTime(const QString &time, const QString &zone, int &hours, int &minutes);
102
 bool validZuluTime(const QString &time, const QString &zone, int &hours, int &minutes);
103
+
104
+
105
+/// \fn zuluAlpha
106
+/// \~English
107
+/// \brief Given the hour, minutes and military zone returns the Zulu time (as a QString)
108
+/// \param hours 
109
+/// \param minutes 
110
+/// \param zone 
111
+/// \return a QString of the Zulu time, in military time format
112
+/// \~Spanish
113
+/// \brief Dado la hora, minutos y zona militar devuelve el tiempo Zulu (como QString)
114
+/// \param hours 
115
+/// \param minutes 
116
+/// \param zone 
117
+/// \return un QString del tiempo Zulu, en formato de hora militar.
14
 QString zuluAlpha(int hours, int minutes, char zone);
118
 QString zuluAlpha(int hours, int minutes, char zone);
119
+
120
+
121
+/// \fn zuluBeta
122
+/// \~English
123
+/// \brief Given the hour, minutes and military zone returns the Zulu time (as a QString)
124
+/// \param hours 
125
+/// \param minutes 
126
+/// \param zone 
127
+/// \return a QString of the Zulu time, in military time format
128
+/// \~Spanish
129
+/// \brief Dado la hora, minutos y zona militar devuelve el tiempo Zulu (como QString)
130
+/// \param hours 
131
+/// \param minutes 
132
+/// \param zone 
133
+/// \return un QString del tiempo Zulu, en formato de hora militar.
15
 QString zuluBeta(int hours, int minutes, char zone);
134
 QString zuluBeta(int hours, int minutes, char zone);
135
+
136
+
137
+/// \fn zuluGamma
138
+/// \~English
139
+/// \brief Given the hour, minutes and military zone returns the Zulu time (as a QString)
140
+/// \param hours 
141
+/// \param minutes 
142
+/// \param zone 
143
+/// \return a QString of the Zulu time, in military time format
144
+/// \~Spanish
145
+/// \brief Dado la hora, minutos y zona militar devuelve el tiempo Zulu (como QString)
146
+/// \param hours 
147
+/// \param minutes 
148
+/// \param zone 
149
+/// \return un QString del tiempo Zulu, en formato de hora militar.
16
 QString zuluGamma(int hours, int minutes, char zone);
150
 QString zuluGamma(int hours, int minutes, char zone);
151
+
152
+
153
+/// \fn zuluDelta
154
+/// \~English
155
+/// \brief Given the hour, minutes and military zone returns the Zulu time (as a QString)
156
+/// \param hours 
157
+/// \param minutes 
158
+/// \param zone 
159
+/// \return a QString of the Zulu time, in military time format
160
+/// \~Spanish
161
+/// \brief Dado la hora, minutos y zona militar devuelve el tiempo Zulu (como QString)
162
+/// \param hours 
163
+/// \param minutes 
164
+/// \param zone 
165
+/// \return un QString del tiempo Zulu, en formato de hora militar.
17
 QString zuluDelta(int hours, int minutes, char zone);
166
 QString zuluDelta(int hours, int minutes, char zone);
18
 
167
 
19
-int RPSAlpha(char p1, char p2, int &score1, int &score2);
20
-int RPSBeta(char p1, char p2, int &score1, int &score2);
21
-int RPSGamma(char p1, char p2, int &score1, int &score2);
22
-int RPSDelta(char p1, char p2, int &score1, int &score2);
23
 
168
 
169
+// Constants for the rock, paper, scisor functions.
170
+const int TIE = 0;
171
+const int P1_WON = 1;
172
+const int P2_WON = 2;
173
+
174
+
175
+/// \fn RPSAlpha
176
+/// \~English
177
+/// \brief Given play by the first and second players, returns who won the rock, paper
178
+/// scisors match.
179
+/// \param p1 play by the first player, as represented by char 'R', 'P' or 'S' 
180
+/// \param p2 play by the first player, as represented by char 'R', 'P' or 'S'  
181
+/// \return a 0 if there was a tie, 1 if the first player won, 2 if the second player won.
182
+/// \~Spanish
183
+/// \brief Dado la jugada del jugador 1 y 2, devuelve quien ganó el juego de piedra, 
184
+/// papel y tijera ((R)ock, (P)aper, (S)cisors)
185
+/// \param p1 jugada del primer jugador, representada por un caracter ('R','P','S') 
186
+/// \param p1 jugada del segundo jugador, representada por un caracter ('R','P','S')
187
+/// \return a 0 si hubo empate, 1 si ganó el primer jugador, 2 si ganó el segundo.
188
+int RPSAlpha(char p1, char p2);
189
+
190
+/// \fn RPSBeta
191
+/// \~English
192
+/// \brief Given play by the first and second players, returns who won the rock, paper
193
+/// scisors match.
194
+/// \param p1 play by the first player, as represented by char 'R', 'P' or 'S' 
195
+/// \param p2 play by the first player, as represented by char 'R', 'P' or 'S'  
196
+/// \return a 0 if there was a tie, 1 if the first player won, 2 if the second player won.
197
+/// \~Spanish
198
+/// \brief Dado la jugada del jugador 1 y 2, devuelve quien ganó el juego de piedra, 
199
+/// papel y tijera ((R)ock, (P)aper, (S)cisors)
200
+/// \param p1 jugada del primer jugador, representada por un caracter ('R','P','S') 
201
+/// \param p1 jugada del segundo jugador, representada por un caracter ('R','P','S')
202
+/// \return a 0 si hubo empate, 1 si ganó el primer jugador, 2 si ganó el segundo.
203
+int RPSBeta(char p1, char p2);
204
+
205
+/// \fn RPSGamma
206
+/// \~English
207
+/// \brief Given play by the first and second players, returns who won the rock, paper
208
+/// scisors match.
209
+/// \param p1 play by the first player, as represented by char 'R', 'P' or 'S' 
210
+/// \param p2 play by the first player, as represented by char 'R', 'P' or 'S'  
211
+/// \return a 0 if there was a tie, 1 if the first player won, 2 if the second player won.
212
+/// \~Spanish
213
+/// \brief Dado la jugada del jugador 1 y 2, devuelve quien ganó el juego de piedra, 
214
+/// papel y tijera ((R)ock, (P)aper, (S)cisors)
215
+/// \param p1 jugada del primer jugador, representada por un caracter ('R','P','S') 
216
+/// \param p1 jugada del segundo jugador, representada por un caracter ('R','P','S')
217
+/// \return a 0 si hubo empate, 1 si ganó el primer jugador, 2 si ganó el segundo.
218
+int RPSGamma(char p1, char p2);
219
+
220
+/// \fn RPSDelta
221
+/// \~English
222
+/// \brief Given play by the first and second players, returns who won the rock, paper
223
+/// scisors match.
224
+/// \param p1 play by the first player, as represented by char 'R', 'P' or 'S' 
225
+/// \param p2 play by the first player, as represented by char 'R', 'P' or 'S'  
226
+/// \return a 0 if there was a tie, 1 if the first player won, 2 if the second player won.
227
+/// \~Spanish
228
+/// \brief Dado la jugada del jugador 1 y 2, devuelve quien ganó el juego de piedra, 
229
+/// papel y tijera ((R)ock, (P)aper, (S)cisors)
230
+/// \param p1 jugada del primer jugador, representada por un caracter ('R','P','S') 
231
+/// \param p1 jugada del segundo jugador, representada por un caracter ('R','P','S')
232
+/// \param zone 
233
+/// \return a 0 si hubo empate, 1 si ganó el primer jugador, 2 si ganó el segundo.
234
+int RPSDelta(char p1, char p2);
235
+
236
+
237
+/// \fn initCheckWMaps
238
+/// \~English
239
+/// \brief Initialize the values in the dictionary (M) that is used throughout
240
+/// the check functions.
241
+/// \~Spanish
242
+/// \brief Inicializa los valores del diccionario que se utiliza a través del 
243
+/// las funciones 'check' 
24
 void initCheckWMaps();
244
 void initCheckWMaps();
245
+
246
+
247
+
248
+/// \fn validateCheckQty
249
+/// \~English
250
+/// \brief Given a QString determines its numerical value and if the 
251
+/// the value is in the range [0,999999999]
252
+/// \param st a QString with a numeric value, e.g. "4520"
253
+/// \param qty unsigned integer to return the numeric value, e.g. 4520
254
+/// \return true if the QString was converted to an integer and is in the valid range
255
+/// \~Spanish
256
+/// \brief Dado un string determina su valor numérico y si el valor está en el 
257
+/// rango [0,999999999]
258
+/// \param st un QString con un valor numérico, e.g. "4520"
259
+/// \param qty entero sin signo para devolver el valor numérico, e.g. 4520
260
+/// \return true si el QString se pudo convertir a entero y está en el rango
25
 bool validateCheckQty(QString st, unsigned int &qty);
261
 bool validateCheckQty(QString st, unsigned int &qty);
26
-QString checkWAlpha(int n);
27
-QString checkWBeta(int n);
28
-QString checkWGamma(int n);
29
-QString checkWDelta(int n);
262
+
263
+
264
+/// \fn wordForNumber
265
+/// \~English
266
+/// \brief Given a number n in [0,999] returns the word equivalent
267
+/// \param n the unsigned integer, e.g. 34
268
+/// \return a QString containing the number in words, e.g. "thirty four"
269
+/// \~Spanish
270
+/// \brief Dado un número entero en el rango [0,999] devuelve su representación en palabras
271
+/// \param n el entero sin signo, e.g. 34
272
+/// \return un QString que contiene el valor en palabras, e.g. "thirty four"
273
+QString wordForNumber(unsigned int n);
274
+
275
+/// \fn checkWAlpha
276
+/// \~English
277
+/// \brief Given a unsigned integer returns its value as a string of words (in English)
278
+/// \param n the unsigned integer, e.g. 42
279
+/// \return QString containing the value (in words), e.g. "fourty two"
280
+/// \~Spanish
281
+/// \brief Dado un entero sin signo devuelve su valor como un string de palabras (in English)
282
+/// \param n el entero sin signo, e.g. 42
283
+/// \return QString que contien el valor en palabras, e.g. "fourty two"
284
+QString checkWAlpha(unsigned int n);
285
+
286
+/// \fn checkWBeta
287
+/// \~English
288
+/// \brief Given a unsigned integer returns its value as a string of words (in English)
289
+/// \param n the unsigned integer, e.g. 42
290
+/// \return QString containing the value (in words), e.g. "fourty two"
291
+/// \~Spanish
292
+/// \brief Dado un entero sin signo devuelve su valor como un string de palabras (in English)
293
+/// \param n el entero sin signo, e.g. 42
294
+/// \return QString que contien el valor en palabras, e.g. "fourty two"
295
+QString checkWBeta(unsigned int n);
296
+
297
+/// \fn checkWGamma
298
+/// \~English
299
+/// \brief Given a unsigned integer returns its value as a string of words (in English)
300
+/// \param n the unsigned integer, e.g. 42
301
+/// \return QString containing the value (in words), e.g. "fourty two"
302
+/// \~Spanish
303
+/// \brief Dado un entero sin signo devuelve su valor como un string de palabras (in English)
304
+/// \param n el entero sin signo, e.g. 42
305
+/// \return QString que contien el valor en palabras, e.g. "fourty two"
306
+QString checkWGamma(unsigned int n);
307
+
308
+/// \fn checkWDelta
309
+/// \~English
310
+/// \brief Given a unsigned integer returns its value as a string of words (in English)
311
+/// \param n the unsigned integer, e.g. 42
312
+/// \return QString containing the value (in words), e.g. "fourty two"
313
+/// \~Spanish
314
+/// \brief Dado un entero sin signo devuelve su valor como un string de palabras (in English)
315
+/// \param n el entero sin signo, e.g. 42
316
+/// \return QString que contien el valor en palabras, e.g. "fourty two"
317
+QString checkWDelta(unsigned int n);
30
 
318
 
31
 #endif // FUNCTIONS_H
319
 #endif // FUNCTIONS_H

+ 1
- 49
main.cpp View File

6
 #include <cassert>
6
 #include <cassert>
7
 #include <QDebug>
7
 #include <QDebug>
8
 
8
 
9
-void testSort() {
10
-    QString a = "AAA" , b = "BBB" , c = "CCC";
11
-    mySortBeta(a,b,c);
12
-    assert( a < b && b < c);
13
 
9
 
14
-    a = "AAA", b = "CCC", c = "BBB";
15
-    mySortBeta(a,b,c);
16
-    assert( a < b && b < c);
17
-
18
-    a = "BBB", b = "AAA", c = "CCC";
19
-    mySortBeta(a,b,c);
20
-    assert( a < b && b < c);
21
-
22
-    a = "BBB", b = "CCC", c = "AAA";
23
-    mySortBeta(a,b,c);
24
-    assert( a < b && b < c);
25
-
26
-    a = "CCC", b = "AAA", c = "BBB";
27
-    mySortBeta(a,b,c);
28
-    //qDebug() << a << b << c;
29
-    assert( a < b && b < c);
30
-
31
-    a = "CCC", b = "BBB", c = "AAA";
32
-    mySortBeta(a,b,c);
33
-    assert( a < b && b < c);
34
-
35
-    qDebug() << "Passed Test for Sort!!!!";
36
-}
37
-
38
-void testCheck() {
39
-
40
-    assert( checkWAlpha(91) == QString("ninety one"));
41
-    assert( checkWAlpha(891) == QString("eight hundred ninety one"));
42
-    assert( checkWAlpha(100) == QString("one hundred"));
43
-    assert( checkWAlpha(59123) == QString("fifty nine thousand one hundred twenty three"));
44
-    assert( checkWAlpha(100001) == QString("one hundred thousand one"));
45
-    assert( checkWAlpha(100000) == QString("one hundred thousand"));
46
-    assert( checkWAlpha(100000000) == QString("one hundred million"));
47
-    qDebug() << "Passed Test for Check Word!!!!";
48
-}
49
 
10
 
50
 int main(int argc, char *argv[])
11
 int main(int argc, char *argv[])
51
 {
12
 {
52
-//    testSort();
53
-    initCheckWMaps(); /*** DONT FORGET ***/
54
-
55
-//    testCheck();
56
-//    qDebug() << checkWAlpha(91);
57
-//    qDebug() << checkWAlpha(891);
58
-//    qDebug() << checkWAlpha(801);
59
 
13
 
14
+    initCheckWMaps(); 
60
 
15
 
61
     srand(time(NULL));
16
     srand(time(NULL));
62
     QApplication a(argc, argv);
17
     QApplication a(argc, argv);
63
     MainWindow w;
18
     MainWindow w;
64
-    w.setWindowTitle("Testing Lab");
65
     w.show();
19
     w.show();
66
 
20
 
67
-
68
-
69
     return a.exec();
21
     return a.exec();
70
 }
22
 }

+ 126
- 439
mainwindow.cpp View File

1
+// RAN 2015-06-26 - Added Zulu Zone label
2
+//   - Removed the onclick functions for the buttons that are no longer used
3
+
1
 #include "mainwindow.h"
4
 #include "mainwindow.h"
2
 #include "ui_mainwindow.h"
5
 #include "ui_mainwindow.h"
3
 #include "secondwindow.cpp"
6
 #include "secondwindow.cpp"
4
 
7
 
5
 #include <QDebug>
8
 #include <QDebug>
9
+#include <QTimer>
6
 #include <QtCore/qmath.h>
10
 #include <QtCore/qmath.h>
7
 #include <QMessageBox>
11
 #include <QMessageBox>
8
 #include "functions.h"
12
 #include "functions.h"
38
 
42
 
39
     // We need to know whenever the second window is closed to show the
43
     // We need to know whenever the second window is closed to show the
40
     // main window, or to hide when the second one is showed
44
     // main window, or to hide when the second one is showed
41
-    connect(window, SIGNAL(cerrado(bool)), this, SLOT(mostrar(bool)));
45
+    connect(window, SIGNAL(closeIt(bool)), this, SLOT(showMW(bool)));
42
 
46
 
43
     if(!dice1.load(":/images/resources/d1.png") || !dice2.load(":/images/resources/d1.png")){
47
     if(!dice1.load(":/images/resources/d1.png") || !dice2.load(":/images/resources/d1.png")){
44
         qDebug() << "Error1 Loading image";
48
         qDebug() << "Error1 Loading image";
52
     delete ui;
56
     delete ui;
53
 }
57
 }
54
 
58
 
55
-//This function show the main window and delete all the items created on the closed one or hide the mainwindow
56
-void MainWindow::mostrar(bool si){
57
-    if (si==true){
59
+void MainWindow::showMW(bool doShow){
60
+    if (doShow){
58
         show();
61
         show();
59
 
62
 
60
         // Deleting pointers and point them to NULL
63
         // Deleting pointers and point them to NULL
76
 
79
 
77
         // Create the new window and connecting it again with the signal
80
         // Create the new window and connecting it again with the signal
78
         window = new secondwindow;
81
         window = new secondwindow;
79
-        connect(window, SIGNAL(cerrado(bool)), this, SLOT(mostrar(bool)));
82
+        connect(window, SIGNAL(closeIt(bool)), this, SLOT(showMW(bool)));
80
     }
83
     }
81
     else hide();
84
     else hide();
82
 }
85
 }
83
 
86
 
84
-//It is a slot that reads what item of the combo box was selected and save it
85
-//into a member
86
-void MainWindow::whatOption(QString str){
87
+
88
+void MainWindow::setOption(QString str){
87
     option = str;
89
     option = str;
88
 }
90
 }
89
 
91
 
97
     score1 = score2 = 0;
99
     score1 = score2 = 0;
98
 }
100
 }
99
 
101
 
100
-//It forces the input 1 to be valid
101
-void MainWindow::RPSnormalizer1(QString str){
102
-    //For every character in the string only allow
103
-    //the character 'R' for rock, 'P' for paper and
104
-    //'S' for scissors. Delete all the other characters
105
-    //different from this three, and if is 'r', 'p' or 's'
106
-    //make it uppercase.
107
-    for (int i = 0; i< str.size(); i++){
108
-        if      (str[i] == 'r'){
109
-            str[i] = 'R';
110
-        }
111
-        else if (str[i] == 'p'){
112
-            str[i] = 'P';
113
-        }
114
-        else if (str[i] == 's'){
115
-            str[i] = 'S';
116
-        }
117
-
118
-        else if (str[i] == 'R' || str[i] == 'P' ||
119
-                 str[i] == 'S');//then its ok, do nothing
120
-        else{
121
-            str = str.mid(0,i).append(str.mid(i+1));
122
-        }
123
-    }
124
-
125
-    line[0]->setText(str);
126
-}
127
-
128
-//It forces the input 2 to be valid
129
-void MainWindow::RPSnormalizer2(QString str){
130
-    for (int i = 0; i< str.size(); i++){
131
-        if      (str[i] == 'r'){
132
-            str[i] = 'R';
133
-        }
134
-        else if (str[i] == 'p'){
135
-            str[i] = 'P';
136
-        }
137
-        else if (str[i] == 's'){
138
-            str[i] = 'S';
139
-        }
140
-        else if (str[i] == 'R' || str[i] == 'P' ||
141
-                 str[i] == 'S');//then its ok, do nothing
142
-        else{
143
-            str = str.mid(0,i).append(str.mid(i+1));
144
-        }
145
-    }
146
-
147
-    line[1]->setText(str);
148
-}
149
-
150
-//It forces the input 3 to be valid
151
-void MainWindow::RPSnormalizer3(QString str){
152
-    //Verify that the string do not contains other thing than
153
-    //numbers
154
-    for (int i = 0; i< str.size(); i++){
155
-        if (!str[i].isDigit()){
156
-            str = str.mid(0,i).append(str.mid(i+1));
157
-        }
158
-    }
159
-
160
-    //Left zeros do not count, delete them
161
-    while (str[0] == '0'){
162
-        str = str.mid(1);
163
-    }
164
-
165
-    //If the player exagerates the number of games to win
166
-    //change the string to the maximum number allowed
167
-    if (str.toInt() > 150){
168
-        str = "150";
169
-    }
170
-
171
-    line[2]->setText(str);
172
-}
173
-
174
-//It forces the input to be valid
175
-void MainWindow::CheckWnormalizer(QString str){
176
-    //Just allow numbers
177
-    for (int i = 0; i< str.size(); i++){
178
-        if (!str[i].isDigit()){
179
-            str = str.mid(0,i).append(str.mid(i+1));
180
-        }
181
-    }
182
-
183
-    //Zeros on the left side do not count (delete them)
184
-    while (str[0] == '0'){
185
-        str = str.mid(1);
186
-    }
187
-
188
-    //The maximum is 999,999,999
189
-    if (str.toDouble() > 999999999){
190
-        str = "999999999";
191
-    }
192
-
193
-    line[0]->setText(str);
194
-}
195
-
196
-
197
-
198
-//It forces the first input of Zulu to be valid
199
-void MainWindow::Zulunormalizer1(QString str){
200
-    //Just allow numbers to be written
201
-    for (int i = 0; i< str.size(); i++){
202
-        if (!str[i].isDigit()){
203
-            str = str.mid(0,i).append(str.mid(i+1));
204
-        }
205
-    }
206
-
207
-    //The maximum here is 2359, so force it to be the
208
-    //maximum when the user write a larger number
209
-    if (str.toInt() > 2359){
210
-        str = "2359";
211
-    }
212
-
213
-    line[0]->setText(str);
214
-}
215
-
216
-//It forces the second input of Zulu to be valid
217
-void MainWindow::Zulunormalizer2(QString str){
218
-    //Just allow one character to be written
219
-    if (str.size() > 1){
220
-        str = str[1];
221
-    }
222
-
223
-    //If that only character is 'e', 'c', 'm' or 'p'
224
-    //the uppercase it
225
-    if (str[0] == 'e' || str[0] == 'c' ||
226
-            str[0] == 'm' || str[0] == 'p'){
227
-        str = str[0].toUpper();
228
-    }
229
-    //If we get here is because the character is not
230
-    //the lowercase letters allowed... so if they are
231
-    //not the uppercase letters that we admit we have
232
-    //to delete it.
233
-    else if (str[0] != 'E' || str[0] != 'C' ||
234
-             str[0] != 'M' || str[0] != 'P'){
235
-        str = "";
236
-    }
237
-
238
-    line[1]->setText(str);
239
-}
240
 
102
 
241
-//It forces the first input of APFT to be valid
242
-void MainWindow::APFTnormalizer1(QString str){
243
-    //Just admit numbers, delete the other type of
244
-    //characters
245
-    for (int i = 0; i< str.size(); i++){
246
-        if (!str[i].isDigit()){
247
-            str = str.mid(0,i).append(str.mid(i+1));
248
-        }
249
-    }
250
-
251
-    //Left zeros are not valid
252
-    while (str[0] == '0'){
253
-        str = str.mid(1);
254
-    }
255
-
256
-    line[0]->setText(str);
257
-}
258
-
259
-//It forces the second input of APFT to be valid
260
-void MainWindow::APFTnormalizer2(QString str){
261
-    //Just allow the numbers to be written
262
-    for (int i = 0; i< str.size(); i++){
263
-        if (!str[i].isDigit()){
264
-            str = str.mid(0,i).append(str.mid(i+1));
265
-        }
266
-    }
267
-
268
-    //Left-hand zeros? Delete them
269
-    while (str[0] == '0'){
270
-        str = str.mid(1);
271
-    }
272
-
273
-    line[1]->setText(str);
274
-}
275
-
276
-//It forces the third input of APFT to be valid
277
-void MainWindow::APFTnormalizer3(QString str){
278
-    //Allow just numbers on the string only if the
279
-    //character is not in the position 2
280
-    for (int i = 0; i< str.size(); i++){
281
-        if (!str[i].isDigit() && i != 2){
282
-            str = str.mid(0,i).append(str.mid(i+1));
283
-        }
284
-    }
285
-
286
-    //Then if there is a character in the position 2
287
-    //and it is not ':', then add it between the
288
-    //position 1 and 3
289
-    if (str.size() > 2 && str[2] != ':'){
290
-        while (str.size()>2 && !str[2].isDigit()){
291
-            str = str.mid(0,2).append(str.mid(3));
292
-        }
293
-        str = str.mid(0, 2).append(':').append(str.mid(2));
294
-    }
295
-    //If the size exceeds 5, then take the first five
296
-    //so then we will have the format mm:ss
297
-    if (str.size() > 5){
298
-        str = str.mid(0, 5);
299
-    }
300
-
301
-    line[2]->setText(str);
302
-}
303
-
304
-//Checks which version of sort is selected and call it
305
-void MainWindow::sorts(){
103
+void MainWindow::callOneOfTheSorts(){
306
     QString a = line[0]->text();
104
     QString a = line[0]->text();
307
     QString b = line[1]->text();
105
     QString b = line[1]->text();
308
     QString c = line[2]->text();
106
     QString c = line[2]->text();
331
 }
129
 }
332
 
130
 
333
 
131
 
132
+void MainWindow::callOneOfTheRPS(){
334
 
133
 
134
+    QString p1 = this->cmbPlayer01->currentText();
135
+    QString p2 = this->cmbPlayer02->currentText();
335
 
136
 
336
-//Checks which version of RPS is selected and call it
337
-void MainWindow::RPSs(){
338
-
339
-    QString p1 = line[0]->text();
340
-    QString p2 = line[1]->text();
341
-    QString gamesToWin = line[2]->text();
342
-
343
-    if (p1.length() * p2.length() * gamesToWin.length() == 0) {
137
+    if (p1.length() * p2.length() == 0) {
344
         QMessageBox::warning(this, "Alert",
138
         QMessageBox::warning(this, "Alert",
345
                              "Please provide a play for both players and the number of games to win");
139
                              "Please provide a play for both players and the number of games to win");
346
         return;
140
         return;
348
 
142
 
349
     int winnerNum;
143
     int winnerNum;
350
     if (option == "Version Alpha")
144
     if (option == "Version Alpha")
351
-        winnerNum = RPSAlpha(p1.toStdString()[0], p2.toStdString()[0], score1, score2);
145
+        winnerNum = RPSDelta(p1.toStdString()[0], p2.toStdString()[0]);
352
     else if (option == "Version Beta")
146
     else if (option == "Version Beta")
353
-        winnerNum = RPSBeta(p1.toStdString()[0], p2.toStdString()[0], score1, score2);
147
+        winnerNum = RPSBeta(p1.toStdString()[0], p2.toStdString()[0]);
354
     else if (option == "Version Gamma")
148
     else if (option == "Version Gamma")
355
-        winnerNum = RPSGamma(p1.toStdString()[0], p2.toStdString()[0], score1, score2);
149
+        winnerNum = RPSGamma(p1.toStdString()[0], p2.toStdString()[0]);
356
     else
150
     else
357
-        winnerNum = RPSDelta(p1.toStdString()[0], p2.toStdString()[0], score1, score2);
151
+        winnerNum = RPSDelta(p1.toStdString()[0], p2.toStdString()[0]);
358
 
152
 
359
     QString st;
153
     QString st;
360
 
154
 
155
+
361
     switch(winnerNum) {
156
     switch(winnerNum) {
362
-    case 1:  st = "Player 1"; break;
363
-    case 2:  st = "Player 2"; break;
364
-    case 0:  st = "Tie"; break;
365
-    default: st = "Error";
157
+        case 1:  st = "Player 1"; break;
158
+        case 2:  st = "Player 2"; break;
159
+        case 0:  st = "Tie"; break;
160
+        default: st = "Error";
366
     }
161
     }
367
 
162
 
368
-    line[3]->setText(st);
163
+    line[0]->setText(st);
369
 
164
 
370
-    line[4]->setText(QString::number(score1) + " to " + QString::number(score2));
165
+}
371
 
166
 
372
-    if (score1 == gamesToWin.toInt() || score2 == gamesToWin.toInt() ) {
373
-        QMessageBox::warning(this, "Alert",
374
-                             "Game won by " + st + "!!!");
375
-        score1 = score2 = 0;
167
+
168
+void MainWindow::paintDice() {
169
+    this->timerCounter++;
170
+    int a, b;
171
+    a = rand()%6;
172
+    b = rand()%6;
173
+    label[3]->setPixmap(QPixmap::fromImage(diceImages[a]));
174
+    label[4]->setPixmap(QPixmap::fromImage(diceImages[b]));
175
+    if (this->timerCounter == 10) {
176
+        aTimer->stop();
177
+        diceFinal01 = a;
178
+        diceFinal02 = b;
179
+        if (option == "Version Alpha")
180
+            diceBeta();
181
+        else if (option == "Version Beta")
182
+            diceGamma();
183
+        else if (option == "Version Gamma")
184
+            diceAlpha();
185
+        else
186
+            diceAlpha();
376
     }
187
     }
188
+}
189
+
190
+
191
+void MainWindow::callOneOfTheDices(){
192
+
193
+    for (int i = 1; i <= 6; i++)
194
+        this->diceImages.push_back(QImage(":/images/resources/d" + QString::number(i) + ".png"));
195
+
196
+    aTimer = new QTimer;
197
+    aTimer->setInterval(100);
198
+    aTimer->setSingleShot(false);
199
+    aTimer->start();
200
+    timerCounter = 0;
201
+    QObject::connect(aTimer,&QTimer::timeout, this, &MainWindow::paintDice); //[&](){ birth(w, juana, avelardo, piolin);});
202
+
377
 
203
 
378
 }
204
 }
379
 
205
 
380
-//Checks which version of dice is selected and call it
381
-void MainWindow::dices(){
382
-    if (option == "Version Alpha")
383
-        diceAlpha();
384
-    else if (option == "Version Beta")
385
-        diceBeta();
386
-    else if (option == "Version Gamma")
387
-        diceGamma();
388
-    else
389
-        diceDelta();
206
+
207
+
208
+
209
+//========================================================
210
+// Functions for the dice roller
211
+//========================================================
212
+
213
+
214
+void MainWindow::diceAlpha(){
215
+    int total = diceFinal01 + diceFinal02 + 2;
216
+    line[0]->setText(QString::number(total));
217
+}
218
+
219
+
220
+void MainWindow::diceBeta(){
221
+    int total = diceFinal01 + diceFinal01 + 2;
222
+    line[0]->setText(QString::number(total));
223
+}
224
+
225
+
226
+void MainWindow::diceGamma(){
227
+    int total = diceFinal01 - diceFinal02;
228
+    line[0]->setText(QString::number(total));
229
+}
230
+
231
+
232
+void MainWindow::diceDelta(){
233
+    int total = diceFinal01 + diceFinal02;
234
+    line[0]->setText(QString::number(total));
390
 }
235
 }
391
 
236
 
392
 
237
 
393
-//Checks which version of check-writer is selected and call it
394
-void MainWindow::checkWs(){
238
+void MainWindow::callOneOfTheChecks(){
395
     unsigned int qty;
239
     unsigned int qty;
396
     if (!validateCheckQty(line[0]->text(),qty)) {
240
     if (!validateCheckQty(line[0]->text(),qty)) {
397
         QMessageBox::warning(this, "Alert",
241
         QMessageBox::warning(this, "Alert",
408
         line[1]->setText( checkWDelta(qty) );
252
         line[1]->setText( checkWDelta(qty) );
409
 }
253
 }
410
 
254
 
411
-//Checks which version of zulu is selected and call it
412
-void MainWindow::zulus(){
255
+void MainWindow::callOneOfTheZulus(){
413
     QString zuluTime = line[0]->text();
256
     QString zuluTime = line[0]->text();
414
     QString zuluZone = line[1]->text();
257
     QString zuluZone = line[1]->text();
415
     int hours, minutes;
258
     int hours, minutes;
417
     if (!validZuluTime(zuluTime, zuluZone, hours, minutes) ) {
260
     if (!validZuluTime(zuluTime, zuluZone, hours, minutes) ) {
418
 
261
 
419
         QMessageBox::warning(this, "Alert",
262
         QMessageBox::warning(this, "Alert",
420
-                             "Either Zulu Time or Zone is not valid");
263
+                             "Either Zulu Time or Zone is not valid.");
421
         line[2]->setText("Error");
264
         line[2]->setText("Error");
422
         return;
265
         return;
423
     }
266
     }
432
 
275
 
433
 }
276
 }
434
 
277
 
435
-//Checks which version of APFT is selected and call it
436
-void MainWindow::APFTs(){
437
-    if (option == "Version Alpha"){
438
-        APFTAlpha();
439
-    }
440
-    else if (option == "Version Beta"){
441
-        APFTBeta();
442
-    }
443
-    else if (option == "Version Gamma"){
444
-        APFTGamma();
445
-    }
446
-    else{
447
-        APFTDelta();
448
-    }
449
-}
450
 
278
 
451
-//Here is what happend when Sort-button is clicked
452
 void MainWindow::on_SortsButton_clicked()
279
 void MainWindow::on_SortsButton_clicked()
453
 {
280
 {
454
     //Create a new QComboBox and add the items in it
281
     //Create a new QComboBox and add the items in it
495
 
322
 
496
     //Here we connect the signals of the widgets generated
323
     //Here we connect the signals of the widgets generated
497
     //by code to their respective functions
324
     //by code to their respective functions
498
-    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(whatOption(QString)));
499
-    connect(button[0], SIGNAL(clicked()), this, SLOT(sorts()));
325
+    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(setOption(QString)));
326
+    connect(button[0], SIGNAL(clicked()), this, SLOT(callOneOfTheSorts()));
500
     connect(button[1], SIGNAL(clicked()), this, SLOT(clearLines()));
327
     connect(button[1], SIGNAL(clicked()), this, SLOT(clearLines()));
501
 
328
 
502
     //Now that we have set our new window, we hide the main-window
329
     //Now that we have set our new window, we hide the main-window
503
     //and show the new one. The new-window has a signal that
330
     //and show the new one. The new-window has a signal that
504
     //notify when it was closed so we can shor the main-window
331
     //notify when it was closed so we can shor the main-window
505
     window->setLayout(layout);
332
     window->setLayout(layout);
506
-    mostrar(false);
333
+    showMW(false);
507
     window->show();
334
     window->show();
508
 }
335
 }
509
 
336
 
510
-//Here is what happend when Dice-button is clicked
511
 void MainWindow::on_DiceButton_clicked()
337
 void MainWindow::on_DiceButton_clicked()
512
 {
338
 {
513
     //Create a new QComboBox and add the items in it
339
     //Create a new QComboBox and add the items in it
551
 
377
 
552
     //Here we connect the signals of the widgets generated
378
     //Here we connect the signals of the widgets generated
553
     //by code to their respective functions
379
     //by code to their respective functions
554
-    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(whatOption(QString)));
555
-    connect(button[0], SIGNAL(clicked()), this, SLOT(dices()));
380
+    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(setOption(QString)));
381
+    connect(button[0], SIGNAL(clicked()), this, SLOT(callOneOfTheDices()));
556
 
382
 
557
     //Now that we have set our new window, we hide the main-window
383
     //Now that we have set our new window, we hide the main-window
558
     //and show the new one. The new-window has a signal that
384
     //and show the new one. The new-window has a signal that
559
     //notify when it was closed so we can shor the main-window
385
     //notify when it was closed so we can shor the main-window
560
     window->setLayout(layout);
386
     window->setLayout(layout);
561
-    mostrar(false);
387
+    showMW(false);
562
     window->show();
388
     window->show();
563
 }
389
 }
564
 
390
 
565
-//Here is what happend when RPS-button is clicked
566
 void MainWindow::on_RPSButton_clicked()
391
 void MainWindow::on_RPSButton_clicked()
567
 {
392
 {
568
     //Create a new QComboBox and add the items in it
393
     //Create a new QComboBox and add the items in it
573
     method->addItem("Version Delta");
398
     method->addItem("Version Delta");
574
     option = "Version Alpha"; //Default option is alpha
399
     option = "Version Alpha"; //Default option is alpha
575
 
400
 
576
-    //We create a new layout and insert the comboBox to it
577
-    layout = new QGridLayout;
578
-    layout->addWidget(method, 0, 0, 1, -1);
401
+    cmbPlayer01 = new QComboBox;
402
+    cmbPlayer02 = new QComboBox;
403
+    cmbPlayer01->addItem("rock");       cmbPlayer02->addItem("rock");
404
+    cmbPlayer01->addItem("paper");      cmbPlayer02->addItem("paper");
405
+    cmbPlayer01->addItem("scisors");    cmbPlayer02->addItem("scisors");
406
+
579
 
407
 
580
     //The buttons needed here are the 'play' and 'clear' buttons
408
     //The buttons needed here are the 'play' and 'clear' buttons
581
     button[0] = new QPushButton("Play");
409
     button[0] = new QPushButton("Play");
582
-    button[1] = new QPushButton("Clear");
583
-
584
-    //3 inputs and 1 output
585
-    for (int i = 0; i<4; i++){
586
-        line[i] = new QLineEdit;
587
-    }
588
 
410
 
411
+    line[0] = new QLineEdit;
589
     //The user is not able to write on the output line
412
     //The user is not able to write on the output line
590
-    line[3]->setEnabled(false);
413
+    line[0]->setEnabled(false);
591
 
414
 
592
     //Labels to let the user understand the app
415
     //Labels to let the user understand the app
593
     label[0] = new QLabel("Player 1's moves");
416
     label[0] = new QLabel("Player 1's moves");
594
     label[1] = new QLabel("Player 2's moves");
417
     label[1] = new QLabel("Player 2's moves");
595
-    label[2] = new QLabel("How many games to win:");
596
-    label[3] = new QLabel("Winner:");
597
-    label[4] = new QLabel("Tournament:");
598
-    //lines for score
599
-    line[4] = new QLineEdit;
600
-    line[4]->setEnabled(false);
601
-
602
-    //Here we insert the widgets on the layout
603
-    layout->addWidget(label[0], 1, 0);
604
-    layout->addWidget(line[0], 2, 0);
605
-    layout->addWidget(label[1], 3, 0);
606
-    layout->addWidget(line[1], 4, 0);
607
-    layout->addWidget(label[2], 5, 0);
608
-    layout->addWidget(line[2], 5, 1);
609
-    layout->addWidget(label[3], 6, 0);
610
-    layout->addWidget(line[3], 6, 1);
611
-    layout->addWidget(button[0], 2, 1);
612
-    layout->addWidget(button[1], 3, 1);
613
-    layout->addWidget(line[4],7 ,1 );
614
-    layout->addWidget(label[4],7 ,0 );
615
-
616
-    //Here we connect the signals of the widgets generated
617
-    //by code to their respective functions
618
-    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(whatOption(QString)));
619
-    connect(button[0], SIGNAL(clicked()), this, SLOT(RPSs()));
620
-    connect(button[1], SIGNAL(clicked()), this, SLOT(clearLines()));
621
-    connect(line[0], SIGNAL(textEdited(QString)), this, SLOT(RPSnormalizer1(QString)));
622
-    connect(line[1], SIGNAL(textEdited(QString)), this, SLOT(RPSnormalizer2(QString)));
623
-    connect(line[2], SIGNAL(textEdited(QString)), this, SLOT(RPSnormalizer3(QString)));
624
-
625
-    //Now that we have set our new window, we hide the main-window
626
-    //and show the new one. The new-window has a signal that
627
-    //notify when it was closed so we can shor the main-window
628
-    window->setLayout(layout);
629
-    mostrar(false);
630
-    window->show();
631
-    score1 = score2 = 0;
632
-}
633
-
634
-//Here is what happend when CheckWritter-button is clicked
635
-void MainWindow::on_CheckWriterButton_clicked()
636
-{
637
-    //Create a new QComboBox and add the items in it
638
-    method = new QComboBox;
639
-    method->addItem("Version Alpha");
640
-    method->addItem("Version Beta");
641
-    method->addItem("Version Gamma");
642
-    method->addItem("Version Delta");
643
-    option = "Version Alpha"; //Default option is alpha
418
+    label[2] = new QLabel("Winner:");
644
 
419
 
645
     //We create a new layout and insert the comboBox to it
420
     //We create a new layout and insert the comboBox to it
421
+    int row = 0;
646
     layout = new QGridLayout;
422
     layout = new QGridLayout;
647
-    layout->addWidget(method, 0, 0, 1, -1);
648
-
649
-    //Label to let the user understand the app
650
-    label[0] = new QLabel("Number to convert");
423
+    layout->addWidget(method,       row++, 0);
424
+    layout->addWidget(label[0],     row, 0);
425
+    layout->addWidget(cmbPlayer01,  row++, 1);
426
+    layout->addWidget(label[1],     row, 0);
427
+    layout->addWidget(cmbPlayer02,  row++, 1);
428
+    layout->addWidget(button[0],    row++, 1);
429
+    layout->addWidget(line[0],      row, 1);
430
+    layout->addWidget(label[2],      row++, 0);
651
 
431
 
652
-    //We just need two buttons to clear or convert
653
-    button[0] = new QPushButton("Convert");
654
-    button[1] = new QPushButton("Clear");
655
-
656
-    //1 output and 1 input
657
-    for (int i = 0; i<2; i++){
658
-        line[i] = new QLineEdit;
659
-    }
660
-
661
-    //The user is not able to write on the output line
662
-    line[1]->setEnabled(false);
663
-
664
-    //Here we insert the widgets on the layout
665
-    layout->addWidget(label[0], 1, 0, 1, 2);
666
-    layout->addWidget(line[0], 2, 0, 1, 2);
667
-    layout->addWidget(button[0], 3, 0);
668
-    layout->addWidget(button[1], 3, 1);
669
-    layout->addWidget(line[1], 4, 0, 1, 2);
670
 
432
 
671
     //Here we connect the signals of the widgets generated
433
     //Here we connect the signals of the widgets generated
672
     //by code to their respective functions
434
     //by code to their respective functions
673
-    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(whatOption(QString)));
674
-    connect(button[0], SIGNAL(clicked()), this, SLOT(checkWs()));
675
-    connect(button[1], SIGNAL(clicked()), this, SLOT(clearLines()));
676
-    //connect(line[0], SIGNAL(textEdited(QString)), this, SLOT(CheckWnormalizer(QString)));
435
+    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(setOption(QString)));
436
+    connect(button[0], SIGNAL(clicked()), this, SLOT(callOneOfTheRPS()));
677
 
437
 
678
     //Now that we have set our new window, we hide the main-window
438
     //Now that we have set our new window, we hide the main-window
679
     //and show the new one. The new-window has a signal that
439
     //and show the new one. The new-window has a signal that
680
     //notify when it was closed so we can shor the main-window
440
     //notify when it was closed so we can shor the main-window
681
     window->setLayout(layout);
441
     window->setLayout(layout);
682
-    mostrar(false);
442
+    showMW(false);
683
     window->show();
443
     window->show();
684
 }
444
 }
685
 
445
 
686
-//Here is what happend when Zulu-button is clicked
446
+
687
 void MainWindow::on_ZuluButton_clicked()
447
 void MainWindow::on_ZuluButton_clicked()
688
 {
448
 {
689
     //Create a new QComboBox and add the items in it
449
     //Create a new QComboBox and add the items in it
701
     //Labels to let the user understand the app
461
     //Labels to let the user understand the app
702
     label[0] = new QLabel("Zulu time:");
462
     label[0] = new QLabel("Zulu time:");
703
     label[1] = new QLabel("Standard time");
463
     label[1] = new QLabel("Standard time");
464
+    label[2] = new QLabel("Zulu zone:");
704
 
465
 
705
     //Just the buttons to clear and convert the time
466
     //Just the buttons to clear and convert the time
706
     button[0] = new QPushButton("Clear");
467
     button[0] = new QPushButton("Clear");
716
 
477
 
717
     //Here we insert the widgets on the layout
478
     //Here we insert the widgets on the layout
718
     layout->addWidget(label[0], 1, 0);
479
     layout->addWidget(label[0], 1, 0);
480
+    layout->addWidget(label[2], 1, 1);
719
     layout->addWidget(line[0], 2, 0);
481
     layout->addWidget(line[0], 2, 0);
720
     layout->addWidget(line[1], 2, 1);
482
     layout->addWidget(line[1], 2, 1);
721
     layout->addWidget(button[0], 3, 0);
483
     layout->addWidget(button[0], 3, 0);
725
 
487
 
726
     //Here we connect the signals of the widgets generated
488
     //Here we connect the signals of the widgets generated
727
     //by code to their respective functions
489
     //by code to their respective functions
728
-    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(whatOption(QString)));
490
+    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(setOption(QString)));
729
     connect(button[0], SIGNAL(clicked()), this, SLOT(clearLines()));
491
     connect(button[0], SIGNAL(clicked()), this, SLOT(clearLines()));
730
-    connect(button[1], SIGNAL(clicked()), this, SLOT(zulus()));
492
+    connect(button[1], SIGNAL(clicked()), this, SLOT(callOneOfTheZulus()));
731
 
493
 
732
     // Rafa 2014-09-16 - Validation will be done when button is clicked
494
     // Rafa 2014-09-16 - Validation will be done when button is clicked
733
     //    connect(line[0], SIGNAL(textEdited(QString)), this, SLOT(Zulunormalizer1(QString)));
495
     //    connect(line[0], SIGNAL(textEdited(QString)), this, SLOT(Zulunormalizer1(QString)));
737
     //and show the new one. The new-window has a signal that
499
     //and show the new one. The new-window has a signal that
738
     //notify when it was closed so we can shor the main-window
500
     //notify when it was closed so we can shor the main-window
739
     window->setLayout(layout);
501
     window->setLayout(layout);
740
-    mostrar(false);
502
+    showMW(false);
741
     window->show();
503
     window->show();
742
 }
504
 }
743
 
505
 
744
-//Here is what happend when APFT-button is clicked
745
-void MainWindow::on_APFTButton_clicked()
746
-{
747
-    //Create a new QComboBox and add the items in it
748
-    method = new QComboBox;
749
-    method->addItem("Version Alpha");
750
-    method->addItem("Version Beta");
751
-    method->addItem("Version Gamma");
752
-    method->addItem("Version Delta");
753
-    option = "Version Alpha"; //Default option is alpha
754
-
755
-    //We create a new layout and insert the comboBox to it
756
-    layout = new QGridLayout;
757
-    layout->addWidget(method, 0, 0, 1, -1);
758
-
759
-    //3 inputs and 4 outputs
760
-    for (int i = 0; i<7; i++){
761
-        line[i] = new QLineEdit;
762
-    }
763
-
764
-    //The user is not able to write on the output lines
765
-    line[3]->setEnabled(false);
766
-    line[4]->setEnabled(false);
767
-    line[5]->setEnabled(false);
768
-    line[6]->setEnabled(false);
769
-
770
-    //Labels to let the user understand the app
771
-    label[0] = new QLabel("Sit-Ups");
772
-    label[1] = new QLabel("Push-Ups");
773
-    label[2] = new QLabel("2 Mile Run");
774
-    label[3] = new QLabel("Sit-Ups Score");
775
-    label[4] = new QLabel("Push-Ups Score");
776
-    label[5] = new QLabel("2 Mile Run Score");
777
-    label[6] = new QLabel("Total Score");
778
-    label[7] = new QLabel("----");
779
-
780
-    //Just the buttons to calculate it and clear the lines
781
-    button[0] = new QPushButton("Calculate");
782
-    button[1] = new QPushButton("Clear");
783
-
784
-    //Here we insert the widgets on the layout
785
-    layout->addWidget(label[0], 1, 0);
786
-    layout->addWidget(label[1], 2, 0);
787
-    layout->addWidget(label[2], 3, 0);
788
-    layout->addWidget(button[0], 4, 0);
789
-    layout->addWidget(line[0], 1, 1);
790
-    layout->addWidget(line[1], 2, 1);
791
-    layout->addWidget(line[2], 3, 1);
792
-    layout->addWidget(button[1], 4, 1);
793
-    layout->addWidget(label[3], 1, 2);
794
-    layout->addWidget(label[4], 2, 2);
795
-    layout->addWidget(label[5], 3, 2);
796
-    layout->addWidget(label[6], 4, 2);
797
-    layout->addWidget(line[3], 1, 3);
798
-    layout->addWidget(line[4], 2, 3);
799
-    layout->addWidget(line[5], 3, 3);
800
-    layout->addWidget(line[6], 4, 3);
801
-    layout->addWidget(label[7], 4, 4);
802
-
803
-    //Here we connect the signals of the widgets generated
804
-    //by code to their respective functions
805
-    connect(method, SIGNAL(currentIndexChanged(QString)), this, SLOT(whatOption(QString)));
806
-    connect(button[0], SIGNAL(clicked()), this, SLOT(APFTs()));
807
-    connect(button[1], SIGNAL(clicked()), this, SLOT(clearLines()));
808
-    connect(line[0], SIGNAL(textEdited(QString)), this, SLOT(APFTnormalizer1(QString)));
809
-    connect(line[1], SIGNAL(textEdited(QString)), this, SLOT(APFTnormalizer2(QString)));
810
-    connect(line[2], SIGNAL(textEdited(QString)), this, SLOT(APFTnormalizer3(QString)));
811
-
812
-    //Now that we have set our new window, we hide the main-window
813
-    //and show the new one. The new-window has a signal that
814
-    //notify when it was closed so we can shor the main-window
815
-    window->setLayout(layout);
816
-    mostrar(false);
817
-    window->show();
818
-}

+ 160
- 45
mainwindow.h View File

1
+// RAN - 2015-06-26 - Removed some old slots that were not being used
2
+
1
 #ifndef MAINWINDOW_H
3
 #ifndef MAINWINDOW_H
2
 #define MAINWINDOW_H
4
 #define MAINWINDOW_H
3
 
5
 
12
 #include <QComboBox>
14
 #include <QComboBox>
13
 #include <QString>
15
 #include <QString>
14
 #include <QImage>
16
 #include <QImage>
17
+#include <QVector>
15
 
18
 
16
 namespace Ui {
19
 namespace Ui {
17
     class MainWindow;
20
     class MainWindow;
25
     explicit MainWindow(QWidget *parent = 0);
28
     explicit MainWindow(QWidget *parent = 0);
26
     ~MainWindow();
29
     ~MainWindow();
27
 
30
 
28
-    void diceAlpha();
29
-    void diceBeta();
30
-    void diceGamma();
31
-    void diceDelta();
32
-
33
-    void APFTAlpha();
34
-    void APFTBeta();
35
-    void APFTGamma();
36
-    void APFTDelta();
37
-
38
-private slots:
39
-    void on_SortsButton_clicked();
40
-    void on_DiceButton_clicked();
41
-    void on_RPSButton_clicked();
42
-    void on_CheckWriterButton_clicked();
43
-    void on_ZuluButton_clicked();
44
-    void on_APFTButton_clicked();
45
-
46
-    void mostrar(bool si);
47
-
48
-    void whatOption(QString str);
49
 
31
 
50
-    void clearLines();
51
-
52
-    void RPSnormalizer1(QString str);
32
+    /// \fn diceAlpha
33
+    /// \~English
34
+    /// \brief Computes the dice total based on the values of the dice.
35
+    /// \~Spanish
36
+    /// \brief Computa el total de puntos usando los valores de los dados.
37
+    void diceAlpha();
53
 
38
 
54
-    void RPSnormalizer2(QString str);
55
 
39
 
56
-    void RPSnormalizer3(QString str);
40
+    /// \fn diceBeta
41
+    /// \~English
42
+    /// \brief Computes the dice total based on the values of the dice.
43
+    /// \~Spanish
44
+    /// \brief Computa el total de puntos usando los valores de los dados.
45
+    void diceBeta();
57
 
46
 
58
-    void CheckWnormalizer(QString str);
47
+    /// \fn diceGamma
48
+    /// \~English
49
+    /// \brief Computes the dice total based on the values of the dice.
50
+    /// \~Spanish
51
+    /// \brief Computa el total de puntos usando los valores de los dados.
52
+    void diceGamma();
59
 
53
 
60
-    void Zulunormalizer1(QString str);
54
+    /// \fn diceDelta
55
+    /// \~English
56
+    /// \brief Computes the dice total based on the values of the dice.
57
+    /// \~Spanish
58
+    /// \brief Computa el total de puntos usando los valores de los dados.
59
+    void diceDelta();
61
 
60
 
62
-    void Zulunormalizer2(QString str);
63
 
61
 
64
-    void APFTnormalizer1(QString str);
62
+private slots:
65
 
63
 
66
-    void APFTnormalizer2(QString str);
67
 
64
 
68
-    void APFTnormalizer3(QString str);
65
+    /// \fn on_SortsButton_clicked
66
+    /// \~English
67
+    /// \brief Called when Sort-button is clicked. Creates controls for secondary window,
68
+    /// displays it, and hides the main window.
69
+    /// \~Spanish
70
+    /// \brief Esta función es llamada cuando el usuario cliquea el boton de Sort. 
71
+    /// Crea los controles de la ventana secundaria. muestra la ventana secundaria 
72
+    /// y esconde la ventana principal.
73
+    void on_SortsButton_clicked();
69
 
74
 
70
-    void sorts();
75
+    /// \fn on_DiceButton_clicked
76
+    /// \~English
77
+    /// \brief Called when Dice button is clicked. Creates controls for secondary window,
78
+    /// displays it, and hides the main window.
79
+    /// \~Spanish
80
+    /// \brief Esta función es llamada cuando el usuario cliquea el boton de Dice. 
81
+    /// Crea los controles de la ventana secundaria. muestra la ventana secundaria 
82
+    /// y esconde la ventana principal.
83
+    void on_DiceButton_clicked();
71
 
84
 
72
-    void RPSs();
85
+    /// \fn on_RPSButton_clicked
86
+    /// \~English
87
+    /// \brief Called when RPS button is clicked. Creates controls for secondary window,
88
+    /// displays it, and hides the main window.
89
+    /// \~Spanish
90
+    /// \brief Esta función es llamada cuando el usuario cliquea el boton de RPS. 
91
+    /// Crea los controles de la ventana secundaria. muestra la ventana secundaria 
92
+    /// y esconde la ventana principal.  
93
+    void on_RPSButton_clicked();
73
 
94
 
74
-    void dices();
75
 
95
 
76
-    void checkWs();
96
+    /// \fn on_ZuluButton_clicked
97
+    /// \~English
98
+    /// \brief Called when Zulu time button is clicked. Creates controls for secondary window,
99
+    /// displays it, and hides the main window.
100
+    /// \~Spanish
101
+    /// \brief Esta función es llamada cuando el usuario cliquea el boton de Zulu time. 
102
+    /// Crea los controles de la ventana secundaria. muestra la ventana secundaria 
103
+    /// y esconde la ventana principal.  
104
+    void on_ZuluButton_clicked();
77
 
105
 
78
-    void zulus();
106
+    /// \fn showMW
107
+    /// \~English
108
+    /// \brief This function either (1) shows the main window and deletes all the items created on 
109
+    /// the closed one or (2) hides the mainwindow
110
+    /// \param doShow if true then show the main window, else hide it. 
111
+    /// \~Spanish
112
+    /// \brief Esta función hace una de dos: (1) muestra la ventana principal y borra
113
+    /// todas los elementos creados en la secundaria, o (2) esconde la ventana principal
114
+    /// \param doShow si es true muestra la ventana principal, de lo contrario la esconde. 
115
+    void showMW(bool doShow);
116
+
117
+
118
+    /// \fn setOption
119
+    /// \~English
120
+    /// \brief A slot that reads what item of the combo box was selected and saves it
121
+    /// to a data member.
122
+    /// \~Spanish
123
+    /// \brief Un slot que lee la selección del combobox y lo guarda a un data member.
124
+    void setOption(QString str);
125
+
126
+
127
+    /// \fn clearLines
128
+    /// \~English
129
+    /// \brief Clear the text boxes in the GUIs.
130
+    /// \~Spanish
131
+    /// \brief Limpia las cajas de texto en los GUIs.
132
+    void clearLines();
79
 
133
 
80
-    void APFTs();
134
+    /// \fn callOneOfTheSorts
135
+    /// \~English
136
+    /// \brief Reads the version combobox, validates the inputs, and calls the
137
+    /// alpha, beta, gamma or delta sort function.
138
+    /// \~Spanish
139
+    /// \brief Lee el combobox, valida los inputs y llama a la versión
140
+    /// alpha, beta, gamma o delta de las funciones de sort
141
+    void callOneOfTheSorts();
142
+
143
+
144
+    /// \fn callOneOfTheRPS
145
+    /// \~English
146
+    /// \brief Reads the version combobox, validates the inputs, and calls the
147
+    /// alpha, beta, gamma or delta RPS function.
148
+    /// \~Spanish
149
+    /// \brief Lee el combobox, valida los inputs y llama a la versión
150
+    /// alpha, beta, gamma o delta de las funciones de RPS (piedra, papel y tijera)
151
+    void callOneOfTheRPS();
152
+
153
+
154
+    /// \fn callOneOfTheDices
155
+    /// \~English
156
+    /// \brief Reads the version combobox, validates the inputs, and calls the
157
+    /// alpha, beta, gamma or delta dice function.
158
+    /// \~Spanish
159
+    /// \brief Lee el combobox, valida los inputs y llama a la versión
160
+    /// alpha, beta, gamma o delta de las funciones de "dice".
161
+    void callOneOfTheDices();
162
+
163
+
164
+    /// \fn callOneOfTheChecks
165
+    /// \~English
166
+    /// \brief Reads the version combobox, validates the inputs, and calls the
167
+    /// alpha, beta, gamma or delta check function
168
+    /// \~Spanish
169
+    /// \brief Lee el combobox, valida los inputs y llama a la versión
170
+    /// alpha, beta, gamma o delta de las funciones de cheques.
171
+    void callOneOfTheChecks();
172
+
173
+
174
+    /// \fn callOneOfTheZulus
175
+    /// \~English
176
+    /// \brief Reads the version combobox, validates the inputs, and calls the
177
+    /// alpha, beta, gamma or delta zulu time function
178
+    /// \~Spanish
179
+    /// \brief Lee el combobox, valida los inputs y llama a la versión
180
+    /// alpha, beta, gamma o delta de las funciones de zulu time.
181
+    void callOneOfTheZulus();
182
+
183
+
184
+    /// \fn paintDice
185
+    /// \~English
186
+    /// \brief This function is called on every timer tick to "animate" the dice.
187
+    /// \~Spanish
188
+    /// \brief Función invocada en cada tick del timer para "animar" el dado.
189
+    void paintDice();
81
 
190
 
82
 private:
191
 private:
83
-    Ui::MainWindow *ui;
84
-    secondwindow *window;
85
-    QGridLayout *layout;
86
-    QPushButton *button[2];
192
+    Ui::MainWindow  *ui;
193
+    secondwindow    *window;
194
+    QGridLayout     *layout;
195
+    QPushButton     *button[2];
196
+    QLineEdit       *line[7];
197
+    QLabel          *label[7];
198
+    QComboBox       *method, *cmbPlayer01, *cmbPlayer02;
199
+    QTimer          *aTimer;
200
+
87
     int buttonSize;
201
     int buttonSize;
88
-    QLineEdit *line[7];
89
     int lineSize;
202
     int lineSize;
90
-    QLabel *label[7];
91
     int labelSize;
203
     int labelSize;
92
-    QComboBox *method;
93
     QString option;
204
     QString option;
94
     QImage dice1;
205
     QImage dice1;
95
     QImage dice2;
206
     QImage dice2;
207
+    int diceFinal01, diceFinal02;
208
+    int timerCounter;
96
     int score1, score2;
209
     int score1, score2;
210
+
211
+    QVector<QImage> diceImages;
97
 };
212
 };
98
 
213
 
99
 #endif // MAINWINDOW_H
214
 #endif // MAINWINDOW_H

+ 13
- 37
mainwindow.ui View File

6
    <rect>
6
    <rect>
7
     <x>0</x>
7
     <x>0</x>
8
     <y>0</y>
8
     <y>0</y>
9
-    <width>487</width>
10
-    <height>257</height>
9
+    <width>361</width>
10
+    <height>256</height>
11
    </rect>
11
    </rect>
12
   </property>
12
   </property>
13
   <property name="sizePolicy">
13
   <property name="sizePolicy">
42
    <widget class="QPushButton" name="RPSButton">
42
    <widget class="QPushButton" name="RPSButton">
43
     <property name="geometry">
43
     <property name="geometry">
44
      <rect>
44
      <rect>
45
-      <x>330</x>
46
-      <y>70</y>
45
+      <x>10</x>
46
+      <y>140</y>
47
       <width>141</width>
47
       <width>141</width>
48
       <height>61</height>
48
       <height>61</height>
49
      </rect>
49
      </rect>
66
      <string>Dice</string>
66
      <string>Dice</string>
67
     </property>
67
     </property>
68
    </widget>
68
    </widget>
69
-   <widget class="QPushButton" name="APFTButton">
70
-    <property name="geometry">
71
-     <rect>
72
-      <x>330</x>
73
-      <y>140</y>
74
-      <width>141</width>
75
-      <height>61</height>
76
-     </rect>
77
-    </property>
78
-    <property name="text">
79
-     <string>APFT</string>
80
-    </property>
81
-   </widget>
82
    <widget class="QPushButton" name="ZuluButton">
69
    <widget class="QPushButton" name="ZuluButton">
83
     <property name="geometry">
70
     <property name="geometry">
84
      <rect>
71
      <rect>
92
      <string>Zulu</string>
79
      <string>Zulu</string>
93
     </property>
80
     </property>
94
    </widget>
81
    </widget>
95
-   <widget class="QPushButton" name="CheckWriterButton">
96
-    <property name="geometry">
97
-     <rect>
98
-      <x>10</x>
99
-      <y>140</y>
100
-      <width>141</width>
101
-      <height>61</height>
102
-     </rect>
103
-    </property>
104
-    <property name="text">
105
-     <string>Check Writer</string>
106
-    </property>
107
-   </widget>
108
    <widget class="QFrame" name="frame">
82
    <widget class="QFrame" name="frame">
109
     <property name="geometry">
83
     <property name="geometry">
110
      <rect>
84
      <rect>
126
     <widget class="QLabel" name="label">
100
     <widget class="QLabel" name="label">
127
      <property name="geometry">
101
      <property name="geometry">
128
       <rect>
102
       <rect>
129
-       <x>180</x>
103
+       <x>30</x>
130
        <y>10</y>
104
        <y>10</y>
131
-       <width>161</width>
105
+       <width>361</width>
132
        <height>41</height>
106
        <height>41</height>
133
       </rect>
107
       </rect>
134
      </property>
108
      </property>
143
      <property name="text">
117
      <property name="text">
144
       <string>Testing Lab</string>
118
       <string>Testing Lab</string>
145
      </property>
119
      </property>
120
+     <property name="alignment">
121
+      <set>Qt::AlignCenter</set>
122
+     </property>
146
     </widget>
123
     </widget>
147
     <widget class="QFrame" name="frame_2">
124
     <widget class="QFrame" name="frame_2">
148
      <property name="geometry">
125
      <property name="geometry">
150
        <x>30</x>
127
        <x>30</x>
151
        <y>54</y>
128
        <y>54</y>
152
        <width>641</width>
129
        <width>641</width>
153
-       <height>21</height>
130
+       <height>16</height>
154
       </rect>
131
       </rect>
155
      </property>
132
      </property>
156
      <property name="styleSheet">
133
      <property name="styleSheet">
163
       <enum>QFrame::Raised</enum>
140
       <enum>QFrame::Raised</enum>
164
      </property>
141
      </property>
165
     </widget>
142
     </widget>
166
-    <zorder>frame_2</zorder>
167
-    <zorder>label</zorder>
168
    </widget>
143
    </widget>
169
    <widget class="QFrame" name="frame_3">
144
    <widget class="QFrame" name="frame_3">
170
     <property name="geometry">
145
     <property name="geometry">
171
      <rect>
146
      <rect>
172
-      <x>290</x>
147
+      <x>160</x>
173
       <y>200</y>
148
       <y>200</y>
174
       <width>201</width>
149
       <width>201</width>
175
       <height>61</height>
150
       <height>61</height>
179
      <string notr="true">background-image: url(:/images/resources/logo.png);</string>
154
      <string notr="true">background-image: url(:/images/resources/logo.png);</string>
180
     </property>
155
     </property>
181
     <property name="frameShape">
156
     <property name="frameShape">
182
-     <enum>QFrame::NoFrame</enum>
157
+     <enum>QFrame::StyledPanel</enum>
183
     </property>
158
     </property>
184
     <property name="frameShadow">
159
     <property name="frameShadow">
185
      <enum>QFrame::Raised</enum>
160
      <enum>QFrame::Raised</enum>
186
     </property>
161
     </property>
162
+    <zorder>label</zorder>
187
    </widget>
163
    </widget>
188
   </widget>
164
   </widget>
189
  </widget>
165
  </widget>

+ 1
- 1
secondwindow.cpp View File

7
 }
7
 }
8
 
8
 
9
 void secondwindow::closeEvent(QCloseEvent *){
9
 void secondwindow::closeEvent(QCloseEvent *){
10
-    emit cerrado(true);
10
+    emit closeIt(true);
11
 }
11
 }

+ 26
- 1
secondwindow.h View File

7
 {
7
 {
8
     Q_OBJECT
8
     Q_OBJECT
9
 public:
9
 public:
10
+
11
+    /// \fn secondwindow
12
+    /// \~English
13
+    /// \brief Constructor.
14
+    /// \param parent this object's parent
15
+    /// \~Spanish
16
+    /// \brief Constructor
17
+    /// \param parent ventana padre
10
     explicit secondwindow(QWidget *parent = 0);
18
     explicit secondwindow(QWidget *parent = 0);
11
 
19
 
12
 signals:
20
 signals:
13
-    void cerrado(bool si);
21
+    /// \fn closeIt
22
+    /// \~English
23
+    /// \brief Just a signal that will be emitted when closing 
24
+	/// objects of this class
25
+	/// \param dummy this parameter is just for making this signal compatible with 
26
+    /// type of slot it will be connected.
27
+    /// \~Spanish
28
+    /// \brief Señal que será emitida al cerrar objetos de esta clase
29
+	/// \param dummy este parameterro existe para que la señal sea compatible con el
30
+	/// slot al que será conectada.
31
+    void closeIt(bool dummy);
14
 
32
 
15
 protected:
33
 protected:
34
+
35
+    /// \fn closeEvent
36
+    /// \~English
37
+    /// \brief Overloaded function that is called when an object of this class is closed.
38
+    /// \~Spanish
39
+    /// \brief Función sobrecargada que es invocada cuando se cierra un objeto de 
40
+    /// esta clase.  
16
     virtual void closeEvent(QCloseEvent *);
41
     virtual void closeEvent(QCloseEvent *);
17
 
42
 
18
 public slots:
43
 public slots: