-
Notifications
You must be signed in to change notification settings - Fork 0
/
qthometrainermenudialog.cpp
98 lines (83 loc) · 2.41 KB
/
qthometrainermenudialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "qthometrainermenudialog.h"
#include <QDesktopWidget>
#include <QFileDialog>
#include "hometrainermenudialog.h"
#include "hometrainermaindialog.h"
#include "multiplechoicequestion.h"
#include "openquestion.h"
#include "openquestionfactory.h"
#include "qtaboutdialog.h"
#include "qthometrainermaindialog.h"
#include "ui_qthometrainermenudialog.h"
ribi::QtHometrainerMenuDialog::QtHometrainerMenuDialog(QWidget *parent) noexcept :
QtHideAndShowDialog(parent),
ui(new Ui::QtHometrainerMenuDialog),
m_main_dialog{}
{
ui->setupUi(this);
ui->button_start_exercise->setEnabled( m_main_dialog.get() );
}
ribi::QtHometrainerMenuDialog::~QtHometrainerMenuDialog() noexcept
{
delete ui;
}
void ribi::QtHometrainerMenuDialog::on_button_about_clicked() noexcept
{
About a = HometrainerMenuDialog().GetAbout();
a.AddLibrary("QtHideAndShowDialog version: " + QtHideAndShowDialog::GetVersion());
QtAboutDialog d(a);
d.setWindowIcon(this->windowIcon());
d.setStyleSheet(this->styleSheet());
ShowChild(&d);
}
void ribi::QtHometrainerMenuDialog::on_button_quit_clicked() noexcept
{
close();
}
void ribi::QtHometrainerMenuDialog::on_button_start_exercise_clicked() noexcept
{
QtHometrainerMainDialog d(m_main_dialog);
ShowChild(&d);
}
void ribi::QtHometrainerMenuDialog::on_button_load_exercise_clicked() noexcept
{
try
{
const std::string filename
= QFileDialog::getOpenFileName(0,"Please select a Hometrainer file").toStdString();
const boost::shared_ptr<const HometrainerMainDialog> dialog {
new HometrainerMainDialog(filename)
};
m_main_dialog = dialog;
}
catch (std::exception&)
{
//No problem
}
ui->button_start_exercise->setEnabled( m_main_dialog.get() );
this->show();
}
void ribi::QtHometrainerMenuDialog::on_button_create_examples_clicked()
{
HometrainerMenuDialog::CreateExamples();
ui->button_create_examples->setVisible(false);
}
void ribi::TestQtHometrainerMenuDialog() noexcept
{
std::vector<boost::shared_ptr<const Question> > v;
{
const boost::shared_ptr<const MultipleChoiceQuestion> q {
new MultipleChoiceQuestion("-,1+1=,2,1,3")
};
v.push_back(q);
}
{
const auto openquestion = OpenQuestionFactory().Create("-,1+1=,2/Two/two");
assert(openquestion);
v.push_back(openquestion);
}
const boost::shared_ptr<const HometrainerMainDialog> dialog {
new HometrainerMainDialog(v)
};
QtHometrainerMainDialog d(dialog);
}