Fix some reposition bugs in the playlist.

This commit is contained in:
Tobias Rundstrom 2006-03-11 19:08:36 -03:00
parent 103e016cbd
commit 33d3d29914
3 changed files with 27 additions and 8 deletions

View file

@ -143,6 +143,8 @@ PlaylistList::playlistChanged (QHash<QString,QString> h)
}
}
doResize ();
}
break;
case XMMS_PLAYLIST_CHANGED_MOVE:
@ -151,12 +153,18 @@ PlaylistList::playlistChanged (QHash<QString,QString> h)
case XMMS_PLAYLIST_CHANGED_SHUFFLE:
case XMMS_PLAYLIST_CHANGED_SORT:
{
while (!m_items->isEmpty()) {
PlaylistItem *item = m_items->takeFirst();
m_items->removeAll (item);
delete item;
}
m_itemmap->clear ();
while (!m_items->isEmpty())
delete m_items->takeFirst();
if (signal != XMMS_PLAYLIST_CHANGED_CLEAR) {
xmmsh->requestPlaylistList ();
} else {
doResize ();
}
}
break;
@ -597,6 +605,21 @@ PlaylistList::paintEvent (QPaintEvent *event)
}
void
PlaylistList::doResize (void)
{
QWidget *w = dynamic_cast<QWidget*>(parent());
QSize s = w->size ();
if (m_items->count()*getFontH () > s.height ()) {
resize (size().width(), m_items->count ()*getFontH ());
} else {
resize (size().width(), s.height());
setOffset (0);
}
emit sizeChanged (size());
}
void
PlaylistList::addItem (PlaylistItem *i)
{
@ -604,10 +627,7 @@ PlaylistList::addItem (PlaylistItem *i)
if (!m_itemmap->contains (i->getID())) {
m_itemmap->insert (i->getID(), i);
}
if (m_items->count()*getFontH () > size().height()) {
resize (size().width(), m_items->count ()*getFontH ());
emit sizeChanged (size());
}
doResize ();
}
int

View file

@ -20,6 +20,7 @@ class PlaylistList : public QWidget {
void addItem (PlaylistItem *i);
void setOffset (int i) { m_offset = i; }
uint getOffset (void) const { return m_offset; }
void doResize (void);
public slots:
void setPixmaps (Skin *skin);

2
TODO
View file

@ -10,9 +10,7 @@ Todo:
* CloseButton
* ShadeButton
* Add files / folders
* Redo paintEvent in PlaylistWindow class to not be slow.
* Jump entry to dialog
* Reposition sliderbar on resize
* move viewport when walking outside it with keyboard
* drag and drop outside viewport
* jump to entry when it's played.