- QWidget *spacer = new QWidget(this);
- spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
- toolbar->addWidget(spacer);
- m_timePos = new KRestrictedLine(this);
- m_timePos->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::MinimumExpanding);
- m_frametimecode = KdenliveSettings::frametimecode();
- if (m_frametimecode) {
- m_timePos->setInputMask(QString());
- m_timePos->setValidator(new QIntValidator(this));
- } else m_timePos->setInputMask(m_monitorManager->timecode().inputMask());
-
- toolbar->addWidget(m_timePos);
-
- connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
-
- layout2->addWidget(toolbar);
- m_ui.button_frame->setLayout(layout2);
- const int toolHeight = toolbar->height();
- m_ui.button_frame->setMinimumHeight(toolHeight);
-
- //m_ruler->setPixelPerMark(3);
-
- if (profile.isEmpty()) profile = KdenliveSettings::current_profile();
-
- QVBoxLayout *rendererBox = new QVBoxLayout(m_ui.video_frame);
- rendererBox->setContentsMargins(0, 0, 0, 0);
-#ifdef Q_WS_MAC
- m_glWidget = new VideoGLWidget(m_ui.video_frame);
- rendererBox->addWidget(m_glWidget);
- render = new Render(m_name, (int) m_ui.video_frame->winId(), -1, profile, this);
- m_glWidget->setImageAspectRatio(render->dar());
- m_glWidget->setBackgroundColor(KdenliveSettings::window_background());
- m_glWidget->resize(m_ui.video_frame->size());
- connect(render, SIGNAL(showImageSignal(QImage)), m_glWidget, SLOT(showImage(QImage)));
- m_monitorRefresh = 0;
-#else
- m_monitorRefresh = new MonitorRefresh(m_ui.video_frame);
- rendererBox->addWidget(m_monitorRefresh);
- render = new Render(m_name, (int) m_monitorRefresh->winId(), -1, profile, this);
- m_monitorRefresh->setRenderer(render);
-#endif
-
- connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int)));
+ // Create Volume slider popup
+ m_volumePopup = new QFrame(this, Qt::Popup);
+ QVBoxLayout *poplayout = new QVBoxLayout;
+ poplayout->setContentsMargins(0, 0, 0, 0);
+ m_audioSlider = new QSlider(Qt::Vertical);
+ m_audioSlider->setRange(0, 100);
+ poplayout->addWidget(m_audioSlider);
+ m_volumePopup->setLayout(poplayout);
+ KIcon icon;
+ if (KdenliveSettings::volume() == 0) icon = KIcon("audio-volume-muted");
+ else icon = KIcon("audio-volume-medium");
+
+ m_volumeWidget = m_toolbar->widgetForAction(m_toolbar->addAction(icon, i18n("Audio volume"), this, SLOT(slotShowVolume())));
+
+ // we need to show / hide the popup once so that it's geometry can be calculated in slotShowVolume
+ m_volumePopup->show();
+ m_volumePopup->hide();
+
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ setLayout(layout);
+ setMinimumHeight(200);
+
+ if (profile.isEmpty())
+ profile = KdenliveSettings::current_profile();
+
+ createOpenGlWidget(videoBox, profile);
+ QVBoxLayout *lay = new QVBoxLayout;
+ lay->setContentsMargins(0, 0, 0, 0);
+ lay->addWidget(m_glWidget);
+ videoBox->setLayout(lay);
+
+ // Monitor ruler
+ m_ruler = new SmallRuler(this, render);
+ if (id == Kdenlive::DvdMonitor) m_ruler->setZone(-3, -2);
+ layout->addWidget(m_ruler);
+
+ connect(m_audioSlider, SIGNAL(valueChanged(int)), this, SLOT(slotSetVolume(int)));