aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-02-19 07:30:54 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-02-19 07:30:54 +0000
commit30e11dd37f98c78193d5768c634931865821af10 (patch)
tree2091503c63750f738be7b830a8be586ad7f9b1c7
parent37f66aa3c4e031812b0c2a415f07c661d8ee13aa (diff)
downloadqmmp-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
-rw-r--r--src/ui/display.cpp25
-rw-r--r--src/ui/display.h3
-rw-r--r--src/ui/mainwindow.cpp11
-rw-r--r--src/ui/mainwindow.h3
-rw-r--r--src/ui/positionbar.cpp21
-rw-r--r--src/ui/positionbar.h31
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