29
29
#include " PushOrDragButton.h"
30
30
#include " NodalScene.h"
31
31
#include < QStyle>
32
- #include < Utils.h>
32
+ #include " Utils.h"
33
+ #include " ActionCycle.h"
33
34
34
35
35
36
MainWindow::MainWindow (QWidget *parent) :
@@ -123,9 +124,16 @@ MainWindow::MainWindow(QWidget *parent) :
123
124
act_generate->setShortcut (QKeySequence::Refresh);
124
125
connect (act_generate, SIGNAL (triggered ()), &m_signal, SLOT (generate ()));
125
126
126
- QAction* act_play = new QAction (" Play" , this );
127
+ ActionCycle* act_play = new ActionCycle (this );
128
+ act_play->addAction (" Play" );
129
+ act_play->addAction (" Pause" );
127
130
act_play->setShortcut (QKeySequence (" Space" ));
128
- connect (act_play, SIGNAL (triggered ()), &m_signal, SLOT (play ()));
131
+ act_play->reset ();
132
+ connect (act_play, SIGNAL (triggered (int )), this , SLOT (playPause (int )));
133
+ connect (&m_signal, SIGNAL (stopped ()), act_play, SLOT (reset ()));
134
+
135
+ QAction* act_stop = new QAction (" Stop" , this );
136
+ connect (act_stop, SIGNAL (triggered ()), &m_signal, SLOT (stop ()));
129
137
130
138
QAction* act_loop = new QAction (" Loop" , this );
131
139
act_loop->setCheckable (true );
@@ -194,6 +202,7 @@ MainWindow::MainWindow(QWidget *parent) :
194
202
195
203
ui->menuAudio ->addAction (act_generate);
196
204
ui->menuAudio ->addAction (act_play);
205
+ ui->menuAudio ->addAction (act_stop);
197
206
ui->menuAudio ->addAction (act_loop);
198
207
199
208
ui->mainToolBar ->clear ();
@@ -203,6 +212,7 @@ MainWindow::MainWindow(QWidget *parent) :
203
212
ui->mainToolBar ->addSeparator ();
204
213
ui->mainToolBar ->addAction (act_generate);
205
214
ui->mainToolBar ->addAction (act_play);
215
+ ui->mainToolBar ->addAction (act_stop);
206
216
207
217
QWidget* spacer = new QWidget (this );
208
218
spacer->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred);
@@ -455,6 +465,22 @@ void MainWindow::quit()
455
465
}
456
466
}
457
467
468
+ void MainWindow::playPause (int _index)
469
+ {
470
+ switch (_index)
471
+ {
472
+ case 0 :
473
+ m_signal.play ();
474
+ break ;
475
+ case 1 :
476
+ m_signal.pause ();
477
+ break ;
478
+ default :
479
+ Q_ASSERT (true );
480
+ break ;
481
+ }
482
+ }
483
+
458
484
void MainWindow::setDirty ()
459
485
{
460
486
if (!m_dirty && m_dirtyable)
0 commit comments