Huge push that fixes lot of the problems with headers and added a Slider
This commit is contained in:
parent
76b9131d03
commit
f36ba49ea9
21 changed files with 298 additions and 42 deletions
28
Button.cpp
28
Button.cpp
|
@ -1,10 +1,14 @@
|
||||||
|
|
||||||
|
#include "MainWindow.h"
|
||||||
#include "Button.h"
|
#include "Button.h"
|
||||||
#include "Display.h"
|
|
||||||
|
|
||||||
Button::Button (QWidget *parent, uint normal, uint pressed) : PixWidget (parent)
|
Button::Button (QWidget *parent, uint normal, uint pressed) : PixWidget (parent)
|
||||||
{
|
{
|
||||||
m_name_normal = normal;
|
m_name_normal = normal;
|
||||||
m_name_pressed = pressed;
|
m_name_pressed = pressed;
|
||||||
|
m_diffx = 0;
|
||||||
|
m_diffy = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Button::~Button ()
|
Button::~Button ()
|
||||||
|
@ -18,6 +22,13 @@ Button::setPixmaps(Skin *skin)
|
||||||
m_pixmap_pressed = skin->getItem (m_name_pressed);
|
m_pixmap_pressed = skin->getItem (m_name_pressed);
|
||||||
m_pixmap = m_pixmap_normal;
|
m_pixmap = m_pixmap_normal;
|
||||||
|
|
||||||
|
if (!m_pixmap_normal || m_pixmap_normal.isNull()) {
|
||||||
|
qDebug ("OPPP! %d return NULL!", m_name_normal);
|
||||||
|
}
|
||||||
|
if (!m_pixmap_pressed || m_pixmap_pressed.isNull()) {
|
||||||
|
qDebug ("OPPP! %d return NULL!", m_name_pressed);
|
||||||
|
}
|
||||||
|
|
||||||
setMinimumSize (m_pixmap.size ());
|
setMinimumSize (m_pixmap.size ());
|
||||||
setMaximumSize (m_pixmap.size ());
|
setMaximumSize (m_pixmap.size ());
|
||||||
|
|
||||||
|
@ -27,19 +38,28 @@ Button::setPixmaps(Skin *skin)
|
||||||
void
|
void
|
||||||
Button::mousePressEvent (QMouseEvent *event)
|
Button::mousePressEvent (QMouseEvent *event)
|
||||||
{
|
{
|
||||||
((SkinDisplay *)parent ())->setNoDrag (true);
|
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||||
|
mw->setNoDrag (true);
|
||||||
|
|
||||||
m_pixmap = m_pixmap_pressed;
|
m_pixmap = m_pixmap_pressed;
|
||||||
|
|
||||||
|
m_diffx = event->pos().x();
|
||||||
|
m_diffy = event->pos().y();
|
||||||
|
|
||||||
|
m_nodrag = true;
|
||||||
|
|
||||||
update ();
|
update ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Button::mouseReleaseEvent (QMouseEvent *event)
|
Button::mouseReleaseEvent (QMouseEvent *event)
|
||||||
{
|
{
|
||||||
((SkinDisplay *)parent())->setNoDrag (false);
|
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||||
|
mw->setNoDrag (false);
|
||||||
m_pixmap = m_pixmap_normal;
|
m_pixmap = m_pixmap_normal;
|
||||||
|
m_nodrag = false;
|
||||||
update();
|
update();
|
||||||
emit clicked();
|
emit clicked();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ToggleButton::ToggleButton (QWidget *parent, uint on_normal, uint on_pressed,
|
ToggleButton::ToggleButton (QWidget *parent, uint on_normal, uint on_pressed,
|
||||||
|
|
7
Button.h
7
Button.h
|
@ -1,7 +1,6 @@
|
||||||
#ifndef __BUTTON_H__
|
#ifndef __BUTTON_H__
|
||||||
#define __BUTTON_H__
|
#define __BUTTON_H__
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include "PixWidget.h"
|
#include "PixWidget.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -12,6 +11,7 @@ class Button : public PixWidget
|
||||||
public:
|
public:
|
||||||
Button (QWidget *parent, uint btn1, uint btn2);
|
Button (QWidget *parent, uint btn1, uint btn2);
|
||||||
~Button ();
|
~Button ();
|
||||||
|
bool noDrag (void) { return m_nodrag; }
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setPixmaps (Skin *skin);
|
void setPixmaps (Skin *skin);
|
||||||
|
@ -26,8 +26,13 @@ class Button : public PixWidget
|
||||||
uint m_name_normal;
|
uint m_name_normal;
|
||||||
uint m_name_pressed;
|
uint m_name_pressed;
|
||||||
|
|
||||||
|
uint m_diffx;
|
||||||
|
uint m_diffy;
|
||||||
|
|
||||||
QPixmap m_pixmap_normal;
|
QPixmap m_pixmap_normal;
|
||||||
QPixmap m_pixmap_pressed;
|
QPixmap m_pixmap_pressed;
|
||||||
|
|
||||||
|
bool m_nodrag;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ToggleButton : public Button
|
class ToggleButton : public Button
|
||||||
|
|
|
@ -33,13 +33,13 @@ SkinDisplay::mouseMoveEvent (QMouseEvent *event)
|
||||||
void
|
void
|
||||||
SkinDisplay::enterEvent (QEvent *event)
|
SkinDisplay::enterEvent (QEvent *event)
|
||||||
{
|
{
|
||||||
m_tbar->setActive(true);
|
dynamic_cast<TitleBar *>(m_tbar)->setActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SkinDisplay::leaveEvent (QEvent *event)
|
SkinDisplay::leaveEvent (QEvent *event)
|
||||||
{
|
{
|
||||||
m_tbar->setActive(false);
|
dynamic_cast<TitleBar *>(m_tbar)->setActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QPaintEvent>
|
#include <QPaintEvent>
|
||||||
|
|
||||||
#include "TitleBar.h"
|
#include "Skin.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ class SkinDisplay : public QWidget
|
||||||
void SkinDisplay::leaveEvent (QEvent *event);
|
void SkinDisplay::leaveEvent (QEvent *event);
|
||||||
|
|
||||||
QWidget *m_mw;
|
QWidget *m_mw;
|
||||||
TitleBar *m_tbar;
|
QWidget *m_tbar;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_noDrag;
|
bool m_noDrag;
|
||||||
|
|
|
@ -35,6 +35,11 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent)
|
||||||
m_stereo->move (212, 41);
|
m_stereo->move (212, 41);
|
||||||
m_stereo->setStereoMono (0, 0);
|
m_stereo->setStereoMono (0, 0);
|
||||||
|
|
||||||
|
m_slider = new Slider (this, Skin::POSBAR,
|
||||||
|
Skin::POSBAR_BTN_0,
|
||||||
|
Skin::POSBAR_BTN_1);
|
||||||
|
m_slider->move (16, 72);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -73,26 +78,28 @@ MainDisplay::SetupToggleButtons (void)
|
||||||
void
|
void
|
||||||
MainDisplay::SetupPushButtons (void)
|
MainDisplay::SetupPushButtons (void)
|
||||||
{
|
{
|
||||||
|
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||||
|
|
||||||
/* Normal buttons */
|
/* Normal buttons */
|
||||||
m_prev = new Button (this, Skin::BTN_PREV_0, Skin::BTN_PREV_1);
|
m_prev = new Button (this, Skin::BTN_PREV_0, Skin::BTN_PREV_1);
|
||||||
m_prev->move(16, 88);
|
m_prev->move(16, 88);
|
||||||
connect (m_prev, SIGNAL(clicked()), m_mw->getHandler (), SLOT(prev()));
|
connect (m_prev, SIGNAL(clicked()), mw->getHandler (), SLOT(prev()));
|
||||||
|
|
||||||
m_play = new Button (this, Skin::BTN_PLAY_0, Skin::BTN_PLAY_1);
|
m_play = new Button (this, Skin::BTN_PLAY_0, Skin::BTN_PLAY_1);
|
||||||
m_play->move(39, 88);
|
m_play->move(39, 88);
|
||||||
connect (m_play, SIGNAL(clicked()), m_mw->getHandler (), SLOT(play()));
|
connect (m_play, SIGNAL(clicked()), mw->getHandler (), SLOT(play()));
|
||||||
|
|
||||||
m_pause = new Button (this, Skin::BTN_PAUSE_0, Skin::BTN_PAUSE_1);
|
m_pause = new Button (this, Skin::BTN_PAUSE_0, Skin::BTN_PAUSE_1);
|
||||||
m_pause->move(62, 88);
|
m_pause->move(62, 88);
|
||||||
connect (m_pause, SIGNAL(clicked()), m_mw->getHandler (), SLOT(pause()));
|
connect (m_pause, SIGNAL(clicked()), mw->getHandler (), SLOT(pause()));
|
||||||
|
|
||||||
m_stop = new Button (this, Skin::BTN_STOP_0, Skin::BTN_STOP_1);
|
m_stop = new Button (this, Skin::BTN_STOP_0, Skin::BTN_STOP_1);
|
||||||
m_stop->move(85, 88);
|
m_stop->move(85, 88);
|
||||||
connect (m_stop, SIGNAL(clicked()), m_mw->getHandler (), SLOT(stop()));
|
connect (m_stop, SIGNAL(clicked()), mw->getHandler (), SLOT(stop()));
|
||||||
|
|
||||||
m_next = new Button (this, Skin::BTN_NEXT_0, Skin::BTN_NEXT_1);
|
m_next = new Button (this, Skin::BTN_NEXT_0, Skin::BTN_NEXT_1);
|
||||||
m_next->move(108, 88);
|
m_next->move(108, 88);
|
||||||
connect (m_next, SIGNAL(clicked()), m_mw->getHandler (), SLOT(next()));
|
connect (m_next, SIGNAL(clicked()), mw->getHandler (), SLOT(next()));
|
||||||
|
|
||||||
m_eject = new Button (this, Skin::BTN_EJECT_0, Skin::BTN_EJECT_1);
|
m_eject = new Button (this, Skin::BTN_EJECT_0, Skin::BTN_EJECT_1);
|
||||||
m_eject->move(136, 89);
|
m_eject->move(136, 89);
|
||||||
|
|
|
@ -18,10 +18,10 @@ class MainDisplay;
|
||||||
#include "TitleBar.h"
|
#include "TitleBar.h"
|
||||||
#include "Button.h"
|
#include "Button.h"
|
||||||
#include "TextBar.h"
|
#include "TextBar.h"
|
||||||
#include "MainWindow.h"
|
|
||||||
#include "NumberDisplay.h"
|
#include "NumberDisplay.h"
|
||||||
#include "SmallNumberDisplay.h"
|
#include "SmallNumberDisplay.h"
|
||||||
#include "StereoMono.h"
|
#include "StereoMono.h"
|
||||||
|
#include "Slider.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -40,14 +40,13 @@ class MainDisplay : public SkinDisplay
|
||||||
SmallNumberDisplay *m_khz;
|
SmallNumberDisplay *m_khz;
|
||||||
|
|
||||||
StereoMono *m_stereo;
|
StereoMono *m_stereo;
|
||||||
|
Slider *m_slider;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setPixmaps(Skin *skin);
|
void setPixmaps(Skin *skin);
|
||||||
protected:
|
protected:
|
||||||
void SetupPushButtons (void);
|
void SetupPushButtons (void);
|
||||||
void MainDisplay::SetupToggleButtons (void);
|
void SetupToggleButtons (void);
|
||||||
|
|
||||||
MainWindow *m_mw;
|
|
||||||
|
|
||||||
Button *m_prev;
|
Button *m_prev;
|
||||||
Button *m_play;
|
Button *m_play;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include <xmmsclient/xmmsclient++.h>
|
#include <xmmsclient/xmmsclient++.h>
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
|
|
||||||
MainWindow::MainWindow ()
|
MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent)
|
||||||
{
|
{
|
||||||
setWindowFlags(Qt::FramelessWindowHint);
|
setWindowFlags(Qt::FramelessWindowHint);
|
||||||
setGeometry(100, 100, 275, 116);
|
setGeometry(100, 100, 275, 116);
|
||||||
|
@ -13,7 +13,7 @@ MainWindow::MainWindow ()
|
||||||
|
|
||||||
setCentralWidget(m_display);
|
setCentralWidget(m_display);
|
||||||
|
|
||||||
skin->setSkin("./Debian/");
|
skin->setSkin("./CleanAMP/");
|
||||||
m_display->show();
|
m_display->show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,12 @@ MainWindow::~MainWindow ()
|
||||||
delete skin;
|
delete skin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::setNoDrag (bool b)
|
||||||
|
{
|
||||||
|
m_display->setNoDrag (b);
|
||||||
|
}
|
||||||
|
|
||||||
Skin *MainWindow::getSkin(void)
|
Skin *MainWindow::getSkin(void)
|
||||||
{
|
{
|
||||||
return skin;
|
return skin;
|
||||||
|
@ -32,7 +38,7 @@ int main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
MainWindow *mw = new MainWindow();
|
MainWindow *mw = new MainWindow (NULL);
|
||||||
mw->show();
|
mw->show();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,12 @@ class MainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MainWindow(void);
|
MainWindow (QWidget *parent);
|
||||||
~MainWindow(void);
|
~MainWindow (void);
|
||||||
Skin *getSkin(void);
|
Skin *getSkin (void);
|
||||||
XMMSHandler *getHandler () { return m_handler; }
|
XMMSHandler *getHandler () { return m_handler; }
|
||||||
MainDisplay *getMD () { return m_display; }
|
MainDisplay *getMD () { return m_display; }
|
||||||
|
void setNoDrag (bool b);
|
||||||
private:
|
private:
|
||||||
Skin *skin;
|
Skin *skin;
|
||||||
XMMSHandler *m_handler;
|
XMMSHandler *m_handler;
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
#ifndef __NUMBERDISPLAY_H__
|
#ifndef __NUMBERDISPLAY_H__
|
||||||
#define __NUMBERDISPLAY_H__
|
#define __NUMBERDISPLAY_H__
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include <QPixmap>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QWidget>
|
|
||||||
|
|
||||||
#include "PixWidget.h"
|
#include "PixWidget.h"
|
||||||
|
|
||||||
class NumberDisplay : public PixWidget
|
class NumberDisplay : public PixWidget
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
|
|
||||||
#include "PixWidget.h"
|
#include "PixWidget.h"
|
||||||
|
|
||||||
|
|
||||||
PixWidget::PixWidget (QWidget *parent) : QWidget (parent)
|
PixWidget::PixWidget (QWidget *parent) : QWidget (parent)
|
||||||
{
|
{
|
||||||
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW();
|
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||||
|
if (!mw) {
|
||||||
|
qDebug ("******** DANGER! NO MAINWINDOW FOUND");
|
||||||
|
}
|
||||||
m_pixmap = QPixmap(0,0);
|
m_pixmap = QPixmap(0,0);
|
||||||
|
|
||||||
connect (mw->getSkin(), SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
connect (mw->getSkin(), SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "Skin.h"
|
||||||
|
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
#include "Skin.h"
|
|
||||||
|
|
||||||
class PixWidget : public QWidget
|
class PixWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -16,10 +16,12 @@ class PixWidget : public QWidget
|
||||||
PixWidget(QWidget *parent = 0);
|
PixWidget(QWidget *parent = 0);
|
||||||
~PixWidget();
|
~PixWidget();
|
||||||
void paintEvent (QPaintEvent *event);
|
void paintEvent (QPaintEvent *event);
|
||||||
|
QWidget *getMW (void) { return m_mw; }
|
||||||
public slots:
|
public slots:
|
||||||
virtual void setPixmaps(Skin *skin);
|
virtual void setPixmaps(Skin *skin);
|
||||||
protected:
|
protected:
|
||||||
QPixmap m_pixmap;
|
QPixmap m_pixmap;
|
||||||
|
QWidget *m_mw;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
7
Skin.cpp
7
Skin.cpp
|
@ -278,6 +278,13 @@ Skin::BuildSliders (void)
|
||||||
{
|
{
|
||||||
QPixmap *img;
|
QPixmap *img;
|
||||||
|
|
||||||
|
img = getPixmap("posbar.bmp");
|
||||||
|
m_items->insert (POSBAR, img->copy (0, 0, 248, 10));
|
||||||
|
m_items->insert (POSBAR_BTN_0, img->copy (248, 0, 29, 10));
|
||||||
|
m_items->insert (POSBAR_BTN_1, img->copy (278, 0, 29, 10));
|
||||||
|
|
||||||
|
delete img;
|
||||||
|
|
||||||
img = getPixmap("volume.bmp");
|
img = getPixmap("volume.bmp");
|
||||||
for (int i = VOLUMEBAR_POS_MIN; i < VOLUMEBAR_POS_MAX; i++) {
|
for (int i = VOLUMEBAR_POS_MIN; i < VOLUMEBAR_POS_MAX; i++) {
|
||||||
m_volume_bar->insert(i, img->copy(0, i*15, 68, 13));
|
m_volume_bar->insert(i, img->copy(0, i*15, 68, 13));
|
||||||
|
|
3
Skin.h
3
Skin.h
|
@ -146,6 +146,9 @@ class Skin : public QWidget
|
||||||
PIC_PLAY,
|
PIC_PLAY,
|
||||||
PIC_PAUSE,
|
PIC_PAUSE,
|
||||||
PIC_STOP,
|
PIC_STOP,
|
||||||
|
POSBAR,
|
||||||
|
POSBAR_BTN_0,
|
||||||
|
POSBAR_BTN_1,
|
||||||
};
|
};
|
||||||
private:
|
private:
|
||||||
QPixmap *Skin::getPixmap (string file);
|
QPixmap *Skin::getPixmap (string file);
|
||||||
|
|
135
Slider.cpp
Normal file
135
Slider.cpp
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
#include "MainWindow.h"
|
||||||
|
|
||||||
|
#include "Slider.h"
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
|
BarButton::BarButton (QWidget *parent, uint normal, uint pressed) : Button (parent, normal, pressed)
|
||||||
|
{
|
||||||
|
m_slider = dynamic_cast<Slider *>(parent);
|
||||||
|
setMinimumSize (29, 10);
|
||||||
|
setMaximumSize (29, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
BarButton::mouseMoveEvent (QMouseEvent *event)
|
||||||
|
{
|
||||||
|
QPoint p (event->pos ());
|
||||||
|
|
||||||
|
/** @todo this could be cleaned up */
|
||||||
|
if (m_slider->getVertical ()) {
|
||||||
|
int npos = pos().x() + p.x() - m_diffx;
|
||||||
|
if (npos >= 0 && npos + rect().width() <= m_slider->rect().width()) {
|
||||||
|
move (npos, 0);
|
||||||
|
} else if (npos < 0) {
|
||||||
|
move (0, 0);
|
||||||
|
} else if (npos + rect().width() > m_slider->rect().width()) {
|
||||||
|
move (m_slider->rect().width()-rect().width(), 0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int npos = pos().y()+p.y()-m_diffy;
|
||||||
|
if (npos >= 0 && npos + rect().height() <= m_slider->rect().height()) {
|
||||||
|
move (npos, 0);
|
||||||
|
} else if (npos < 0) {
|
||||||
|
move (0, 0);
|
||||||
|
} else if (npos + rect().height() > m_slider->rect().height()) {
|
||||||
|
move (m_slider->rect().height()-rect().height(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Slider::Slider (QWidget *parent, uint bg, uint bnormal, uint bpressed, bool vertical) : PixWidget (parent)
|
||||||
|
{
|
||||||
|
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||||
|
|
||||||
|
m_bg = bg;
|
||||||
|
m_vertical = vertical;
|
||||||
|
|
||||||
|
setMinimumSize (248, 10);
|
||||||
|
setMaximumSize (248, 10);
|
||||||
|
|
||||||
|
m_max = 0;
|
||||||
|
|
||||||
|
m_button = new BarButton (this, bnormal, bpressed);
|
||||||
|
m_button->move (0, 0);
|
||||||
|
connect (m_button, SIGNAL(clicked ()), mw->getHandler (), SLOT (setPlaytime ()));
|
||||||
|
|
||||||
|
if (m_vertical) {
|
||||||
|
m_pix = size().width()-m_button->size().width();
|
||||||
|
} else {
|
||||||
|
m_pix = size().height()-m_button->size().height();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_pos = 0;
|
||||||
|
|
||||||
|
hideBar (true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Slider::setSize (uint x, uint y)
|
||||||
|
{
|
||||||
|
setMinimumSize (x, y);
|
||||||
|
setMaximumSize (x, y);
|
||||||
|
|
||||||
|
if (m_vertical) {
|
||||||
|
m_pix = size().width()-m_button->size().width();
|
||||||
|
} else {
|
||||||
|
m_pix = size().height()-m_button->size().height();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint
|
||||||
|
Slider::getPos (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (m_vertical) {
|
||||||
|
return (uint)((float)m_button->pos().x()) / (float)(m_pix) * float(m_max);
|
||||||
|
} else {
|
||||||
|
return (uint)((float)m_button->pos().y())/((float)(m_pix*m_max));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Slider::hideBar (bool b)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (b) {
|
||||||
|
m_button->hide ();
|
||||||
|
} else {
|
||||||
|
m_button->show ();
|
||||||
|
}
|
||||||
|
update();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Slider::setPos (uint p)
|
||||||
|
{
|
||||||
|
if (!m_max) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_button->noDrag()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint x = m_pix * p / m_max;
|
||||||
|
if (x != m_pos) {
|
||||||
|
m_button->move (x , 0);
|
||||||
|
m_pos = x;
|
||||||
|
update ();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Slider::setPixmaps (Skin *skin)
|
||||||
|
{
|
||||||
|
m_pixmap = skin->getItem (m_bg);
|
||||||
|
}
|
||||||
|
|
51
Slider.h
Normal file
51
Slider.h
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#ifndef __SLIDER_H__
|
||||||
|
#define __SLIDER_H__
|
||||||
|
|
||||||
|
#include "PixWidget.h"
|
||||||
|
#include "Button.h"
|
||||||
|
|
||||||
|
class Slider;
|
||||||
|
|
||||||
|
class BarButton : public Button
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BarButton (QWidget *, uint, uint);
|
||||||
|
|
||||||
|
void mouseMoveEvent (QMouseEvent *);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Slider *m_slider;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class Slider : public PixWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
Slider (QWidget *parent, uint bg, uint bnormal, uint bpressed, bool vertical=true);
|
||||||
|
~Slider () { }
|
||||||
|
|
||||||
|
void setSize (uint, uint);
|
||||||
|
uint getPos (void);
|
||||||
|
void setPos (uint);
|
||||||
|
|
||||||
|
void setMax (uint max) { m_max = max; }
|
||||||
|
void hideBar (bool b);
|
||||||
|
bool getVertical () { return m_vertical; }
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setPixmaps (Skin *skin);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_vertical;
|
||||||
|
int m_bg;
|
||||||
|
uint m_max;
|
||||||
|
uint m_pix;
|
||||||
|
uint m_pos;
|
||||||
|
BarButton *m_button;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef __STEREOMONO_H__
|
||||||
|
#define __STEREOMONO_H__
|
||||||
|
|
||||||
#include "PixWidget.h"
|
#include "PixWidget.h"
|
||||||
|
|
||||||
class StereoMono : public PixWidget
|
class StereoMono : public PixWidget
|
||||||
|
@ -25,3 +28,4 @@ class StereoMono : public PixWidget
|
||||||
QPixmap m_pixmap_stereo;
|
QPixmap m_pixmap_stereo;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#include "MainWindow.h"
|
|
||||||
#include "TitleBar.h"
|
#include "TitleBar.h"
|
||||||
#include "Display.h"
|
#include "Display.h"
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
#ifndef __TITLEBAR_H__
|
#ifndef __TITLEBAR_H__
|
||||||
#define __TITLEBAR_H__
|
#define __TITLEBAR_H__
|
||||||
|
|
||||||
#include <QWidget>
|
class TitleBar;
|
||||||
|
|
||||||
#include "PixWidget.h"
|
#include "PixWidget.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
|
@ -12,7 +12,7 @@ XMMSHandler::XMMSHandler (MainWindow *mw) : sigc::trackable ()
|
||||||
|
|
||||||
m_xmmsc = new XMMSClient ("promoe");
|
m_xmmsc = new XMMSClient ("promoe");
|
||||||
|
|
||||||
if (!m_xmmsc->connect (NULL)) {
|
if (!m_xmmsc->connect (getenv ("XMMS_PATH"))) {
|
||||||
QErrorMessage *err = new QErrorMessage ();
|
QErrorMessage *err = new QErrorMessage ();
|
||||||
err->showMessage ("Couldn't connect to XMMS2, please try again.");
|
err->showMessage ("Couldn't connect to XMMS2, please try again.");
|
||||||
err->exec ();
|
err->exec ();
|
||||||
|
@ -38,6 +38,9 @@ XMMSHandler::playback_playtime (XMMSResult *res)
|
||||||
m_mw->getMD ()->m_number->setNumber (min / 10, min % 10);
|
m_mw->getMD ()->m_number->setNumber (min / 10, min % 10);
|
||||||
m_mw->getMD ()->m_number2->setNumber (sec / 10, sec % 10);
|
m_mw->getMD ()->m_number2->setNumber (sec / 10, sec % 10);
|
||||||
|
|
||||||
|
/* update slider */
|
||||||
|
m_mw->getMD ()->m_slider->setPos (i);
|
||||||
|
|
||||||
res->restart ();
|
res->restart ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +56,15 @@ XMMSHandler::playback_current_id (XMMSResult *res)
|
||||||
r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_info));
|
r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
XMMSHandler::setPlaytime (void)
|
||||||
|
{
|
||||||
|
uint pos = m_mw->getMD ()->m_slider->getPos();
|
||||||
|
qDebug ("pos = %d", pos);
|
||||||
|
delete m_xmmsc->playback_seek_ms (pos);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
XMMSHandler::medialib_info (XMMSResult *res)
|
XMMSHandler::medialib_info (XMMSResult *res)
|
||||||
{
|
{
|
||||||
|
@ -80,6 +92,13 @@ XMMSHandler::medialib_info (XMMSResult *res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (res->getDictValue ("duration", &b)) {
|
||||||
|
if (b > 0) {
|
||||||
|
m_mw->getMD ()->m_slider->setMax (b);
|
||||||
|
m_mw->getMD ()->m_slider->hideBar (false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
delete res;
|
delete res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,8 @@ class XMMSHandler : public QObject, public sigc::trackable {
|
||||||
const XMMSClient *getXMMS () { return m_xmmsc; }
|
const XMMSClient *getXMMS () { return m_xmmsc; }
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void setPlaytime ();
|
||||||
|
|
||||||
void play () { delete m_xmmsc->playback_start (); }
|
void play () { delete m_xmmsc->playback_start (); }
|
||||||
void stop () { delete m_xmmsc->playback_stop (); }
|
void stop () { delete m_xmmsc->playback_stop (); }
|
||||||
void pause () { delete m_xmmsc->playback_pause (); }
|
void pause () { delete m_xmmsc->playback_pause (); }
|
||||||
|
|
|
@ -10,7 +10,8 @@ SOURCES += XmmsQT4.cpp \
|
||||||
NumberDisplay.cpp \
|
NumberDisplay.cpp \
|
||||||
XMMSHandler.cpp \
|
XMMSHandler.cpp \
|
||||||
SmallNumberDisplay.cpp \
|
SmallNumberDisplay.cpp \
|
||||||
StereoMono.cpp
|
StereoMono.cpp \
|
||||||
|
Slider.cpp
|
||||||
|
|
||||||
HEADERS += XmmsQT4.h \
|
HEADERS += XmmsQT4.h \
|
||||||
PixWidget.h \
|
PixWidget.h \
|
||||||
|
@ -24,7 +25,8 @@ HEADERS += XmmsQT4.h \
|
||||||
NumberDisplay.h \
|
NumberDisplay.h \
|
||||||
XMMSHandler.h \
|
XMMSHandler.h \
|
||||||
SmallNumberDisplay.h \
|
SmallNumberDisplay.h \
|
||||||
StereoMono.h
|
StereoMono.h \
|
||||||
|
Slider.h
|
||||||
|
|
||||||
CONFIG += link_pkgconfig
|
CONFIG += link_pkgconfig
|
||||||
CONFIG += debug
|
CONFIG += debug
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue