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 <QHBoxLayout>
|
||||
#include <QSettings>
|
||||
#include <QTimer>
|
||||
#include <QtDebug>
|
||||
|
||||
const char* AnalyzerContainer::kSettingsGroup = "Analyzer";
|
||||
@ -33,6 +34,9 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
|
||||
context_menu_(new QMenu(this)),
|
||||
group_(new QActionGroup(this)),
|
||||
mapper_(new QSignalMapper(this)),
|
||||
visualisation_action_(NULL),
|
||||
double_click_timer_(new QTimer(this)),
|
||||
ignore_next_click_(false),
|
||||
current_analyzer_(NULL),
|
||||
engine_(NULL)
|
||||
{
|
||||
@ -46,23 +50,54 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
|
||||
AddAnalyzerType<Sonogram>();
|
||||
AddAnalyzerType<TurbineAnalyzer>();
|
||||
connect(mapper_, SIGNAL(mapped(int)), SLOT(ChangeAnalyzer(int)));
|
||||
|
||||
context_menu_->addSeparator();
|
||||
|
||||
disable_action_ =
|
||||
context_menu_->addAction(tr("No analyzer"), this, SLOT(DisableAnalyzer()));
|
||||
disable_action_->setCheckable(true);
|
||||
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();
|
||||
}
|
||||
|
||||
void AnalyzerContainer::mouseReleaseEvent(QMouseEvent* e) {
|
||||
if (e->button() == Qt::LeftButton || e->button() == Qt::RightButton)
|
||||
context_menu_->popup(e->globalPos());
|
||||
void AnalyzerContainer::SetActions(QAction* visualisation) {
|
||||
visualisation_action_ = visualisation;
|
||||
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_)
|
||||
current_analyzer_->set_engine(engine);
|
||||
engine_ = engine;
|
||||
|
@ -30,16 +30,19 @@ class AnalyzerContainer : public QWidget {
|
||||
public:
|
||||
AnalyzerContainer(QWidget* parent);
|
||||
|
||||
void set_engine(EngineBase* engine);
|
||||
void SetEngine(EngineBase* engine);
|
||||
void SetActions(QAction* visualisation);
|
||||
|
||||
static const char* kSettingsGroup;
|
||||
|
||||
protected:
|
||||
void mouseReleaseEvent(QMouseEvent *);
|
||||
void mouseDoubleClickEvent(QMouseEvent *);
|
||||
|
||||
private slots:
|
||||
void ChangeAnalyzer(int id);
|
||||
void DisableAnalyzer();
|
||||
void ShowPopupMenu();
|
||||
|
||||
private:
|
||||
void Load();
|
||||
@ -56,6 +59,11 @@ private:
|
||||
QList<QAction*> actions_;
|
||||
QAction* disable_action_;
|
||||
|
||||
QAction* visualisation_action_;
|
||||
QTimer* double_click_timer_;
|
||||
QPoint last_click_pos_;
|
||||
bool ignore_next_click_;
|
||||
|
||||
Analyzer::Base* current_analyzer_;
|
||||
EngineBase* engine_;
|
||||
};
|
||||
|
@ -444,7 +444,8 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
||||
connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted()));
|
||||
|
||||
// Analyzer
|
||||
ui_->analyzer->set_engine(player_->GetEngine());
|
||||
ui_->analyzer->SetEngine(player_->GetEngine());
|
||||
ui_->analyzer->SetActions(ui_->action_visualisations);
|
||||
|
||||
// Equalizer
|
||||
connect(equalizer_.get(), SIGNAL(ParametersChanged(int,QList<int>)),
|
||||
|
Loading…
x
Reference in New Issue
Block a user