make playlist show playtime again
This commit is contained in:
parent
67dade4e4b
commit
47d8e323ab
11 changed files with 86 additions and 96 deletions
3
TODO
3
TODO
|
@ -5,9 +5,8 @@ Todo:
|
||||||
* ApplicationConfig
|
* ApplicationConfig
|
||||||
* Balance
|
* Balance
|
||||||
* Playlist
|
* Playlist
|
||||||
+ Display Playtime
|
+ Make displayed Information configurable
|
||||||
+ Add scrollbuttons to slider
|
+ Add scrollbuttons to slider
|
||||||
+ Make drag and drop work again
|
|
||||||
* Jump entry to dialog
|
* Jump entry to dialog
|
||||||
* drag and drop outside viewport
|
* drag and drop outside viewport
|
||||||
* jump to entry when it's played.
|
* jump to entry when it's played.
|
||||||
|
|
|
@ -32,10 +32,12 @@ PlaylistModel::PlaylistModel (QObject *parent, XClient *client, const QString &n
|
||||||
// m_columns.append ("#");
|
// m_columns.append ("#");
|
||||||
m_columns.append ("Artist");
|
m_columns.append ("Artist");
|
||||||
m_columns.append ("Title");
|
m_columns.append ("Title");
|
||||||
|
m_columns.append ("Duration");
|
||||||
|
|
||||||
// m_colfallback.append ("");
|
// m_colfallback.append ("");
|
||||||
m_colfallback.append ("");
|
m_colfallback.append ("");
|
||||||
m_colfallback.append ("url");
|
m_colfallback.append ("url");
|
||||||
|
m_colfallback.append ("");
|
||||||
|
|
||||||
m_cached_size.append (QSize ());
|
m_cached_size.append (QSize ());
|
||||||
m_cached_size.append (QSize ());
|
m_cached_size.append (QSize ());
|
||||||
|
|
|
@ -40,8 +40,22 @@ EqualizerWindow::EqualizerWindow (QWidget *parent) : QMainWindow (parent)
|
||||||
setFixedSize (275, 116);
|
setFixedSize (275, 116);
|
||||||
}
|
}
|
||||||
|
|
||||||
EqualizerWindow::~EqualizerWindow (void)
|
void
|
||||||
|
EqualizerWindow::hideEvent (QHideEvent *event)
|
||||||
{
|
{
|
||||||
|
QSettings s;
|
||||||
|
s.setValue ("equalizer/visible", false);
|
||||||
|
|
||||||
|
emit visibilityChanged (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
EqualizerWindow::showEvent (QShowEvent *event)
|
||||||
|
{
|
||||||
|
QSettings s;
|
||||||
|
s.setValue ("equalizer/visible", true);
|
||||||
|
|
||||||
|
emit visibilityChanged (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
class QWidget;
|
class QWidget;
|
||||||
class QMouseEvent;
|
class QMouseEvent;
|
||||||
class QMoveEvent;
|
class QMoveEvent;
|
||||||
|
class QHideEvent;
|
||||||
|
class QShowEvent;
|
||||||
|
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
class EqualizerWidget;
|
class EqualizerWidget;
|
||||||
|
@ -30,13 +32,21 @@ class EqualizerWindow : public QMainWindow
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
EqualizerWindow(QWidget *parent);
|
EqualizerWindow(QWidget *parent);
|
||||||
~EqualizerWindow();
|
~EqualizerWindow() {}
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void visibilityChanged(bool visible);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setEnabled (void);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void hideEvent (QHideEvent *event);
|
||||||
|
void showEvent (QShowEvent *event);
|
||||||
void mouseMoveEvent(QMouseEvent *);
|
void mouseMoveEvent(QMouseEvent *);
|
||||||
void mousePressEvent(QMouseEvent *);
|
void mousePressEvent(QMouseEvent *);
|
||||||
void moveEvent(QMoveEvent *event);
|
void moveEvent(QMoveEvent *event);
|
||||||
|
|
||||||
public slots:
|
|
||||||
void setEnabled (void);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MainWindow *m_mw;
|
MainWindow *m_mw;
|
||||||
|
|
20
src/main.cpp
20
src/main.cpp
|
@ -16,10 +16,7 @@
|
||||||
#include "XMMSHandler.h"
|
#include "XMMSHandler.h"
|
||||||
|
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
// #include "playlistwindow.h"
|
|
||||||
#include "equalizerwindow.h"
|
|
||||||
#include "Skin.h"
|
#include "Skin.h"
|
||||||
//TODO: change to xclient.h sometime later
|
|
||||||
|
|
||||||
#ifdef HAVE_SERVERBROWSER
|
#ifdef HAVE_SERVERBROWSER
|
||||||
#include "Serverbrowser.h"
|
#include "Serverbrowser.h"
|
||||||
|
@ -50,8 +47,6 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
MainWindow *mw = new MainWindow (NULL);
|
MainWindow *mw = new MainWindow (NULL);
|
||||||
|
|
||||||
EqualizerWindow *eqwin = new EqualizerWindow (mw);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now that everything is initialized
|
* Now that everything is initialized
|
||||||
* open the skin and send the
|
* open the skin and send the
|
||||||
|
@ -65,21 +60,6 @@ main (int argc, char **argv)
|
||||||
Skin::getInstance()->setSkin (settings.value("skin/path").toString ());
|
Skin::getInstance()->setSkin (settings.value("skin/path").toString ());
|
||||||
|
|
||||||
mw->show ();
|
mw->show ();
|
||||||
mw->setEQ (eqwin);
|
|
||||||
|
|
||||||
if (!settings.contains ("equalizer/pos"))
|
|
||||||
settings.setValue ("equalizer/pos", QPoint (mw->pos().x(),
|
|
||||||
mw->pos().y()+mw->size().height()));
|
|
||||||
eqwin->move (settings.value("equalizer/pos").toPoint ());
|
|
||||||
|
|
||||||
if (!settings.contains ("equalizer/hidden"))
|
|
||||||
settings.setValue ("equalizer/hidden", true);
|
|
||||||
|
|
||||||
if (settings.value("equalizer/hidden").toBool ())
|
|
||||||
eqwin->hide ();
|
|
||||||
else
|
|
||||||
eqwin->show ();
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_SERVERBROWSER
|
#ifdef HAVE_SERVERBROWSER
|
||||||
ServerBrowserWindow *browser = new ServerBrowserWindow (mw);
|
ServerBrowserWindow *browser = new ServerBrowserWindow (mw);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "PlayStatus.h"
|
#include "PlayStatus.h"
|
||||||
#include "VolumeSlider.h"
|
#include "VolumeSlider.h"
|
||||||
#include "playlistwindow.h"
|
#include "playlistwindow.h"
|
||||||
|
#include "equalizerwindow.h"
|
||||||
#include "clutterbar.h"
|
#include "clutterbar.h"
|
||||||
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
@ -216,6 +217,16 @@ MainDisplay::SetupToggleButtons (void)
|
||||||
{
|
{
|
||||||
QSettings s;
|
QSettings s;
|
||||||
|
|
||||||
|
m_eq = new ToggleButton (this, Skin::EQ_ON_0, Skin::EQ_ON_1,
|
||||||
|
Skin::EQ_OFF_0, Skin::EQ_OFF_1);
|
||||||
|
m_eq->move(219, 58);
|
||||||
|
m_eq->setChecked (m_mw->getEQ ()->isVisible ());
|
||||||
|
connect (m_eq, SIGNAL (toggled (bool)),
|
||||||
|
m_mw->getEQ (), SLOT (setVisible (bool)));
|
||||||
|
connect (m_mw->getEQ (), SIGNAL (visibilityChanged (bool)),
|
||||||
|
m_eq, SLOT (setChecked (bool)));
|
||||||
|
m_eq->setEnabled(false); // FIXME: Disabled for now, equalizer doesn't work yet
|
||||||
|
|
||||||
m_pls = new ToggleButton (this, Skin::PLS_ON_0, Skin::PLS_ON_1,
|
m_pls = new ToggleButton (this, Skin::PLS_ON_0, Skin::PLS_ON_1,
|
||||||
Skin::PLS_OFF_0, Skin::PLS_OFF_1);
|
Skin::PLS_OFF_0, Skin::PLS_OFF_1);
|
||||||
m_pls->move(242, 58);
|
m_pls->move(242, 58);
|
||||||
|
@ -226,15 +237,6 @@ MainDisplay::SetupToggleButtons (void)
|
||||||
m_pls, SLOT (setChecked (bool)));
|
m_pls, SLOT (setChecked (bool)));
|
||||||
|
|
||||||
|
|
||||||
m_eq = new ToggleButton (this, Skin::EQ_ON_0, Skin::EQ_ON_1,
|
|
||||||
Skin::EQ_OFF_0, Skin::EQ_OFF_1);
|
|
||||||
m_eq->move(219, 58);
|
|
||||||
if (!s.value ("equalizer/hidden").toBool ())
|
|
||||||
m_eq->toggle ();
|
|
||||||
m_eq->setEnabled(false); // FIXME: Disabled for now, equalizer doesn't work yet
|
|
||||||
|
|
||||||
connect (m_eq, SIGNAL(clicked()), this, SLOT(toggleEQ()));
|
|
||||||
|
|
||||||
m_shuffle = new ToggleButton (this, Skin::SHUFFLE_ON_0, Skin::SHUFFLE_ON_1,
|
m_shuffle = new ToggleButton (this, Skin::SHUFFLE_ON_0, Skin::SHUFFLE_ON_1,
|
||||||
Skin::SHUFFLE_OFF_0, Skin::SHUFFLE_OFF_1);
|
Skin::SHUFFLE_OFF_0, Skin::SHUFFLE_OFF_1);
|
||||||
m_shuffle->move(164, 89);
|
m_shuffle->move(164, 89);
|
||||||
|
@ -243,14 +245,9 @@ MainDisplay::SetupToggleButtons (void)
|
||||||
m_repeat = new ToggleButton (this, Skin::REPEAT_ON_0, Skin::REPEAT_ON_1,
|
m_repeat = new ToggleButton (this, Skin::REPEAT_ON_0, Skin::REPEAT_ON_1,
|
||||||
Skin::REPEAT_OFF_0, Skin::REPEAT_OFF_1);
|
Skin::REPEAT_OFF_0, Skin::REPEAT_OFF_1);
|
||||||
m_repeat->move(210, 89);
|
m_repeat->move(210, 89);
|
||||||
m_repeat->setEnabled(false); // FIXME: Disabled button for now, not yet implemented
|
// m_repeat->setEnabled(false); // FIXME: Disabled button for now, not yet implemented
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
MainDisplay::toggleEQ (void)
|
|
||||||
{
|
|
||||||
m_mw->toggleEQ(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MainDisplay::toggleTime (void)
|
MainDisplay::toggleTime (void)
|
||||||
|
@ -290,6 +287,3 @@ MainDisplay::SetupPushButtons (void)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MainDisplay::~MainDisplay (void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
|
@ -31,19 +31,6 @@ class MainDisplay;
|
||||||
#include <QPalette>
|
#include <QPalette>
|
||||||
|
|
||||||
#include "Display.h"
|
#include "Display.h"
|
||||||
/*
|
|
||||||
#include "TitleBar.h"
|
|
||||||
#include "Button.h"
|
|
||||||
#include "TextBar.h"
|
|
||||||
#include "NumberDisplay.h"
|
|
||||||
#include "TimeDisplay.h"
|
|
||||||
#include "SmallNumberDisplay.h"
|
|
||||||
#include "StereoMono.h"
|
|
||||||
#include "Slider.h"
|
|
||||||
#include "PlayStatus.h"
|
|
||||||
#include "VolumeSlider.h"
|
|
||||||
#include "MainWindow.h"
|
|
||||||
*/
|
|
||||||
|
|
||||||
class Button;
|
class Button;
|
||||||
class ToggleButton;
|
class ToggleButton;
|
||||||
|
@ -62,9 +49,7 @@ class MainDisplay : public SkinDisplay
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MainDisplay (QWidget *parent);
|
MainDisplay (QWidget *parent);
|
||||||
~MainDisplay ();
|
~MainDisplay () {}
|
||||||
ToggleButton *GetPls() {return m_pls;};
|
|
||||||
ToggleButton *GetEq() {return m_eq;};
|
|
||||||
|
|
||||||
TextScroller *m_text;
|
TextScroller *m_text;
|
||||||
TimeDisplay *m_time;
|
TimeDisplay *m_time;
|
||||||
|
@ -87,7 +72,6 @@ class MainDisplay : public SkinDisplay
|
||||||
void setStatus (Xmms::Playback::Status status);
|
void setStatus (Xmms::Playback::Status status);
|
||||||
void setPlaytime (uint32_t time);
|
void setPlaytime (uint32_t time);
|
||||||
void setMediainfo (const Xmms::PropDict &);
|
void setMediainfo (const Xmms::PropDict &);
|
||||||
void toggleEQ(void);
|
|
||||||
void toggleTime(void);
|
void toggleTime(void);
|
||||||
void updateVolume (uint volume);
|
void updateVolume (uint volume);
|
||||||
void setVolume (int volume);
|
void setVolume (int volume);
|
||||||
|
|
|
@ -48,18 +48,28 @@ MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent)
|
||||||
setShaded (!isShaded ());
|
setShaded (!isShaded ());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup PlaylistWindow
|
* initialize EqualizerWindow
|
||||||
|
*/
|
||||||
|
m_equalizer = new EqualizerWindow (this);
|
||||||
|
if (!s.contains ("equalizer/pos")) {
|
||||||
|
s.setValue ("equalizer/pos", QPoint (pos ().x (),
|
||||||
|
pos ().y ()+size ().height ()));
|
||||||
|
}
|
||||||
|
m_equalizer->move (s.value ("equalizer/pos").toPoint ());
|
||||||
|
m_equalizer->setVisible (s.value ("equalizer/visible", false).toBool ());
|
||||||
|
|
||||||
|
/*
|
||||||
|
* initialtize PlaylistWindow
|
||||||
*/
|
*/
|
||||||
m_playlistwin = new PlaylistWindow (this);
|
m_playlistwin = new PlaylistWindow (this);
|
||||||
if (!s.contains ("playlist/pos")) {
|
if (!s.contains ("playlist/pos")) {
|
||||||
s.setValue ("playlist/pos", QPoint (pos().x(),
|
s.setValue ("playlist/pos", QPoint (pos ().x (),
|
||||||
pos().y()+size().height()));
|
pos ().y ()+size ().height ()));
|
||||||
}
|
}
|
||||||
m_playlistwin->move (s.value("playlist/pos").toPoint ());
|
m_playlistwin->move (s.value ("playlist/pos").toPoint ());
|
||||||
// FIXME: this should be done in PlaylistWindow.
|
// FIXME: this should be done in PlaylistWindow.
|
||||||
// But promoe segfaults if done so
|
// But promoe segfaults if done so
|
||||||
m_playlistwin->setVisible (s.value("playlist/visible",
|
m_playlistwin->setVisible (s.value("playlist/visible", false).toBool ());
|
||||||
false).toBool ());
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The MainDisplay is the mainwindow non-shaded mode
|
* The MainDisplay is the mainwindow non-shaded mode
|
||||||
|
@ -121,22 +131,3 @@ MainWindow::moveEvent (QMoveEvent *event)
|
||||||
s.setValue ("mainwindow/pos", pos ());
|
s.setValue ("mainwindow/pos", pos ());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
MainWindow::toggleEQ (bool UpdateButton)
|
|
||||||
{
|
|
||||||
QSettings s;
|
|
||||||
|
|
||||||
if(UpdateButton)
|
|
||||||
{
|
|
||||||
getMD()->GetEq()->toggle();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s.value ("equalizer/hidden").toBool ()) {
|
|
||||||
m_equalizer->move (s.value("equalizer/pos").toPoint ());
|
|
||||||
m_equalizer->show ();
|
|
||||||
s.setValue ("equalizer/hidden", false);
|
|
||||||
} else {
|
|
||||||
m_equalizer->hide ();
|
|
||||||
s.setValue ("equalizer/hidden", true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -36,13 +36,12 @@ class MainWindow : public QMainWindow
|
||||||
MainDisplay *getMD () { return m_display; }
|
MainDisplay *getMD () { return m_display; }
|
||||||
ShadedDisplay *getSD () { return m_shaded; }
|
ShadedDisplay *getSD () { return m_shaded; }
|
||||||
PlaylistWindow *getPL () { return m_playlistwin; }
|
PlaylistWindow *getPL () { return m_playlistwin; }
|
||||||
|
EqualizerWindow *getEQ () { return m_equalizer; }
|
||||||
|
|
||||||
void setEQ (EqualizerWindow *e) { m_equalizer = e; }
|
|
||||||
|
|
||||||
void raisePL (void);
|
void raisePL (void);
|
||||||
void moveEvent (QMoveEvent *event);
|
void moveEvent (QMoveEvent *event);
|
||||||
|
|
||||||
void toggleEQ (bool UpdateButton);
|
|
||||||
bool isTimemodeReverse(void) { QSettings s; return s.value("MainWindow/timemodereverse").toBool(); }
|
bool isTimemodeReverse(void) { QSettings s; return s.value("MainWindow/timemodereverse").toBool(); }
|
||||||
void setTimemodeReverse(bool b) { QSettings s; return s.setValue("MainWindow/timemodereverse",b); }
|
void setTimemodeReverse(bool b) { QSettings s; return s.setValue("MainWindow/timemodereverse",b); }
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <QPaintEvent>
|
#include <QPaintEvent>
|
||||||
#include <QPalette>
|
#include <QPalette>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QFontMetrics>
|
||||||
|
|
||||||
#include <QSizePolicy>
|
#include <QSizePolicy>
|
||||||
|
|
||||||
|
@ -60,17 +61,33 @@ PlaylistDelegate::paint( QPainter *painter, const QStyleOptionViewItem& option,
|
||||||
/* generate string */
|
/* generate string */
|
||||||
//TODO Add album and playtime
|
//TODO Add album and playtime
|
||||||
QVariant tmp;
|
QVariant tmp;
|
||||||
QString s = QString ("%1. ").arg (index.row () + 1);
|
QModelIndex m;
|
||||||
|
QRect r = option.rect;
|
||||||
|
QString s;
|
||||||
|
// Get playtime and if it exists, draw it
|
||||||
|
m = index.sibling (index.row (), 2);
|
||||||
|
tmp = m.data ();
|
||||||
|
if (tmp.isValid ()) {
|
||||||
|
int seconds = tmp.toInt () / 1000;
|
||||||
|
s = QString ("%1:%2").arg (seconds / 60, 2)
|
||||||
|
.arg (seconds % 60, 2, 10, QLatin1Char ('0'));
|
||||||
|
painter->drawText (r, Qt::AlignVCenter | Qt::AlignRight, s);
|
||||||
|
// now adjust der paintrectangle for the remaining text
|
||||||
|
r.setWidth (r.width () - option.fontMetrics.width (s));
|
||||||
|
}
|
||||||
|
|
||||||
|
// now build String for Artis Title and Position
|
||||||
|
s = QString ("%1. ").arg (index.row () + 1);
|
||||||
tmp = index.data ();
|
tmp = index.data ();
|
||||||
if (tmp.isValid ())
|
if (tmp.isValid ())
|
||||||
s.append (tmp.toString ()).append (" - ");
|
s.append (tmp.toString ()).append (" - ");
|
||||||
QModelIndex m = index.sibling (index.row (), 1);
|
m = index.sibling (index.row (), 1);
|
||||||
tmp = m.data ();
|
tmp = m.data ();
|
||||||
if (tmp.isValid ())
|
if (tmp.isValid ())
|
||||||
s.append (tmp.toString ());
|
s.append (tmp.toString ());
|
||||||
s = option.fontMetrics.elidedText(s, Qt::ElideRight, option.rect.width());
|
s = option.fontMetrics.elidedText(s, Qt::ElideRight, r.width());
|
||||||
|
|
||||||
painter->drawText (option.rect, Qt::AlignVCenter, s);
|
painter->drawText (r, Qt::AlignVCenter, s);
|
||||||
painter->restore ();
|
painter->restore ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ class PlaylistWindow : public QMainWindow {
|
||||||
public slots:
|
public slots:
|
||||||
void switchDisplay (void);
|
void switchDisplay (void);
|
||||||
|
|
||||||
protected slots:
|
protected:
|
||||||
void hideEvent (QHideEvent *event);
|
void hideEvent (QHideEvent *event);
|
||||||
void showEvent (QShowEvent *event);
|
void showEvent (QShowEvent *event);
|
||||||
void mousePressEvent (QMouseEvent *event);
|
void mousePressEvent (QMouseEvent *event);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue