[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/kmid/src
From: Pedro Lopez-Cabanillas <pedro.lopez.cabanillas () gmail ! com>
Date: 2010-07-22 9:16:00
Message-ID: 20100722091600.C18D4AC7AB () svn ! kde ! org
[Download RAW message or body]
SVN commit 1152984 by pedrol:
kmid_part: UI for the additional properties and methods
M +4 -0 kmid_part.cpp
M +145 -41 kmid_partview.cpp
M +24 -9 kmid_partview.h
--- trunk/extragear/multimedia/kmid/src/kmid_part.cpp #1152983:1152984
@@ -157,6 +157,9 @@
connect(d->m_view, SIGNAL(pause()), SLOT(pause()));
connect(d->m_view, SIGNAL(stop()), SLOT(stop()));
connect(d->m_view, SIGNAL(seek(int)), SLOT(slotSeek(int)));
+ connect(d->m_view, SIGNAL(volume(double)), SLOT(setVolumeFactor(double)));
+ connect(d->m_view, SIGNAL(transpose(int)), SLOT(setTranspose(int)));
+ connect(d->m_view, SIGNAL(speed(double)), SLOT(setTempoFactor(double)));
}
}
@@ -518,6 +521,7 @@
void KMidPart::setTranspose(int t)
{
+ kDebug() << t;
if (d->m_midiout != 0)
d->m_midiout->setPitchShift(t);
}
--- trunk/extragear/multimedia/kmid/src/kmid_partview.cpp #1152983:1152984
@@ -25,39 +25,113 @@
#include <QtGui/QSlider>
#include <QtGui/QToolButton>
+#include <QtGui/QDial>
+#include <QtGui/QVBoxLayout>
#include <QtGui/QHBoxLayout>
+class KMidPartView::ViewPrivate {
+public:
+ ViewPrivate():
+ m_seeking(false),
+ m_playing(false) {}
+ virtual ~ViewPrivate() {}
+
+ bool m_seeking;
+ bool m_playing;
+ QToolButton *m_playstop;
+ QToolButton *m_pause;
+ QSlider *m_seeker;
+ QDial *m_volume;
+ QDial *m_pitch;
+ QToolButton *m_resetTempo;
+ QSlider *m_tempo;
+};
+
KMidPartView::KMidPartView(QWidget *parent) :
KMediaPlayer::View(parent),
- m_seeking(false),
- m_playing(false)
+ d(new ViewPrivate())
{
- QHBoxLayout* layout = new QHBoxLayout(this);
- setLayout(layout);
+ QVBoxLayout* vlayout = new QVBoxLayout(this);
+ QHBoxLayout* toprow = new QHBoxLayout;
+ vlayout->addLayout(toprow);
- m_playstop = new QToolButton(this);
- m_playstop->setIcon(KIcon("media-playback-start"));
- m_playstop->setVisible(true);
- layout->addWidget(m_playstop);
- connect(m_playstop, SIGNAL(clicked()), SLOT(slotPlayStop()));
+ d->m_playstop = new QToolButton(this);
+ d->m_playstop->setIcon(KIcon("media-playback-start"));
+ d->m_playstop->setWhatsThis(i18nc("@info:whatsthis","Player play/stop control"));
+ d->m_playstop->setToolTip(i18nc("@info:tooltip player button","Play/Stop"));
+ d->m_playstop->setVisible(true);
+ toprow->addWidget(d->m_playstop);
+ connect(d->m_playstop, SIGNAL(clicked()), SLOT(slotPlayStop()));
- m_pause = new QToolButton(this);
- m_pause->setIcon(KIcon("media-playback-pause"));
- m_pause->setVisible(false);
- m_pause->setEnabled(false);
- layout->addWidget(m_pause);
- connect(m_pause, SIGNAL(clicked()), SIGNAL(pause()));
+ d->m_pause = new QToolButton(this);
+ d->m_pause->setIcon(KIcon("media-playback-pause"));
+ d->m_pause->setWhatsThis(i18nc("@info:whatsthis","Player pause control"));
+ d->m_pause->setToolTip(i18nc("@info:tooltip player button","Pause"));
+ d->m_pause->setVisible(false);
+ d->m_pause->setEnabled(false);
+ toprow->addWidget(d->m_pause);
+ connect(d->m_pause, SIGNAL(clicked()), SIGNAL(pause()));
- m_seeker = new QSlider(this);
- m_seeker->setRange(0, 10000);
- m_seeker->setOrientation(Qt::Horizontal);
- m_seeker->setWhatsThis(i18nc("@info:whatsthis","Time position control"));
- m_seeker->setTracking(false);
- layout->addWidget(m_seeker);
- connect(m_seeker, SIGNAL(sliderPressed()), SLOT(slotTimeSliderPressed()));
- connect(m_seeker, SIGNAL(valueChanged(int)), SLOT(slotTimeSlider(int)));
+ d->m_seeker = new QSlider(this);
+ d->m_seeker->setRange(0, 10000);
+ d->m_seeker->setOrientation(Qt::Horizontal);
+ d->m_seeker->setWhatsThis(i18nc("@info:whatsthis","Time position control"));
+ d->m_seeker->setToolTip(i18nc("@info:tooltip player button","Time position"));
+ d->m_seeker->setTracking(false);
+ toprow->addWidget(d->m_seeker);
+ connect(d->m_seeker, SIGNAL(sliderPressed()), SLOT(slotTimeSliderPressed()));
+ connect(d->m_seeker, SIGNAL(valueChanged(int)), SLOT(slotTimeSlider(int)));
+
+ QHBoxLayout* botrow = new QHBoxLayout;
+ vlayout->addLayout(botrow);
+
+ d->m_volume = new QDial(this);
+ d->m_volume->setVisible(false);
+ d->m_volume->setFixedSize(32,32);
+ d->m_volume->setWhatsThis(i18nc("@info:whatsthis","Volume factor control"));
+ d->m_volume->setToolTip(i18nc("@info:tooltip player control","Volume factor"));
+ d->m_volume->setMinimum(0);
+ d->m_volume->setMaximum(200);
+ d->m_volume->setValue(100);
+ d->m_volume->setTracking(false);
+ botrow->addWidget(d->m_volume);
+ connect(d->m_volume, SIGNAL(valueChanged(int)), SLOT(slotVolumeSlider(int)));
+
+ d->m_pitch = new QDial(this);
+ d->m_pitch->setVisible(false);
+ d->m_pitch->setFixedSize(32,32);
+ d->m_pitch->setWhatsThis(i18nc("@info:whatsthis","Pitch transpose control"));
+ d->m_pitch->setToolTip(i18nc("@info:tooltip player control","Pitch transpose"));
+ d->m_pitch->setMinimum(-12);
+ d->m_pitch->setMaximum(12);
+ d->m_pitch->setValue(0);
+ d->m_pitch->setSingleStep(1);
+ d->m_pitch->setPageStep(1);
+ d->m_pitch->setTracking(false);
+ botrow->addWidget(d->m_pitch);
+ connect(d->m_pitch, SIGNAL(valueChanged(int)), SLOT(slotPitchSlider(int)));
+
+ d->m_resetTempo = new QToolButton(this);
+ d->m_resetTempo->setVisible(false);
+ d->m_resetTempo->setIcon(KIcon("player-time"));
+ d->m_resetTempo->setWhatsThis(i18nc("@info:whatsthis","Speed factor reset"));
+ d->m_resetTempo->setToolTip(i18nc("@info:tooltip player button","Speed reset"));
+ botrow->addWidget(d->m_resetTempo);
+ connect(d->m_resetTempo, SIGNAL(clicked()), SLOT(slotTempoReset()));
+
+ d->m_tempo = new QSlider(this);
+ d->m_tempo->setVisible(false);
+ d->m_tempo->setOrientation(Qt::Horizontal);
+ d->m_tempo->setWhatsThis(i18nc("@info:whatsthis","Speed factor control"));
+ d->m_tempo->setToolTip(i18nc("@info:tooltip player control","Speed factor"));
+ d->m_tempo->setMinimum(0);
+ d->m_tempo->setMaximum(200);
+ d->m_tempo->setValue(100);
+ d->m_tempo->setTracking(false);
+ botrow->addWidget(d->m_tempo);
+ connect(d->m_tempo, SIGNAL(valueChanged(int)), SLOT(slotTempoSlider(int)));
+
setButtons(Play | Stop | Seeker);
-
connect(this, SIGNAL(buttonsChanged(int)), SLOT(slotButtonsChanged(int)));
}
@@ -66,38 +140,42 @@
void KMidPartView::slotButtonsChanged(int buttons)
{
- m_playstop->setVisible((buttons & (Play | Stop)) != 0 );
- m_pause->setVisible((buttons & Pause) != 0);
- m_seeker->setVisible((buttons & Seeker) != 0);
+ d->m_playstop->setVisible( (buttons & (Play | Stop)) != 0 );
+ d->m_pause->setVisible( (buttons & Pause) != 0 );
+ d->m_seeker->setVisible( (buttons & Seeker) != 0 );
+ d->m_volume->setVisible( (buttons & Volume) != 0 );
+ d->m_pitch->setVisible( (buttons & Transpose) != 0 );
+ d->m_resetTempo->setVisible( (buttons & Tempo) != 0 );
+ d->m_tempo->setVisible( (buttons & Tempo) != 0 );
}
void KMidPartView::resetTimePosition(qint64 totalTime)
{
- m_seeker->setRange(0, totalTime);
- m_seeker->setSliderPosition(0);
- m_seeking = false;
+ d->m_seeker->setRange(0, totalTime);
+ d->m_seeker->setSliderPosition(0);
+ d->m_seeking = false;
}
void KMidPartView::setPosition(qint64 tick)
{
- if (!m_seeking)
- m_seeker->setSliderPosition(tick);
+ if (!d->m_seeking)
+ d->m_seeker->setSliderPosition(tick);
}
void KMidPartView::slotTimeSlider(int value)
{
- m_seeking = false;
+ d->m_seeking = false;
emit seek(value);
}
void KMidPartView::slotTimeSliderPressed()
{
- m_seeking = true;
+ d->m_seeking = true;
}
void KMidPartView::slotPlayStop()
{
- if (m_playing)
+ if (d->m_playing)
emit stop();
else
emit play();
@@ -105,14 +183,40 @@
void KMidPartView::setPlayingState(bool isPlaying)
{
- if (m_playing != isPlaying) {
- m_playing = isPlaying;
+ if (d->m_playing != isPlaying) {
+ d->m_playing = isPlaying;
if (isPlaying) {
- m_playstop->setIcon(KIcon("media-playback-stop"));
- m_pause->setEnabled(true);
+ d->m_playstop->setIcon(KIcon("media-playback-stop"));
+ d->m_pause->setEnabled(true);
} else {
- m_playstop->setIcon(KIcon("media-playback-start"));
- m_pause->setEnabled(false);
+ d->m_playstop->setIcon(KIcon("media-playback-start"));
+ d->m_pause->setEnabled(false);
}
}
}
+
+void KMidPartView::slotVolumeSlider(int value)
+{
+ emit volume( value*0.01 );
+}
+
+void KMidPartView::slotPitchSlider(int value)
+{
+ emit transpose( value );
+}
+
+inline double tempoFactor(int sliderValue)
+{
+ return (sliderValue*sliderValue + 100.0*sliderValue + 20000.0) / 400.0;
+}
+
+void KMidPartView::slotTempoSlider(int value)
+{
+ emit speed( tempoFactor(value)/100.0 );
+}
+
+void KMidPartView::slotTempoReset()
+{
+ emit speed(1.0);
+ d->m_tempo->setValue(100);
+}
--- trunk/extragear/multimedia/kmid/src/kmid_partview.h #1152983:1152984
@@ -22,37 +22,52 @@
#include <KMediaPlayer/View>
-class QSlider;
-class QToolButton;
-
class KMidPartView : public KMediaPlayer::View {
Q_OBJECT
public:
KMidPartView(QWidget *parent);
virtual ~KMidPartView();
+ /** Controls that can appear in the UI
+ * (initially hidden) in addition to Button ones
+ * see @Button
+ */
+ enum ExtraControl
+ {
+ /** Volume factor knob */
+ Volume = 16,
+ /** Transpose knob */
+ Transpose = 32,
+ /** Tempo factor */
+ Tempo = 64
+ };
+
void resetTimePosition(qint64 totalTime);
void setPosition(qint64 tick);
void setPlayingState(bool);
private slots:
void slotButtonsChanged(int);
+ void slotPlayStop();
void slotTimeSliderPressed();
void slotTimeSlider(int);
- void slotPlayStop();
+ void slotVolumeSlider(int value);
+ void slotPitchSlider(int value);
+ void slotTempoSlider(int value);
+ void slotTempoReset();
signals:
void play();
void pause();
void stop();
void seek(int);
+ void volume(double);
+ void transpose(int);
+ void speed(double);
private:
- bool m_seeking;
- bool m_playing;
- QToolButton *m_playstop;
- QToolButton *m_pause;
- QSlider *m_seeker;
+ class ViewPrivate;
+ ViewPrivate* d;
};
#endif /* KMID_PARTVIEW_H */
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic