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; break;
case XMMS_PLAYLIST_CHANGED_MOVE: case XMMS_PLAYLIST_CHANGED_MOVE:
@ -151,12 +153,18 @@ PlaylistList::playlistChanged (QHash<QString,QString> h)
case XMMS_PLAYLIST_CHANGED_SHUFFLE: case XMMS_PLAYLIST_CHANGED_SHUFFLE:
case XMMS_PLAYLIST_CHANGED_SORT: case XMMS_PLAYLIST_CHANGED_SORT:
{ {
while (!m_items->isEmpty()) {
PlaylistItem *item = m_items->takeFirst();
m_items->removeAll (item);
delete item;
}
m_itemmap->clear (); m_itemmap->clear ();
while (!m_items->isEmpty())
delete m_items->takeFirst();
if (signal != XMMS_PLAYLIST_CHANGED_CLEAR) { if (signal != XMMS_PLAYLIST_CHANGED_CLEAR) {
xmmsh->requestPlaylistList (); xmmsh->requestPlaylistList ();
} else {
doResize ();
} }
} }
break; 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 void
PlaylistList::addItem (PlaylistItem *i) PlaylistList::addItem (PlaylistItem *i)
{ {
@ -604,10 +627,7 @@ PlaylistList::addItem (PlaylistItem *i)
if (!m_itemmap->contains (i->getID())) { if (!m_itemmap->contains (i->getID())) {
m_itemmap->insert (i->getID(), i); m_itemmap->insert (i->getID(), i);
} }
if (m_items->count()*getFontH () > size().height()) { doResize ();
resize (size().width(), m_items->count ()*getFontH ());
emit sizeChanged (size());
}
} }
int int

View file

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

2
TODO
View file

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