Import upstream version 0.99.2
[fmit.git] / src / modules / GLGraph.cpp
index e3e5086..8f48367 100644 (file)
@@ -195,81 +195,123 @@ static const unsigned char g_icon_graph[] = {
 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()
@@ -391,13 +433,13 @@ void GLGraph::base_paint(float graph_gray)
        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);
@@ -409,7 +451,7 @@ void GLGraph::base_paint(float graph_gray)
 
                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++)