diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-02-19 07:30:54 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-02-19 07:30:54 +0000 |
| commit | 30e11dd37f98c78193d5768c634931865821af10 (patch) | |
| tree | 2091503c63750f738be7b830a8be586ad7f9b1c7 /src | |
| parent | 37f66aa3c4e031812b0c2a415f07c661d8ee13aa (diff) | |
| download | qmmp-30e11dd37f98c78193d5768c634931865821af10.tar.gz qmmp-30e11dd37f98c78193d5768c634931865821af10.tar.bz2 qmmp-30e11dd37f98c78193d5768c634931865821af10.zip | |
added position tracking
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2062 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui/display.cpp | 25 | ||||
| -rw-r--r-- | src/ui/display.h | 3 | ||||
| -rw-r--r-- | src/ui/mainwindow.cpp | 11 | ||||
| -rw-r--r-- | src/ui/mainwindow.h | 3 | ||||
| -rw-r--r-- | src/ui/positionbar.cpp | 21 | ||||
| -rw-r--r-- | src/ui/positionbar.h | 31 |
6 files changed, 49 insertions, 45 deletions
diff --git a/src/ui/display.cpp b/src/ui/display.cpp index 9598262b2..9b54306d2 100644 --- a/src/ui/display.cpp +++ b/src/ui/display.cpp @@ -73,7 +73,6 @@ MainDisplay::MainDisplay (QWidget *parent) m_eject->setToolTip(tr("Add file")); connect (m_eject,SIGNAL (clicked()),parent,SLOT (addFile())); connect (m_skin, SIGNAL (skinChanged()), this, SLOT (updateSkin())); - m_posbar = new PositionBar (this); m_vis = new MainVisual (this); m_eqButton = new ToggleButton (this,Skin::BT_EQ_ON_N,Skin::BT_EQ_ON_P, @@ -110,6 +109,11 @@ MainDisplay::MainDisplay (QWidget *parent) connect(m_balanceBar, SIGNAL(sliderPressed()),SLOT(updateVolume())); connect(m_balanceBar, SIGNAL(sliderReleased()),m_text,SLOT(clear())); + m_posbar = new PositionBar(this); + connect(m_posbar, SIGNAL(sliderPressed()),SLOT(showPosition())); + connect(m_posbar, SIGNAL(sliderMoved(qint64)),SLOT(showPosition())); + connect(m_posbar, SIGNAL(sliderReleased()),SLOT(updatePosition())); + m_timeIndicator = new TimeIndicator(this); m_aboutWidget = new QWidget(this); m_core = SoundCore::instance(); @@ -168,7 +172,7 @@ void MainDisplay::setTime (qint64 t) } void MainDisplay::setDuration(qint64 t) { - m_posbar->setMax (t); + m_posbar->setMaximum (t); m_timeIndicator->setSongDuration(t/1000); } @@ -189,7 +193,7 @@ void MainDisplay::setState(Qmmp::State state) m_monoster->setChannels (0); m_timeIndicator->setNeedToShowTime(false); m_posbar->setValue (0); - m_posbar->setMax (0); + m_posbar->setMaximum (0); m_titlebar->setTime(-1); } } @@ -302,6 +306,21 @@ void MainDisplay::updateVolume() m_mw->setVolume(m_volumeBar->value(), m_balanceBar->value()); } +void MainDisplay::showPosition() +{ + int sec = m_posbar->value() / 1000; + if(sec > 3600) + sec /= 60; + QString time = QString("%1:%2").arg(sec/60, 2, 10, QChar('0')).arg(sec%60, 2, 10, QChar('0')); + m_text->setText(tr("Seek to: %1").arg(time)); +} + +void MainDisplay::updatePosition() +{ + m_text->clear(); + m_core->seek(m_posbar->value()); +} + void MainDisplay::wheelEvent (QWheelEvent *e) { m_mw->setVolume(m_volumeBar->value()+e->delta()/10, m_balanceBar->value()); diff --git a/src/ui/display.h b/src/ui/display.h index 0a213432e..1a7a05b82 100644 --- a/src/ui/display.h +++ b/src/ui/display.h @@ -78,11 +78,14 @@ protected: private slots: void updateSkin(); void updateVolume(); + void showPosition(); + void updatePosition(); void setSampleRate(quint32 rate); void setTime(qint64); void setState(Qmmp::State state); void setVolume(int left, int right); + private: void updatePositions(); void updateMask(); diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index d2d68f943..2a4c967b0 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2010 by Ilya Kotov * + * Copyright (C) 2006-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -152,19 +152,14 @@ void MainWindow::replay() play(); } -void MainWindow::seek(qint64 pos) -{ - m_core->seek(pos); -} - void MainWindow::forward() { - seek(m_core->elapsed() + KEY_OFFSET); + m_core->seek(m_core->elapsed() + KEY_OFFSET); } void MainWindow::backward() { - seek(qMax(qint64(0), m_core->elapsed() - KEY_OFFSET)); + m_core->seek(qMax(qint64(0), m_core->elapsed() - KEY_OFFSET)); } void MainWindow::setVolume(int volume, int balance) diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 5d3f15c62..72469518a 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2010 by Ilya Kotov * + * Copyright (C) 2006-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -63,7 +63,6 @@ public: QString processCommandArgs(const QStringList &list,const QString& cwd); public slots: - void seek(qint64); void previous(); void play(); void pause(); diff --git a/src/ui/positionbar.cpp b/src/ui/positionbar.cpp index c27a586fe..6d8255858 100644 --- a/src/ui/positionbar.cpp +++ b/src/ui/positionbar.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -21,21 +21,15 @@ #include <QMouseEvent> #include <QPainter> #include <math.h> - #include "skin.h" #include "button.h" -#include "mainwindow.h" - #include "positionbar.h" - -PositionBar::PositionBar(QWidget *parent) - : PixmapWidget(parent) +PositionBar::PositionBar(QWidget *parent) : PixmapWidget(parent) { m_skin = Skin::instance(); connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin())); setPixmap(m_skin->getPosBar()); - mw = qobject_cast<MainWindow*>(window()); m_moving = false; m_min = 0; m_max = 0; @@ -55,11 +49,13 @@ void PositionBar::mousePressEvent(QMouseEvent *e) if (m_pos<e->x() && e->x()<m_pos+29*m_skin->ratio()) { press_pos = e->x()-m_pos; + emit sliderPressed(); } else { m_value = convert(qMax(qMin(width()-30*m_skin->ratio(),e->x()-15*m_skin->ratio()),0)); press_pos = 15*m_skin->ratio(); + emit sliderPressed(); if (m_value!=m_old) { emit sliderMoved(m_value); @@ -88,12 +84,11 @@ void PositionBar::mouseMoveEvent (QMouseEvent *e) void PositionBar::mouseReleaseEvent(QMouseEvent*) { draw(false); - if (m_value!=m_old && m_max > 0) - { + if (m_value != m_old && m_max > 0) m_old = m_value; - mw->seek(m_value); - } m_moving = false; + if(m_max > 0) + emit sliderReleased(); } void PositionBar::setValue(qint64 v) @@ -104,7 +99,7 @@ void PositionBar::setValue(qint64 v) draw(false); } -void PositionBar::setMax(qint64 max) +void PositionBar::setMaximum(qint64 max) { m_max = max; draw(false); diff --git a/src/ui/positionbar.h b/src/ui/positionbar.h index 0eb19750d..8fb768664 100644 --- a/src/ui/positionbar.h +++ b/src/ui/positionbar.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -22,51 +22,44 @@ #include "pixmapwidget.h" -/** - @author Ilya Kotov <forkotov02@hotmail.ru> -*/ - class QMouseEvent; - -class MainWindow; class Skin; - +/** + @author Ilya Kotov <forkotov02@hotmail.ru> +*/ class PositionBar : public PixmapWidget { Q_OBJECT public: PositionBar(QWidget *parent = 0); - - ~PositionBar(); + virtual ~PositionBar(); public slots: void setValue(qint64); qint64 value()const{return m_value;} - void setMax(qint64); + void setMaximum(qint64); + qint64 maximum() const {return m_max;} signals: void sliderMoved (qint64); + void sliderPressed(); + void sliderReleased(); private slots: void updateSkin(); private: + void mousePressEvent(QMouseEvent*); + void mouseReleaseEvent(QMouseEvent*); + void mouseMoveEvent(QMouseEvent*); Skin *m_skin; bool m_moving; qint64 press_pos; qint64 m_max, m_min, m_pos, m_value, m_old; QPixmap m_pixmap; - MainWindow *mw; qint64 convert(qint64); // value = convert(position); void draw(bool pressed = true); - -protected: - void mousePressEvent(QMouseEvent*); - void mouseReleaseEvent(QMouseEvent*); - void mouseMoveEvent(QMouseEvent*); - - }; #endif |
