using namespace std;
#include <qtooltip.h>
#include <qimage.h>
+#include <qboxlayout.h>
+#include <qwidgetaction.h>
#include <GL/glut.h>
#include <Music/Music.h>
using namespace Music;
-GLGraph::GLGraph(const QString& name, QWidget* parent)
-: QGLWidget(parent, "GLGraph")
-, View(name, this)
+GLGraph::GLGraph(QWidget* parent)
+: QGLWidget(parent)
+, View(tr("Captured Sound"), this)
, m_skip(1)
, m_new_values(false)
{
// settings
- QImage img;
+ QPixmap img;
img.loadFromData(g_icon_graph, sizeof(g_icon_graph), "PNG");
- setting_show->setIconSet(QIconSet(QImage(img)));
- setting_show->setOn(true);
+ setting_show->setIcon(QIcon(img));
+ setting_show->setChecked(true);
- setting_showWaveForm = new QAction(this);
- setting_showWaveForm->setMenuText(tr("Show Wave Form"));
- setting_showWaveForm->setToggleAction(true);
+ setting_showWaveForm = new QAction(tr("Show Wave Form"), this);
+ setting_showWaveForm->setCheckable(true);
connect(setting_showWaveForm, SIGNAL(toggled(bool)), this, SLOT(update()));
- setting_showWaveForm->setOn(true);
- setting_showWaveForm->addTo(&m_popup_menu);
+ setting_showWaveForm->setChecked(true);
+ m_popup_menu.addAction(setting_showWaveForm);
- setting_autoScale = new QAction(this);
- setting_autoScale->setMenuText(tr("Auto scale"));
- setting_autoScale->setToggleAction(true);
+ setting_autoScale = new QAction(tr("Auto scale"), this);
+ setting_autoScale->setCheckable(true);
connect(setting_autoScale, SIGNAL(toggled(bool)), this, SLOT(update()));
- setting_autoScale->setOn(false);
- setting_autoScale->addTo(&m_popup_menu);
+ setting_autoScale->setChecked(false);
+ m_popup_menu.addAction(setting_autoScale);
- m_popup_menu.insertItem(new Title(tr("Scale factor"), &m_popup_menu));
- setting_spinScaleFactor = new QSpinBox(1, 1000, 10, &m_popup_menu);
- QToolTip::add(setting_spinScaleFactor, tr("Scale factor"));
+ QHBoxLayout* scaleFactorActionLayout = new QHBoxLayout(&m_popup_menu);
+
+ QLabel* scaleFactorActionTitle = new QLabel(tr("Scale factor"), &m_popup_menu);
+ scaleFactorActionLayout->addWidget(scaleFactorActionTitle);
+
+ setting_spinScaleFactor = new QSpinBox(&m_popup_menu);
+ setting_spinScaleFactor->setMinimum(1);
+ setting_spinScaleFactor->setMaximum(1000);
+ setting_spinScaleFactor->setSingleStep(10);
+ setting_spinScaleFactor->setToolTip(tr("Scale factor"));
setting_spinScaleFactor->setValue(1000);
connect(setting_spinScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(update()));
- m_popup_menu.insertItem(setting_spinScaleFactor);
+ scaleFactorActionLayout->addWidget(setting_spinScaleFactor);
+
+ QWidget* scaleFactorActionWidget = new QWidget(&m_popup_menu);
+ scaleFactorActionWidget->setLayout(scaleFactorActionLayout);
+
+ QWidgetAction* scaleFactorAction = new QWidgetAction(&m_popup_menu);
+ scaleFactorAction->setDefaultWidget(scaleFactorActionWidget);
+ m_popup_menu.addAction(scaleFactorAction);
+
+ QHBoxLayout* durationActionLayout = new QHBoxLayout(&m_popup_menu);
+
+ QLabel* durationActionTitle = new QLabel(tr("Duration"), &m_popup_menu);
+ durationActionLayout->addWidget(durationActionTitle);
- m_popup_menu.insertItem(new Title(tr("Duration"), &m_popup_menu));
- setting_spinDuration = new QSpinBox(20, 120000, 100, &m_popup_menu);
- QToolTip::add(setting_spinDuration, tr("Duration"));
+ setting_spinDuration = new QSpinBox(&m_popup_menu);
+ setting_spinDuration->setMinimum(20);
+ setting_spinDuration->setMaximum(120000);
+ setting_spinDuration->setSingleStep(100);
+ setting_spinDuration->setToolTip(tr("Duration"));
setting_spinDuration->setValue(10000);
connect(setting_spinDuration, SIGNAL(valueChanged(int)), this, SLOT(update()));
- m_popup_menu.insertItem(setting_spinDuration);
+ durationActionLayout->addWidget(setting_spinDuration);
- m_popup_menu.insertItem(new Title(tr("Max height"), &m_popup_menu));
- setting_spinMaxHeight = new QSpinBox(10, 100000, 1, &m_popup_menu);
- QToolTip::add(setting_spinMaxHeight, tr("Max height"));
+ QWidget* durationActionWidget = new QWidget(&m_popup_menu);
+ durationActionWidget->setLayout(durationActionLayout);
+
+ QWidgetAction* durationAction = new QWidgetAction(&m_popup_menu);
+ durationAction->setDefaultWidget(durationActionWidget);
+ m_popup_menu.addAction(durationAction);
+
+ QHBoxLayout* maxHeightActionLayout = new QHBoxLayout(&m_popup_menu);
+
+ QLabel* maxHeightActionTitle = new QLabel(tr("Max height"), &m_popup_menu);
+ maxHeightActionLayout->addWidget(maxHeightActionTitle);
+
+ setting_spinMaxHeight = new QSpinBox(&m_popup_menu);
+ setting_spinMaxHeight->setMinimum(10);
+ setting_spinMaxHeight->setMaximum(100000);
+ setting_spinMaxHeight->setSingleStep(1);
+ setting_spinMaxHeight->setToolTip(tr("Max height"));
setting_spinMaxHeight->setValue(50);
- m_popup_menu.insertItem(setting_spinMaxHeight);
+ maxHeightActionLayout->addWidget(setting_spinMaxHeight);
+
+ QWidget* maxHeightActionWidget = new QWidget(&m_popup_menu);
+ maxHeightActionWidget->setLayout(maxHeightActionLayout);
+
+ QWidgetAction* maxHeightAction = new QWidgetAction(&m_popup_menu);
+ maxHeightAction->setDefaultWidget(maxHeightActionWidget);
+ m_popup_menu.addAction(maxHeightAction);
}
void GLGraph::save()
{
- s_settings->writeEntry("showWaveForm", setting_showWaveForm->isOn());
- s_settings->writeEntry("autoScale", setting_autoScale->isOn());
- s_settings->writeEntry("setting_spinScaleFactor", setting_spinScaleFactor->value());
- s_settings->writeEntry("spinDuration", setting_spinDuration->value());
- s_settings->writeEntry("spinMaxHeight", setting_spinMaxHeight->value());
+ s_settings->setValue("showWaveForm", setting_showWaveForm->isChecked());
+ s_settings->setValue("autoScale", setting_autoScale->isChecked());
+ s_settings->setValue("setting_spinScaleFactor", setting_spinScaleFactor->value());
+ s_settings->setValue("spinDuration", setting_spinDuration->value());
+ s_settings->setValue("spinMaxHeight", setting_spinMaxHeight->value());
}
void GLGraph::load()
{
- setting_showWaveForm->setOn(s_settings->readBoolEntry("showWaveForm", setting_showWaveForm->isOn()));
- setting_autoScale->setOn(s_settings->readBoolEntry("autoScale", setting_autoScale->isOn()));
- setting_spinScaleFactor->setValue(s_settings->readNumEntry("setting_spinScaleFactor", setting_spinScaleFactor->value()));
- setting_spinDuration->setValue(s_settings->readNumEntry("spinDuration", setting_spinDuration->value()));
- setting_spinMaxHeight->setValue(s_settings->readNumEntry("spinMaxHeight", setting_spinMaxHeight->value()));
+ setting_showWaveForm->setChecked(s_settings->value("showWaveForm", setting_showWaveForm->isChecked()).toBool());
+ setting_autoScale->setChecked(s_settings->value("autoScale", setting_autoScale->isChecked()).toBool());
+ setting_spinScaleFactor->setValue(s_settings->value("setting_spinScaleFactor", setting_spinScaleFactor->value()).toInt());
+ setting_spinDuration->setValue(s_settings->value("spinDuration", setting_spinDuration->value()).toInt());
+ setting_spinMaxHeight->setValue(s_settings->value("spinMaxHeight", setting_spinMaxHeight->value()).toInt());
}
void GLGraph::clearSettings()
{
// cerr << "GLGraph::clearSettings" << endl;
- s_settings->removeEntry("showWaveForm");
- s_settings->removeEntry("autoScale");
- s_settings->removeEntry("setting_spinScaleFactor");
- s_settings->removeEntry("spinDuration");
- s_settings->removeEntry("spinMaxHeight");
+ s_settings->remove("showWaveForm");
+ s_settings->remove("autoScale");
+ s_settings->remove("setting_spinScaleFactor");
+ s_settings->remove("spinDuration");
+ s_settings->remove("spinMaxHeight");
}
void GLGraph::initializeGL()
int width = QGLWidget::width();
// name
- string str = tr("Captured Sound");
+ string str = tr("Captured Sound").toStdString();
glColor3f(0.75,0.75,0.75);
glRasterPos2i(2, height()-14);
for(size_t i = 0; i < str.size(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[i]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)str[i]);
- if(setting_showWaveForm->isOn() && !m_queue.empty())
+ if(setting_showWaveForm->isChecked() && !m_queue.empty())
{
// horiz line
glBegin(GL_LINES);
m_queue_amplitude = 0.0;
double scale_factor;
- if(setting_autoScale->isOn())
+ if(setting_autoScale->isChecked())
{
if(m_skip<2)
for(size_t i=0; i<m_queue.size(); i++)