make playlist show playtime again

This commit is contained in:
Thomas Frauendorfer 2008-02-01 09:53:10 +01:00
parent 67dade4e4b
commit 47d8e323ab
11 changed files with 86 additions and 96 deletions

3
TODO
View file

@ -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.

View file

@ -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 ());

View file

@ -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

View file

@ -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;

View file

@ -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);

View file

@ -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)
{
}

View file

@ -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;
@ -57,14 +44,12 @@ class PlayStatus;
class MainWindow; class MainWindow;
class ClutterBar; class ClutterBar;
class MainDisplay : public SkinDisplay 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;
@ -76,7 +61,7 @@ class MainDisplay : public SkinDisplay
PosBar *m_posbar; PosBar *m_posbar;
Slider *m_vslider; Slider *m_vslider;
Slider *m_bslider; Slider *m_bslider;
PlayStatus *m_playstatus; PlayStatus *m_playstatus;
MainWindow *getMW(void) { return m_mw; } MainWindow *getMW(void) { return m_mw; }
@ -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);

View file

@ -48,20 +48,30 @@ 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
*/ */
m_display = new MainDisplay (this); m_display = new MainDisplay (this);
@ -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);
}
}

View file

@ -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); }

View file

@ -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 ();
} }

View file

@ -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);