Add the "visualisations" action to the analyzer menu, and make double clicking the analyzer open it. Fixes issue #421
This commit is contained in:
parent
f0d043d19f
commit
79f283f34d
@ -24,6 +24,7 @@
|
|||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QTimer>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
|
||||||
const char* AnalyzerContainer::kSettingsGroup = "Analyzer";
|
const char* AnalyzerContainer::kSettingsGroup = "Analyzer";
|
||||||
@ -33,6 +34,9 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
|
|||||||
context_menu_(new QMenu(this)),
|
context_menu_(new QMenu(this)),
|
||||||
group_(new QActionGroup(this)),
|
group_(new QActionGroup(this)),
|
||||||
mapper_(new QSignalMapper(this)),
|
mapper_(new QSignalMapper(this)),
|
||||||
|
visualisation_action_(NULL),
|
||||||
|
double_click_timer_(new QTimer(this)),
|
||||||
|
ignore_next_click_(false),
|
||||||
current_analyzer_(NULL),
|
current_analyzer_(NULL),
|
||||||
engine_(NULL)
|
engine_(NULL)
|
||||||
{
|
{
|
||||||
@ -46,23 +50,54 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
|
|||||||
AddAnalyzerType<Sonogram>();
|
AddAnalyzerType<Sonogram>();
|
||||||
AddAnalyzerType<TurbineAnalyzer>();
|
AddAnalyzerType<TurbineAnalyzer>();
|
||||||
connect(mapper_, SIGNAL(mapped(int)), SLOT(ChangeAnalyzer(int)));
|
connect(mapper_, SIGNAL(mapped(int)), SLOT(ChangeAnalyzer(int)));
|
||||||
|
|
||||||
context_menu_->addSeparator();
|
|
||||||
|
|
||||||
disable_action_ =
|
disable_action_ =
|
||||||
context_menu_->addAction(tr("No analyzer"), this, SLOT(DisableAnalyzer()));
|
context_menu_->addAction(tr("No analyzer"), this, SLOT(DisableAnalyzer()));
|
||||||
disable_action_->setCheckable(true);
|
disable_action_->setCheckable(true);
|
||||||
group_->addAction(disable_action_);
|
group_->addAction(disable_action_);
|
||||||
|
|
||||||
|
context_menu_->addSeparator();
|
||||||
|
// Visualisation action gets added in SetActions
|
||||||
|
|
||||||
|
double_click_timer_->setSingleShot(true);
|
||||||
|
double_click_timer_->setInterval(250);
|
||||||
|
connect(double_click_timer_, SIGNAL(timeout()), SLOT(ShowPopupMenu()));
|
||||||
|
|
||||||
Load();
|
Load();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnalyzerContainer::mouseReleaseEvent(QMouseEvent* e) {
|
void AnalyzerContainer::SetActions(QAction* visualisation) {
|
||||||
if (e->button() == Qt::LeftButton || e->button() == Qt::RightButton)
|
visualisation_action_ = visualisation;
|
||||||
context_menu_->popup(e->globalPos());
|
context_menu_->addAction(visualisation_action_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnalyzerContainer::set_engine(EngineBase *engine) {
|
void AnalyzerContainer::mouseReleaseEvent(QMouseEvent* e) {
|
||||||
|
if (e->button() == Qt::LeftButton) {
|
||||||
|
if (ignore_next_click_) {
|
||||||
|
ignore_next_click_ = false;
|
||||||
|
} else {
|
||||||
|
// Might be the first click in a double click, so wait a while before
|
||||||
|
// actually doing anything
|
||||||
|
double_click_timer_->start();
|
||||||
|
last_click_pos_ = e->globalPos();
|
||||||
|
}
|
||||||
|
} else if (e->button() == Qt::RightButton) {
|
||||||
|
context_menu_->popup(e->globalPos());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AnalyzerContainer::ShowPopupMenu() {
|
||||||
|
context_menu_->popup(last_click_pos_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AnalyzerContainer::mouseDoubleClickEvent(QMouseEvent *) {
|
||||||
|
double_click_timer_->stop();
|
||||||
|
ignore_next_click_ = true;
|
||||||
|
|
||||||
|
if (visualisation_action_)
|
||||||
|
visualisation_action_->trigger();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AnalyzerContainer::SetEngine(EngineBase *engine) {
|
||||||
if (current_analyzer_)
|
if (current_analyzer_)
|
||||||
current_analyzer_->set_engine(engine);
|
current_analyzer_->set_engine(engine);
|
||||||
engine_ = engine;
|
engine_ = engine;
|
||||||
|
@ -30,16 +30,19 @@ class AnalyzerContainer : public QWidget {
|
|||||||
public:
|
public:
|
||||||
AnalyzerContainer(QWidget* parent);
|
AnalyzerContainer(QWidget* parent);
|
||||||
|
|
||||||
void set_engine(EngineBase* engine);
|
void SetEngine(EngineBase* engine);
|
||||||
|
void SetActions(QAction* visualisation);
|
||||||
|
|
||||||
static const char* kSettingsGroup;
|
static const char* kSettingsGroup;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mouseReleaseEvent(QMouseEvent *);
|
void mouseReleaseEvent(QMouseEvent *);
|
||||||
|
void mouseDoubleClickEvent(QMouseEvent *);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ChangeAnalyzer(int id);
|
void ChangeAnalyzer(int id);
|
||||||
void DisableAnalyzer();
|
void DisableAnalyzer();
|
||||||
|
void ShowPopupMenu();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Load();
|
void Load();
|
||||||
@ -56,6 +59,11 @@ private:
|
|||||||
QList<QAction*> actions_;
|
QList<QAction*> actions_;
|
||||||
QAction* disable_action_;
|
QAction* disable_action_;
|
||||||
|
|
||||||
|
QAction* visualisation_action_;
|
||||||
|
QTimer* double_click_timer_;
|
||||||
|
QPoint last_click_pos_;
|
||||||
|
bool ignore_next_click_;
|
||||||
|
|
||||||
Analyzer::Base* current_analyzer_;
|
Analyzer::Base* current_analyzer_;
|
||||||
EngineBase* engine_;
|
EngineBase* engine_;
|
||||||
};
|
};
|
||||||
|
@ -444,7 +444,8 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||||||
connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted()));
|
connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted()));
|
||||||
|
|
||||||
// Analyzer
|
// Analyzer
|
||||||
ui_->analyzer->set_engine(player_->GetEngine());
|
ui_->analyzer->SetEngine(player_->GetEngine());
|
||||||
|
ui_->analyzer->SetActions(ui_->action_visualisations);
|
||||||
|
|
||||||
// Equalizer
|
// Equalizer
|
||||||
connect(equalizer_.get(), SIGNAL(ParametersChanged(int,QList<int>)),
|
connect(equalizer_.get(), SIGNAL(ParametersChanged(int,QList<int>)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user